Неироничная ненависть к JavaScript

Прочитав данный перевод первоапрельской статьи о JavaScript я был удивлен тому, к каким мелочам могут придираться люди. И проблема не в самой статье, не в мемах и шутках о данном языке, а в том, что кто-то неиронично утверждает что JavaScript — плохой язык программирования. Но что, если попытаться его понять?


Ответьте на вопрос, если вы разрабатываете на JS, то что именно? Может быть вы работаете на FrontEnd-е, может вы разрабатываете небольшое BackEnd приложение на nodejs, а может вы являетесь разработчиком в банке где все ПО написано на нем? Если третий случай это про вас, то скорее всего вы где-то ошиблись.


Проблема в том что ни один язык программирования не сможет стать панацеей от использования разных ЯП для достижения определенных целей. Но почему-то кто-то до сих пор считает что какой-то язык да заменит все существующие, станет универсальным и вообще спасет весь мир. Но обычно инструменты создаются под решение конкретных задач (хоть тут слово «конкретный» может включать довольно обширный спектр этих самых задач), и даже швейцарский нож не решит всех ваших проблем.


JavaScript хорошо справляется с задачами, для которых его чаще всего используют. А большинство лулзовых случаев, которые были рассмотрены в вышеуказанной статье являются сферическими конями в вакууме и в реальной разработке попросту не будут применены.


Первым делом хотелось бы привести в пример следующий отрывок с кодом:


const x={
  i: 1,
  toString: function(){
    return this.i++;
  }
}

if(x==1 && x==2 && x==3){
  document.write("This will be printed!")
}

Действительно, условие будет истинным. В таких случаях у меня возникает два вопроса — «Зачем?!» и «Как так получилось?». Дать ответ на первый вопрос я к сожалению не могу. Но вот попытаться ответить на второй вполне. Как известно JavaScript — язык с динамической типизацией. В нем есть два способа сравнения — строгое (===) и с преобразованием типов (==). Если бы в коде было использовано строгое сравнение, то никаких проблем бы не возникло. Но во втором случае интерпретатор пытается привести оба операнда к одному типу (строке) и сравнить их значения. Но почему-то истинность условия `x == 1 && x == 2 && x == 3` кому-то кажется смешной, несмотря на то, что нечто подобное можно реализовать и в других языках:


public class JavaScript {
	public static void main(String[] args) {
		AnonymousObject x = new AnonymousObject(1);

		if (x.equals(new AnonymousObject(1)) && x.equals(new AnonymousObject(2)) && x.equals(new AnonymousObject(3))) {
			System.out.println("JavaScript == Java // true");
		}
	}
}

class AnonymousObject {
	public int i;

	public AnonymousObject(int i) {
		this.i = i;
	}

	public boolean equals(AnonymousObject that) {
		return this.i++ == that.i;
	}
}

Кто-то скажет что тут использована функция .equals(), а там .toString(), что они предназначены для разных целей, что имплементация функции .toString() не должна влиять на сравнение, да и вообще это другое. Но если использовать строгие сравнения в JS то проблемы не будет, а вот в Java данное условие всегда будет истинно.


Ещё есть претензия к функции .sort(), мол она сортирует лексикографически:


[-2, -7, 0.0000001, 0.0000000006, 6, 10].sort()
// [-2, -7, 10, 1e-7, 6, 6e-10]

Но передадим мы функцию для сравнения и все внезапно работает как надо:


[-2, -7, 0.0000001, 0.0000000006, 6, 10].sort((a, b) => a - b)
// [-7, -2, 6e-10, 1e-7, 6, 10]

Кто-то снова возразит, сказав что в <название ЯП> все работает как надо и что вы, когда переходите с одного языка на другой хотите чтобы все было как раньше. Но знаете, я начал изучение программирования с Паскаля, там оператором сравнения был один знак равно. Представляете как мне не хотелось переходить на современные языки из-за того что в них два, а то и три знака?!


Под конец хотелось бы обсудить многопоточность в JS. Причина, по которой в JavaScript-е нет нормальной реализации многопоточности не в том, что язык какой-то не такой и он просто не способен на что-то такое, а в сфере его применения — web разработка. Ведь язык программирования это всего лишь спецификация, а её реализация лежит на компиляторе / трансляторе / интерпретаторе. В веб-разработке вам в принципе не должна понадобиться возможность исполнять ваш код в несколько потоков. Если вам часто приходится прибегать к ней, то скорее всего вы делаете что-то не так. Если вам нужна многопоточность на nodejs, то как и написано в исходной статье для этого есть разные библиотеки: comlink, указанная там или paralleljs, которая на мой взгляд удобнее в использовании. А если вас не устраивает дополнительная зависимость, то скорее всего вам нужен другой ЯП. Получить все и сразу попросту не выйдет.


Всем этим я просто хочу сказать, что если язык массово используется, то он имеет право на существование. А если при разработке на каком-либо языке вы сталкиваетесь со множеством трудностей, то пересмотрите ваш выбор, а не вините язык. Ведь, как говорил Бьёрн Страуструп:


Есть всего два типа языков программирования: те, на которые люди всё время ругаются, и те, которые никто не использует.


UPD:

Прочитав комментарии я решил уточнить две вещи:


1. Сказав, что многопоточность в вебе не нужна в принципе, я имел ввиду что она не нужна в большинстве случаев, а не то, что она совершенно не нужна. Есть случаи, когда нужно вынести какие-то вычисления в отдельный поток, чтобы не нагружать основной, но они довольно редки


