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