За что ненавидят язык программирования JavaScript

Аватарка пользователя Дух айтишной эмо школы

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

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

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

Почему не любят JavaScript

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

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

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

К примеру, в Java есть классы. Классы содержат методы и поля. Методы и поля могут быть объявлены как часть класса. Методы и поля имеют модификаторы доступа. Из классов вы можете создавать объекты. У объектов есть конструкторы, которые определяются одинаково. В Java есть множество элементов для реализации наследования.

Все эти языковые элементы сделаны явными. Классы являются базовым элементом абстракции, а элементы, из которых они состоят, четко идентифицируются своими именами и семантикой.

Зато в JavaScript есть объекты, функции (которые также являются объектами) и переменные (которые могут указывать на объекты, которые могут быть функциями). При этом объекты не являются объектами, но являются ассоциативными массивами.

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

Фанаты JS утверждают, что жалобы на отсутствие классов в JS — это предвзятое отношение к использованию скомпилированных объектно-ориентированных языков на основе классов, но дело не в классах. Речь идет о ясных, явных элементах языка, позволяющих программистам читать код и быстро его понимать.

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

В защиту JavaScript

Разберем основные причины, по которым не любят JavaScript, и разберемся, справедливы ли претензии.

  • JavaScript действительно прост в использовании. Даже идиот сможет им воспользоваться. C++, Java и другие языки имеют более высокий барьер для входа. А поскольку джуны часто пишут именно на JavaScript, большая часть кода на JavaScript является плохим. Это не недостаток языка, это побочный эффект простоты использования.
  • В JavaScript есть ошибки. О них много пишут в интернете, но большинство преувеличено до крайности. Изначально JavaScript был разработан довольно быстро из маркетинговых соображений, и в первых версиях JS правда возникало много ошибок. Но если вы используете ES2015 и линтер со строгими правилами, все популярные ошибки не будут актуальными.
  • Как и PHP, JavaScript — это язык, который разработчики любят ненавидеть. Это как сигнал о том, что ты принадлежишь к крутой группе программистов. Хейтеры просто пытаются показать, какие они классные.
  • Раньше JavaScript был отстойным. Однако после ECMAScript 2015 ситуация стала намного лучше. Вы можете перенести даже функции ECMAScript 2016+ в ES5, чтобы использовать все актуальные функции языка. Когда-то давно, когда многие разработчики впервые столкнулись с JavaScript, было на что жаловаться.
  • В проблемах с DOM винят JavaScript. JavaScript — это язык программирования. DOM и функции браузера, связанные с DOM, — это просто API JavaScript. Совместимость JavaScript между браузерами долгое время была превосходной. Но все помнят о несовместимости DOM API, с которой им приходилось бороться, поэтому и сегодня приписывают недостатки JavaScript.

Заключение

А что думаете вы? Смогла ли JavaScript решить проблемы языка в новых итерациях? Или синтаксис и сегодня оставляет желать лучшего, и принципиальную конструкцию языка не исправить уже никакими доработками?

Ненавидят ли JavaScript просто потому, что это модно? Или, может, хейт JavaScript справедлив и сегодня?

Присоединяйтесь к дискуссии и напишите об этом в комментариях.

JavaScript
Языки программирования
8000