JavaScript превзошел всех

Привет, Хабр! Представляю вашему вниманию перевод статьи JavaScript Has Already Won автора Jonny Asmar.

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

Уже давно в мире программирования идет борьба. С самого момента появления компьютера программисты искали идеальный язык программирования. Один за другим создавались новые языки, чтобы приспособить их к определенным целям. И с этими новыми языками появилась новая эра технологий, появилось миллион библиотек и множество информации в свободном доступе, а с этим всем неизбежно появились новые ограничения. С давних времен программирования Java Applets (приложений) можно заметить, что различные языки неожиданно появлялись и так же неожиданно исчезали, кроме того, их полезность быстро сходила на нет.

Мир движется в новом направлении…

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

Однако, JavaScript уже практически десятилетия находится рядом и никуда не уходит. Итак, уместно будет задать такой вопрос: «В каком же направлении он движется?» Однако, этот пост не совсем о «JavaScript». Также, он не касается того множества языков, которые были до него. И здесь не говорится о том, какой JavaScript замечательный.

Этот пост про программную платформу Node.

И эти вещи действительно необходимо различать. Потому что Node — это что-то другое. Это не просто язык. Это экосистема.

И это то, о чем будет идти речь.

Хотя… не совсем. Здесь не будет описываться миллион причин, по которым эта экосистема является самым инновационным посредником в области взаимодействия с открытым исходным кодом, которую когда-либо видел мир. На данный момент я просто проиллюстрирую то, как эта платформа уже победила вековую войну за совершенный язык, пройдя несколько ключевых территорий программирования современной эпохи:

Всемирная паутина


React, Angular и Vue

React, Angular и Vue это самые важные интерфейсные системы, существующие на сегодняшний день. Совместно, Facebook, Google и сообщество FOSS разработали интеллектуально эффективные инструменты для разработки интерактивных пользовательских интерфейсов.
В результате, практически всё, что вы делаете сегодня в Интернете, обслуживается очень интерактивным, эстетически приятным и простым в использовании интерфейсом. И все это стало возможным только благодаря экосистеме Node.

Нет никаких сомнений в том, что JavaScript главенствовал над веб-разработками в течение вечности, но React, Angular и Vue переносит все это на другой уровень.
Это период пользовательского интерфейса.

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

И вот так… Node превзошел Всемирную паутину.

Телефоны


React Native
(фреймворк для разработки кроссплатформенных приложений для iOS и Android)

Здесь речь пойдет не только об успехах платформы в сфере мобильных телефонов, но и о том, чтобы уяснить один важный момент:

Node является кросс-платформенным, то есть он может работать более чем на одной аппаратной платформе или операционной системе.И это подразумевает не только — «О, круто, это работает на моем телефоне!». И даже не это — «Вау, мой телефон, планшет, ноутбук и телевизор могут поддерживать YouTube!».

React Native — это всего лишь один из примеров структуры, разработанной в экосистеме Node, которая устраняет разрыв между разработкой интерфейсов и разработкой мобильных приложений в такой форме, которой ранее не существовало у других инфраструктур.

Наибольшим минусом при разработке приложений для телефона было в отсутствии их связи с интернетом. Однако с помощью React Native и экосистемы Node разработчик может создать единое приложение, поддерживаемое браузером, iOS и Android. Никакой другой язык не предлагает такую универсальность.

И вот так… Node превзошел мобильные телефоны.

Desktop


Electron

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

На самом деле это был вопрос времени, прежде чем JavaScript догнал производительность настольных компьютеров. Вот так и появился Electron.

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

Благодаря Cheng Zhao & Github была создана структура, которая меняет внешний вид настольных компьютеров. Корпорация Electron не только добавила разработку настольных приложений в уже растущий репертуар веб-разработчиков, но и сделала это таким образом, что она полностью совместима с другими ОС.

Хотя Windows по-прежнему является самой распространенной ОС сегодня, Mac находится в состоянии роста уже на протяжении 15 лет, и все большее и большее число разработчиков переключаются на Linux каждый день. И теперь даже небольшие игрушки, такие как Raspberry Pi, чаще станут появляться на Linux, а не только у тех, у кого Windows или Mac. Теперь можно представить, почему кросс-разработка ОС — такое огромное преимущество… и это только начало.

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

И вот так… Node превзошел Desktop.

Игры


Unity 3D

Я оставила это напоследок, потому что это не совсем «Node», это все таки больше относится к JavaScript, и об этом поговорим чуть более подробно:
Успех JavaScript состоит не в том, что он превосходит другие языки, Его успех — это прямой результат того, насколько он приспособлен для применения практически везде.
Разработчики JavaScript не пуристы.

Нам нравится наш язык таким, какой он есть (нет); версионно-фрагментированный, зависимый от транспилеров, кросс-платформенный, постоянно развивающийся и стремящийся туда, куда не добирался еще ни один из языков.

Как и развитие игр!

Когда Unity 3D впервые представила свой «UnityScript» на основе JavaScript в качестве средства для разработки игр, тогда стало понятно, что JavaScript теперь будет создавать действительно прикольные вещи. Это было одним из первых крупных набегов на не-веб-развитие, и это был явный признак того, что что-то будет происходить.

Теперь стало отчетливо видно, что JavaScript может делать намного большее, чем просто открывать меню, а также менять размер шрифтов на странице. Он может дать больше, чем просто позволит лайкнуть этот пост. Он может обрабатывать захватывающие, кросс-платформенные игровые события. И те же самые разработчики, которые когда-то были ограничены — Chrome, Firefox и Internet Exploder, внезапно стали разработчиками игр.
И хотя Unity недавно объявила о том, что они откажутся от поддержки UnityScript, я все равно буду говорить:

И вот так… JavaScript превзошел игры.
Хорошо, может быть, нет. Но это не последний раунд, правда?

Я не знаю, когда это закончится, но Node убирает одну преграду за другой и прокладывает путь к миру разработки программного обеспечения, где один язык управляет всеми остальными. Естественно, JavaScript не лучший язык для всего на свете. Но сила JavaScript в том, что он универсальный, и он является самой мощной развитой экосистемой, доступной на сегодняшний день.
Поделиться публикацией
Ой, у вас баннер убежал!

