Главный секрет успеха языков программирования
- четверг, 3 апреля 2025 г. в 00:00:13
Давным-давно, когда компьютеры ещё были большими, а программы маленькими…
Хотя, нет, не настолько давно.
Давным-давно, когда в ноутбуки ещё не догадались встраивать Wi-Fi, а в телефоны — Bluetooth, а многие нынешние айтишники ещё не родились.
В общем, где-то в самом начале века (году примерно так в 2002-ом) на тогдашнем Хабре (кажется, это тогда называлось LiveJournal, «но это не точно!») вышла одна интересная статья, в которой автор, рассматривая разные языки программирования, обнаружил одну удивительную закономерность и случайно открыл главный секрет популярности любого языка.
Найти оригинальную статью сейчас мне не удалось, только битые ссылки на разные старые ресурсы. Но информация эта настолько важна, что нельзя допустить, чтобы секрет был утерян. А то сейчас это помнят только олды, и то не только лишь все, а мало кто это вообще помнит. Некоторые пользуются этим секретом, но чисто интуитивно, а молодежь — так и вовсе не знает. А это важно!
Короче говоря, у меня недавно возникла идея перепроверить факты из статьи и донести этот секрет до коллег по профессии. В итоге: во-первых, всё подтверждается в гораздо большем объёме, (сами всё увидите!), а во-вторых, я сделал удивительное открытие, ещё раз подтвердившее все выводы исходной статьи (сам в шоке!).
Слабонервным и впечатлительным просьба отойти от экранов, мы начинаем.
Но сперва.
Статья является шуточной!
Преподавателям кафедр алгоритмических языков (моё уважение), программистам, знающим только один язык (разумеется, тот, который самый лучший!), людям не умеющим в иронию, просьба не обижаться!
Если вам покажется, что автор идиот несправедлив к какому-то из языков, вернитесь сюда и перечитайте, пожалуйста, предупреждение с самого начала!
Всё, случайных людей в рекурсию отправили, можно начинать.
Далее по тексту много, очень много картинок из Википедии.
как вы все знаете, языков программирования очень много, какие-то успешны и популярны, какие-то нет, постоянно появляются новые, и, казалось бы, каждый следующий должен быть лучше и популярнее предыдущих, однако же, не всё так просто. Безымянному автору исходной статьи когда-то удалось найти секрет, давайте вместе пройдем по его следам (осторожно, смотрите под ноги и не наступите в дамп, тут где-то работает С++) и найдем эту закономерность.
Есть много разных рейтингов популярности языков, по частоте упоминания в поиске, в вакансиях, по участникам конференций, количеству строк в GitHub или зарплатам разработчиков, мы возьмем для примера индекс TIOBE и посмотрим, что там в топе. Вот у меня тут топ списка на вчерашний вечер:
Лидеры тут обычно каждый вечер одни и те же: Python, C++, C, Java.
Прекрасный язык (особенно, если уметь им пользоваться), простой, понятный, удобный. Три страницы кода на Go можно записать однострочным list comprehension.
Что бы вы ни написали, оно скорее всего будет работать и даже, возможно, правильно. Популярность и первое место вполне заслужены.
А вот автор этого замечательного языка, Гвидо ван Россум (Guido van Rossum):
Тоже один из столпов всего современного IT, невероятно быстрый (я, конечно же, не про компиляцию), простой (в книге автора на 1800 страниц самые основные моменты перечислены) и безопасный (осторожно, дампы!).
Нет, правда, отличный язык, если вам не нравится С++, это вы просто до конца не дочитали, у автора языка есть несколько книг, все огромные очень рекомендую.
Создатель языка C++ — Бьёрн Страуструп (Bjarne Stroustrup):
Предшественник C++, не такой выразительный и удобный и книжки поменьше, но вполне себе целая эпоха в программировании. Сколько на нём всего написано — не перечислить, сами всё знаете, синтаксис унаследован многими другими языками из списка. Уже более 50 лет в строю и пока никуда не собирается.
Вот заслуженные авторы языка, Кен Томпсон (Ken Thompson) и Деннис Ритчи (Dennis Ritchie) в молодости (а это, на минуточку, 1973 год!).
фото сделано больше чем полвека назад (!!!), а этот дядечка, который слева, мало того что до сих пор жив и выглядит примерно так же, но при этом всё ещё бодр и активен и попал этот в список аж два раза.
По многим рейтингам вообще самый популярный язык в мире.
Миллиарды мобильных устройств, банковские приложения, сим-карты, веб-сервисы, кроссплатформенные приложения. По синтаксису очень похож на два предыдущих.
Разработчик первой версии языка, Джеймс Гослинг (James Gosling):
Вы уже заметили кое-что общее?
Давайте смотреть дальше.
С большим отрывом от четырех общепризнанных лидеров идёт
Когда язык Java приобрел популярность, одна небезызвестная компания обнаружила в нём “фатальный недостаток” (олды помнят).
Java был создан не ими.
Поэтому эта компания решила сделать свою Java, с блэкджеком и делегатами, со своими проприетарными инструментами, рантаймом, кроссплатформенный (разумеется, среди платформ этой же компании) и т.д. Такой, чтобы была как Java, но не Java.
Где-то он, говорят, существует и поныне, и какую-то свою нишу занимает, но я лично с ним нигде не сталкивался уже лет примерно двадцать. И не жалею об этом, хотя одно время на нём писал.
(Мне показалось, или кто-то невнимательно прочитал предупреждение?)
Создатель языка — Андерс Хейлсберг (Anders Hejlsberg):
А вот здесь правда, не наступите, этот язык местами ну о-очень странный.
Вот, например:
массив + массив — это строка
массив + объект — это объект
объект + массив — это ноль
объект + объект — это число, но не число...
Мозг человека, выросшего на Pascal, C/C++ или Java уже закипел.
Я не прикалываюсь, нажмите F12 и проверьте прямо сейчас в консоли браузера.
Создатель этого “чуда” Брендан Айк (Brendan Eich), смотрит на вас как
-то совсем без уважения.
И это ещё оно сейчас в разных браузерах почти что одинаково работает, а раньше и с этим была прямо беда. В общем, этому языку тоже поставим минус.
Детский язык программирования, яркий, интересный, детям очень нравится и прививает интерес к программированию. А значит, язык свою задачу выполняет на отлично, в обучающих курсах широко используется и может быть записан в удачные.
В прошлогоднем рейтинге даже входил в первую десятку, а сейчас — на 12 месте.
Автор — Митчел Резник (Mitchel Resnick).
Ну, наконец-то! Единственный нормальный язык!!
(По мнению программистов на FORTRAN-е.)
”Ведь в нём не нужно каждый раз ставить точки с запятой и все эти кучерявые скобочки! Зачем они нужны если и без них всё и так понятно?!”
Да, я правда видел живых программистов на FORTRAN-е.
И даже настоящего разработчика FORTRAN-а. Долгих лет, если ещё жив!
Язык, в котором матрицы лежат в памяти не по строкам, а по столбцам (про CPU cache что-нибудь слышали?),
типы переменных определяются автоматически по первой букве имени (объявление переменных? а это ещё зачем?),
а в идентификаторах разрешены пробелы (дико удобно, а эти, которые со своими скобочками, опять не догадались!).
Та самая знаменитая история, когда вместо
DО 3 I = 1,4
в коде было написано
DО 3 I = 1.4
в итоге межпланетный космический зонд за много сотен миллионов иностранных денег упал, не долетев даже до орбиты.
Здесь первая запись означает“Выполняй цикл DO отсюда и до метки 3 для всех значений переменной I в диапазоне от одного до четырёх”,
а вторая —“Положи в переменную с именем DO 3 I значение 1.4”
См. выше, пробелы в именах тут разрешены, а то, что в коде начинается с буквы D, это как раз переменная вещественного типа!
Автор языка — Джон Бэкус (John Warner Backus):
(Кто помнит форму Бэкуса-Наура, это тоже он.)
Недалеко ушел и верный друг и соратник FORTRAN-а, старый добрый BASIC
Ставь лайк, если помнишь, откуда это.
вот вам POKE 23755,0
и RANDOMIZE USR 16384
Да знаю я, знаю, что 15616, но это для богатых бояр с дисководом, а у меня было тяжелое детство и кассетные загрузчики Bill-а Gilbert-а с расшифровщиком в видеопамяти…
Разработчики языка BASIC — Томас Куртц (Thomas Eugene Kurtz, на фото сбоку) и Джон Кемени (John George Kemeny, с другого боку):
Я думаю, все уже увидели эту очевидную закономерность.
Все самые настоящие, самые достойные, практичные и популярные языки разработаны исключительно чуваками с бородой!
А если без бороды — выйдет BASIC, FORTRAN или JavaScript!
Не верите?? Читайте дальше.
Мы только начали.
8-ая строчка рейтинга.
Язык, на котором не получится написать ни игру, ни сайт, ни мобильное или десктоп-приложение.
В котором ты ему SELECT COUNT(*)
, а он замолкает на месяц, положив в полку по CPU все реплики production-кластера.
(Да, я знаю, для чего нужен SQL, перечитайте ещё раз дисклеймер в начале!)
Знакомьтесь, Дональд Чемберлин (Donald D. Chamberlin) и Рэймонд Бойс (Raymond Boyce):
Что характерно, бороды нет ни у кого.
Очень популярный среди веб-разработчиков язык. 13 строчка рейтинга.
Славится своей безопасностью (если кто не знал, буква S в его названии означает именно Security!).
Расмус Лердорф (Rasmus Lerdorf):
Конечно, не Томпсон, и не Гослинг. Но.. в целом.. борода имеется.
И язык распространён чуть более чем по всему интернету.
Чего нельзя сказать про другой когда-то популярный среди веб-бекендеров язык, да-да, я про
Тот самый write-only язык, на котором писать интересно, а читать — обычно не очень.
Кто видел, какую бурную реакцию вызывает у разработчиков на Perl код, написанный каким-то другим Perl-разработчиком, тот поймет.
Кто не видел, объясню так: если подойти к настоящему Perl-разработчику с какой-то задачей, он сначала задумается, а потом выдаст вам однострочник, полностью решающий вашу задачу. Ну, примерно вот такой:
say s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\+d))/$1,/gr for @ARGV;
(я честно не знаю, что это!)
Автор языка Perl — Ларри Уолл (Larry Wall).
Бороды, конечно же, нет.
Вот тут неоднозначно.
С одной стороны, новый современный молодежный язык, быстрый и простой код, автоматическое управление памятью, встроенный reflection, каналы и горутины, а с другой — ну оочень корявенькое ООП, недоделанный полиморфизм и вот это вот заклинание if err != nil { return err }
буквально через каждую строчку.
вот просто для примера, что у меня прямо сейчас под ногами:
> fgrep -R "if err != nil" . | wc -l 88839
88839
Почти девяносто тысяч одинаковых строк в одном проекте, Карл…
И ведь это ещё не все такие проверки.
А всё почему?
Потому что авторов несколько: Роберт Гризмер (Robert Griesemer), Роб Пайк (Rob Pike) и Кен Томпсон (Ken Thompson), и вы уже сами всё видите:
«Использование языка КОБОЛ калечит ум, а его преподавание должно считаться уголовным преступлением», — написал Дейкстра аж в 1975 году.
Я сам, к счастью, COBOL не изучал и на нём никогда не писал, но, если верить google, то вот это Hello world:
Создателем языка является контр-адмирал военно-морского флота США Грейс Хоппер (Grace Hopper)
Да-да, та самая Amazing Grace, которая бесстрашно нашла (поймала), обезвредила (тапком) и надёжно пофиксила (скотчем) самый первый в истории баг в программе.
При прогоне тестов, заметим. (Пишите тесты!!!)
Логи тестовой джобы сохранились до сих пор:
Но вот с бородой тут… сами понимаете… При всём уважении к её заслугам.
Хотите ещё?
Пожалуйста! Вот ещё целая пачка знаменитых языков, которых никто не знает.
Сокращение от Lots of Irritating, Stupid Parentheses, это где ты всю программу постоянно открываешь скобочки, а в конце должен их закрыть ровно столько, сколько открыл.
И, нет, это не смайлики, это программа состоит из списков списков списков списков и каждый список закрывается скобкой.
Джон МакКарти (John McCarthy), фото 1950-х годов, во время работы над Lisp:
Это когда ты пишешь какие-то логические предикаты, из них строится циклический граф, а дальше оно пытается что-то вывести и моментально зацикливается.
Кто-нибудь это помнит?
Поднимите руки, кто на нём писал.
Авторы первой версии языка: Алан Кей (Alan Kay), Адель Голдберг (Adele Goldberg), Дэн Ингаллс (Dan Ingalls).
Ага! Попался, — скажете вы!
Вон же, вот он, справа, настоящий живой контрпример, который ухмыляясь ставит под сомнение всю теорию!
Вот его фото в 80х годах, когда он работал над этим языком:
Превьюшка его лекции 1989 года на YouTube, между прочим! Найдёте, кому интересно.
И это всё один и тот же человек! Легендарный Никлаус Вирт (Niklaus Wirth):
Возможно вы слышали шутку про то, что хотя компьютеры становятся каждый год всё быстрее и быстрее, но программы становятся медленее, причём программы становятся медленнее более быстро, чем компьютеры становятся быстрее.
Это так называемый “Закон Вирта”.
Человек-легенда, а языки прочно ушли в историю.
Даже Pascal, эх..
Тот самый “язык ада” из анекдотов про программиста с книжкой.
Кто пишет?
Кто писал?..
Я писал. На экзамене по курсу языков программирования, то ли в летнюю, то ли в зимнюю сессию, не приходя в сознание. И больше не сталкивался.
Создатели языка пытались сделать максимально надёжный и максимально формализованный язык, в результате даже попытка описать стандарт языка полностью провалилась.
За задачу точно задокументировать язык взялись сразу две команды отважных исследователей.
В результате спустя длительное время они выдали ДВЕ разных спецификации языка, более 600 страниц каждая, и потом не смогли договориться, какая же из них правильная. И даже не сумели окончательно установить, один и тот же язык они описывают, или всё-таки разные!
А ещё, при создании считалось, что весь софт будет написан только на Ада и поэтому взаимодействие с программами на других языках не нужно и даже вредно.
Передаём привет Омскому метрополитену из одной станции…
Автором считается Жан Ишбиа (Jean Ichbiah), вот он:
Не убедил?!?
Хорошо, давайте дальше сами!
“LISP-е человек писавший много на, скобочек язык придумал без” (с) мой
Язык в котором нет скобочек и поэтому всё пишется задом наперёд.
Вместо (25 * 10) + 50
мы пишем 25 10 * 50 +
А вместо
мы пишем
“меньше, if, drop, else, then”, что, серьёзно?
Счастливой отладки вам, ребята…
Автор — Чарльз Мур (Charles H. Moore, a.k.a. Chuck Moore).
Борода есть? Или нет? Ваша версия!
Три
два,
один…
Едем дальше!
Не путать с Apple.
Сокращение от “A Programming Language”. Скромненько так.
Вот опять тупо скриншот из Википедии:
Опять что-то невнятое, малочитабельное и за ними код, задом наперёд.
Автор Кеннет Айверсон (Kenneth E. Iverson).
И опять главный вопрос данной статьи вселенной и всего такого прочего — ну, и как вы думаете?
А вот это наверняка все слышали.
Да, блин, да на нём GitHub написан!
А ещё GitLab, Metasploit, Homebrew и YaST — смотря кому что ближе.
Создатель языка Юкихиро Мацумото (まつもとゆきひろ)
Кто за бороду — нажмите F5, кто считает, что бороды нет — Ctrl-R.
Судя по хитрому выражению лица, он что-то знает и, возможно, даже исходную статью читал (нет).
Вот вроде и разработан в большой компании, и слова все правильные: «функциональный язык для применения в высоконагруженных распределённых отказоустойчивых параллельных системах реального времени.»
Прямо вот всё, что нужно. А кто его видел? Кто использует?
В Яндексе, слышал, где-то был, пока комитет не запретил…
В индексе TIOBE упоминается в конце, в списке прочих, не вошедших в рейтинг. В компании с уже упомянутыми выше APL, Algol, Forth, Modula-2 и Smalltalk…
но, как говорят у нас в Древнем Риме: dura lex, sed lex
смотрите сами, вот команда создателей:
И такая грусть в глазах. Ну ребята, ну ведь могли же…
Ну, конечно же!!
Это пропустить было нельзя!
Вашему вниманию предлагается Hello World:
COBOL нервно дергается в сторонке, у него случился очередной инсульт.
А вот утилитка wc (word count, а не то, что вы могли подумать)
Работает, я проверил.
Итак, а что там с бородой? Кто-то ещё сомневается?
Фотка, конечно, так себе… ну, какая есть, но зато это совершенно точно именно тот самый Мюллер. У него даже на майке что-то написано по-брейнфаковски!..
Язык для аналитиков, ML-щиков и прочих дата-саентологов саентистов. Набирает всё большую популярность, уже в топ 20 рейтинга.
Даже мне приходилось сталкиваться, где-то в лабах на Coursera.
Ну, и, наконец — финалочка!
Kotlin.
Вот есть Java.
По многим рейтингам язык №1.
По меркам IT уже очень давно есть.
Язык, который, создан чуваком с бородой!!! и продвигается Sun Microsystems, это корпорация с миллиардными оборотами.
А рядом поддерживают ещё более крупные друзья Google, Oracle, Microsoft и IBM.
Один из столпов IT-индустрии, без шуток.
И тут вдруг выходит какой-то Андрей Бреслав (кто это вообще?), из какой-то дремучей России (где это вообще?), приносит какой-то свой Котлин (что это вообще??).
И Google вдруг берёт — и переводит Android с великой и могучей Java на Kotlin!
Так не бывает, — скажете вы!
А Андрей ведь даже без бороды, добавлю я:
Не бывает.
И вы можете мне не верить (я сам в шоке!!) — сходите на сайт Андрея и прочитайте сами!
Создавая новый язык, Андрей ЗНАЛ про этот закон! Он сам про это пишет!
Поэтому на презентации своего языка, он его умышленно и нагло целенаправленно использовал!!!
Шах и мат, кто не верил!
Закон не только работает на прошлых примерах, но и подтверждается экспериментально!!!
И даже не только я, умные люди из издания Wired про это же пишут!
Теперь вы знаете, в чём на самом деле скрыт секрет успеха, и когда будете разрабатывать свой язык, не забывайте об этом!
Автору приходилось участвовать в разработке нового и ужжасно перспективного языка программирования. Свой компилятор, среда запуска и даже IDE у нас были, а вот бороды в команде не было ни у кого. Итог предсказуем — язык забыт и отправлен на свалку истории. А более талантливые коллеги применили закон на практике — и результат не заставил себя долго ждать.
Не повторяйте чужих ошибок.