За что ненавидят язык программирования JavaScript
Изучили споры между фанатами и хейтерами JavaScript и разобрались, чем JS заслужил нелюбовь кодеров и справедливы ли нападки.
9К открытий13К показов
Среди веб-разработчиков принято шутить над 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 справедлив и сегодня?
Присоединяйтесь к дискуссии и напишите об этом в комментариях.
9К открытий13К показов