Ну. И что?
Реклама
Комментарии 223
  • +14
    Однако, JavaScript уже практически десятилетия находится рядом и никуда не уходит.

    Это потому что у нас не было выбора.
    • –6

      Был (есть?) VBScript

      • +2

        Кто-то не застал IE 3.0? :)

      • +6
        Я в таких случаях сравниваю технологии с форматом mp3. Он отнюдь не самый лучший, но он есть везде. Но можно ли сказать, что он превзошёл всех? Нет.
        • 0
          Если слово превзошел употреблять в значении опередил — почему нет?
          • 0

            Как это нельзя? Можно!
            mp3 сейчас разве что на кофеварке не воспроизводится и уж точно поддерживается абсолютно любым плеером. На высоких битрейтах даёт вполне хороший звук. Что, как не высокая распространенность и поддержка всеми платформами, являет собой триумф для формата передачи/обмена музыкой?


            То же с JS. Можно долго и упорно поливать ES3,5, но с ES6 и вверх это вполне приятный язык программирования, со своими заморочками, достаточно обширным набором батареек (npm, ага), который, после некоторой настройки сборочного пайплайна, почти на всём, где есть браузер.


            Это не значит, что JS — единственно-правильный вариант из всего. Но потешный полки нынче вполне себе боеспособная армия.

            • 0
              Но можно ли сказать, что он превзошёл всех?

              В оригинале — has already won. Не превзошёл всех, а победил. Переводчик, как это часто бывает, порет отсебятину, отсюда и сложности.

            • +5
              У JS нет конкурентов потому что все, кто боролся с JS — сдохли. Java.applet, Flash, Silverlight, Dart, CoffeeScript…
              Microsoft поняли закономерность и вместо того, чтобы бороться с JS, стали с ним дружить и развивать через расширение, а не замену. Поэтому TypeScript живет и развивается.
              • –2

                Dart-то от чего сдох-то? Вполне себе живой, вроде, и здоровой. Возможно, причина в том, что он не очень-то и стремился бороться с JS.

                • 0
                  И сколько платформ его нативно поддерживают?)
                  • 0

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

                    • –5

                      Побольше, чем TypeScript.

                  • 0
                    Надо сказать, что Typescript стал так популярен благодаря Angular. Многие изучают его потому что «надо». Мне он нравится, но многим — нет.
                    • +4
                      Все реактёры, которых я знаю, используют ts. Так себе конечно выборка, но angular — далеко не единственная причина популярности typeScript
                      • –1
                        Но все-таки хайп поднял скорее всего именно Angular) А так — да, замечательный язык.
                      • 0
                        Я автоматизировал на js, а потом перешёл на typescript. Обратно уже не хочу ) Может, Angular дал старт популярности, но сейчас typescript популярен, потому что он хорош.
                      • –2
                        TS, это, извините, попытка решить проблемы волков и овец путём «а давайте заметём js под коврик и сделаем вид, что у нас не js вовсе, а как будто бы „нормальный“ язык со строгой типизацией, compile-time проверками и прочим сахаром».

                        В техническом плане это не замена, конечно, но для пишущего код — вполне.
                        • +1

                          Ну, при достаточной популярности typescript вполне можно ожидать оптимизаций в JS-движках, особенно с JIT под капотом под предположения, что, например, тип переменных и параметров функций не меняется. Даже без ts такие оптимизации имеют смысл, так что я очень удивлюсь, если они уже не сделаны не только в движках от MS и Google, но и других.

                        • 0
                          У JS нет конкурентов потому что все, кто боролся с JS — сдохли. Java.applet, Flash, Silverlight

                          Сдохли они по своим причинам, JS к этому не имеет отношения.
                          • 0
                            У JS нет конкурентов потому что все, кто боролся с JS — сдохли.

                            Неверно. Никаких конкурентов у него не было.

                            Java.applet

                            Они никогда не были нативными для броузера. Со всеми вытекающими.

                            Flash

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

                            Silverlight

                            Это вообще нонейм нечто.

                            Dart

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

                            CoffeeScript

                            Это вообще непонятно как тут оказалось.

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

                            Microsoft поняли закономерность и вместо того, чтобы бороться с JS, стали с ним дружить и развивать через расширение, а не замену. Поэтому TypeScript живет и развивается.

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

                            Да и ТС не является языком( если только формально). Это позволяет его интегрировать в существующую экосистему. В дарте с этим проблемы, ведь он уже язык чуть более, нежели чисто формально. Интеграция его с жс и его в жс — сложна.

                            Именно поэтому говорить о каких-то конкурентах не имеет смысла — ведь их попросту не может быть. Даже когда доделают wasm, то это мало что поменяет для не llvm-based языков. Ведь жс получил поддержку всех платформ на халяву, а другие должны будут её пилить руками. А это далеко не так просто, как в случае с TS, где «компилятор» — это на 90% copy и на 10% replace.

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

                            Если раскрыть тему, то типизация даёт фишки те, которые не даёт жс. Простой пример — перегрузка функций, которой в ТС попросту нет( а то, что ей называется — ею не является). Классы не типы, енамы не типы. Типы не умеют в данные( хотя вроде генерики из жавы( с которых ТС и пастили) этого не умеют то же). И таких примеров масса, и как только они появляются в языке — одним copy/replace не обойтись.

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

                              Таки был минимум один. Когда IE победил в войне браузеров, в нём было два языка: JScript (диалект JavaScript) и VBScript (диалект VisualBasic), но MS как-то умудрилась не сделать последний стандартом де-факто. Скорее всего, благодаря большей приверженности к закрытости чем сейчас, благодаря самонадеянности.

                            • 0
                              JS в последнее время много позаимствовал у Coffee и потому последний уже не нужен.
                          • +7
                            Unity 3D можно программировать и на C#, так что это так себе аргумент.
                            • +6
                              Да и на Unity свет клином не сошелся.
                              Большинство игр все еще пишут на c++
                              • –5
                                C++ начал резко сдуваться из-за своей совершенно кошмарной инфраструктуры.
                                Проект, перенесённый на другую машину при помощи git clone, почти наверняка не захочет собираться. А если вдобавок нужна кросс-компиляция? C++ обеспечит вам массу увлекательных квестов, когда проект, исходно собираемый в GCC, вдруг потребуется собрать под винду.
                                В XXI веке у такого языка просто нет шансов при наличии хоть какой-то альтернативы, ведь по нынешним временам любой проект просто обязан разворачиваться в два клика на любой платформе, и собираться под любой платформой для всех целевых платформ сразу.
                                • +2
                                  В XXI веке у такого языка просто нет шансов при наличии хоть какой-то альтернативы

                                  Ды есть D, Rust, Nim и тд. И сколько уже было «убийц С++» а воз и нынче там.
                                  ведь по нынешним временам любой проект просто обязан разворачиваться в два клика на любой платформе, и собираться под любой платформой для всех целевых платформ сразу.

                                  В случае С++ это полностью зависит от программиста, буст разворачивается практически везде, Qt.

                                  А уж про игры и графику я вообще молчу, там С++ царствовать будет ещё очень и очень долго.
                                  • –1
                                    А уж про игры и графику я вообще молчу

                                    Не путайте игры, графику и 3d Engines. Движки еще долго будут писать на C++, но их будут делать пять огромных мировых компаний и может быть еще сотня мелких неизвестных узкоспециализированнных движков. Больше половины игр пишут на Unity, где c#.

                                    • 0
                                      Не путайте игры, графику и 3d Engines

                                      Я и не путаю, кроме игровых движков, есть 3D редакторы 2D редакторы рендеры и куча куча другого графического совта.
                                      Больше половины игр пишут на Unity, где c#.

                                      А можно ссылочку на статистику? А что насчёт Unreal?
                                      • 0
                                        3D редакторы 2D редакторы рендеры и куча куча другого графического совта.

                                        И все это может быть написано хоть на питоне (при использовании ядра на с++)


                                        А можно ссылочку на статистику? А что насчёт Unreal?

                                        34% самых популярных игр разработаны на Unity
                                        https://unity3d.com/ru/public-relations


                                        Unreal не так популярен

                                        • 0
                                          И все это может быть написано хоть на питоне (при использовании ядра на с++)
                                          Отличное уточнение. Вы можете написать ось хоть на питоне (при использовании ядра на С++). Просто скриптовый язык нет смысла рассматривать, потому что скриптовым языком может быть любой язык, и заменить его так же не составит труда, важно именно ядро. Именно о нём и речь. (не видел ни одного рендера (типа Arnold, Prman) написанного с поддержкой скриптового языка)
                                          34% самых популярных игр разработаны на Unity Unreal не так популярен

                                          Ох уж эти маркетинговые ходы, хотя в области мобилок возможно и правда, но на PC и консолях можно пример нескольких громких игр написанных на Unity? Вот на Unreal я знаю и назвать могу довольно много, а вот на unity ни одно ААА тайтла не могу вспомнить.
                                          • –1
                                            > а вот на unity ни одно ААА тайтла не могу вспомнить.

                                            Я ничего вам сказать не могу, т.к. я всего лишь программист, и судя по рынку вакансий Unity просто доминирует. Реально, с какими играми бы я ни сталкивался — все на юнити. Касательно AAA сказать ничего не буду — Unity не совсем годен для AAA.
                                  • 0
                                    CSS тоже периодически нужно «затачивать» под браузеры. CSS пора сдохнуть?
                                    • –2
                                      CSS пора сдохнуть?
                                      Было бы неплохо. Это такой набор костылей и несогласованностей что хоть рыдай. Но, альтернативы нет.
                                      • 0

                                        Альтернатив много. Более того, растёт популярность CSS-like решений там, где их отродясь не было.

                                    • –1
                                      Ну вот почему на хабре минусуют здравые мысли?
                                      • –2
                                        Может потому-что они не такие уж и здравые как вам кажется?
                                        • –1
                                          Я думаю, вам нужно лет 15 программировать на с++, чтобы понять
                                          • 0
                                            Программирую на С++ уже 14 лет, сомневаюсь что через год что-то поменяется.
                                            • 0

                                              Там в комментарии были следующие утверждения


                                              Проект, перенесённый на другую машину при помощи git clone, почти наверняка не захочет собираться.

                                              Это неправда?


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

                                              Это неправда?

                                              • +1
                                                Всё зависит от того как написан код. Если нормально, то всё будет спокойно собираться независимо от компилятора и машины. У меня очень редко когда были проблемы с компиляцией, больше всего проблем с зависимостями вот тут да, тут всё плохо.
                                                • 0

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

                                                  • 0
                                                    Ну тут многое ещё зависит от того какие библиотеки при этом используются. Я видел отвратный код который тем не менее успешно собирался под винду, линукс, андройд, мак, иос (разработка игры под мобилки с использованием marmalade). Так что если писать боле менее нормально с использованием правильных библиотек, то геморроя не будет.
                                                    • 0
                                                      Да будет геморрой. Будет. Каждый, блин, день будет. Каждую подключенную библиотеку нужно прикручивать с помощью говна и палочек, и писать обертки над маргинальными си-интерфейсами, если вдруг хочется ООП и классов.
                                                      • 0
                                                        и писать обертки над маргинальными си-интерфейсами, если вдруг хочется ООП и классов.

                                                        Видимо вы что-то не то используете boost, Qt вполне себе оопшные (из тех что я ещё использую Alembic, Maya, Ilm, tbb и куча других практически все oop и все мультиплатформенные) и гемора как-то нет.
                                                        • –1
                                                          Ну вот вы возьмите, например, IntelMKL. Если найдете обертку в виде Eigen — то флаг вам в руки, нет — будете писать через жопу. А кого интересуют GUI фреймворки, которых тысячи — выбирай любой. А вот что-то особенное всегда через жопу.
                                                          • 0
                                                            IntelMKL
                                                            А в чём с ним проблема? Просто я от интела использую Tbb и Embree ispc(не библиотека но всёже) и никогда с ними проблем не было что под виндой что под линем.
                                                            А вот что-то особенное всегда через жопу.
                                                            У меня довольна узкая специализация, и практически всё особенное, но при этом практически все библиотеки ооп и собираются везде (Ну кроме USD, Pixar те ещё говнокодеры без слёз на их код не взглянешь).
                                                            • 0
                                                              И тут мне тоже стало интересно, в чём проблема с MKL? Отлично работает что с Eigen, что с dlib (который, кстати, быстрее, и псевдообратные матрицы там изобретать не надо!), что даже с hmatrix, хехе.
                                                • –1
                                                  Меняется с каждым годом. С каждым годом C++ мог бы становиться лучше, а не вот это, что с ним делают. А если он не становится лучше, он движется назад. Не думаю, что через 20 лет его будут воспринимать всерьез. Его будут воспринимать примерно так, как мы сейчас воспринимаем Паскаль — что-то старое, программировать можно, но лучше не надо. C++ сложен, противоречив и жутко небезопасен. Вряд ли молодые люди будут выбирать его для изучения, когда сейчас так много других языков, которые проще, да и востребованнее. Для большинства применений не требуется суперпроизводительности, да и компьютеры все мощнее, а компиляторы все умнее оптимизируют.
                                                  • 0
                                                    С каждым годом C++ мог бы становиться лучше, а не вот это, что с ним делают.

                                                    А он, по-вашему, не становится лучше? В чём это заключается?

                                                    C++ сложен

                                                    При этом писать безопасный и выразительный код на нём становится всё проще с каждым новым стандартом.

                                                    противоречив

                                                    Спасибо потребности совместимости с С!

                                                    жутко небезопасен

                                                    Посмотрите при случае доклад Саттера с CppCon, кажется, 15-го года.
                                                    • –1
                                                      Меняется с каждым годом. С каждым годом C++ мог бы становиться лучше, а не вот это, что с ним делают. А если он не становится лучше, он движется назад. Не думаю, что через 20 лет его будут воспринимать всерьез.

                                                      Не могу не согласиться с тем, что С++ не становится лучше. Но уже есть гибрид Lua + msgpack в tnt и есть надежда, что языки вырулят на правильный природный путь и код будет помещаться в данные для юзанья и тестирования, а не как сейчас. Наконец-то уйдут в небытие классы и функции. Интересно это всё увидеть ранее 20-ти лет :)

                                                      • +2
                                                        Но уже есть гибрид Lua + msgpack в tnt и есть надежда, что языки вырулят на правильный природный путь и код будет помещаться в данные для юзанья и тестирования, а не как сейчас. Наконец-то уйдут в небытие классы и функции.

                                                        Я тут, если честно, ничего не понял.
                                                      • –2
                                                        А он, по-вашему, не становится лучше? В чём это заключается?

                                                        А сохраните-ка ваши данные в файл? Ну, не просто массив int, а что-нибудь посложнее, например, древовидную иерархию полиморфных классов.


                                                        При этом писать безопасный и выразительный код на нём становится всё проще с каждым новым стандартом.

                                                        Каждый новый стандарт превращает код с++ в месиво, которое уже никто не может понять. Единственное, что они сделали — это foreach. Посмотрите на монструозный синтаксис лямбд, неужели нельзя сделать вывод типов и стрелочные функции, которые компактны?

                                                        • +1
                                                          А сохраните-ка ваши данные в файл?
                                                          Библиотек сериализации море.

                                                          Единственное, что они сделали — это foreach.
                                                          Это далеко не единственное изменение, но как раз одно из бесполезных.
                                                          Посмотрите на монструозный синтаксис лямбд, неужели нельзя сделать вывод типов и стрелочные функции, которые компактны?
                                                          То есть неявный захват переменных? По сути-то там лишнее — обязательные фигурные скобки и return.
                                                          • –2
                                                            Библиотек сериализации море.

                                                            В том то и дело, что мне еще нужно что-то подключать. Почему я не могу сделать это из коробки? Сериализация данных — это возможность, необходимое каждому приложению, если не всем. Но мы не можем взять и сделать это. Без бубна с синтаксическим разбором твоих исходников и генерации кода сериализации по ним… Разве это нормально вообще? Или вы знаете библиотеку, которая делает это хорошо и просто? Задайте себе вопрос, в чем проблема здесь: плохие библиотеки или язык без некоторых необходимых возможностей?


                                                            Это далеко не единственное изменение, но как раз одно из бесполезных.

                                                            одно из тех, которая реально упрощает кодирование. А не все остальные, которые только усложняют.


                                                            То есть неявный захват переменных? По сути-то там лишнее — обязательные фигурные скобки и return.

                                                            Да пофигу какой захват. Можно сделать несколько стрелок или какую-нибудь байду "&>" "=>".

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

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

                                                              одно из тех, которая реально упрощает кодирование
                                                              Настолько же, насколько появление лямбд или все же просто прикольный современный синтаксис?
                                                              • –1
                                                                Но когда это окажется в языке, ведь компилятор будет работать точно так же.

                                                                Вот! он будет точно так же работать, как работает КОМПИЛЯТОР, а не как написали свой moc разработчики либы! И сериализация будет через нормальный стандартизированный рефлекшн, а не через это говно с выкрутасами вокруг #define


                                                                Впрочем, возвращаясь к JS, у него те же самые проблемы

                                                                JSON.stringify() что ли? Да это просто шах и мат любому c++, только за это я готов признать победу JS (для контекста: JS не знаю, только QML немного. на С++ программирую больше 15 лет).


                                                                Настолько же, насколько появление лямбд или все же просто прикольный современный синтаксис?

                                                                Лямбды в таком виде ничего не упрощают, а создают условия для нагромождения кода. foreach позволяет нормально итерировать любую коллецию единым, читаемым способом, а не вот эти вот begin(), end(). Это упрощает ежедневное кодирование, экономит время. Язык должен экономить время, а не создавать дополнительные проблемы.

                                                                • 0
                                                                  Вот! он будет точно так же работать, как работает КОМПИЛЯТОР, а не как написали свой moc разработчики либы!
                                                                  В общем, вам важен авторитет писателя «говна». ОК.

                                                                  JSON.stringify() что ли?
                                                                  Нет, я про препроцессинг и старые стандарты.

                                                                  Лямбды в таком виде ничего не упрощают, а создают условия для нагромождения кода.
                                                                  Лямбды вам не нужны, а условие for вы настолько часто пишите каждый день, что это разительно экономит время. Яснопонятно… (=
                                                                  • –1
                                                                    В общем, вам важен авторитет писателя «говна». ОК.

                                                                    Вы вообще, понимаете, о чем речь? Не о том, что писатели компиляторов лучше напишут, а о том, что комплируемый код и метаинформация(рефлекшн) будут 100% достоверными, ибо получены в рамках одного и того же процесса компляции кода. А писателем этого может быть хоть кто, лишь бы в стандарте C++ это было прописано правильно, а компилятор этому следовал.


                                                                    Нет, я про препроцессинг и старые стандарты.

                                                                    Да кого интересует этот JS? Он, как и flash, сегодня на коне, а завтра никому не нужен. Завтра придумают сайты писать на питоне(через WebASM), и будем все офигевать от новой реальности.


                                                                    Лямбды вам не нужны, а условие for вы настолько часто пишите каждый день, что это разительно экономит время. Яснопонятно… (=

                                                                    Не нужны. Вот в таком виде — точно. Проще передать указатель на функцию. Вот серьезно. Это хоть не так громоздко будет выглядеть. Т.е. вы for не каждый день пишите? Пишите ли вообще код?

                                                                    • 0
                                                                      Не о том, что писатели компиляторов лучше напишут, а о том, что комплируемый код и метаинформация(рефлекшн) будут 100% достоверными, ибо получены в рамках одного и того же процесса компляции кода
                                                                      С чего вдруг? Или писатели компиляторов не бажут? Чем реализация в стандарте отличается от библиотечной реализации? (В плане переносимости) (Хотя я тоже безумно хочу поддержку рефлексии)

                                                                      Не нужны. Вот в таком виде — точно. Проще передать указатель на функцию. Вот серьезно. Это хоть не так громоздко будет выглядеть.

                                                                      Правда? Если конечно вам ненужны замыкания то возможно и правда, но я лично использую лямбды с замыканиями в 90% случаев, а писать многопоточный код с лямбдами стало вообще крайне приятно. Как и работать с сигнал слотами, и колбэками.
                                                                      • –1
                                                                        С чего вдруг? Или писатели компиляторов не бажут? Чем реализация в стандарте отличается от библиотечной реализации? (В плане переносимости) (Хотя я тоже безумно хочу поддержку рефлексии)

                                                                        И сколько багов вы нашли в компиляторах? Хотя не спорю, в новых фичах C++ я сталкивался. Но речь не об этом. А об языке и поддержки чего-то из коробки, а не за счет говна и палок (как в QT, например)


                                                                        Правда? Если конечно вам ненужны замыкания то возможно и правда, но я лично использую лямбды с замыканиями в 90% случаев, а писать многопоточный код с лямбдами стало вообще крайне приятно. Как и работать с сигнал слотами, и колбэками.

                                                                        Ну т.е. без лямбд и замыканий вы это можете реализовать?

                                                                        • 0
                                                                          И сколько багов вы нашли в компиляторах?
                                                                          Ну это можно сказать моё хобби, но немного.
                                                                          А об языке и поддержки чего-то из коробки, а не за счет говна и палок

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

                                                                        И как вы захватите в этот указатель состояние?
                                                                        • +1
                                                                          +1000.
                                                                          Я ждал лямбды с C++ с того момента, как перешёл с Паскаля на C++ (и не понимал, как хоть сколько-нибудь серьёзный язык может быть их лишён).
                                                                          Правда, будь моя воля, я бы синтаксически их оформил немного по-другому, но, блин, говорить, что «проще передать указатель на функцию» — это за гранью.
                                                                    • 0
                                                                      Лямбды в таком виде ничего не упрощают, а создают условия для нагромождения кода.

                                                                      Любой язык создаёт условия для нагромождения кода, на любом языке можно писать паршиво.
                                                                  • +1
                                                                    Без бубна с синтаксическим разбором твоих исходников и генерации кода сериализации по ним…

                                                                    Можно и без этого бубна, но с некоторыми пасами руками. Добавят, кстати, в какой-нибудь C++20 компилтайм-рефлексию, а в С++23 — метаклассы, можно будет и без этих пасов.

                                                                    Но нет, это ж не то, что нужно, С++ же идёт не туда.

                                                                    А не все остальные, которые только усложняют.

                                                                    Какие остальные изменения усложняют кодирование? Ну, можно пример, что до них было просто, а с ними — сложно?
                                                                    • –2
                                                                      Можно и без этого бубна, но с некоторыми пасами руками

                                                                      Плавали, знаем, какие там пассы. Либо жуткая шаблонная магия, либо #define. В любом случае, чтобы подготовить класс для сериализации, придется некоторым образом все регистрировать.


                                                                      Добавят, кстати, в какой-нибудь C++20 компилтайм-рефлексию, а в С++23 — метаклассы, можно будет и без этих пасов.

                                                                      Несвоевременность — вечная драма. Будет поздно, все это нужно было сделать 10 лет назад. А к 30 году, когда все компиляторы будут это поддерживать, на с++ останутся сидеть старпёров (может быть даже я буду среди них) .

                                                                      • 0
                                                                        Несвоевременность — вечная драма. Будет поздно, все это нужно было сделать 10 лет назад.

                                                                        Лучше всё-таки сделать хорошо. 10 лет назад у плюсов всё было грустно, согласен, перерыв между 03 и 11 большеват.

                                                                        Компилтайм-рефлексия, кстати, сама по себе не очень тривиальна. В каких мейнстрим-языках она есть и была 10 лет назад? А то я что-то не очень вижу знатоков Template Haskell.
                                                                • 0
                                                                  Каждый новый стандарт превращает код с++ в месиво, которое уже никто не может понять.

                                                                  А что там непонятного-то? Даже, я не знаю, folding expressions вполне понятны.

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

                                                                  Вывод типов в стиле Хиндли-Милнера я сам давно хочу. А что до синтаксиса — я где-то видел обоснование, почему это относительно минимальный неконфликтующий с имеющейся грамматикой (привет, наследие С, снова) вариант.
                                                                  • –2
                                                                    А что там непонятного-то? Даже, я не знаю, folding expressions вполне понятны.

                                                                    Это вы про писать или про читать?


                                                                    неконфликтующий с имеющейся грамматикой

                                                                    А есть ведь еще на клавиатуре символы, которые до сих пор не используются в С++? $ # @ что еще?

                                                                    • 0
                                                                      Это вы про писать или про читать?

                                                                      Про оба варианта.

                                                                      А есть ведь еще на клавиатуре символы, которые до сих пор не используются в С++? $ # @ что еще?

                                                                      Можно лямбды с @ начинать, ага.

                                                                      Какие из используемых в плюсах символов не используются в С, кстати?
                                                      • 0

                                                        Потому что не все способны их понять, многие просто отстают в развитии. Когда-то Галилея вообще сжечь хотели за вполне здравую мысль.

                                                        • 0
                                                          Нормальная!
                                                          • –2

                                                            Я бы предложил сжечь создателей STL

                                                    • +4

                                                      Насколько я знаю, в Юнити большинство разработчиков используют C#.

                                                      • +8
                                                        Насколько я знаю, в Unity нет JavaScript, а представленный там UnityScript весьма далёк от JavaScript (не Unity-спец, видел мельком).
                                                        • 0
                                                          В Unity возможность писать на JS уберут совсем в скором времени, о чём они не раз заявляли.
                                                      • +3

                                                        .Net core и c# + Xamarin + AvaloniaUI

                                                        • +1
                                                          Увы, даже по словам самих авторов, Avalonia еще активно пилится и до стабильного использования в продакшене пока далековато.
                                                        • +12
                                                          Однако, JavaScript уже практически десятилетия находится рядом и никуда не уходит. Итак, уместно будет задать такой вопрос: «В каком же направлении он движется?» Однако, этот пост не совсем о «JavaScript». Также, он не касается того множества языков, которые были до него. И здесь не говорится о том, какой JavaScript замечательный.

                                                          Куда же ушли Java, C#, Python, Perl, Lua и еще куча языков? Тут вот все еще спорят, жив ли Delphi, а вас удивляет что JavaScript, который занял себе очень удобную нишу все еще с нами.


                                                          Алсо, сразу видно, что автор знает только javascript. Например, на Java, Python и C# можно делать все перечисленные вещи. Да, и фронтенд тоже. Есть TeaVM, Python.JS или Bridge.Net для этого. Вопрос только в полезности, применимости и так далее.


                                                          Реальная движущая сила JavaScript — это браузеры и фронт-енд разработчики, которым тесно в рамках браузеров. Завезут webASM и возможность использовать разные языки в браузерах и через год-второй очень много компаний и людей забудет про javascript. И давайте не будем без аргументов в духе "ну, если бы язык не был плохим, никто бы с ним не работал", у вас гигантское количество разработчиков на рынке умеет работать в основном только с этим языком, отрицать то, что этот фактор имеет сильное влияние на популярность javascript очень глупо.


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

                                                          • +1

                                                            Ну и да:


                                                            Хотя… не совсем. Здесь не будет описываться миллион причин, по которым эта экосистема является самым инновационным посредником в области взаимодействия с открытым исходным кодом, которую когда-либо видел мир.

                                                            Есть хотя бы одна? Что такого инновационного сделали?

                                                            • +6
                                                              Благодаря JS каждый может почувствовать себя успешным опенсорс контрибьютором, написав очень полезный npm пакет типа is-array или left-pad.
                                                              Чем не инновационный вклад в область взаимодействия с опенсорсом? А? Съели? Вот именно!
                                                              • 0
                                                                Проставьте пожалуйста теги эмоциональной разметки текста, вы кажется забыли про их существование.
                                                                • 0
                                                                  Мне не до эмоций. Я разбираюсь в том, что инновационно наконтрибьютили с альтернативным понятием об архитектуре и качестве кода. В этом деле нужна выдержка, горячее сердце и холодный ум. А то за выкриками «whaaaaaaaaaaat» работать будет невозможно.
                                                                  • 0
                                                                    Что ж, коллега, остается только пожелать вам удачи в этом нелегком деле.
                                                            • +7
                                                              Завезут webASM и возможность использовать разные языки в браузерах и через год-второй очень много компаний и людей забудет про javascript

                                                              Не забудет. WASM — не полная замена JS, и никогда ею не планировался, он придуман, мягко говоря, для немного других целей.
                                                              • +1
                                                                Хотя на заре WASM ходили слухи, что мол по сети будут гоняться бинари WASM'а, а всё остальное в т.ч. и js компилироваться в него.
                                                                • 0
                                                                  Именно что слухи. На хабре есть интевью с создателем JavaScript и одним из создаетелей asm.js и WebAssembly, о том, как вообще все началось и для чего: habrahabr.ru/post/326276
                                                              • –1

                                                                WebASM уже завезли, и теперь можно делать сайты без JS. Наконец-то!

                                                                • 0
                                                                  Нельзя. WASM не имеет доступа к DOM.
                                                            • +3
                                                              Я не знаю, когда это закончится, но Node убирает одну преграду за другой

                                                              Есть предположение, что закончится это когда браузеры в полном объеме научатся работать с чем-то кроме JavaScript (WebAssembly или что-то еще). Дальше начнется замедление развития или стагнация, но это только мое мнение
                                                              • 0

                                                                А потом реальные процессоры потихоньку переедут на WebASM (шутка, если что)

                                                              • +5
                                                                Так почему же тогда Electron приложения жрут по 500мб, в то время как нативные кушают раз в 10 меньше? Я понимаю, что это из-за постоянного повышения производительности компьютеров, но не нужно выходить за рамки
                                                                • +3

                                                                  Не Electron-приложения, а Slack, не нужно обобщать.


                                                                  Тот же VSCode жрет не больше других программ.

                                                                  • +5
                                                                    Тот же VSCode жрет не больше других программ.

                                                                    VSCode при одинаковых условиях спамит процессами (как и весь софт на electron) и жрет больше, чем полноценная студия с решарпером и парой менее громоздких плагинов.

                                                                    image
                                                                    image
                                                                    • 0
                                                                      Голый VS-Code действительно потребляет больше ОЗУ, чем например голый Sublime. Но если поставить одинаковый набор плагинов, которые например нужны лично мне в работе, то Sublime проигрывает по памяти. Даже с учетом спамных процессов.
                                                                      • –6
                                                                        А по сравнению с IDE от JetBrains Atom или VSCode не выдерживают никакой конкуренции. Когда GoLand вышел и стал платным я пересел на VSCode и разница настолько ощутима, что я почти готов заплатить 90$ за право год пользоваться GoLand
                                                                        • +2

                                                                          Я отвечал на комментарий


                                                                          Electron приложения жрут по 500мб, в то время как нативные кушают раз в 10 меньше

                                                                          На вашем скриншоте в сумме получается около 400Мб, (меньше 500). Во-вторых это всего на четверть больше, но никак не в 10 раз.


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

                                                                          • 0
                                                                            Так что своим комментарием вы так же подтвердили, что все не так плохо, как некоторые любят говорить.


                                                                            Если бы VSCode имел все функции полноценной студии я бы с вами согласился, но тут получается такая ситуация что софтина, которая по встроенной функциональности не сильно далеко ушла от notepad++ жрет как полноценная IDE. Это при том что notepad++ ест 12 мегабайт памяти.
                                                                            • 0

                                                                              Для фронтенд-разработки в VSCode есть достаточно фич: автокомплит, формат кода, валидация типов по мере возможности.


                                                                              С таким набором фич ее вполне можно сравнивать с полноразмерными IDE, а не блокнотами.

                                                                    • 0

                                                                      Discord на электроне, к примеру, имеет целую кучу фич — и потребляет на моей машине ~110мб озу. Telegram, к примеру, расходует 75мб. Dropbox (питон) — примерно 100мб.


                                                                      Думаю, всё сильно зависит от того, какие проблемы решает приложение. Многие программы занимают много озу даже с учётом того, что они написаны на других языках. И весь этот гон в сторону node.js хоть отчасти и оправдан, но для десктопа использование большого кол-ва озу — дело в целом самое обыкновенное.

                                                                      • 0
                                                                        Telegram же на Qt был?!
                                                                        • 0

                                                                          О том и речь, что он занимает тоже нормально озу, хоть и не писался на джс.

                                                                          • 0

                                                                            У меня на машине Телеграмм жрёт 40 мб

                                                                            • 0
                                                                              На qt совсем не значит не на js, их модерновый qml вовсю использует js, хотя многие компоненты при этом реально написаны на С++ из-за чего там могут быть проблемы с утечками (плюсовые компоненты не подчиняются сборщику мусора)
                                                                          • –1

                                                                            Как ни крути, а electron все же память жрет как не в себя — 3 из 5 топовых процессов у меня вот. А что касается дискорда, то там еще прошлой осенью были просто адовые утечки когда он мог по 4-5гб памяти съедать.


                                                                            • 0
                                                                              Как пример идеального приложения: Total commander 9 — Delphi 2 — 3,5 МБ
                                                                          • +7

                                                                            В Unity 3D никогда не было JS. UnityScript это в самом лучшем случае исковерканный диалект ECMAScript, как, скажем, ActionScript. Был во Flash JS? Нет, конечно.
                                                                            Это была маркетинговая попытка привлечь внимание. Да и никто и не писал на UnityScript.


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

                                                                            • +5
                                                                              Сразу нет, я понимаю, что за мультиплатформенностью день сегодняшний и будущий, но javascript (electron как один из «выделяющихся» примеров) это точно не решение этой задачи на данный момент. На системах с достаточной производительностью (особенно мобильных) приложения на javascript не выдерживают никакой критики со стороны производительности функционала и использования системных ресурсов.
                                                                              • –1
                                                                                Какую кроссплатформенную альтернативу для десктопов предлагаете использовать? Уродский JavaFX или Qt, нормальная лицензия которого начинается от 4к$.
                                                                                • +1
                                                                                  К сожалению, я могу представить только Qt. Но это не значит что Qt — ультимативное решение
                                                                                  • 0
                                                                                    Об этом и речь. Electron ужасен, но это едва ли не лучшее, что есть на кроссплатформенном рынке. По сумме параметров (цена, скорость разработки, качество UI, порог входа и т.д.) у Electron'а только один конкурент — Xamarin.
                                                                                  • 0
                                                                                    А чего вдруг fx уродский? Очень даже удобный. Вы бы еще swing вспомнили, хотя и там парни из jetbrains доказали, что можно делать красиво как визуально, так и в коде.
                                                                                    • +2
                                                                                      Ну, я хоть и не автор того коммента, но отвечу.
                                                                                      После большого опыта построения интерфейсов под Android и небольшого под iOS, в JavaFX без ста грамм разобраться не мог. Да и вообще до конца так и не смог разобраться, как там сделать более-менее сложный UI без костылей и велосипедов. Я не утверждаю, что его сделать нельзя, просто доки почти никакие, инфы в этих наших интернетах мизер, и работает оно (с точки зрения Android-разработчика) через зад. Почему нельзя было подсмотреть, «как надо» в других платформах, и перепилить fx — не ясно.
                                                                                      • 0

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

                                                                                    • 0
                                                                                      Qt, нормальная лицензия которого начинается от 4к$.

                                                                                      И зачем эта самая лицензия за 4k нужна?

                                                                                      • 0
                                                                                        Qt, нормальная лицензия которого начинается от 4к$

                                                                                        А чем ненормальна бесплатная LGPL? До тех пор, пока ваше приложение просто использует Qt как библиотеку, вы не обязаны раскрывать никаких своих исходников.

                                                                                    • +2
                                                                                      Сам по себе Node.js сложно сейчас назвать чем то инновационным. Тут дело в пакетном менеджере который поставляется вместе с ним — NPM. За react native могу сказать что никакой Node.js в вашем смартфона не запускается, а лишь js рантайм который преобразуется в нативные компоненты, разве что сам React Native поставляется NPM и тулзы всякие вроде пекеджер реакт натива действительно запускаются нодой на машине разработчика. В браузере также нельзя запустить чисто нодовые пакеты.
                                                                                      • –6
                                                                                        JavaScript лучше всех, миллионы мух не могут ошибаться.
                                                                                        • +8
                                                                                          Когда под рукой нет ничего, кроме молотка, все остальное кажется гвоздями.
                                                                                          Статья очень однобокая. Что, ничего кроме «божественной ноды», больше не позволяет лепить кросс-платформенные мобильные приложения? Ложь. Игры? Вообще смешно, вы настоящие ААА-класса игры видели? Да и то, что из Unity наконец-то выпиливают JavaScript, уже о многом говорит.
                                                                                          Да, и electron для меня — синоним неповоротливого, жрущего ресурсы как не в себя, приложения.
                                                                                          • +2

                                                                                            Так и тянет сказать: So what?

                                                                                            • +7
                                                                                              Старый добрый баянчик:

                                                                                              Один пацан писал все на JavaScript, и клиент, и сервер, говорил что нравится, удобно, читабельно. Потом его в дурку забрали, конечно.
                                                                                              • –13

                                                                                                Я так понимаю троллинг удался ибо все у кого подгорают религиозным огнем ягодицы достали свои минусаторы (у кого они есть конечно), а у кого нет просто пишут гадкие комменты (опять же кто может). Что в том что JS лучше? У любого другого языка была возможность стать лучше, но не вышло. Что за мода такая хейтить успех? Я всегда думал, что IT сообщество выше этого, но видимо IT сообщество уже с гнильцой, как показывает практика. Надменные, самовлюбленные, брезжащие над своими технологиями люди, которые забыли куда мы должны двигаться.
                                                                                                Думаю пора покинуть это сообщество, после того как напишу прощальный пост.

                                                                                                • +5

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

                                                                                                  • –5

                                                                                                    Например?

                                                                                                    • +1
                                                                                                      system, iot, big data, hight perf, machine learning, graphic.
                                                                                                      • –9

                                                                                                        ну бред, погуглите даже Photoshop использует nodejs

                                                                                                        • +1
                                                                                                          А остальное? Может есть ОС или драйвер какой на js? А что с IOT? Может где big data на js ворочают? Может где торгуют с использованием js? А уж для нейросетей он прям идеально подходят (хоть там даже С++ является не достаточно быстрым и всё переводят на gpu). И что значит даже Photoshop? Maya использует python в роли скриптового языка, но это не значит что python подходит для разработки графического движка. Только в роли скриптового. Ну и да кто ещё использует JS в роли скриптового языка в графическом приложении? В Unity js like и тот дохлый.
                                                                                                  • +8
                                                                                                    У любого другого языка была возможность стать лучше, но не вышло.

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

                                                                                                    Я всегда думал, что IT сообщество выше этого

                                                                                                    IT-сообщество видит, во что его пытаются превратить js-хипстеры, и ему это закономерно не нравится.

                                                                                                    которые забыли куда мы должны двигаться

                                                                                                    Напомните-ка, кто и когда делегировал право выбирать наравление нашего движения исключительно [бывшим] фронтэндщикам? Может лучше слушать тех, кто знает немного больше, чем один скриптовый язычек?

                                                                                                    Думаю пора покинуть это сообщество, после того как напишу прощальный пост.

                                                                                                    Не задерживайтесь.
                                                                                                    • –6
                                                                                                      Сабж даже после всех последних изменений бла-бла-бла...

                                                                                                      Какая к чертям монополия? Кто монополист здесь? Язык? Владелец языка кто? Это не C# microsoft и не swift Apple.


                                                                                                      IT-сообщество видит бла-бла-бла…
                                                                                                      бла-бла-бла… больше, чем один скриптовый язычек?

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


                                                                                                      Не задерживайтесь.

                                                                                                      Да, да я о таких как Вы писал. Надменные, самовлюбленные, брезжащие над своими технологиями люди. С одной стороны Вас жалко, а с другой так вам и надо. Я смотрю вас уже подтолкнули прям напихали можно сказать =)

                                                                                                      • +2
                                                                                                        Скажите честно, вы тролль, или тупо не догоняете в чем монополия жабаскрипта? Не понятно как разумное существо вообще может задать подобный вопрос.

                                                                                                        знаю достаточно языков

                                                                                                        Дайте угадаю. Помимо сабжа это: CofeeScript, Python, PHP, может быть еще TypeScript. Правильно?

                                                                                                        Надменные, самовлюбленные, брезжащие над своими технологиями люди

                                                                                                        O'rly? Да сама эта статья с вашими комментариями — просто классика самолюбования на тему «смотрите, какие мы крутые, всем стоять/бояться!».

                                                                                                        • +1
                                                                                                          Скажите честно, вы тролль, или тупо не догоняете в чем монополия жабаскрипта?

                                                                                                          А что, JS не используется нигде, кроме фронтенда? Кроме JS не существует языков разработки server-side для web? Кроме JS не существует языков разработки под мобильные платформы? Кроме JS не на чем писать под десктоп? Да, действительно монополия, а мужики-то не знали…
                                                                                                          Дайте угадаю. Помимо сабжа это: CofeeScript, Python, PHP, может быть еще TypeScript. Правильно?

                                                                                                          Ну вот он я, разработчик С и C++ (встраиваемые системы, десктопы, серверное ПО, от мелких утилиток до проектов с многомиллионной кодовой базой, под bare metal, Windows, Linux, VxWorks), C# (десктоп, бэкенд), в разные времена еще мучал Scala в связке с Hadoop, ассемблер для AVR и многое другое.
                                                                                                          И мне безумно нравится JavaScript на сервере в воплощении NodeJS, поскольку он отлично подходит для ряда задач и прелестно их выполняет. Что со мной не так, доктор?
                                                                                                          O'rly? Да сама эта статья с вашими комментариями — просто классика самолюбования на тему «смотрите, какие мы крутые, всем стоять/бояться!».

                                                                                                          Эта статья скорее довольно жирный троллинг, на который как раз ведутся и бомбят надменные, самовлюбленные и брюзжащие люди, что мы и видим из комментов :)
                                                                                                          • +1
                                                                                                            А что, JS не используется нигде, кроме фронтенда? Кроме JS не существует языков разработки server-side для web? Кроме JS не существует языков разработки под мобильные платформы? Кроме JS не на чем писать под десктоп? Да, действительно монополия, а мужики-то не знали…

                                                                                                            Это похоже уже на совсем толстый троллинг. Сколько у нас там фронтенд разработчиков? 30% или больше? Движение идет из фронтенда во всем сферы же. Не было бы монополии JS на браузерах, такое бы вряд ли произошло.

                                                                                                            • 0
                                                                                                              Это да. И это произошло. Только по-вашему что, все, кто пилят бэкенд и микросервисы на ноде — это бывшие фротнендеры? Какая-то часть из них, да, возможно, но по моим наблюдениям, большинство пришло с других технологий (джависты, шарписты, питонисты, и т.д.). Это и отличает профессионала от религиозного фанатика — то что первый, в отличие от второго, выбирает инструмент в зависимости от его плюсов и минусов для конкретной задачи, а не основываясь на идеях «тру/не тру».
                                                                                                              • +1

                                                                                                                Хорошо, если вы такой профессионал, подскажите, почему я должен писать свой веб-сервис, скажем на node.js, а не на python? Для более конкретного разговора, например, это прокси-сервис, который часть запросов заворачивает, а данные из них пишет себе в бд. Вот что такого есть в node.js от чего мне имеет смысл учить новый язык и чего я не могу найти на python? Проблемы с однопоточностью и асинхронность в python есть, причем изначально на async-похожем синтаксисе еще с python 2.6, если не раньше. Я думаю вы столкнетесь с тем, что каждый плюс node.js будет перекрываться другим плюсом из python и выбор нужно будет делать исключительно из того, что больше нравится, потому что это все-таки языки общего назначения.


                                                                                                                Мне кажется, что большое количество людей, не смотря на то, какие они профессионалы делает выбор на хайпе и информации, которая с ним прилетела, потому что очень много людей не знают возможности своей платформы. Как пара очень странных адептом node.js, которые утверждали, что node.js прорывная, потому что там есть асинхронность.

                                                                                                                • 0

                                                                                                                  Как минимум, ещё выбор будет делаться по степени знания языка и всего стэка. Примитивное решение вашей задачи (допустим асинхронность в ней имеющееся требование, равно как и отсутствие требования в конкретном окружении типа windows) я на node.js напишу до вечера (это не мой основной стэк, но изучать надо будет конкретную часть экосистемы, а не язык и общепринятые практики разработки серверных приложений), на python практически наверняка дольше, скажем пускай три дня, включая восстановление в памяти базового синтаксиса языка, поиска стандартных или не очень библиотек/фреймворков с хорошей поддержкой асинхронного io (слово flask в голове крутится, но не уверен, что єто то, что надо), поиск и изучение лучших практик для них и python вообще и т. п. И оценка "три дня" базируется лишь, лишь на "хайпе" вокруг питон и информации, которая с ним прилетела — наверняка есть библиотеки/фреймворки, в которых большинство нужной функциональности красиво обёрнута и мне нужно будет лишь правильно её скомпоновать, и наверняка мне не придётся вспоминать C, чтобы написать биндинг к функциям ядра Linux и библиотеки СУБД. Просто по ощущениям, интуитивно. А в случае NodeJS я знаю, что production-ready библиотеки для создания веб-сервера, для отправки веб-запросов на другие сервера и для записи в популярные СУБД уже точно есть, как минимум в одном экземпляре. Знаю, а не надеюсь, как в случае python.

                                                                                                                  • 0

                                                                                                                    Ну, поэтому я и написал:


                                                                                                                    Вот что такого есть в node.js от чего мне имеет смысл учить новый язык и чего я не могу найти на python?

                                                                                                                    Понятное дело, что можно склонятся к знакомому инструменту.

                                                                                                                    • 0

                                                                                                                      На основе хайпа могу предположить, что nodejs сервер будет работать быстрее в общем случае, чем реализация на референсном python :)

                                                                                                                      • 0
                                                                                                                        Если верит этим графикам, то нет.
                                                                                                                        • –1

                                                                                                                          Насколько я понимаю, эти графики как раз показывают, что "из коробки" nodejs в общем быстрее python на подобных задачах. Чтобы обойти nodejs потребовалось подключать бинарные библиотеки как раз из экосистемы nodejs и писать для них биндинги.


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

                                                                                                                          • 0

                                                                                                                            Там есть колоночка с asyncio, который нативный для python и можно увидеть, что отстает он не значительно и разрыв уменьшается с ростом размера запроса. Очень сомневаюсь, что эта разница стоит того, что бы начать внезапно учить JS, лучше уже попробовать uvloop)


                                                                                                                            А потом подключается libuv, и магическим образом скорость вырасает от 2 до 4 раз. Как по мне это дополнительно еще неплохо говорит о скорости работы самих языков.

                                                                                                                            • 0

                                                                                                                              Так же стоит заметить, что первые графики относятся к tcp серверу. В случае http сервера, nodejs даже от нативного asycnio отстает.


                                                                                                                              Стоит заметить, что они использовали библиотеку, которая используется для парсинга http в nodejs. Они не предлагают ее использовать, так как их binding еще не production ready, но получается, если подключить хотя бы один элемент nodejs инфрастуктуры (а они написаны на C), то python оказывается далеко впереди.


                                                                                                                              Сомневаюсь, что в более сложных случаях nodejs будет выиграть даже у чисто python, так как можно предположить, что большая часть времени теряется где-то в js движке. Разумеется, если делать правильный выбор надо еще это все перепроверять самому, но так это просто интересное замечание.