Почему я считаю, что JavaScript плохой язык?

preview_player
Показать описание
Вопросы о том, как я отношусь к разным языкам задают постоянно. В этот раз я постарался объяснить, почему я считаю Java Script плохим языком

Рекомендации по теме
Комментарии
Автор

На лицо разжигание программистской религиозной розни))))

Aldaspan
Автор

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

rubenmarkosyan
Автор

Хмммм ну такое себе мнение, как для человека с опытом и вроде бы компетентного специалиста. Можно как то глубже в тему уйти, привести примеры, а то однобоко как то получается. У вас язык годен для спинеров. А люди на нем уже видеопотоки передают, код для микроконтроллеров пишут и запускают на любой табуретке... ну как Джава стремилась такой стать, но чет не срослось. Язык на самом деле плохой и это признают сами джаваскриптеры. Но у вас это высказывание "фэ" а не мнения.

"легко потерять ошибку" - почему? Как то голословно звучит, у нас есть системы типизации( не обязательно Dart, TS) есть контрактное програмирование которое позволяет повысить надежность того как твой код работает. В Джс я бы сказал один из разнообразнейших и сильнейших тулингов. Поэтому дебажить код и находить ошибку легче. На самом деле легко потерять ошибку в вашем случае, это относится к любому динамическому языку. Потому что нужно держать типы переменных в голове.

вы можете как угодно относится к node.js. Ваше право. Но увы большие компании говорят об обратном, есть бекенд на джс и сервисов довольно много. А если учесть что время монолитов, не то что бы ушло, но подходы разные появились. То скорость разработки node.js микросервиса увы, но выше чем на джава и если это не performance first вешь, то можно и на ноде, на го, на чем угодно.

Если вы уже делаете выпады в сторону других языков, то пожалуйста, при упоминании исторических вещей, удосужтесь хотя бы почитать как все было. Джаваскрипт ( ECMASript) всегда был в целом то один. Да написан на коленке, да все не так легко было. но а) не версии были разные про разные, а реализации движка. Дайте угадаю, в GraalVM и в движке Oracle для джавы, тоже есть разницы того какой байткод они выдают не так ли? хммммм. б) язык развивался стабильно и постепенно он рос и у меня складывается ощущения что у вас осталось мнение о нем еще с 2007 года. Когда все писали на джиквери...

Эффекты ездящие по экрану. Это можно уже и без джс писать на чистом css.

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

"Это не язык широкого применения" - хмммммммммммм вы общаетесь в слаке ? используете скайп? дискорд? для джс vscode ? JIra ? это все запускается у вас на мобильном? Да можно долго рассказывать о том как это не производительно и тд. НО это все джс. Увы и ах, джс сейчас везде. И его не убрать, даже если джаву компилировать в джс( что как бы уже делается) закон дырявых абстракций сложно обойти. Вам все равно потом прийдется копаться в джс...есть библиотеки для написания кода под микроконтроллеры и много чего еще. Что для вас широкое применение?

"не ооп язык" - а что такое ООП язык? говорят был первым Smalltalk, так он был совершенно не про то что сейчас современное ООП. "вы не можете создавать классы"...можем. Только если касатся ООП и обьектов. Классы, интерфейсы и прочее это не обьекты. Это просто абстракции. Опять же. Мы можем создавать обьекты. И прототипы вполне себе укладываются в идеологию ООП. Вы говорите что он использует другие обьекты... но он не ооп.

"Понимание функциональности ограничено" - хмммм у вас? ))). Есть Ramda и еще пачка функциональных библиотек, есть много вещей которые позволяют писать функционально. Но оно по большому счету нужно не такому большому количеству людей. Поэтому многие просто используют "фишки" функциональшины что бы повысить читаемость кода, компактность, декларативность кода. А еще есть реактивное программирование...ух... наверно там тоже понимание как то ограничено, да ? ребята из RxJs поржали бы.

