Согласованность лексики языка программирования как метрика

Очень интересно наблюдать за тем, как тот или иной язык сравнивают с другим. Этот быстрее, у второго больше комьюнити, у первого есть такая вот фишка, а на втором, зато писать проще. И вот насчет последнего утверждения можно как раз таки поспорить. А кто решил, что на языке писать проще? Как это замеряли? На каких задачах это проверялось?

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

Начнем с чего-то не самого плохого – с питона. В целом язык довольно согласован и имеет лишь несколько недочетов. Абсолютно никакой разницы между вызовом конструктора класса и функции. Ключевое слово для инициализации класса отсутствует как таковое. Да, опытный разработчик не спутает палец с жопой, но чисто на уровне того, что мы имеет дело с двумя абсолютно разными по своей сути конструкциями заставляет задуматься о том, а почему они вызываются одним и тем же образом. Второй момент несогласованности — это наличие self в методах класса, да это по факту это передача контекста класса, но у нас в каждой функции по одному лишнему параметру, который мы игнорируем при вызове. Self не определяется через именованный параметр и никак не помечается тем, что его не надо передавать при вызове мы имеем прямое расхождения лексики функций внутри и снаружи классов.

Пойдем от хорошего к плохому и на очереди у нас пхп. Из интересного можно заметить, что обращение к не статическим и статическим полям и методам класса делается ровно через два символа. В первом случае это ->, во втором ::. Важен не сам факт, что для статики и не статики разные символы обращения, а то что обе конструкции имеют в себе два последовательно идущих знака. Но на этом примеры хорошей лексики можно закончить. Дальше нас ждет только боль и страдания. Стандартные функции работы со строками и массивами имеют разный порядок аргументов, где то впереди идет needle, где-то haystack, и никто не собирается эту проблему решать. Какие-то возвращают значение, какие-то меняют исходное и догадываться об этом надо самому. Еще раз – стандартные функции библиотеки не приведены к единому стандарту, и сигнатура каждой из них реализована как то захотел ее создатель. Ну и под конец символ &, который если стоит перед переменной или оператором присваивания имеет смысл передачи переменной по ссылке. Если же запись имеет вид && то это уже логическое И. Посему это не передача ссылки по ссылке а именно логическое И одному слону известно. Но такое поведение лексики — это недопустимый пиздец. Один оператор – одно арифметическое значение. Оператор может быть определен для нескольких типов данных, но оператор не должен присутствовать в куске другого оператора или же состоять из других операторов. Это порождает неявное понимание смысла программы.

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

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

Согласованность лексики языка программирования как метрика
Очень интересно наблюдать за тем, как тот или иной язык сравнивают с другим | Сетка — новая социальная сеть от hh.ru Согласованность лексики языка программирования как метрика
Очень интересно наблюдать за тем, как тот или иной язык сравнивают с другим | Сетка — новая социальная сеть от hh.ru
repost

186

input message

напишите коммент

еще контент автора

еще контент автора

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь