Когда люди говорят, что, по их опыту, все языки программирования в сущности одинаковы, они делают утверждение не о языках, а о том, каким именно программированием они занимались.
99,5% программирования заключается в склеивании вызовов библиотечных функций. Все популярные языки одинаково хорошо справляются с этим. Поэтому можно легко провести всю свою карьеру, работая на пересечении возможностей популярных языков программирования.
Но оставшиеся 0,5% программирования несоизмеримо интереснее. Если вы хотите узнать, из чего они состоят, странность странных языков — отличная подсказка.
Странные языки странны не случайно. По крайней мере, хорошие из них. Странность хороших языков обычно указывает на существование некоторой формы программирования, которая выходит за рамки привычного склеивания библиотечных вызовов.
Конкретный пример: макросы в Lisp. Макросы в Lisp кажутся странными даже многим Lisp-программистам. Они не только не входят в пересечение возможностей популярных языков, но и по своей природе с трудом поддаются правильной реализации в каком-либо языке без превращения его в диалект Lisp. И макросы определенно свидетельствуют о техниках, выходящих за рамки программирования-«склейки». Например, решение задач путем предварительного написания языка для задач подобного типа с последующим написанием вашего конкретного приложения на нем. И это далеко не все, что можно делать с помощью макросов; это лишь одна область в пространстве техник манипулирования программами, которое даже сейчас исследовано далеко не полностью.
Поэтому, если вы хотите расширить свое представление о том, каким может быть программирование, один из способов сделать это — изучать странные языки. Выберите язык, который большинство программистов считают странным, но средний пользователь которого умен, а затем сосредоточьтесь на различиях между этим языком и пересечением популярных языков. Что можно выразить на этом языке такого, что было бы невероятно неудобно выразить на других? В процессе обучения тому, как выражать вещи, которые вы раньше не могли выразить, вы, вероятно, научитесь думать о вещах, о которых раньше не могли и помыслить.
Спасибо Тревору Блэквеллу, Патрику Коллисону, Дэниелу Гаклу, Амджаду Масаду и Роберту Моррису за прочтение черновиков этой статьи.