Про Jquery, только вот беда, что бы эффективно его писать и он был похож на джс, нужно учить джс, чего многие в то время когда он был популярен не делали, поэтому и возникает "не похож на джс", а как он может быть похож если они не знали как он должен выглядеть? А вообще аргуммент слабоват. Можно было бы попытатся разобрать что то из современного. Там реакт...ай сложно реакт ведь он на принципах джса... ну там ангуляр, а ну да там же ангуляр с тс и там есть и типы и архетектура из коробки и тулинг и все по взрослому...ну может вью? ну там есть к чему придратся да. Но тоже ой что бы понимать как оно работает нужен джс. Но да многие из перечисленных вещей меняют синтаксис js/html и да к этому нужно привыкать, да это плохо, только лишь от части. Но если вспомнить любые шаблонизаторы, они тоже меняют немного синтаксисы. Так что не страшно. В этом вопросе выпад в джс тоже слабоват

Любой язык можно фреймворком изменить до полной не узнаваемости, просто где то это нужно, а где то нет. Вы можете написать на джаве свой язык, который будет компилится в джаву, а потом в байткод. По сути это будет абстракцией над языком и так же изменит его до неузнаваемости.... если посмотреть на laravel php там все тоже крайне похоже на...джаву и то как готовят её на беке в интерпрайзе и че? кто то умер? нет, хороший фрейм.

JS спорный язык во многом, ваше право его не любить. Но если вы работаете с аудиторией, продвигаете курсы, то толку с видяшки в 4 минуты, с высказывание поверхносного "фэ". Помоему логичней было разобрать "покосточкам" вы же программист, ну заройтесь в тему, на ютубе глубины в некоторых вопросах не хватает.

РезниченкоРостислав
Автор

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

maxvashchenko
Автор

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

dogernout
Автор

Последнее время твои короткие видио становятся все хуже и хуже в плане информативности и объективности. Говорит на публичной площадке о том, что какой-то язык хуже или лучше в отрыве от конкретной задачи и проблеме заказчика по крайней мере не корректно, тем более для человека, который работал/работает в ИТ сфере и возглавляет свою компанию. Эти видио уже идут, по большей части, во вред молодым умам, который пытаются "войти в ИТ".
У всех ЯП существуют свои плюсы и минусы, которые нужно понимать, а говорить просто, что язык плохой или нет - это как минимум не профессионально. По поводу твоих аргументов "о плохом ЯП" я могу сказать только, что они очень натянуты. Разберем по порядку.
1. Поддержка кода. Исходя из моего опыта, от ЯП качество поддерживаемости на прямую никак не зависит. Это больше всего зависит от команды и людей, которые делают продукт.
2. Из контекста ролика не понятно, что конкретно подразумевается под свойством "Гибкость".
3. На счет сорняка согласен, но сейчас, в 2019 году, дело обстоит все намного лучше, чем в былые годы. Если вам нужен ООП со своими плюшками, тогда стоит смотреть уже в строну TS(TypeScript) или Dart. На счет классов для скрипов браузера порой это просто излишне. Хотя в последних версиях спецификации EcmaScript(JavaScript) можно создавать "классы", которые являются "сахаром", того что давно было в JS. Да, они не совсем те классы, которые есть в Java, но они там есть как сущность. Рассуждать о какой-то технологии мало мальски не погрузившись в ее "философию" и принципы, не корректно.
4. Эффекты, которые отображаются на экране порой намного сложнее реализованы, так как для примитивного круглого индикатора загрузки нужно вспомнить курс школьной математики, если пилить его самостоятельно с 0. Порой на фронтах для того, чтобы добиться красивых эффектов нужно запариться больше, чем большая часть бизнес логики в средних энтерпрайз проектах.
5. На сколько я знаю, уже в малых и средних компаниях JQuery считается deprecated и за его использование его бьют "по рукам".
У меня порой складывается впечатление, но ты как специалист в ИТ, в широком понимании, застрял в районе 2012-2014 годов.
Мне кажется, у тебя "синдромом утенка" по отношению к ООП. ООП - это подход к разработке, который стоит применять, там действительно где он нужен. Это примерно как услышать про singleton и пихать его везде.




