&$!#% — за что разработчики ненавидят разные языки программирования
Какие языки программирования вызывают у разработчиков баттхерт и почему. Собрали самые яркие комментарии.
Martin Poole / Getty Images
Мы расспросили разработчиков, собрали комментарии с Quora и Stack Overflow и выяснили, какие языки программирования и за что ненавидят в ИТ-комьюнити.
Java — за раздутость
«Enterprise-стиль Java раздут шаблонами проектирования и ненужными иерархиями классов. В основном язык неплохой, думаю, он находится где-то посередине рейтинга».
Даниэль Велков,
инженер-программист в Google
«Вот за что я ненавижу Java:
- Нет функций первого класса.
- Нет разумных значений по умолчанию — например, на графиках.
- Исключение NullPointerException не содержит дополнительной информации о том, что такое null.
А ещё за обилие бессмысленно «настраиваемых» фреймворков, интерфейсов поставщиков услуг, заводских классов, систем внедрения зависимостей. И да — возможность конфигурирования почти никогда не используется, DRY грубо нарушается, объём кода увеличивается в четыре раза, а читаемость ухудшается вдвое».
Zarkonnen,
разработчик на Java, Python и JavaScript
JavaScript — за кривоту
«JavaScript разработали в спешке, за 10 дней, а после этого сообщество потратило ещё 20 лет, чтобы хоть как-то его исправить. Если вы веб-разработчик, вам неизбежно придётся отлаживать интерфейсный код JavaScript в браузере. Причём у кого-то даже развивается стокгольмский синдром — им это начинает нравиться. Но всё-таки нормальные люди ненавидят JS».
Хокон Хапнес Стрэнд,
инженер по машинному обучению
«JavaScript ужасен. У него ужасный синтаксис, ужасное прототипирование и ужасная интеграция. Он медленный, ненадёжный, непоследовательный. Очень жаль, что такой ужасный язык де-факто стал стандартом для браузеров и интерфейсов веб-приложений».
Джефф Нельсон,
разработчик Chromebook
«JavaScript притворяется C-подобным языком, пока вы не погрузитесь чуть глубже и не поймёте, что это какое-то причудливое творение, которое просто косплеит C».
Стив Лейси,
программист
PHP — за ужасные фреймворки
«PHP просто ужасен, и в JavaScript тоже полно плохих моментов. На мой взгляд, они оба становятся только хуже из-за «новомодных» стилей программирования.
В основном потому, что сейчас это два самых популярных и легкодоступных языка. Они доминируют в интернете на протяжении многих лет. Да что там, похоже, в наши дни большинство программистов — веб-разработчики.
В итоге и для PHP, и для JS наклепали множество дерьмовых фреймворков и библиотек. Люди расстраиваются, пытаясь использовать «простуюFообиблиотеку3000» в рабочих задачах, а потом винят язык — хотя надо бы ругать «ребёнка», который «нагадил в спальне».
А сколько там дублирующих друг друга библиотек! И в конце концов вы создаёте продукт, в котором 30 000 строк кода дублируют что-то созданное до вас, и даже не подозреваете об этом. Да и потом такой код практически нереально отлаживать — вот почему люди ненавидят эти языки».
Бен Синклер,
разработчик
«Ненавижу PHP за непонятный синтаксис классов. Почему бы просто не сделать для него импорт, который превращает все глобальные переменные в классы, а функции — в методы?»
Саймон Джексон,
программист
C++ — за раздутость и запутанность
«Я не смог найти ничего, что бы мне нравилось в этом языке. Меня раздражает даже его базовая функциональность, связанная с классами».
Лейф Уолш,
разработчик
«Слишком большой набор функций, ручное управление памятью, низкая скорость компиляции, да ещё и невозможно нормально переключаться между объектно-ориентированным и процедурным кодом внутри одной и той же программы».
Амар Кумар,
старший веб-разработчик в Internshala
«При использовании шаблонов приходится включать всё в один файл, а на выходе получается какое-то нереальное время компиляции. А стандартная библиотека C++ — вообще какой-то нелепый анахронизм (по дефолту нет потоков или инструментов для работы с сетью)».
Крис Джефферсон,
программист
«C++ — ужасный язык. И со временем он становится только хуже — ведь его используют множество плохих программистов, потому что на нём намного легче генерировать говнокод. Откровенно говоря, я бы предпочёл C просто за то, что в твой код не будут вмешиваться программисты на C++».
Линус Торвальдс,
создатель Linux
Python — за обилие плохого кода
«На Python написана куча программ отвратительного качества, потому что люди, освоив базовый синтаксис, начинают считать себя разработчиками. Но синтаксис — это даже не десятая часть. Да и компании очень любят нанимать питонистов — ведь их много и им легче найти замену. Хотя для многих решений продакшн приложений на Python, мягко говоря, не подходит. Он хорош для небольших автоматизаций и всякого ML. Для высоконагруженных или сложных приложений Python не годится. Easy to start, hard to master».
Kira 2pizza
Lead software engineer, автор Telegram-канала @dead2pizza.
Комментарий для Skillbox Media
«Вместо круглых или фигурных скобок в Python для обозначения блоков используют отступы. Кроме того, мне не нравится обилие двоеточий и подчёркиваний, а также постоянные конфликты имён модулей и переменных».
Амар Кумар,
старший веб-разработчик в Internshala
«Я ненавижу Python, потому что гладиолус. Да пошёл ты, чёртов Python. Что за бред: невидимый пробел — часть синтаксиса, а self — не ключевое слово. Кажется, Гвидо фон Россумбургер — просто придурок. Преподавать Python в школах — глупая идея. C++ или Java куда лучше. В Python нет ключевого слова для объявления переменных. Вы просто вводите имена переменных, а потом с трудом находите, где их объявляли. Создатели не учли уроки прошлого: не объявлять переменные и функции — это ошибка из 1950-х».
Олегзандр фон Денман,
программист
«Я не умею пользоваться Python — да и мои коллеги, судя по всему, тоже не умеют: всё сделано через жопу — то пакет какой-нибудь сломается, то ещё что-то».
Batate_courier,
программистка на Kotlin
SQL — за неудобство
«Удивительно, почему никто ещё не вспомнил SQL. А ведь за ним много грешков:
- Непоследовательный синтаксис в разных реализациях.
- Тонкие различия в коде снижают производительность по неясным причинам.
- Плохая поддержка текстовых манипуляций.
- Простой вход, но очень крутая кривая обучения на пути к мастерству.
- Минимум стандартов и best practices в сообществе, включая стиль.
И ещё несколько причин — бонусом:
- Предложение WHERE идёт последним, что упрощает преждевременное выполнение UPDATE или DELETE, уничтожая всю таблицу. По логике, WHERE должен стоять перед ними.
- Реляционное деление реализовать сложно.
- Я могу установить значение NULL, но не могу проверить его на равенство с NULL. Конечно, можно запустить проверку IS NULL, но это только усложняет код.
- И вообще, почему нам нужно полностью переопределять формулу для столбцов, к которым была применена команда GROUP, вместо того чтобы просто установить для него алиас и только после этого GROUP BY алиаса (или индекса столбца, как в случае SORT)?»
Крис Вестефельд,
пользователь Stack Overflow
BASIC и Visual BASIC — за нумерацию строк
«В классическом BASIC программы переполнены номерами строк, а вы должны зарезервировать строки заранее. И плевать, что вы не знаете, сколько строк вам понадобится. Представьте, что написали программу на тысячу строк и решили вставить ещё 11 где-то между 20-й и 30-й. Это катастрофа.
Тяжело следить за логикой программы, потому что нет блоков кода, как в нормальных языках. Переменные нельзя инициализировать, а нужно явно назначать после объявления.
…Ещё в BASIC массивы индексируются круглыми скобками, из-за чего их не отличишь от функций. Я не знаю, почему в XXI веке нельзя использовать {} и []. С другими символами то же самое — вместо них слова, с которыми код становится длиннее».
Лу Винь Фук,
программист
«BASIC, GW-BASIC, Borland Turbo BASIC и QuickBASIC. Я не ненавижу сами языки, они были продуктом своего времени. Мне обидно, что я потратил на них кучу времени, когда только начинал программировать для MS-DOS и Windows. Если бы у меня тогда был интернет, и я бы узнал о Linux, то кодил бы на C».
Мигель Параз,
разработчик
Perl — за синтаксис
«У Perl сложный синтаксис, а имена переменных хрен разберёшь. Неявная переменная $ _ часто вводит в ступор. Нельзя передавать кортежи и массивы в качестве параметров функций. Вместо этого создатели просто добавили указатели. Это просто боль».
Лу Винь Фук,
программист
«Каждый раз, когда я возвращаюсь к Perl, мне кажется, что я изучаю его заново, в отличие от Python, Ruby, JavaScript, C, C++, Objective-C и так далее. Одну и ту же задачу в Perl можно решить миллионом способов, поэтому чужой код невозможно читать. А его маниакальная «лаконичность» превращает даже самую простую вещь в тарабарщину.
На Perl невозможно написать читаемый код. Поверьте, я псих в вопросах элегантности и порядка, но все мои попытки структурировать код потерпели неудачу. Рано или поздно он превращается в беспорядочную кучу мусора, потому что приходится бороться с синтаксисом и вносить кучу изменений. Но даже когда у вас что-то заработает, это не будет иметь никакого отношения к исходному замыслу».
Ян Питерс-Кэмпбелл,
президент Stickbuilt
«Читать код Perl практически невозможно, потому что любую операцию в нём можно сделать несколькими способами. Дайте мне лучше Python с его „фашистскими“ пробелами. Они хотя бы улучшают читаемость».
Зубин Джатиндар Тику,
фронтенд-разработчик
Ruby — за скорость и синтаксис
«В Ruby есть 4 разных синтаксиса для создания блока, и все они корявые. «Элегантный» синтаксис c хешами неполон и неоднозначен, а «полный» — уродлив. Комьюнити напрочь отказывается читать документацию и вместо этого «читает код». Это же какое-то ребячество.
Из-за сложного метапрограммирования для Ruby почти невозможно написать нормальную IDE. Блоки передаются функциям тупо. Зачем передавать их за пределы списка параметров или использовать нечётный доступ как в yield. Я считаю, что блокам нужен более понятный синтаксис, а в хэше лучше использовать другие разделители: например, <> вместо {}. А параметры методов можно передавать через object.method (1, {|a| a.bar}, «blah»)».
Мирддин Эмрис,
пользователь Stack Overflow
Fortran — за непредсказуемость
«Ненавижу старые версии Fortran за произвольную индексацию, произвольные правила форматирования, нечувствительность к регистру, загадочные 8-символьные имена переменных и неявные типы, основанные на первом символе имени переменной.
Часто приходится работать с устаревшими системами, код для которых писали ещё в 1977 году и не подозревали, что их кто-то будет обслуживать. Fortran трудно читать, трудно поддерживать, но им, к несчастью, всё ещё пользуются в моём окружении».
Марк Милстоун,
разработчик из IBM
COBOL — за громоздкость
«Не люблю COBOL за многословность. Программисты пользуются справочниками, чтобы разобраться в его синтаксисе. Код нельзя аккуратно вложить, поэтому приходится писать целые абзацы.
В COBOL куча зарезервированных ключевых слов, неудобный и негибкий синтаксис, арифметические выражения можно передать не во все функции. Нет рекурсии. Вообще, это ограниченный и очень уродливый язык».
Сезар Гил,
программист
Эдсгер Дейкстра и вовсе утверждает, что «использование COBOL калечит ум, поэтому обучение ему следует рассматривать как уголовное преступление».
Всем не угодишь
Чем популярнее язык программирования, тем больше у него ненавистников. Хейтеры найдутся для чего угодно. Поэтому, как бы горячо ни спорили разработчики, они продолжают кодить на «корявых», «запутанных» и «кривых» языках.
Эту мысль подтверждает создатель C++ Бьёрн Страуструп:
«Есть два типа языков программирования: те, на которые все жалуются, и те, которыми никто не пользуется».
Если тоже хочешь побатлиться в жарких холиварах на Stack Overflow и Quora, изучай языки программирования в Skillbox и залетай на площадки со своим экспертным мнением.