2. Я ни в коем случае не утверждаю, что JS лучший язык, способный заменить все остальные и спасти мир. Я наоборот, пишу что везде его применять не стоит. Да и статья в принципе не столько о JS, сколько о том, что хейтить языки только потому что они не нравятся именно вам, только потому что там что-то работает не так как вы ожидали не надо. JS это всего лишь язык, который я привожу в пример так как прочел статью именно о нем. На его месте мог бы быть любой другой язык, потому что хейт может быть в сторону любого из них

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 419

    +12
    Ещё есть претензия к функции .sort(), мол она сортирует лексикографически

    Претензия прежде всего в том, что она сортирует используя не оператор сравнения, а что-то иное, не важно даже что. Это полнейшая глупость.


    Если вам часто приходится прибегать к ней, то скорее всего вы делаете что-то не так.

    Чем веб разработка такая особенная? Это просто платформа для исполнения кода вашего приложения. И потребности зависят от того, что это за приложение. Представьте себе, не все занимаются формошлёпством.

      0

      NodeJs там нету формошлепства. По скорости работы на сколько мне известно сопоставим с php. Все чаще его выбирают как основу для backend в своих приложениях

        +3
        А зачем тащить js на backend? Дешевле разрабы чем на java, .net? Или есть какие-то другие веские причины?
          +5

          Интересно, а какие веские причины тянуть на бэк микросервисную архитектуру, которая основана на общении микросервисов по http-протоколу, который в свою очередь был разработан для общения браузера с веб-сервром. Почему бы не использовать для общения микросервисов на стороне бэка rmi или CORBA?

            –1
            Потому-что во многом удобно использовать rest api и http, а не corba. А насколько удобно лепить «многопоточного» слона из js и тащить его на бэк? Ну правда, чем это оправданно?
              +5

              Мне кажется что rest api там используются не только поэтому. Вернее было бы уточнить а почему это стало удобно. Ответ мне на эти оба вопроса кажется связанным.
              1) Сначала развитие веб привело к потребности в разработки различных инструментов для своей работы — от стандартов, средств сетевой инфраструктуры — до веб-серверов и веб-браузеров.
              2) Потом интернет массово распространился что привело к обкатке всех этих средств миллиардами пользователей. И вот в этот именно момент эти средства начинают становиться удобными.
              3) Теперь оказывается что в нашем распоряжении есть надежный протокол https, инфраструктура для работы по этому протоколу и такие же надежные библиотеки, веб-браузер на движке v8 и наконец сам движок v8 на котором построен nodejs.


              И нет ничего удивительного в том, что


              • мы начали использовать протокол не для общения веб-браузера с веб-сервером а для вообще для любого обмена данными
              • мы начали использовать веб-браузер не для чтения научных статей а для разработки приложения, в том числе и для enterprise
              • этот же по сути движок веб-браузера мы начали использовать и на бэке
                Причина все та же — удобно, требует минимальных ресурсов на сервере, и минимальных затрат на разработку.
                +4
                и вся эта белиберда привела к отстою в индустрии на долгие годы
                  0

                  Предположительно сейчас всех сделает mobile. Точно так как раньше всех сделал браузер. Правда монстры ERP этого еще не поняли. Но рано или поздно появятся mobile-first ERP и картинка станет другой.

                    0
                    mobile-first ERP

                    Не появится — этому мешает обычная реальность, данная нам в ощущениях: разглядывать информацию с экрана телефончика, даже большого — совершенно ужасно.
                    Но вот рабочие места для людей, которые данные в основном вбивают, тем или иным путем — они уже начинают быть mobile-first, да. Потому что если можно данные не вбивать, а фоткать и уверенно распознавать — это огромный прорыв в скорости работы. Ну и мобильным работникам это очень удобно (естественно).

                    А вот всякая отчётность и прочая аналитика из браузеров никуда не денется — работать с такими вещами на большом экране просто значительно удобнее.
                      0
                      Не появится — этому мешает обычная реальность, данная нам в ощущениях: разглядывать информацию с экрана телефончика, даже большого — совершенно ужасно.

                      Извините, но это всё субъективно. Вам это может быть и ужасно, кому-то нормально, а кому-то вообще нравится. Особенно если рассматривать не на «экране телефончика», а скажем на планшете с нормальным экраном.
                        0
                        Извините, но это всё субъективно.

                        Я повидал достаточно аналитиков, и некоторым из них даже софт писал. Нет, не субъективно. Mobile-first пригоден тем, кто данные вводит и особо ничего не смотрит, и mobile-first очень нравится биг боссам, которые воображают что-то в духе «глянул в мобилку — а там пишут, всё ли у тебя в конторе хорошо, или есть проблема». Короче, как кнопка «сделать всё хорошо». В реальности так не бывает, но в демках востребовано, да.

                        ЗЫ: Планшет — это по приёмам работы всё тот же телефончик, только экран побольше. Показать больше информации (или столько же, но видной издалека) — отлично работает, работать с планшетом как с ноутбуком/десктопом — вообще не вариант, даже если какая-нибудь пристегивающаяся клавиатура есть.
                          0

                          Ну давайте идти дальше. Зачем нормальной ERP еще и аналитик? Тут на подходе ИИ.

                            0
                            Ну как только сильный ИИ запилят, так вот прям сразу, ага.
                            А без него — аналитик затем, что он новости читает, по сторонам смотрит, и в силу этого способен выдать не только отчётик по историческим показателям, но и прогнозы, например. Настоящие прогнозы, а не «запихаем график цены биткоина в нейросетку, чтоб сказать, куда цена дальше пойдет».
                              0
                              По тому как я вижу как работают аналитики, то ИИ уже текущий может справится уже наверно даже лучше.
                                0

                                Причем тогда к новостям ERP. В конце концов сделать что-то десктопное для аналитика на mobile-first erp будет более реальной задачей чем переписать на мобльную версию тяжелую ERP


                                Вот Вам пример. Знаменитый аналитик https://en.wikipedia.org/wiki/Mary_Meeker (это как Лебедев только а аналитике и в Америке) ничего раньше не говорила про коронавирус и теперь не сказала что будет после коронавируса. А простой парень из Америки, Билл Гейтс уже двадцать лет в эту тему миллиарды топит.

                              +1
                              Ещё как субъективно. Я вот например дома в инете сижу в основном с планшета. И на нём мобильные приложения обычно гораздо удобнее чем соответствующие странички. Конечно бывают и исключения, но в большинстве случаев это так.

                              А уж если я захожу на смартфон, то там странички можно смотреть практически только в мобильной версии и это ещё хуже.

                              И я это считай уже «старпёр» и «ретроград». А молодёжь сейчас вообще большую часть времени в своих смартфонах сидит и всё на них делает. И они браузер гораздо меньше меня используют.
                            0

                            Реальность она не всегда соответсвтует нашим ожиданиям от реальности. Реальность такова что многие тяжелые ERP как раз сделали интерфейс для мобильных устройств для боссов чтобы могли со смартфона увидеть основные показатели в цветных графиках. А что касается производства — то здесь как раз бы и нужно внедрить мобильные девайсы чтобы можно с ними было бродить по цеху или лазить по штабелеру. Но увы. Для этого слишком много нужно переделывать.

                              0
                              Реальность такова что многие тяжелые ERP как раз сделали интерфейс для мобильных устройств для боссов чтобы могли со смартфона увидеть основные показатели в цветных графиках.

                              Угу. Полезность этого как правило очень грустная, но да, сделали как раз это. Но это не mobile-first ERP ни разу.
                                0

                                Об этом я и говорю. Изначально тред начлся с утверждения что тяжелые ERP не идут в мобайл, а если и идут только для галочки.

                    0
                    Интересно, а какие веские причины тянуть на бэк микросервисную архитектуру, которая основана на общении микросервисов по http-протоколу...

                    Что бы переложить часть компетенции с дорогих программистов на относительно дешевых админов.
                      +1

                      Не буду спорить про дешевизну админов, хотя DevOps, которые сегодня поддерживают микросервисную инфраструктуру сейчас в цене, как раз по причини востребованности микросервисной архитектуры. Но почему все же эта инфраструктура дешевая? Не потому ли что прочие средства обмена данными, например CORBA, не будучи востребованной в таком количестве как http, требует привлечения редких специалистов и сложных инфраструктурных решений?


                      Да и речь тут не об этом. Тредстартер почему-то допускает, что для общения микросервисов можно привлекать дешевую инфраструткуру и массовых (не будем называть их дешевыми) специалистов. Хотя, по гамбургскому счету нужно было бы юзать, скажем J2ЕЕ beans. Но тут же, почему-то, для разработки этих же самых микросервисов, по мнению тредстартера, нельзя юзать простой, быстрый, надежный и массовый nodejs.


                      Какие-то двойные стандарты.

                    +4
                    js уже есть на фронте. Так можно переиспользовать код и иногда даже людей.
                    Пример переиспользования кода — валидация полей форм.
                      0
                      Пример переиспользования кода — валидация полей форм.

                      На практике, кроме пресловутой валидации и каких-то мелких классов-утилит, переиспользовать-то особо и нечего. И людей особо не переиспользуешь — специфика работы сильно другая.
                        0
                        deleted, ara опередил меня.
                          0
                          Океееей, но прикладные к вебу вещи (какую-то часть варидации данных инпута, серверный рендеринг SPA) — это ведь слезы на фоне размера кодовой базы бизнес-логики типичного приложения. ara пишет про «большие куски», что они из себя могут представлять и почему они не могут остаться на одной из сторон?
                            0
                            это ведь слезы на фоне размера кодовой базы бизнес-логики типичного приложения


                            У меня не типичное приложение, которое представляет набор веб форм, а что то вроде многопользователськой онлайн игры. В этом приложении идет обмен бинарными данными между броузером и сервером в обоих направлениях. Соответственно есть логика которая сериализует и парсит эти данные, есть много общих интерфейсов, описывающих данные и алгоритмов, применяемых к ним.
                      +7
                      Я не особо люблю JavaScript, но в моем случае делать бэеэнд на NodeJS было отличной идеей по этим причинам:

                      • Большие куски изоморфного кода которые без изменений работают как на сервере так и в броузере. Очень удобно, что не надо дублиповать одну и ту же логику на разных языках. У меня есть много модулей, которые используют чистый JavaScript без Node или Browser API, разница только в том, кто их вызывает.
                      • Server-side rendering. React это самый лучший шаблонизатор, и очень удобно что из одних и тех же компонентов можно рендерить и в броузере и на сервере.
                      • Сам по себе JavaScript это довольно уродливый язык. Но вот если взять TypeScript и обвешать его линтерами, чтобы избежать всех тех идиотских ошибок дизайна JavaScript (typeof null === "object" и т.д.), то получается очень хороший язык, который лично мне нравиться намного больше чем, например, Java.

                        0
                        Я всегда с трудом понимаю аргумент про «переиспользование фронт-энд кода на бэкэнде»… Моя основная специализация — бэк-энд разработка, но на нескольких проектах приходилось быть фулл-стэком, и, исходя из того опыта, могу сказать, что если возникает необходимость на бэк-энде выполнять тот же код, что и на фронт-энде, то в 90% случаев это сигнализирует о плохой архитектуре (а еще 10% — это вышеупомянутая валидация форм и что-то подобное).
                          +3

                          а как же SSR?

                            0

                            Ещё вариант: offline first и прочий UX, с оптимизацией времени отклика и прочих UX метрик: сначала посчитаем, потом в фоне загрузим на сервер, посчитаем ещё раз, а если что-то пойдёт не так, то выведем ошибку и откатим.

                      0
                      Веб разработка особенна тем, что обращение к DOM API должно происходить из одного потока. Представьте, что у вас два или при параллельных потока и и все они в одим момент времени меняют свойство DOM. Как думаете, что произойдет?

                      Вот и повелось с тех пор, что JS это один поток. Сейчас появились WebWorker, но они удобны для вычислений, а вот с DOM из воркера напрямую вы работать не сможете, по причине описанной выше.
                        +6

                        И зачем мне ваш DOM, если я ренделю в WebGL?

                          +12

                          Так можно сказать, что и под винду всё должно быть однопоточно, ведь UI поток он только один.
                          Странное оправдание, если честно.

                            0
                            Я не оправдываюсь, я просто указал почему так. Если у вас есть идеи, как сделать правильно и лучше, думаю вы можете написать разработчикам браузеров.

                            Кстати, рекомендую почитать статьи на тему «почему JS однопоточный». Вы найдете исчерпывающие ответы.
                              +3

                              Так почему так? Веб не ограничен манипуляциями с DOM, как и софт на десктопе не ограничен работой в UI потоке. Изначальные причины из начала 2000х, конечно, понятны. Но аргументов, почему это продолжается в 2020 году, кроме «а скажите, как сделать лучше, а мы подумаем» не слышно.
                              Это как с многозадачностью на смартфонах, и много где ещё. Только не нужно про мовместимость со старым кодом и т.п., 6й осёл давно умер.

                                –3
                                Веб не ограничен манипуляциями с DOM

                                Можете поподробнее в этом месте? Так веб, который я знаю, живет в браузере. А вот в браузере это DOM.

                                Кстати, приведу пример. Оговорюсь, я не противник и не сторонник, живу с тем что есть. Так вот. Давайте представим ситуацию, на странице у нас, пусть будут, два DIV.

                                Итак в классической однопоточной схеме, мы меняем ширину первого DIVа. Что делает браузер? Напишу примитивно, детали вы сможете нагуглить. Браузер пересчитывает всю сцену, все элементы, их размеры и стили. От верхнего левого угла и до нижнего правого.

                                Теперь представим, что у нас два потока. Итак первый поток, как я написал выше меняет ширину блока. Браузер проводит пересчет всех размеров… И в этот момент, второй поток меняет ширину второго блока.

                                Внимание вопрос — что произойдет?

                                PS осел конечно умер, но наследие осталось.
                                  +4
                                  Добро пожаловать в canvas и в WebGL в частности. (Эту мысль выше несколько резко выразил несправедливо заминусованный nin-jin)
                                    0
                                    А в других языках можно работать многопоточно с OpenGL/Dx?
                                    Я просто не в курсе, но интересно. По идее там те же самые проблемы будут и решены они, наверное, костылями вида «нельзя что-то делать из другого потока».
                                      0
                                        0
                                        Ну это же не параллельная отрисовка разными потоками. Это параллельная подготовительная работа. А отрисовывает на экран — всё равно, в любом случае, один поток.
                                          0
                                          Тогда не понятна суть претензий к JS. Никто не мешает подготавливать вычисления в отдельном потоке, а потом передавать их в поток отрисовки.
                                            0

                                            Как раз-таки понятна: помимо манипуляций DOM можно ещё дела делать параллельно, синхронизуя по меобходимости с основным потоком. Как и написано выше в комментах — не UI единым.

                                              0
                                              Ну так а я о чем? Делайте дела параллельно в вебворкерах, кто мешает то?
                                                0

                                                Оверхэд?

                                                  0
                                                  Нет
                                                    0

                                                    Похоже на то. Тогда о чём тут ноют? :shrug:


                                                    Спасибо за информацию.

                                                      +3
                                                      Я не знаю о чем тут остальные ноют. У меня ужасно глючат комменты на этой странице, тут слишком много нытья :(
                                                      +1
                                                        0

                                                        Коротко: данные устарели и задержки не критичны, если подходить с умом.


                                                        Ну, 2015 года статья.
                                                        80kB/ms не так мало для того времени.


                                                        Единственный момент был у меня на мобильном железе (iphone [5:7] с 11-ым safari) перекодировка 2.5 минут PCM в MP3 с передачей в основной поток занимала 10-30 секунд. Перекидывание бинарника занимало много меньше чем перекодирование в MP3 JS кодировщиком (wasm там багованный). Даже в основном потоке там быстрее не перекодировать т.к. ресурсов мало выделяется на новый браузер на старом железе.


                                                        Спамить воркерами это вообще плохой тон (и вообще спамить). Хотя используется во всех примерах т.к. прописывать управление воркером (пулом) в них неразумно.
                                                        Тут мастера купиПасты и распространяют ересь. Так же поступают с Audio контекстами, с запросами к мультимедиа устройствам и ко многим другим API (это прививается с потребительского отношения к DOM, захочу — дёрну).


                                                        P.S.
                                                        Отсюда удалена портянка про заражённый разными болезнями браузерный зоопарк, их описанием и следствиями из этого


                                                        А JS как ЯП на своём месте. Достал Notepad++ закодил идею, кинул в консоль, сверил результат с ожиданиями и пошёл принимать решение (а как было бы весело подстраиваться под кучку браузеров в других языках...). Если JS браузерного не хватает, можно выкинуть на сервер в крайнем случае. А там в зависимости от задачи свои инструменты.


                                                        Респект разработчикам движка v8, меньше разработчикам nodejs (о производительности редко думают, приходится аддон нативный гонять для http сервера) и разработчикам браузеров (оставляют баги в API без фиксов).

                                                          0
                                                          данные устарели

                                                          Есть более новые, где цифры стали меньше на порядок?

                                                          задержки не критичны

                                                          Десятки миллисекунд — это очень критично. Настолько, что вы про пулы начали рассказывать и что нужно уметь готовить. Ведь это и был контр-поинт на комментарий, на который я отвечал. А ведь это в еще относительно примитивном вебе наших дней, когда клиент тонок, а бэкграунд таски — это скорее исключение, чем повсеместно используемая штука, имхо.

                                                          и вообще спамить

                                                          Флудить? Спам — это про рекламу обычно.
                                                            0

                                                            TLDR; Если найдёте пример, где критично время создания воркера и нельзя заранее его создать, то соглашусь, что оверхед при создании воркера значителен для современных устройств в работе с воркерами. Пропускная способность и RTT довольно хорошие.


                                                            А. Поддержка устройств, выпущенных раньше 2015 года, крайне мала. Автор скорее всего на них и тестировал. ОС-ы также поддерживают меньше старого софта. Железо дешевле и производительней.


                                                            Пересобрал бенч из статьи (лютый бред там, но для сравнения изменений с 2015 пойдёт). Все значения для стандартного postMessage.


                                                            'Latency' (в реальном приложении вы не станете бомбардировать воркер десятками сообщений каждую миллисекунду):


                                                            1. Mob: средн. — .7ms, макс. — 2ms за тест.
                                                            2. Desk: средн. — .091ms, макс. — .2ms за тест.

                                                            Создание воркера (тут накладываются расходы на подгрузку скрипта воркера — диск. кэш не мгновенный, в идеале inline worker нужно создавать и не страдать фигнёй, если нужно быстро):


                                                            1. Mob: средн. — 24.6ms, макс. — 28ms за тест.
                                                            2. Desk (localhost): средн. — 8.55ms, макс. — 9ms за тест.
                                                            3. Desk (обычный домен): средн. — 15.6ms, макс. — 22ms за тест.

                                                            Скорость передачи данных (для забивания канала нужно передавать 100-1000MB+ в секунду):


                                                            1. Mob: средн. — 98kB/ms, макс. — 120kB/ms за тест.
                                                            2. Desk: средн. — 800kB/ms, макс. — 1200kB/ms за тест.

                                                            Советует не передавать больше 3MB/26MB в одном сообщении для Mob. и Desk. соответственно.


                                                            Б. На большинстве устройств можно в реальном времени аудио с микрофона в воркере в MP3 загонять и в это же время анализировать аудиопоток и выводить красивую графику в 60fps. Делал такое 2 года назад, только 1 устройство (iphone 5-6, не помню точно) не справлялось и пришлось на все iosы отложенную кодировку делать (на нём всё упиралось в железо и JS движок, т.к. даже в основном потоке оно не могло перекодировать данные за приемлемое время).


                                                            А пока 2-3 кадра основной поток может и подождать создания воркера (даже всю логику можно в воркеры вынести и оставить только изменения UI в основном потоке, а-ля локальный клиент-сервер). Всё упирается в умения разработчика.


                                                            Про пулы и прочее: либо вы хотите макс. скорость вычислений, либо макс. экономить потребление памяти. Это вечная проблема в программировании и от неё не уйдёшь.


                                                            В. И флуд и спам не подходят, но суть вы поняли.


                                                            P.S.
                                                            Проклинаю автора бенча и по совместительству статьи, которую вы подкинули. Судя по репе принадлежит к касте бездумных сборщиков. Куча ненужного Г в проекте.
                                                            И сам проект пришлось перелопатить/почистить, т.к. он не работает из коробки и имеет кучу ненужного хлама.


                                                            Вообще нужно иметь представление о технологии (лучше опыт работы с ней), чтобы не кидать результаты бенчей сомнительного качества. Также вы бы знали, что создавать воркер на лету и закидывать его данными плохой тон. Этот этап развития 'поток на каждый запрос' показал себя неэффективным, когда нужна макс. производительность, на front и end частях веба.

                                                  0

                                                  Так в JS тоже можно. WebWorkers, все дела

                                        0
                                        Разработчик может захотеть выполнить какие-нибудь вычисления, не дожидаясь окончания отрисовки. Это бывает полезно, например, в играх.

                                        По поводу потоков — можно либо заблокировать второй поток при попытке обратиться к DOM на запись, либо поставить запрос на изменение в очередь, либо даже начать исполнять его параллельно, если браузер так будет уметь (например, инвалидируя часть результатов первого расчёта прямо в то время, пока он выполняется).
                                          0
                                          Лет 9 назад, когда я писал на C# для WindowsForms и WPF, там подобные действия вызвали бы исключение, в разработке на Java под Android, если мне не изменяет память, изменение UI из параллельного потока — тоже вызывает исключение. Возможно, в каких-то языках можно одновременно из нескольких потоков выполнять действия над UI, но в тех, с которыми работал я — нельзя. Нужно сначала вернуться в главный поток, который может работать с UI, и потом уже из этого потока выполнять над ним действия.
                                    +5
                                    Веб разработка особенна тем, что обращение к DOM API должно происходить из одного потока. Представьте, что у вас два или при параллельных потока и и все они в одим момент времени меняют свойство DOM. Как думаете, что произойдет?
                                    Вот и повелось с тех пор, что JS это один поток. Сейчас появились WebWorker, но они удобны для вычислений, а вот с DOM из воркера напрямую вы работать не сможете, по причине описанной выше.

                                    JS это имплементация стандарта ECMAScript который нечего не знает о DOM. DOM это уже другой стандарт и API браузера. Как бы, что раньше, курица или яйцо. DOM не причина однопоточности JS :)


                                    Так веб, который я знаю, живет в браузере. А вот в браузере это DOM.

                                    Браузер это движок JS + движок рендера. Одно является имплементацией JS, другое имплементацией DOM и прочих стандартов по типу веб сокетов и интерфейсов.


                                    Теперь представим, что у нас два потока. Итак первый поток, как я написал выше меняет ширину блока. Браузер проводит пересчет всех размеров… И в этот момент, второй поток меняет ширину второго блока.

                                    В многопоточном мире есть огромное колво инструментов для работы с подобными задачами. JS обращается к DOM через event loop, который по своей природе однопоточный, но то куда ведет этот чудный мост, зачастую C++ который многопоточный. И рендер в браузере многослойный и часть интерфейса может рендерится отдельно от другой. Возьми тот же css transform и посмотрим на слои. Однопоточно все только для тебя, как для пользователя DOM.


                                    а вот с DOM из воркера напрямую вы работать не сможете, по причине описанной выше.

                                    Удачи — https://github.com/ampproject/worker-dom


                                    Embedded content from a third party living side by side with first party code.
                                    Mitigation of expensive rendering for content not requiring synchronous updates to user actions.
                                    Retaining main thread availablity for high priority updates by async updating elsewhere in a document.
                                      0
                                      Не забывайте, что DOM появился раньше чем JS. И JS подстраивался под DOM. Собственно, почитайте историю развития. Повторюсь, я не защищаю JS. Мне самому не нравятся некоторые вещи.

                                      Сейчас мы имеем то что имеем.
                                        +5
                                        Удачи — github.com/ampproject/worker-dom

                                        Когда приводите пример, хотя бя гляньте как это реализовано под капотом. Но если вам лень, то в кратце — реализация основана на обмене сообщениями из дочернего потока в основной. И уже основной поток работает с DOM.

                                        Удачи.
                                          0
                                          тогда приводите пример, хотя бя гляньте как это реализовано под капотом.

                                          Да какая разница, люди юзают его для обновы DOM с вычислениями в отдельном потоке и это главное.


                                          Retaining main thread availablity for high priority updates by async updating elsewhere in a document.



                                          И уже основной поток работает с DOM.

                                          JS не работает с DOM, он работает с DOM API. C DOM работает движок рендера который умеет в асинхронщину.




                                          Не забывайте, что DOM появился раньше чем JS. И JS подстраивался под DOM

                                          Да да, сперва было яйцо, а попа у курицы под него подстроилась. DOM для JS — инструмент который не входит в стандарт языка. Посыл, что JS синхронный из за DOM попросту не очень




                                          Твой пример выше


                                          Итак в классической однопоточной схеме, мы меняем ширину первого DIVа. Что делает браузер? Напишу примитивно, детали вы сможете нагуглить. Браузер пересчитывает всю сцену, все элементы, их размеры и стили. От верхнего левого угла и до нижнего правого.

                                          Это известный кейс когда происходит репейнт и рекалькуляция лаяута из за работы с размерами, офсетами и тд. Но есть куча других апдейтов и разные слои которые можно асинхронно обновлять. Сама структура DOM в виде дерева идеально подходит для асинхронных обновлений в разных местах.


                                          Ты как пользователь ограничен одним потоком, и твои обновления не редко попадают в буфер, перед тем как движки выполняют апдейты, но тебе и не нужна чистая асинхронная возможность обновления DOM.

                                            +1
                                            Да да, сперва было яйцо, а попа у курицы под него подстроилась

                                            Но ведь это правда :-) Язык ведь изначально предназначался для "игрушечных" нужд, вот и не завезли в него многопоточности. Причина именно историческая. Стало быть, глядя на то что происходит сейчас, то и ещё будет, в него ещё завезут столько всего, что пожалеем.

                                              +1
                                              Да да, сперва было яйцо, а попа у курицы под него подстроилась.


                                              Минутка занудства — сначало было яйцо. Яйцо динозавра, который тысячами и миллионами лет эволюционировал в курицу.

                                              +1
                                              Извиняюсь, но что вы мне хотите доказать? Что DOM API кривое? Так и так все знают что оно кривое. Что JS так себе? Так и мне не нравятся многи вещи в JS, примеру наследование на прототипах. Что в JS нет нормальной многопоточности. Ну ок.

                                              Да, так история сложилась.

                                              Хотите это улучшить — так я только «за». И если у вас получится выкатить лучший движок и язык — я с удовольствием буду его, и его инструменты, использовать. OpenSource позволяет сделать форки и улучшить что либо. А ломать копья и не предлагать что либо в замен — так себе.
                                        +1
                                        Представьте себе, не все занимаются формошлёпством.

                                        Написал гневно человек на сайте. Оказалось, что все пользуются сайтами, даже те самые, которые не формошлёпят.

                                        +1
                                        Причина, по которой в JavaScript-е нет нормальной реализации многопоточности не в том, что язык какой-то не такой и он просто не способен на что-то такое, а в сфере его применения — web разработка

                                        Вообще-то все больше и больше людей считают js языком общего назначения. И на нем пишут десктопные приложения вроде Skype.
                                          +13
                                          Которые по факту — браузер в красивой обертке. Так что ничего не меняется.
                                            +2
                                            И что, прям видео на JS кодируют? ;) Или все-таки просто интерфейс например?
                                              +5
                                              Лично я против такого применения JS. Это очередная попытка превратить язык в панацею и спасти мир. И хорошо написанное нативное приложение будет работать лучше хорошо написанного приложения на electronjs
                                                +1

                                                Вот только наивных приложений нужно штук пять писать, минимум, обеспечивая совместимость. Плюс веб

                                                • UFO just landed and posted this here
                                                    +1
                                                    Никто ведь и не спорит с тем, что нативное будет лучше и производительнее. Но чаще всего надо дешевле и быстрее, а не производительнее и отзывчевее.
                                                      0
                                                      Вспоминается старая шутка: «Сделаем дешево, быстро, качественно. Выберите два пункта». Вы пытаетесь использовать инструмент не для целей, для которых он изначально был предназначен, а потом удивляетесь, почему что-то работает не так, как надо. Я понимаю, что подход «дешевле и быстрее» часто очень оправдан, но чтобы получить что-то, вы должны чем-то пожертвовать. Разве это проблема JS что кто-то решил применить его там, где этого делать не стоит ради простоты и дешевизны? Вы так в принципе и сайты клипать на C можете, генерируя HTML на вашем сервере, а потом отправляя клиенту, но зачем?
                                                        +1

                                                        Помимо дешевизны есть ещё и вопрос долголетия. Правда, для его достижения нужно писать не абы как, но тем не менее 20 лет для JS — это раз плюнуть: https://habr.com/ru/post/462685/


                                                        Сравните это с постоянными обновлениями родных приложений, где нужно обновляться ровно потому, что так решил производитель ОСи.

                                                  0
                                                  Первым делом хотелось бы привести в пример следующий отрывок с кодом:

                                                  Проблема в том, что вы считаете, что кто-то специально пишет такие конструкции) Проблема-то не в том, что кто буквально пишет такое, а в том, что "звёзды так сложились" и оно "стрельнуло". И приложение где-то валится, а понять почему — хрен поймёшь. А пример гиперболиризирован, это же очевидно)

                                                    +15
                                                    Иногда мне кажется, что почти весь хейт прет от хеллоуворлдщиков, которые скачут с одного языка на другой в поисках неизвестно чего, поэтому и выглядит гиперболизировано. Профессионал изучит свой инструмент, знает когда и как его использовать, а в свободное время фиксит код так, чтобы он меньше стрелял тебе в ноги) Минусы есть абсолютно везде, просто с некоторыми ты учишься работать и не замечаешь в дальнейшем, а из-за других спокойно меняешь инструмент.
                                                    +3

                                                    TypeScript если и не спасет отца русской демократии, то очень облегчит ему жизнь

                                                      +9
                                                      >В веб-разработке вам в принципе не должна понадобиться возможность исполнять ваш код в несколько потоков.
                                                      Вообще такие утверждения стоило бы как-то аргументировать. Потому что если бы это было так — то зачем, к примеру придумали Web Workers?
                                                        0
                                                        «В принципе» не значит никогда. Разумеется у всего есть исключения, но на то они и исключения, что редки. Да, веб-приложения стали большими и требовательными, иногда будет полезным вынести тяжелые вычисления в отдельный поток, чтобы не тормозить основной. Но встречаются такие потребности очень редко, а если вы прибегаете к многопоточности в вашем веб-приложении очень часто, то либо у вас слишком специфический проект, который лучше было бы реализовывать на другой платформе / используя другие возможности, либо вы просто неправильно построили свое веб-приложение. Но в первую очередь веб-разработка это манипуляция DOM-ом, а возможность манипулировать им в несколько потоков просто создаст больше проблем, чем решит. Поэтому даже с Web Workers у вас нет возможности работать в DOM напрямую
                                                          0
                                                          Да, про DOM я согласен — без него это будет уже не совсем веб приложение (хотя и не факт, WebGL уже выше упомянули, да и другие варианты придумать можно). Но я бы сказал, что невозможность (или сложность) работы с DOM многопоточно не имеет почти никакого отношения к наличию потребности работать многопоточно. Да, многопоточность — это вообще почти всегда трудно. Особенно — когда язык не поддерживает :) Но это совсем не повод говорить «нам это не нужно».

                                                          С другой стороны, многопоточность — это всего-лишь два потока. Один поток в практически любом приложении — это UI. Это значит, что второй поток — это всего-навсего асинхронный источник данных откуда-либо. Что тут специфичного? Вы не думаете, что именно по этой причине в веб парадигме так сложно писать даже что-то типа мессенджера?
                                                            0
                                                            Возможно мне стоило написать «в большинстве случаев» а не «в принципе», тогда было бы понятнее что я имею ввиду. Учту и в будущем буду стараться писать так, чтоб это было понятно всем, а не только мне.
                                                            Что же касательно того-же мессенджера, то думаю в вебе есть достаточно инструментов, которые позволят вам написать мессенлдер без труда. А если вы собрались писать инструмент для работы с WS с нуля, то дело ваше
                                                              0
                                                              >Возможно мне стоило написать «в большинстве случаев» а не «в принципе», тогда было бы понятнее что я имею ввиду.
                                                              Ну, меня больше всего смутило именно это. Если вы скажете, что большинству веб приложений многопоточность не нужна — то это скорее всего так и есть.
                                                            0
                                                            С чего вы взяли что это DOM? ReactNative, к примеру, не оперирует DOM в принципе. А это тот же самый JS
                                                              –1
                                                              Потому что JS был создан для веба. А React Native это как раз тот случай, когда язык применяют не там где нужно
                                                                +1
                                                                Вас послушать — язык как разработали в девятьсот желтом году, так он без изменений и существует :)
                                                                  0
                                                                  Да! И именно!
                                                                  Корни JavaScript были заложены ещё раньше. Даже не в прямых предшественниках вроде Simula. Работы по проектированию вокрыг подобных ЯП велись намного раньше, просто было взято то, что быстро подходило под проект.
                                                                  Версия событий от автора языка и редактора стандарта:
                                                                  zenodo.org/record/3710954#.Xq6zO3Vfhzm
                                                                  0

                                                                  Сама идея React Native подразумевает применение JS, также как идея Electron

                                                              0
                                                              Ответ на ваш вопрос содержится в одном из комментариев выше.
                                                              В JS изначально была возможность работать только с одним потоком по той причине, что нельзя работать с API DOM с разу из нескольких потоков.
                                                                0
                                                                Так я и говорю о потребности, а не о технической возможности. Автор утверждал, что нет потребности в потоках. Ок, поребности нет. Зачем тогда воркеры придумали, если даже в текущем виде (без возможности работать с DOM) они где-то применяются? Разве это не заменители потоков в том или ином виде?
                                                                  0

                                                                  Я как раз пытаюсь до вас донести, что веб-воркеры появились по другим причинам. Использование DOM API однопоточное и потребности делать его многопоточным нет. Веб-воркеры решают другую проблему — они нужны для вычислений. Не нужно использовать их для рендеринга.

                                                                    0
                                                                    >Я как раз пытаюсь до вас донести, что веб-воркеры появились по другим причинам.
                                                                    С чего вы взяли? Это и есть ровно те причины. Основной поток занят UI, и если в нем что-то считать — UI будет замораживаться. Это и есть ровно та самая потребность, которая в большинстве других случаев решается созданием потоков. Воркеры решают как раз те задачи, которые обычно решаются потоками (там, где они есть).
                                                                      +1
                                                                      Я вас неправильно понял, извиняюсь. Полностью с вами согласен. Думал, вы о том, чтобы распараллелить рендеринг.
                                                                  0
                                                                  Также надо добавить, что многоядерных процессоров на тот момент тупо не было даже в проекте, промышленность ещё не могла такое освоить. А для однопроцессорной системы многопоточность UI тупо не имеет смысла (лишние тормоза при 0 профита).
                                                                +13
                                                                JavaScript хорошо справляется с задачами, для которых его чаще всего используют.

                                                                На мой взгляд JavaScript со своими задачами справляется так себе. То есть где-то на троечку. И как минимум на мой взгляд он предоставляет людям слишком много возможностей «выстрелить себе в ногу» или даже «выстрелить в ногу» коллеге(ну или вообще кому-то кто использует твой код где-то у себя).

                                                                И единственная причина его популярности/распространённости это банальное «исторически сложилось».
                                                                  0
                                                                  И как минимум на мой взгляд он предоставляет людям слишком много возможностей «выстрелить себе в ногу» или даже «выстрелить в ногу» коллеге(ну или вообще кому-то кто использует твой код где-то у себя).

                                                                  Внесите уже, наконец-то в студию приз язык, в котором этих возможностей не «слишком много».
                                                                    +2
                                                                    Естественно при желании выстрелить себе в ногу можно практически на любом ЯП, но если вы спросие меня то тот же TypeScript уже даёт гораздо меньше подобных возможностей. Ну или скажем Java или C#.
                                                                      0
                                                                      Меньше, да. Но их всё так же остаётся «слишком много» (судя по количеству зафакапленого кода), так что so what?

                                                                      А «тот же TS» и вовсе даёт возможность написать any и забыть про то, что это TS.
                                                                        +4
                                                                        Меньше, да. Но их всё так же остаётся «слишком много» (судя по количеству зафакапленого кода), так что so what?

                                                                        Какая-то для меня немного странная логика. Так можно дойти и до того что вообще все эти «немного лучшие» ЯП никому не нужны и можно просто всем на ассемблере писать…

                                                                        JavaScript имеет определённые проблемы, которые отдельные другие языки не имеют. И это делает его менее «удобным». Конечно можно на это наплевать, но я бы не сказал что это особо рациональное поведение.
                                                                          +1
                                                                          Вы думаете, что на ассемблере выстрелить себе в ногу сложнее? ;-)

                                                                          JavaScript имеет определённые проблемы, которые отдельные другие языки не имеют.

                                                                          Отдельные другие языки имеют другие определенные проблемы, которых не имеет JS.

                                                                          Я вообще написал верхний коммент только для того, чтоб подчеркнуть, что выстрелить в ногу можно где угодно. И количество путей сделать это — зависит, главным образом, от домена: чем больше на языке можно сделать, тем и больше способов сделать это неадекватным образом. С тех пор, как JS стал языком общего назначения — стрелять себе в ногу в нем можно настолько же разнообразно, насколько и в других языках общего назначения. Только и всего.

                                                                          Высокоуровневость и низкоуровневость тут и вовсе не при чём — высокоуровевые ЯП дают более удобные абстракции, но это никак не означает, что этими абстракциями сложнее воспользоваться ненадлежащим образом. Нисколько не сложнее. И даже разные идеологии написания программ (статическая типизация и прочее) — имеют очень опосредованное отношение к написанию плохого кода, так как сделать криво можно и с сильными статическими типами, а сделать хорошо можно и с динамическими (инструменты для этого более чем есть).

                                                                          Конечно, JS далёк от идеала. Но от него настолько же далеки, скажем, С и плюсы — на них, по вашей классификации, тоже пишут только потому, что «исторически сложилось».
                                                                            0
                                                                            Вы думаете, что на ассемблере выстрелить себе в ногу сложнее? ;-)

                                                                            Как раз таки наоборот. Но если для вас это не играет особой роли…

                                                                            Отдельные другие языки имеют другие определенные проблемы, которых не имеет JS.

                                                                            И это относится ко всем языкам? Ну или если перейти к конкретике, то скажем какие «определённые проблемы» имеют озвученные мною выше по вашей пррсьбе TypeScript, C# или Java?

                                                                            Но от него настолько же далеки, скажем, С и плюсы — на них, по вашей классификации, тоже пишут только потому, что «исторически сложилось».

                                                                            А вот такого я как раз таки не утверждал. То есть конечно и в их случае «исторически сложилось» тоже играет свою роль. Но горааааздо меньшую.
                                                                            JavaScript живёт в основном за счёт веба. И грубо говоря в том числе и за счёт того что для того чтобы его заменить на что-то другое куча людей должна договориться. А это как мы знаем работает не особо хорошо.
                                                                              +2
                                                                              Ну или если перейти к конкретике, то скажем какие «определённые проблемы» имеют озвученные мною выше по вашей пррсьбе TypeScript, C# или Java?

                                                                              TS это надстройка JS, не более того.
                                                                              В яве соседствует сильная типизация с плохо развитой системой типов, что легко порождает архитектурных уродцев. Собственно, не зря Enterprise FizzBuzz написан именно на яве ;-)
                                                                              Насчёт C# спросите того, кто силен в сишарпе. Думаю, он вам много расскажет.

                                                                              А вот такого я как раз таки не утверждал.

                                                                              Это явно вытекает из ваших тезисов. Миллионы способов выстрелить в ногу в C и триллионы в плюсах, и море существующего кода, несмотря на многочисленные альтернативы. Что это по вашей классификации, кроме как «исторически сложилось»?
                                                                                0
                                                                                TS это надстройка JS, не более того.

                                                                                И? Так какие у ТS есть «определённые проблемы», которых нет у JS?

                                                                                В яве соседствует сильная типизация с плохо развитой системой типов, что легко порождает архитектурных уродцев.

                                                                                Не сказал бы что это более простой способ выстрелить себе в ногу по сравнению с тем что нам даёт JS.
                                                                                Насчёт C# спросите того, кто силен в сишарпе. Думаю, он вам много расскажет.

                                                                                Не знаю силён я в шарпе или нет, но приличный опыт имею. И не сказал бы что в нём больше проблем чем в JS.

                                                                                Это явно вытекает из ваших тезисов.

                                                                                Для меня совсем не явно.

                                                                                Миллионы способов выстрелить в ногу в C и триллионы в плюсах, и море существующего кода, несмотря на многочисленные альтернативы. Что это по вашей классификации, кроме как «исторически сложилось»?

                                                                                Я бы не сказал что плюсам и С существуют(и особенно существовали) прямо таки многочисленные альтернативы. Особенно в контексте «стрельбы себе в ногу».
                                                                                Ну и кто хочет, тот спокойно может эти самые имеющиеся альтернативы использовать. И куча народа так и делает.

                                                                                С другой стороны я бы хотел посмотреть как вы в вебе вместо JS будете использовать какой-нибудь C# или Java.
                                                                                  0

                                                                                  Сразу в голову пришло, что в TS нет instanceof для интерфейсов. И неявного приведения типов полно в каждой программе — минимум if и циклы не требуют boolean

                                                                                    0
                                                                                    Сразу в голову пришло, что в TS нет instanceof для интерфейсов.

                                                                                    Как он работал бы? Пробегал бы по объекту (возможно полученному извне) и проверял поимённо, все ли члены на месте? Но это дорого, и не всё можно проверить так. Например, параметры и возвращаемый тип функции уже не проверишь. Выйдет ложная уверенность. Проще тупо проверить наличие нужного члена перед использованием, благо теперь есть x?.y.

                                                                                      0
                                                                                      `instanceof` про интерфейсы — это… )
                                                                                      Он бы мог работать как нужно, если бы интерфейс был экземпляром конструктора этого интерфейса. Но, боюсь, что если создать в народе понимание, что делать интерфейсы экземплярами классов в принципе можно, ещё возможно, то вот убедить их в необходимости будет гораздо сложней.
                                                                                        0
                                                                                        делать интерфейсы экземплярами классов

                                                                                        Какой смысл вы вкладываете в "интерфейс — экземпляр класса"? Ведь всё обстоит ровно наоборот: интерфейс — это абстрактный тип, голое описание набора методов без реализации; класс — это экземпляр интерфейса, т.е. некая частная реализация интерфейса; объект — это экземпляр класса, т.е. частная коллекция данных в памяти со ссылкой на конкретную коллекцию методов.

                                                                                          +1
                                                                                          `instanceof` про интерфейсы — это… )
                                                                                          Он бы мог работать как нужно, если бы интерфейс был экземпляром конструктора этого интерфейса.
                                                                                          Интерфейсы в тех языках, которые приходят на ум, не особо отличаются от классов. И то, и другое для клиентского кода — сложный тип. И в коде нужен способ ответить на вопрос «A is B?» и не знать, от класса он зависит, или от интерфейса. Правда, не от хорошей жизни ЯП архитектуры это чаще всего нужно. Вроде в Typescript абстрагироваться полегче.
                                                                                          0

                                                                                          Вот со структурной типизацией, сложно, да. И даже не из-за функций как таковых, а что в рантайме надо обходить.


                                                                                          А с номинативной было бы достаточно какого-то поля.

                                                                          –3
                                                                          Go как минимум
                                                                            0

                                                                            Такие языки есть. Просто под веб на них писать тяжко.

                                                                              0
                                                                              Внесите уже, наконец-то в студию приз язык, в котором этих возможностей не «слишком много»
                                                                              С WebAssembly проблема частично разрешится: можно будет писать на любом языке, который будет его поддерживать.
                                                                                +2
                                                                                Вы из тех, кто всё еще верит, что wasm — это чтоб можно было для веба писать на чём угодно? Ну, блаженны верующие.

                                                                                ЗЫ: hint: wasm — это чтоб этот ваш богомерзкий JS и прочий веб мог числодробилку погонять, если очень уж нужно. Для других целей он никому не нужен и не будет нужен. Ну, кроме верующих в то, что в один прекрасный день они будут на каком-нибудь там си или расте фигачить сайтики.
                                                                                  +2
                                                                                  Ну, кроме верующих в то, что в один прекрасный день они будут на каком-нибудь там си или расте фигачить сайтики.

                                                                                  Я боюсь что рано или поздно никаких «сайтиков» как таковых просто не останется. Мы на мой взгляд медленно но уверенно идём к тому что всё «переезжает» в клауд. И когда у нас действительно всё туда переедет, то веб в том виде как мы его сейчас знаем просто вымрет за ненадобностью.
                                                                                    +2
                                                                                    А в клауде что, не «сайтики»? Какая-то новая форма источника данных для браузерного рендеринга?
                                                                                      +1
                                                                                      Речь идёт не о том что «сайтики» будут хостится в клауде. Речь о том что весь компьютер туда «переедет». То есть все вычислительные мощности будут там, а мы будем коннектиться туда «по ремоту» с каких-то примитивных и простеньких «клиентов». Ну это если прокатит то, что хотят всякие гуглы-микрософты. А как бы мне не хотелось быть оптимистом, я бы сказал что оно рано или поздно так произойдёт.

                                                                                      И в такой ситуации обычные браузеры и обычные странички на мой взгляд уже теряют смысл. Ведь какая разница «стримите» вы себе из клауда запущенный браузер с контентом или сразу запущенную там любую другую программу/приложение созданную под этот контент? А если уже всё равно, то зачем создателям/распространителям контента придерживаться стандартов современных браузеров?
                                                                                        +3
                                                                                        Я помню, как Sun Microsystems активно продвигала «тонкие клиенты»
                                                                                        Была пионером в этом бизнесе
                                                                                        Уверяла, что за их мэйнфремами (аналог клауда) будущее
                                                                                        Но люди выбрали PC улыбающегося Билли, и Sun Microsystems пошла по миру
                                                                                        Пришлось даже Java продать Oracle
                                                                                        Всемирная история, банк Империал…
                                                                                          0
                                                                                          Ну на мой взгляд одна из основных причин почему это тогда не особо хорошо сработало это медленный, а местами и просто отсутствущий интернет. Сейчас ситуация заметно изменилась.

                                                                                          Ну и плюс сейчас переход идёт медленнее, «гармоничнее» и незаметнее. Винда уже потихоньку отказывется работать без инета, офис потихоньку переезжает в облака, Майкрософт в принципе похоже уходит от идеи делать следующую «конвециональную ОС». Гугл везде пихает свои хромбуки и при этом не то чтобы безуспешно. Повсюду повылазили предложения играть в игры из облака. И так далее и тому подобное…
                                                                                            +1
                                                                                            Винда уже потихоньку отказывется работать без инета, офис потихоньку переезжает в облака

                                                                                            Вы путаете выстраивание бизнес-процессов (венда не должна работать без инета, чтоб мы спокойно всех обновляли и не парились) с технологическими решениями. Венда, как OS, прекрасно работает без инета и будет продолжать это делать — все ограничения на этот счёт вводятся искусственно.

                                                                                            А офис никуда особо не переезжает. Да и нет в этом смысла, потому что там (целиком в «облаках») есть уже гугльдокс, и внезапно оказалось, что такая модель устраивает совсем даже не полностью всех.
                                                                                              0
                                                                                              Венда, как OS, прекрасно работает без инета и будет продолжать это делать — все ограничения на этот счёт вводятся искусственно.

                                                                                              Естественно они вводятся искуственно. И они будут вводится всё больше и больше. И тенденция на мой взгляд достаточно понятна и ясно куда это ведёт и чем кончится.
                                                                                              Майкрософт похоже считает что будет выгоднее не просто продавать саму ОС, а сдавать её в аренду вместе с мощностями в клауде на которых она будет крутиться.

                                                                                              И для кучи людей такой вариант тоже будет дешевле и удобнее. А кому такое не нравится, тем скорее всего придётся переходить на какой-нибудь линукс.
                                                                                              +1
                                                                                              В долгосрочной перспективе дешевле купить железо локально, чем арендовать сервер. С учётом того, что требования к железу и не думают уменьшаться, на серверах пользователи разоряться.
                                                                                            0
                                                                                            А если уже всё равно, то зачем создателям/распространителям контента придерживаться стандартов современных браузеров?

                                                                                            Вы всерьез что ли думаете, что вот эти вот годы работы W3C и прочих сочувствующих — у этого нет никакой онтологической инерции? У этих сотен стандартов инерция уже нисколько не хуже, чем у С. Это не значит, что они идеальны, или даже очень хороши — это значит, что с их применением создано уже столько софта, что отмахнуться от него экономически нецелесообразно. Даже когда вы что-то там в терминальном режиме раздаете.
                                                                                              –1
                                                                                              Естественно никто не откажется от веба за один день. Но потихоньку веб будет сходить на нет и рано или поздно станет достаточно «нишевой вещью» не играющей какой-то особенной роли.

                                                                                              И это конечно произойдёт не завтра и не через десять лет. Но я бы предположил что ещё при моей жизни. И возможно даже до того как я выйду на пенсию.
                                                                                                +1
                                                                                                Но потихоньку веб будет сходить на нет

                                                                                                Так ну нет, не будет. Просто потому, что веб — это не решение одного игрока, и из него просто так не уйти, чтоб не порвать связи с остальными игроками. Это не только «сайтики», но и публичные API и вообще передача информации стандартизированными путями в общем смысле. Клепать какое-то собственное местячковое решение — можно только тогда, когда без этого ну вообще никак по технологическим причинам.
                                                                                                  0
                                                                                                  Ок, ну если у вас проблема с контекстом, то давайте я переформулирую: не веб как таковой сойдёт на нет, а конкретно «сайтики». Так вас устраивает?

                                                                                                  Ну и где тогда в вебе будет использоваться именно JavaScript? И насколько массовым будет его использование если «сайтики» сойдут на нет?
                                                                                                    +3
                                                                                                    Я предлагаю на этом месте сделать закладку и вернуться к разговору лет через 20 (я там как раз плюс-минус на пенсию пойду). Там уже должно стать заметно это ваше умирание сайтиков, если тренд на него и вправду имеется.

                                                                                                    Может хабр будет еще жив, кто знает.
                                                                                          +2
                                                                                          Мы на мой взгляд медленно но уверенно идём к тому что всё «переезжает» в клауд.

                                                                                          Я вижу вполне явные ограничения этого переезда: в облако едет только то, что на клиентах не обсчитывается (мало мощностей, мало памяти, или очень ценные данные, которые клиенту никто не отдаст для самостоятельного обсчёта).

                                                                                          Всё остальное — совершенно наоборот, переезжает на клиента. Зачем покупать серверные мощности (пусть и по сугубо оптовым ценам), когда каждый человек таскает в кармане технику с очень нехилой вычислительной мощностью? И это даже не говоря про более полноразмерную технику.

                                                                                          WASM — он вот как раз про то, что у клиентов вообще-то очень много вычислительных ресурсов, и в некоторых случаях их бы экономически очень потребно нагружать.
                                                                                            0
                                                                                            Я вижу вполне явные ограничения этого переезда: в облако едет только то, что на клиентах не обсчитывается

                                                                                            С каких это пор у нас компьютерные игры на клиентах не обсчитываются? Или скажем тот же майкрософтовский офис?
                                                                                            Гугл со своим хромбуками всё больше и больше продвигается на рынке в том же США.

                                                                                            WASM — он вот как раз про то, что у клиентов вообще-то очень много вычислительных ресурсов, и в некоторых случаях их бы экономически очень потребно нагружать.

                                                                                            Это их сейчас много. И именно потому что было необходимо держать у себя более-менее мощные компьютеры. Как только эта необходимость отпадёт, так очень многие перейдут на эти самые слабенькие клиенты вроде хромбуков. Просто потому что это будет дешевле. А для многих и удобнее. Я бы даже сказал что это сделает подавляющее большинство частников.
                                                                                              0
                                                                                              С каких это пор у нас компьютерные игры на клиентах не обсчитываются?

                                                                                              Эм. Вам правду сказать? Почти с самого-самого начала появления специализированных 3D-ускорителей и последовавшей гонки железа.
                                                                                              Вот от тех лет и до настоящего времени — некоторый довольно внушительный слой компьютерных игр не обсчитывается на абы каком железе, а только на очень даже заточенном под это.
                                                                                              Из этого целиком и полностью вытекает бизнес-модель всего этого облачного гейминга, кстати.

                                                                                              Или скажем тот же майкрософтовский офис?

                                                                                              Офис никуда не уехал из оффлайна, если что. И не уедет. Облачный офис — для тех, кто мог бы уйти пользоваться гугльдокс, но теперь не уйдет, потому что у MS альтернатива есть.

                                                                                              Как только эта необходимость отпадёт, так очень многие перейдут на эти самые слабенькие клиенты вроде хромбуков. Просто потому что это будет дешевле.

                                                                                              Для людей дешевле, а для поставщиков софта — дороже, потому что вычислительные мощности придётся оплачивать им. Не выходит каменный цветок.
                                                                                                0
                                                                                                Вот от тех лет и до настоящего времени — некоторый довольно внушительный слой компьютерных игр не обсчитывается на абы каком железе, а только на очень даже заточенном под это.

                                                                                                Я бы не сказал что игровые приставки прямо вот являются супер-пупер мощными клиентами.

                                                                                                Офис никуда не уехал из оффлайна, если что. И не уедет.

                                                                                                Это ваше личное предположение. Я это вижу по другому. Время покажет кто из нас прав.

                                                                                                Для людей дешевле, а для поставщиков софта — дороже, потому что вычислительные мощности придётся оплачивать им

                                                                                                Совсем необязательно. Вполне себе возможны какие-нибудь варианты с подписками. Или «оплата» за счёт просмотра рекламы.

                                                                                                То есть именно производителям софта будет всё равно. Им даже скорее будет удобнее так как не будет зоопарка миилионов-миллиардов разных конфигураций компов, а будет относительно небольшое количество конфигураций этих самых клаудов.

                                                                                                Проиграют в первую очередь производители пользовательского железа. А выиграют те кто будут предлагать эти самые клауд-ОС.
                                                                                                  +1
                                                                                                  Я бы не сказал что игровые приставки прямо вот являются супер-пупер мощными клиентами.

                                                                                                  А они, меж тем, являются. Не супер-пупер, но гораздо мощнее «среднего» офисного железа. Плюс, опять же, видеокарта.

                                                                                                  То есть именно производителям софта будет всё равно. Им даже скорее будет удобнее так как не будет зоопарка миилионов-миллиардов разных конфигураций компов, а будет относительно небольшое количество конфигураций этих самых клаудов.

                                                                                                  Производителям софта «сайтиков» уже всё равно, потому что миллионы-миллиарды разных конфигураций компов свели к 5-6 разным браузерам. Или трем, если у вас нет цели ублажить любого зашедшего, а только самых распространенных.

                                                                                                  Собственно, браузер — это наиглавнейшая причина существования веба в таком виде, в котором мы видим его сейчас. Реализовали браузер бы принципиально иначе — веб был бы совсем не таким.
                                                                                                    0
                                                                                                    А они, меж тем, являются. Не супер-пупер, но гораздо мощнее «среднего» офисного железа. Плюс, опять же, видеокарта

                                                                                                    При этом их стоимость не то чтобы особо велика. И не сильно выше стоимости среднего домашнего компа. Так что мне не совсем понятно почему их частники вдруг сменят на облачные решения, а свои домашние компы менять не будут.

                                                                                                    Производителям софта «сайтиков» уже всё равно, потому что миллионы-миллиарды разных конфигураций компов свели к 5-6 разным браузерам

                                                                                                    Но при этом их загнали в не особо удобные и приятные для них стандарты и ограничения. Пользователям это конечно удобно. А вот именно производителям софта не особо.

                                                                                                    Собственно, браузер — это наиглавнейшая причина существования веба в таком виде, в котором мы видим его сейчас. Реализовали браузер бы принципиально иначе — веб был бы совсем не таким.

                                                                                                    Мир не стоит на месте. Особенно что касается ИТ. Многое нынешние браузеры на данный момент не позволяют или позволяют, но с кучей геморроя. И в этом плане ситуация вряд ли улучшится.
                                                                                                    Люди всё больше и больше времени тратят в эппах/мобильных приложениях и всё меньше на сайтиках. Особенно молодёжь и подростки.
                                                                                                      0
                                                                                                      При этом их стоимость не то чтобы особо велика.

                                                                                                      Эм. Вы в курсе, что последние лет 20 консоли продаются в убыток? И что «навар» создаётся на продаже игр?

                                                                                                      Люди всё больше и больше времени тратят в эппах/мобильных приложениях и всё меньше на сайтиках. Особенно молодёжь и подростки.

                                                                                                      И причина этому — чисто технологическая. Чем лучше браузер вкручивают в мобилки, тем меньше резона тратить время и деньги на производство этих ваших аппликух отдельно от остального. Не зря определенные круги так возбуждаются на PWA, флаттер, и вообще всё что угодно, что позволит не делать отдельный апп, а совместить это с сайтиком и десктопом.

                                                                                                      Люди же сидят в фейсбучике/инстаграмчике/вацапчике/тиндерчике. Им вообще глубоко положить, апп это, сайт, или вообще неведомый зверь. Это обёртка — какая удобнее, той и будут пользоваться.
                                                                                                        0
                                                                                                        И что это меняет в контексте нашей дискуссии? Ну будут вам «облачные мощности продавать в убыток» и навариваться на продаже игр.

                                                                                                        Просто зачем сейчас среднему человеку держать дома мощный компьютер? Да и вообще зачем люди сейчас держат дома десктопы/нотебуки?

                                                                                                        И чем вариант с каким-нибудь хромбуком будет хуже для среднего человека? Особенно если с него можно будет играть в ААА игры, обрабатывать фото-видео и работать с документами? Особенно если такой вариант будет дешевле чем держать компьютер и/или игровую приставку?
                                                                                                          0
                                                                                                          Просто зачем сейчас среднему человеку держать дома мощный компьютер? Да и вообще зачем люди сейчас держат дома десктопы/нотебуки?

                                                                                                          Потому что это дешевле. Внезапно. И устойчиво к потерям связи.

                                                                                                          Если хромбуки и облачные сервисы станут дешевле собственных вычислительных мощностей (пока что это совершенно наоборот), и качество связи достигнет такой величины, чтоб существенный процент населения никогда не покидал зоны с хорошим каналом (пока что это абсолютно не выполняется примерно нигде, и это даже с учётом того, что 3G/4G через стенки пробивает куда лучше 5G) — тогда да.

                                                                                                          Сейчас модель распространения облачных сервисов — это только лишь «вам не надо платить много и сразу» и «если вы играете (например) по чуть-чуть, то вам будет дешевле облако». При этом для облачного гейминга вам реально надо играть не более, чем по чуть-чуть (десяток и менее часов в неделю, например, когда я в свое время считал цены уже дохлого onlive), чтоб говорить о паритете по сравнению с покупкой геймерского ПК на 8-10 лет.

                                                                                                          А сейчас, когда эти сервисы предлагают подписочную модель (цена в месяц, и неважно, сколько вы пользуетесь) — это вообще просто финансово невыгодно, если у вас есть деньги на собственное железо. Тот же GF Now, по 8 баксов в месяц, за десять лет слупит с вас 960 баксов, в то время, как средний геймерский комп стоит 1000; при этом играть вы сможете только в ассортимент GF Now, который воображение решительно не поражает.
                                                                                                            0
                                                                                                            Потому что это дешевле. Внезапно.

                                                                                                            В каком месте это дешевле? Сколько сейчас стоит игровой комп, который тянет новейшие игры? Как часто его надо менять? Сколько стоит комбинация «рабочей лошадки» плюс игровая приставка?
                                                                                                            А сколько стоит хромбук? Даже если скажем добавить подписку на игровой сервис из облака?

                                                                                                            И устойчиво к потерям связи.

                                                                                                            А это для большинства уже сейчас не аргумент. Они уже сейчас без сети жить не могут. То есть им банально ни комп, ни игровая приставка без сети особо и не нужны.

                                                                                                            Если хромбуки и облачные сервисы станут дешевле собственных вычислительных мощностей (пока что это совершенно наоборот), и качество связи достигнет такой величины, чтоб существенный процент населения никогда не покидал зоны с хорошим каналом

                                                                                                            Это на мой взгляд не вопрос «если станут», это вопрос «когда» такое произойдёт. То есть если не будет каких-то глобальных катастроф и мир будет развиваться дальше, то это достаточно быстро произойдёт. Я бы даже cказал что самое позднее после массового распространения 5G.
                                                                                                              0
                                                                                                              А возможно ли добиться такой стабильности интернет соединения, которые нужны всем этим облачным сервисам? Не столько в технологическом плане, сколько в плане бизнеса. В США например ужасная интернет-связь, но не потому что США это страна третьего мира, а потому что там монополия на интернет. Вы либо берете что есть, либо не берете вообще. Возможно такое когда-то произойдет, но точно не на наш век. А возможно человечество к этому моменту вымрет и интернет никому не будет нужен
                                                                                                                0
                                                                                                                Ну на мой взгляд как раз таки «в плане бизнеса» как только гуглам-майкрософтам-амазонам будет выгодно чтобы у вас был этот самый стабильный интернет, то он очень быстро у вас появится.

                                                                                                                То есть либо имеющихся монополистов прижмут немного, либо будет какая-нибудь альтернатива вроде того же старлинка.
                                                                                                                0
                                                                                                                В каком месте это дешевле? Сколько сейчас стоит игровой комп, который тянет новейшие игры? Как часто его надо менять?

                                                                                                                Средний геймерский комп (который современные игры прекрасно «тянет», но не на максимуме) уже очень долгое время стоит около 1000$ и амортизируется за 5 лет наполовину. То есть, 1000$ сейчас и +500$ каждые 5 лет.

                                                                                                                Для «топового» начальная цена раза в два (и более, там уже ценообразование идёт за «понты») больше, амортизация — процентов на 50% больше, за счёт того, что топовое железо гораздо дольше остаётся актуальным.

                                                                                                                А сколько стоит хромбук? Даже если скажем добавить подписку на игровой сервис из облака?

                                                                                                                Выше написал. В лучшем случае вы заплатите плюс-минус столько же и будете жить по правилам облачного сервиса, в уютном мирке, на порядки меньшем по размеру, чем собственный гейминг. В худшем случае (для сервисов, позволяющих играть в плюс-минус всё) вы заплатите гораздо больше.

                                                                                                                А это для большинства уже сейчас не аргумент. Они уже сейчас без сети жить не могут.

                                                                                                                Вы путаете наличие интернета «вообще» (с плохим каналом, с потерями, с перебоями, и так далее) и наличие хорошего канала в каждый момент времени потребления облачных сервисов.
                                                                                                                Для облачных сервисов требуется второе, иначе оно просто не работает. Для всего остального, исключая потоковое видео, нужно только лишь первое. Да и потоковое видео накладывает на качество связи гораздо меньшие требования, чем облачные сервисы.
                                                                                                                  0
                                                                                                                  В лучшем случае вы заплатите плюс-минус столько же и будете жить по правилам облачного сервиса, в уютном мирке, на порядки меньшем по размеру, чем собственный гейминг

                                                                                                                  Ну у вас там получилось минимум 100$ в год. Я бы сказал что «подписка на облако» будет стоить не больше 5$ в месяц. А то и меньше. Плюс ещё где-то 100$ в пять лет на хромбук. Я бы сказал что это дешевле.
                                                                                                                  И вряд ли «правила облачного сервиса» будут хуже того бардака что мы сейчас имеем с приставками.

                                                                                                                  Вы путаете наличие интернета «вообще»

                                                                                                                  Нет, не путаю. Я просто учитываю что мир меняется. Десять лет назад и обычный интернет для большинства не был чем-то критичным…
                                                                                                                    0
                                                                                                                    Я бы сказал что «подписка на облако» будет стоить не больше 5$ в месяц.

                                                                                                                    Где и когда? Пока что самый дешевый провайдер (GF Now) предлагает 8$ в месяц, а для РФ и вовсе около 10$.

                                                                                                                    И вряд ли «правила облачного сервиса» будут хуже того бардака что мы сейчас имеем с приставками.

                                                                                                                    Приставки имеют примерно те же проблемы модели ценообразования, что и облачный гейминг — если вы не готовы играть только в уютном маленьком мирке с минимальным количеством покупок, то консоль + игры для вас быстро станет дороже в долговременном масштабе, чем ПК + гораздо более дешевые игры + гораздо более лучшая амортизация.

                                                                                                                    Нет, не путаю. Я просто учитываю что мир меняется. Десять лет назад и обычный интернет для большинства не был чем-то критичным…

                                                                                                                    Мир не меняется. Меняется общество. И в тех частях, которые упираются в законы физики (покрытие высококачественным беспроводным интернетом) или банально в социальные принципы (благодаря которым общечеловеческий тренд на специализацию и глобализацию всё еще не привел к унификации, например, государств, хотя казалось бы) — оно меняется очень-очень медленно и печально.
                                                                                                                      0
                                                                                                                      Где и когда? Пока что самый дешевый провайдер (GF Now) предлагает 8$ в месяц, а для РФ и вовсе около 10$.

                                                                                                                      Ну ок, давайте возьмём 8-10$. И это на старте/в первый год.
                                                                                                                      Сколько стоил тот же интернет в первые годы своего появления? Сколько он стоит сейчас? Или скажем мобильный интернет?

                                                                                                                      Приставки имеют примерно те же проблемы модели ценообразования, что и облачный гейминг

                                                                                                                      И при этом куча народа им пользуется. Особенно в США/Европе. Я бы наверное даже сказал что больше народа играет на приставках чем на десктопах. А уж если опять же посмотреть только на молодёжь и подростков…

                                                                                                                      Мир не меняется. Меняется общество.

                                                                                                                      О да, очень важная разница в контексте нашей дискуссии.

                                                                                                                      И в тех частях, которые упираются в законы физики (покрытие высококачественным беспроводным интернетом) или банально в социальные принципы

                                                                                                                      Лично я не вижу ни законов физики, ни социальных принципов, которые сделали бы в принципе невозможным «компьютер из облака». И ладно я, но похоже гуглы-амазоны-майкрософты их тоже не видят.
                                                                                                                        +1
                                                                                                                        Ну ок, давайте возьмём 8-10$. И это на старте/в первый год.
                                                                                                                        Сколько стоил тот же интернет в первые годы своего появления? Сколько он стоит сейчас? Или скажем мобильный интернет?

                                                                                                                        Но интернет не особо дешевеет. Вернее, минимальная граница («самый дешевый интернет») не сильно-то и двигается. Сейчас в 2020 вы по этой границе получите то, за что в 2000 году нужно было отдать безумные деньги — но сама граница особо не двигается. Существует определенная доля fixed costs на каждого потребителя, которая и не позволяет опускать цену еще дальше.

                                                                                                                        С чего вы взяли, что у цен облачного гейминга есть какой-то существенный запас для падения? Наоборот, я бы сказал, что именно сейчас сервисы облачного гейминга как никогда заинтересованы в привлечении пользователей по минимальным ценам, а в дальнейшем, если «взлетят», то будут цены повышать (скорее всего не напрямую через увеличение подписки, а другими путями).

                                                                                                                        И при этом куча народа им пользуется. Особенно в США/Европе. Я бы наверное даже сказал что больше народа играет на приставках чем на десктопах. А уж если опять же посмотреть только на молодёжь и подростков…

                                                                                                                        ПК-гейминг хоронят еще с третьего поколения консолей, ага. Всё хоронят и хоронят. Сначала в пользу консолей хоронили, потом в пользу мобил продолжили.
                                                                                                                        Только до сих пор не хоронится чё-то. Наверное потому, что это не рынки с прямой конкуренцией.

                                                                                                                        Лично я не вижу ни законов физики, ни социальных принципов, которые сделали бы в принципе невозможным «компьютер из облака».

                                                                                                                        А тут кто-то говорил про «в принципе»? Я не сомневаюсь, что рано или поздно мы дойдем и до единого человечества (правда, возможно, для этого придётся сначала переехать в космос и создать там деление по пространственному признаку, так что единство будет только планетарное, не более), и до единой организационной стуктуры, и до одного большого компьютера для всех.

                                                                                                                        Вот только в сроках таковой глобализации я буду очень и очень консервативен. Я уже прожил немало событий, отчётливо говорящих о том, что антиглобализационных трендов у человечества столько, что глобализация хоть и идёт, но очень и очень медленно, и практически не ускоряется. То есть, главные причины антиглобализации — социальные и культурные, меняющиеся с примерно одной и той же скоростью (скоростью смены поколений).
                                                                                                                          0
                                                                                                                          Но интернет не особо дешевеет. Вернее, минимальная граница («самый дешевый интернет») не сильно-то и двигается.

                                                                                                                          Это может от конкретной страны зависит, но у нас это точно не так. Сейчас я спокойно могу себе взять пару-тройку гигабайт за пару евро. Поначалу минимальные цены измерялись в десятках евро. И отнюдь не за гигабайты.

                                                                                                                          С чего вы взяли, что у цен облачного гейминга есть какой-то существенный запас для падения?

                                                                                                                          Потому что эти самые «облачные мощности» не так уж и много стоят. А сейчас вы в этих самых сервисах получаете не только мощности, но и подписки на сами игры.

                                                                                                                          Только до сих пор не хоронится чё-то. Наверное потому, что это не рынки с прямой конкуренцией

                                                                                                                          Хорониться он конечно не хоронится, но потихоньку сдувается. Несмотря на то что это не рынки с прямой конкуренцией. А теперь есть ещё и шанс что эта самая прямая конкуренция появится.

                                                                                                                          Вот только в сроках таковой глобализации я буду очень и очень консервативен.

                                                                                                                          Причём здесь какая-то глобализация а ля единое человечество? Это банальный тренд вроде стриминга видео или музыки. И десять-двадцать-тридцать лет назад тоже мало кто мог подумать что мы сейчас будем себе в метро, автобусах или поездах стримить серии в Full HD.

                                                                                                                          И я ещё великолепно помню как мне кто-то лет десять назад доказывал что нетфликс и ему подобные никогда не «взлетят» и что большинство таким пользоваться не будет.
                                                                                                                            0
                                                                                                                            Поначалу минимальные цены измерялись в десятках евро.

                                                                                                                            Я про РФ — «поначалу» был dialup по времени, но его стоимость, с поправкой на инфляцию — была очень похожа на текущие минимальные цены. Конечно, сейчас за эти цены получаем 24/7 и безлимит.

                                                                                                                            Потому что эти самые «облачные мощности» не так уж и много стоят. А сейчас вы в этих самых сервисах получаете не только мощности, но и подписки на сами игры.

                                                                                                                            И что? От где-то там крутящихся серверов до возможности человеку поиграть в игру через облако — огромный путь. К оценке себестоимости нужно относиться серьезно, а не «ну это всё облако, значит дешево».

                                                                                                                            Хорониться он конечно не хоронится, но потихоньку сдувается.

                                                                                                                            Это именно то, что я и описываю словом «хоронят» — вера в то, что что-то там «сдувается». ПК-гейминг всё так же растёт все эти годы (по мере увеличения доли людей, охваченных компьютеризацией, и это увеличение всё еще очень далеко от остановки). Другое дело, что консолерынок одно время рос значительно быстрее, а теперь вот мобилорынок растёт быстрее.
                                                                                                                            Но когда у Пети в 2000 году было 10 яблок, а в 2020 1000 — говорить «это всё сдувается» на основании того, что Вася начал в 2010 году с одного яблока, а сейчас у него их 10 000 — в высшей степени странно.

                                                                                                                            И я ещё великолепно помню как мне кто-то лет десять назад доказывал что нетфликс и ему подобные никогда не «взлетят» и что большинство таким пользоваться не будет.

                                                                                                                            Нетфликс продолжает оставаться сильно убыточным, к слову. И живёт засчёт инвесторских вливаний. И не смог объединить рынок, из-за чего люди типа меня сказали «ага!» и вернулись на старую-добрую модель торрентов, потому что если платить нетфликсу подписку и смотреть кинцо — это для меня очень удобно и экономически обосновано, то платить нетфликсу, HBO, и еще полдюжине других провайдеров — экономически бессмысленно (это уже очень серьезные ежемесячные расходы), и плюс к тому крайне неудобно.

                                                                                                                            Это просто зарисовочка к вашему «нетфликс взлетел». Зато вот для потребления контента torrent edition стриминговые сервисы действительно делают великую вещь — получать высококачественный видеопоток для последующего выкладывания торрента никогда раньше не было так просто и удобно.
                                                                                                                              0
                                                                                                                              Я про РФ

                                                                                                                              Ну с тем что в РФ «облачность» в том или ином виде может придти с неким «запозданием» или в каком-то виде и вообще не придти я наверное спорить не буду…

                                                                                                                              К оценке себестоимости нужно относиться серьезно, а не «ну это всё облако, значит дешево».

                                                                                                                              Ок. Вы можете сказать сколь из этих 8-10$ составляет цена подписки на игры, а сколько сами мощности?

                                                                                                                              ПК-гейминг всё так же растёт все эти годы (по мере увеличения доли людей, охваченных компьютеризацией, и это увеличение всё еще очень далеко от остановки)

                                                                                                                              Это на мой взгляд всё-таки немного о другом. И это не будет продолжаться бесконечно. Особенно если вдруг появятся дешёвые и доступные альтернативы.

                                                                                                                                0
                                                                                                                                Ну с тем что в РФ «облачность» в том или ином виде может придти с неким «запозданием» или в каком-то виде и вообще не придти я наверное спорить не буду…

                                                                                                                                В определенных частях РФ с качеством каналов, в том числе беспроводных — сильно лучше, чем в этих ваших европах, и очень сильно лучше, чем в США.
                                                                                                                                Правда, неясно, что будет с 5G, но как я уже писал выше — 5G плохо пробивает стенки, так что я бы в обозримом будущем не надеялся на хорошее покрытие 5G за пределами сугубо отдельных мест и окрестностей.

                                                                                                                                Ок. Вы можете сказать сколь из этих 8-10$ составляет цена подписки на игры, а сколько сами мощности?

                                                                                                                                Эм. А помимо этого расходов никаких нет? Точно-точно?

                                                                                                                                Особенно если вдруг появятся дешёвые и доступные альтернативы.

                                                                                                                                Ну вот консоли и мобилы «альтернативами» ПК-геймингу не являются. У них свои рынки и свой охват, и конкуренция тут только окольная (за время пользователя, но за время много что еще конкурирует, тот же фейсбучик).
                                                                                                                                А еще не надо забывать про VR, который уже прошел фазу бесполезной игрушки сугубо для фанатов, и потихоньку выгрызает себе место под солнцем, несмотря на море технических проблем и сложностей. И это сейчас целиком и полностью относится к ПК-геймингу.
                                                                                                                                  0
                                                                                                                                  Эм. А помимо этого расходов никаких нет? Точно-точно?

                                                                                                                                  Ну давайте опять переформулирую: сколько по вашему составляет стоимость подписки на игры и сколько будет стоить всё остальное?
                                                                                                                      0
                                                                                                                      Консоль с большой вероятностью можно будет в случае необходимости достать лет через десять и использовать по прямому назначению, особенно если есть либо физические носители, либо можно делать бекап файлов. Облако на такое не способно
                                                                                                                    0
                                                                                                                    Сколько стоит комбинация «рабочей лошадки» плюс игровая приставка?

                                                                                                                    Она(в моём, например, случае) стоит как одна "рабочая лошадка" без приставки. Области эти вполне могут пересекаться до полного совпадения — видеокарта нормальная, проц шустрый, памяти много, диск под разное и SSD под выделенное — это и для разработки, и для 3Д, и для игр пойдёт.
                                                                                                                    При этом рабочая лошадка одной эпохи с приставкой лучше приставки и по картинке, и по предложенному выбору.

                                                                                                                      0
                                                                                                                      В каком месте это дешевле? Сколько сейчас стоит игровой комп, который тянет новейшие игры? Как часто его надо менять?

                                                                                                                      Я купил свою игровую машину в районе декабря 2014-го года этак за тысячу фунтов, и она до сих пор тянет новейшие игры, включая какой-нибудь там BF1 (пусть и без рейтрейсинга). Только вот подумываю, что пора апгрейдить, но поймал себя на том, что в последнее время играю мало.

                                                                                                  +2
                                                                                                  Вы из тех, кто всё еще верит, что wasm — это чтоб можно было для веба писать на чём угодно? Ну, блаженны верующие.
                                                                                                  Вы видимо из тех, кто верит, что JS — это язык на котором веб будет работать до погасания Солнца.
                                                                                                    0
                                                                                                    Нет конечно. Но веб не будет работать на всяких сях, шарпах, и прочем. Веб уже одно время на этом работал, и благополучно съехал с этого на JS. Подумайте над тем, почему.

                                                                                                    А веб если и будет далее работать на чем-то другом, то это будет новая технология.
                                                                                                      0
                                                                                                      WebAssembly весьма перспективна и позволяет и писать фактически на чем угодно. Так что может еще как говорится при нашей жизни странный язык JS будет отправлен в историю, по крайней мере, частично.
                                                                                                        0
                                                                                                        Да, только на выходе — огромные бандлы, на которые даже всякие реакты-ангуляры смотрят с усмешкой, которые абсолютно никак не дробятся для того, чтоб можно было подгружать сайт по частям, и которые работают с обычной скоростью браузера — потому что если как числодробилка wasm может быть куда быстрее движка JS, то вот передача данных в документ там происходит с обычной скоростью, и манипуляции с DOM — аналогично.

                                                                                                        Так что вы пишите, пишите. Если вдруг это кому-то станет нужным — сообщите отдельно.
                                                                                                          0
                                                                                                          Ок, время рассудит
                                                                                                            0
                                                                                                            Почему бандлы обязательно огромные и не дробятся?
                                                                                                              +1
                                                                                                              Стандартная библиотека js уже идёт в браузере. Стандартная библиотека того что собрано в wasm должно идти уже вместе с этим wasm, иначе работать не будет.
                                                                                                                0
                                                                                                                Хм, а что конкретно вы в данном случае понимаете под «стандартная библиотека js»?
                                                                                                                И почему какая-нибудь «стандартная библиотека wasm» не может точно также идти в браузере? Например если вдруг все заинтересованные стороны вдруг смогут договориться о каком-то общем стандарте?
                                                                                                                  0
                                                                                                                  Хм, а что конкретно вы в данном случае понимаете под «стандартная библиотека js»?
                                                                                                                  Реализация строк, массивов, списков, методов типа map, sort и так далее.
                                                                                                                  И почему какая-нибудь «стандартная библиотека wasm» не может точно также идти в браузере?
                                                                                                                  Может, но для этого надо договориться. Стандартная библиотека для rust и c# будет значительно отличаться, и переиспользовать это к примеру в golang — вряд ли получиться. Таким образом на каждый язык по стандартной библиотеке, а ещё нужно будет кешировать кучу популярных фреймворков для каждого языка.
                                                                                                                    0
                                                                                                                    ещё нужно будет кешировать кучу популярных фреймворков для каждого языка

                                                                                                                    С каких пор у JS с зоопарком пакетов здесь есть преимущество?)
                                                                                                                      +1
                                                                                                                      Их суммарное количество. Одно дело закешировать 10 популярных файлов, и другое 100 не очень.
                                                                                                                        0
                                                                                                                        Это не может быть конкурентным преимуществом отдельной технологии. Юзер все равно будет качать что-нибудь, будть то react/angular очередной версии или же какой-нибудь популярный X.
                                                                                                                        0

                                                                                                                        То что у вас один зоопарк, а не помноженный на число языков.

                                                                                                                        0
                                                                                                                        Реализация строк, массивов, списков, методов типа map, sort и так далее.

                                                                                                                        Ну там скорее целый рантайм с движком.

                                                                                                                        Может, но для этого надо договориться

                                                                                                                        Ну с самим JavaScript как-то ведь договорились.

                                                                                                                        Таким образом на каждый язык по стандартной библиотеке

                                                                                                                        Ну или всё таки договориться и остановиться на каком-то одном языке.

                                                                                                                        кешировать кучу популярных фреймворков для каждого языка.

                                                                                                                        Ну вон сейчас что только не кэшируется и большинству на это похоже просто наплевать.
                                                                                                                        0
                                                                                                                        И почему какая-нибудь «стандартная библиотека wasm» не может точно также идти в браузере?

                                                                                                                        Полагаю, проблема здесь в том, что wasm — существенно более низкоуровневая вещь, чем js. В нём вообще нет понятия "строк, массивов, списков" и тому подобного, в отличие от js. Максимум, чего мы здесь можем ожидать, — некоторый C-подобный API, предлагаемый при компиляции, вместо прямого доступа к линейной памяти (как это сделано сейчас).

                                                                                                                          0

                                                                                                                          Да, вот именно. С WebAssembly каждый сайт будет загружать свою реализацию строк, массивов и других нужных типов.


                                                                                                                          Все пеняют на JavaScript за пакет left-pad (хотя его уже давно перенесли в stdlib, но хейтеры не унимаются), но при этом нормально относятся к тому что с WASM каждая страница загружает свою реализацию примитивов.

                                                                                                                            +1

                                                                                                                            То что в WASM появятся интрисинки для строк/массивов и прочего вы не рассматриваете? Когда вы делаете JSON.stringify() там прям так и пишут [native code]. Что мне мешает вызвать магическую функцию, которая реализована в браузере?


                                                                                                                            Точно так же если дадут АПИ к браузерному ГЦ чтобы всяким шарпам и жабам не нужно было тащить свой, то все эти бандлы резко похудеют.


                                                                                                                            В общем, размеры не-жабовских васмов это инженерная проблема, а не теоретическая, которую думаю достаточно скоро порешают.

                                                                                                                              0

                                                                                                                              Я такой вариант рассматриваю и горячо поддерживаю.


                                                                                                                              Мой комментарий был про двойные стандарты – если какой-то фичи нет в Javascript – то всё, язык ни на что не годен. В то же время если какой-то фичи нет в другом языке/рантайме – ничего страшного, скоро добавят.

                                                                                                                                0

                                                                                                                                Вы следите за этим? Они вообще планируют это делать? Просто мне кажется что стоит только начать и сообщество сожрёт себя в извечных холиварах о том, какая структура данных лучше, какой подход правильнее и чья религия истинная… Или не сожрёт?

                                                                                                                                  +2

                                                                                                                                  Вполуха. В целом считаю, что тенденция идёт к тому чтобы сделать что-то вроде жвм на браузере, где сам браузер предоставляет рантайм, а разные языки в этом живут и используют общую кодовую базу. Надо было сразу жабу в браузеры засунуть 25 лет назад, но что сделано, то сделано. У ВАСМа на официальном сайте есть неплохое объяснение "почему мы решили делать свою вм, а не использовали жвм/ллвм/...", в целом их мотивация понятна. Но если бы не было этой фрагментации, мне кажется, было бы куда лучше для всех.


                                                                                                                                  В итоге, всё равно к этому идём, но длинным путём.

                                                                                                                          0
                                                                                                                          То, что собрано в WASM не требует всей стандартной библиотеки же, достаточно собрать только то, что используется. Да и есть поддержка динамической линковки, что вполне кэшабельно.

                                                                                                                          И все это в компактном бинарном формате.
                                                                                                                      0
                                                                                                                      чтоб можно было подгружать сайт по частям, и которые работают с обычной скоростью браузера — потому что если как числодробилка wasm может быть куда быстрее движка JS, то вот передача данных в документ там происходит с обычной скоростью, и манипуляции с DOM — аналогично.
                                                                                                                      Не факт, что и DOM и вообще веб в текущем состоянии останется навсегда, нужно мыслить в будущее:
                                                                                                                      habr.com/ru/post/500822
                                                                                                                +1

                                                                                                                Blazor, так-то уже вполне позволяет на шарик писать сайтики. Ага.

                                                                                                                  +1

                                                                                                                  *на шарпе, конечно...

                                                                                                                    0
                                                                                                                    Конечно позволяет. Вы главное не забудьте посмотреть на итоговый размер этого всего великолепия.
                                                                                                            0

                                                                                                            Альтернативы в истории были более-менее популярные: VBScript, JScript. Но рынок решил JavaScript лучше

                                                                                                              0
                                                                                                              Ну на мой взгляд в данной ситуации пожалуй не стоит использовать словосочетание «рынок решил». То есть да, JavaScript оказался «живучее». Но его выбоали совсем не из экономических соображений. И я бы даже сказал что основную роль сыграла скорее «политика».

                                                                                                              Ну и как бы не надо забывать что JavaScript'у уже 25 лет и за это время в ИТ очень многое очень сильно изменилось.
                                                                                                                0

                                                                                                                А из каких соображений IE проиграл войну браузеров?

                                                                                                                  0
                                                                                                                  Ну на эту тему можно отдельную статью написать :)
                                                                                                              0
                                                                                                              Вот в конкретно упомянутом вами случае порешал не рынок, а федеральная антимонопольная служба.
                                                                                                                0

                                                                                                                Можно поподробнее?

                                                                                                                  +1
                                                                                                                  У MS был шанс «втащить» VBScript на рынок (так как она доминировала на рынке браузеров). А потом en.wikipedia.org/wiki/United_States_v._Microsoft_Corp.#Settlement
                                                                                                                    0

                                                                                                                    Уф, напугали, я уж думал именно ФАС как-то порешала.


                                                                                                                    Но решил таки рынок, имхо, устранив искусственные ограничения со стороны MS. Хотя лично я во времена IE5+ писал на JS, просто чтоб не только под IE работало. А так, кто знает, как бы сейчас выглядел веб, если бы MS в те годы решила выложить исходники если не IE, то движка VBScript под MIT или Apache

                                                                                                                      0

                                                                                                                      Если выбирать между вб и жс, то лучше уж жс, право слово

                                                                                                                        0

                                                                                                                        Если отбросить идеологические убеждения, то я на 100% не уверен, что какой-нибудь ES3 по всем статьям лучше

                                                                                                                          0

                                                                                                                          Ну у меня в школе был бейсик (до того как я уже в универе начал паскаль изучать), и все эти DIM FOO BAR выбешивали, и казались очень многословными (хотя не с паскалем сравнивать, конечно).


                                                                                                                          Плюс я ж дотнетчик, периодически вижу как на вб.нет выглядит код, и перекрещиваюсь каждый раз))


                                                                                                                          С другой стороны, тайпскрипт на вб был бы куда ближе к обычным ооп языкам, и возможно было бы всё получше. А может и нет. Впрочем, ничего уже не поменять.

                                                                                                            +6
                                                                                                            > Под конец хотелось бы обсудить многопоточность в JS. Причина, по которой в JavaScript-е нет нормальной реализации многопоточности не в том, что язык какой-то не такой и он просто не способен на что-то такое, а в сфере его применения — web разработка.

                                                                                                            > В веб-разработке вам в принципе не должна понадобиться возможность исполнять ваш код в несколько потоков. Если вам часто приходится прибегать к ней, то скорее всего вы делаете что-то не так

                                                                                                            Второе утверждение довольно спорно. Да в большинстве случаев многопоточность не нужна, но иногда все-таки бывает нужна.

                                                                                                            При это я ярый сторонник однониточности в nodejs. Это фантастически упрощает многие вещи. Не нужны локи, мьютексы, не нужно думать о гонках. Сторонние слабо-документированные библиотеки (а они сейчас все такие) не будут дергать твои колбэки из разных ниток. Это очень практические плюшки. А при наличии лучшей (ну может одной из) реализаций async/await все это позволяет писать код с очень понятным поведением.

                                                                                                            И есть еще философское преимущество, это то о чем примерно и вы говорите – ограничение одним потоком заставляет сразу думать о горизонтально-масштабируемой архитектуре.

                                                                                                            А если кому-то нужна многониточная числодробилка – ну это явно не ниша применения nodejs.

                                                                                                            У меня к JS по большому счету одна большая (огромная) претензия — целочисленные типы.
                                                                                                            (Вторая к JSON — отсутствие стандартного типа для DateTime).

                                                                                                              +1

                                                                                                              Так завезли же целочисленные типы недавно

                                                                                                                0

                                                                                                                При все при этом — потоки тоже есть. Причем сейчас даже не нужно и симулировать подпроцессами, достаточно require('worker_threads').

                                                                                                                +5
                                                                                                                Проблема JS в том, что код на нём низкоинформативен. И когда вы пытаетесь вникнуть в чужой проект (или в свой собственный полтора года спустя), вам становится очень грустно.
                                                                                                                Тут вот радовались, что в JS не нужно париться с явным преобразованием типов. Никаких дурацких strToInt и подобного, просто суй любые данные и они сами преобразуются. Но ведь тем самым мы лишаем себя важной информации. Теперь о типах переменных остаётся только догадываться. Тогда как встретив в коде strToInt, читатель сразу же поймёт, что передаваемые внутрь данные — строка, а то, что на выходе — число, причём гарантированно целое.
                                                                                                                И так там везде. В итоге понять: а что же, чёрт возьми, должно передаваться в эту функцию — та ещё задача. JS — единственный язык на моей памяти, для изучения чужого кода в котором мне приходилось постоянно юзать отладчик. Потому что иначе ну просто не понять, что вообще должно падать в недра глубоко вложенных замыканий и прочих микро-функций.
                                                                                                                Асинхронщина — отдельная пакость. Дело в том, что человеческий мозг намного лучше воспринимает алгоритм, действия которого выполняются последовательно, нежели когда на каждом шагу всего лишь создаётся «зарубка на память», которая потом сдетонирует при достижении определённых условий. Бывает так, что просто даже сообразить, при каких условиях выполнится данный участок кода, и выполнится ли он вообще, оказывается чрезвычайно сложно.
                                                                                                                И вот вместо того, чтобы возложить формирование асинхронного кода на компилятор, позволяя кодеру работать с ним так, как будто бы он был синхронным, какому-то умнику показалось неплохой идеей вытащить концепцию монады из мира функциональщины и, изрядно покоцав её хакерской монтировкой, обозвать получившуюся хрень промисом.
                                                                                                                Код на промисах выглядит гадко, его просто даже неприятно изучать — воображение словно бы «вязнет», приходится предпринимать дополнительные усилия, чтобы держать в памяти полную картину происходящего.
                                                                                                                  –3
                                                                                                                  Не могу согласиться, что код на JS низкоинформативен, особенно если документировать его. Мне конечно однажды встретился проект, где код на jQuery был написан в одном файле и на несколько тысяч строк, но это не проблема языка, а человека, который все это написал. А работать с асинхронщиной довольно просто, если понять, как он работает и что к мультипоточности он никакого отношения не имеет. Но если вы пишите действительно большой проект, то скорее всего вам нужен TS, а не JS
                                                                                                                    +2
                                                                                                                    Это вы на руби с навороченными диэсэлями не писали
                                                                                                                      +2
                                                                                                                      Соглашусь с частью ваших замечаний, но с некоторыми не соглашусь.

                                                                                                                      код на нём низкоинформативен

                                                                                                                      Зависит от компетентности разработчика. Хороший разработчик способен писать читаемый, понятный, «чистый» код.

                                                                                                                      о типах переменных остаётся только догадываться

                                                                                                                      Порой сама среда разработки способна подсказать тип на основе синтаксического анализа. Также помогает jsdoc и принципы контрактного программирования. Если уж совсем хочется typesafety, то TypeScript ваш вариант.

                                                                                                                      Асинхронщина — отдельная пакость

                                                                                                                      В мире js используется кооперативная многозадачность. И по опыту скажу, что для простых задач это лучше вытесняющей многозадачности (aka многопоточность), где с синхронизацией (мьютексы, атомики, happens before, видимость памяти) можно голову сломать.

                                                                                                                      мозг намного лучше воспринимает алгоритм, действия которого выполняются последовательно

                                                                                                                      Все верно, для этого в спеку ввели синтаксис async / await, который позволяет писать код последовательно:

                                                                                                                      class RestApi {
                                                                                                                        async doSome() {
                                                                                                                           ...
                                                                                                                        }
                                                                                                                      }
                                                                                                                      
                                                                                                                      async function main() {
                                                                                                                        const rest = new RestApi();
                                                                                                                        const { result } = await rest.doSome();
                                                                                                                        ...
                                                                                                                      }
                                                                                                                      


                                                                                                                      В заключении скажу, js не идеален, никто с этим не спорит. Но язык развивается, совершенствуется, и думаю, он еще нас приятно удивит.
                                                                                                                        0
                                                                                                                        JS — единственный язык на моей памяти, для изучения чужого кода в котором мне приходилось постоянно юзать отладчик.

                                                                                                                        Питон имеет аналогичную проблему. По листингу Паскаля я почти сразу могу понять и рассказать что там происходит. В Питоне — увы, только отладка. И, ладно бы строки и целые. Хуже когда строки, целые, классы, кортежи — всё абсолютно одинаковое. И только отлаживая можно понять что происходит в коде.
                                                                                                                          +1

                                                                                                                          А ещё ruby, php, groovy, lua, etc. Любой язык где нет достаточного контекста чтобы можно было быстро понять где что и как. Т.е. динамически-типизированные.

                                                                                                                          +2
                                                                                                                          И вот вместо того, чтобы возложить формирование асинхронного кода на компилятор, позволяя кодеру работать с ним так, как будто бы он был синхронным, какому-то умнику показалось неплохой идеей вытащить концепцию монады из мира функциональщины и, изрядно покоцав её хакерской монтировкой, обозвать получившуюся хрень промисом.

                                                                                                                          Эммм, простите, а при чем тут функциональщи