P.S. Я сам начинал свой путь с C/C++, Java, сейчасработаю в основном с Golang/Python. Ничуть не жалею о проделанном пути. Не понимаю людей, который просят вашего мнения, о ЯП (Kotlin, Golang, Python, и т. д., подставьте нужно). Ребята, не нужно ждать мнение "ЭКСПЕРТОВ" в том или ином вопросе. Они могут только высказать свою СУБЪЕКТИВНУЮ точку зрения, но подходит это вам или нет решать вам. По факту, это перекладывание ответственности за принятие решение в вашей жизни и своих плеч на плечи любого из "ЭКСПЕРТОВ", которого вы будете слушать. Ребят, просто пробуйте использовать любую технологию самостоятельно под ваши цели и задачи. С течением времени вы сами внутренне поймете, хорошо тот или иной инструмент или нет. Все что я использовал в своих аргументах и обоснованиях это тоже мой субъективный взгляд.
Всем удачи и творческих успехов!

saimonshaplygin
Автор

А То-то Илон Маск интерфейс управления своими ракетами на JS решил делать... Дурак же! Не видел Серегиного видео!

pavelbelov
Автор

Добрый день!

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

"Большой код на JavaScript не поддерживаемый" - это не правда, и есть масса примеров, которые это опровергают, и первый, который пришел мне в голову - это PayPal, который был переписан на JavaScript с Java. Если на проекте не используется TypeScript, то проблемы скейлинга кода действительно могут быть, но у этих проблем есть решения, в частности: functional composition на микро и макро уровнях, immutability, flow для типизации.

"Проблема потерять ошибку в JavaScript - проще простого" - извините, но если Вы говорите об отсутствии статической типизации, то решения этой проблемы я привел выше. Если вы говорите о чем - то другом, то я этот аргумент не понял совсем.

"JavaScript формировался как сорняк в огороде" - А приведенный Вами же PHP - нет? JavaScript в десятки раз более последователен и предсказуем, нежели PHP, в котором, к слову, долгое время не могли сделать типы(и, вроде бы, до сих пор не сделали, но тут утверждать не буду, т.к. не слежу), не говоря о том, что в упомянотом мною выше TypeScript типизация, хоть и структурная, но с точки зрения функциональности - достаточно широкая, с огромным количеством полезных штук, таких как Union Types, Intersection Types и т.д. и т.п. Ну и да, конечно же, дженерики, которые прекрасно работают.

"Спасибо ЭКМА за то, что язык стандартизирован, и работает во всех браузерах одинаково, но он не подходит не для чего, и написать на нем ЛЕГКО можно только что - то достаточно примитивное" - Вообще не понял, о чем Вы тут говорите: начинаете со стандартов ЭКМА, а заканчиваете тем, что язык не подходит для написания чего - то сложного. В данном случае у вас нарушена связь в цепочке суждений: вы начинаете с одного, а заканчиваете совсем другим, и это "другое" никак не относится к тому, с чего Вы начали. "Я не пью кока-колу, и в целом, предпочитаю ездить не на метро, а на машине, но на ночь окно в комнате, все таки, открываю". Кроме этого, на JavaScript пишут достаточно много "взрослого" и "сложного" кода, а именно: нейронные сети, блокчейны, платежные и процессинговые системы, и многое, многое другое.

"Красиво хорошо и здорово можно написать даже на PHP, а на JavaScript - нет" - Почему? Вы выдвигаете тезис, но ничем его не подкрепляете. Я, c таким же успехом, мог бы заявить, что человек, которому действительно нравится дизайн Java или PHP - плохой инженер, и тут остановиться, никак не разворачивая свою мысль. Информативности и полезности в таком высказывании - ровно ноль.

"Не можете создавать собственные классы с собственным поведением" - Во - первых, даже эта формулировка требует корректировки, и не является верной, а во - вторых, правильно ли я понимаю, что Вы заявляете, что если язык не поддерживает ООП парадигму(а точнее будет сказать, что язык не имеет такую же реализацию ООП как в Java) - то этот язык плохой? Извините, но я не вижу никакой корреляции между ООП и хорошим языком программирования. Если таковую видите Вы, то хотелось бы услышать хоть сколько - нибудь инженерной аргументации, а не спам Ваших личных вкусовых предпочтений.

"У JavaScript есть огромное количество фреймворков, которые изменяют код" - Так, и? Это, как минимум, можно трактовать с двух разных сторон, а именно: с той, которую описали вы, и с той, что язык достаточно гибок для того, чтобы создавать на нем свой DSL и высокоуровневые абстракции, которые, в свою очередь, делают работу с ним приятнее и более flexible для программиста. Почему я должен рассматривать это, как минус языка? Не говоря уже о том, что подобная ситуация прослеживается с другими фреймворками, в том числе со Spring в Java, где конструкции порой настолько сложные, что многие даже спустя годы работы с инструментом не понимают, как и что происходит "под капотом".

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

ivankurchin
Автор

Сергей, признайте наконец, что Вы просто не можете смириться, что у программистов на JavaScript и TypeScript есть деньги, есть женщины, а что осталось у Java и С# программистов? Только геморрой, простатит и шутки про Fortran и Cobol 😀

vladimirtimofeev
Автор

это точно мнение о JS ?
если знания автора сводятся к созданию перелистыванию картинок, тогда да ))

NotTheLastOne
Автор

Я считаю, что JavaScript НЕ является плохим языком и вот почему.

Во-первых, JavaScript - это язык, который посредством своей асинхронной природы, отлично реализует событийно-ориентированную парадигму программирования, что на мой взгляд, является лучшим решением для построения пользовательских интерфейсов. За счет демультиплексирования событий (разделения процесса выполнения), происходит эффект параллельного выполнения кода, при использовании совсем небольшого количества ресурсов системы (всего 1 потока). Чтобы добиться подобного, например, на Java, нужно поднимать отдельные потоки, которые, в свою очередь, требуют уже намного больше ресурсов от системы. К тому же, в определенные моменты времени, некоторые потоки на Java будут просто простаивать и тем самым задействовать лишние ресурсы системы. Поэтому, я считаю, что за счет асинхронной парадигмы, JavaScript является лучшим языком для Web на стороне клиента.

Во-вторых, JavaScript является все же полноценным ООП языком. JavaScript реализует прототипно-ориентированный подход, а не класс-ориентированный, как в Java. JavaScript поддерживает все основополагающие концепции ООП: инкапсуляция реализуется посредством замыканий, наследование происходит с помощью ссылок __proto__, полиморфизм определяется простым переопределением методов. Да, может быть оперировать прототипами не совсем удобно, но JavaScript не стоит на месте и активно развивается. Стандарты ECMAScript принесли с собой классы, а Babel и полифилы решают задачу поддержки этих нововведений в старых версиях браузеров. К тому же, данный язык может быть строго типизированным посредством TypeScript, который удобно поддерживать.


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

АндрейМасалов-цж
Автор

Заголовок надо было полный делать у видео: "Почему я считаю, что JavaScript плохой язык? Потому, что я в нём нечего не понимаю"

dsdsds
Автор

Нет плохих языков, есть плохие программисты)

LobanovSpace
Автор

Аргументы уровня : рыба плохая потому что не умеет лазать по деревьям(

acidentd
Автор

ЛОЛ ))) дед забыл выпить таблеток )) Когда последний раз на JS код видел? Небось до сих пор думает что JS это чтобы картинки по экрану двигать )

momarishchenko
Автор

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

Вы Сергей вроде как по возрасту должны были застать те времена, когда не то что ИДЕ, редакторов человеческих не было. И вполне возможно держали в руках язык ассемблера. Что-то серьезное делали врядли, таких людей сразу издалека видно, но вполне возможно были с ним на ты. Так вот напомните мне где там хотя бы намек на типизацию? А я замечу, пока вы вспоминаете, что это был язык выступавший обязательной базой для таких решений как например управление самым затрапезным атомным реактором и был там не от прихоти, а потому что иначе было нельзя. И что самое интересное есть места где это ПО все так же выполняет свои задачи. Причем неплохо выполняет должен я вам сказать.

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

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

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

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

С глубоким уважением, без какой либо задней мысли.

demimurych
Автор

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

denpol
Автор

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

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

webzen
Автор

А теперь вспомним о ReactNative. И сколько на нем мобильных приложени написано и весьма мощных.

NomadicDmitry
Автор

А что он хоть на один комментарий ответит ?
Я б не пошел к такому специалисту. Хает язык здания о котором у него с 2006 года

vyacheslav