В процессе обучения тому, как говорить то, что вы раньше не могли сказать, вы, вероятно, научитесь думать то, о чем раньше не могли думать.
Когда люди говорят, что, по их опыту, все языки программирования в основном эквивалентны, они делают заявление не о языках, а о своем способе программировать.
99,5% программирования состоит из склеивания вызовов библиотечных функций. Все популярные языки одинаково хороши в этом. Таким образом, можно легко провести всю свою карьеру, работая на пересечении популярных языков программирования.
Но остальные 0,5% программирования непропорционально интересны. Если вы хотите узнать, из чего он состоит, странность странных языков — хороший ключ к разгадке.
Странные языки странны не по воле случая. По крайней мере, не самые хорошие. Странность хороших обычно подразумевает существование некоторой формы программирования, а не просто обычное соединение библиотечных вызовов.
Конкретный пример: макросы Lisp. Макросы на Lisp кажутся странными даже многим программистам на Lisp. Они не только не пересекаются с популярными языками, но по их природе было бы трудно правильно реализовать на языке, не превратив его в диалект Lisp. И макросы определенно свидетельствуют о методах, выходящих за рамки программирования на основе склеивания. Например, решение проблем, сначала написав язык для проблем этого типа, а затем написав на нем свое конкретное приложение. И это не все, что вы можете делать с макросами; это всего лишь одна область в пространстве техник манипулирования программами, которые даже сейчас еще далеко не полностью изучены.
Так что, если вы хотите расширить свое представление о программировании, один из способов сделать это — изучить странные языки. Выберите язык, который большинство программистов считает странным, но средний пользователь которого умен, а затем сосредоточьтесь на различиях между этим языком и пересечением популярных языков. Что вы можете сказать на этом языке, что было бы невероятно неудобно говорить по-другому? В процессе обучения тому, как говорить то, что вы раньше не могли сказать, вы, вероятно, научитесь думать то, о чем раньше не могли думать.
Комментарии (13)
Arlekcangp
29.08.2021 10:48+5Кто о чём, а Пол Грэм о Лиспе... Вот только избавиться от "99.5% это склеивание библиотек" можно только начав писать собственную ос... А с лиспом пока это не очень получалось.... (Ну ещё может какие то очень завёрнутые штуки, вроде каких нибудь физических стмуляций, но все равно там будет 75% библиотек...) Короче статья - фигня ))
MagisterLudi Автор
29.08.2021 10:59-9На Hackernews 450+ дельных обсуждений этой «философской» заметки: news.ycombinator.com/item?id=28336891
Красота в глазах смотрящего.
shuhray
30.08.2021 00:38Копаюсь в кишках Фактора. Там нужно для программы указывать её "стековый эффект" (сколько элементов она берёт из стека и сколько туда кладёт) и компилятор его иногда проверяет. Убедился, что это очень близко к задаче "типизации" для лямбда-исчисления, но Пестов (создатель Фактора) смело приписал типы комбинаторам вроде while, которые могут зацикливаться. Думаю, можно ли что-то поправить.
fireSparrow
Это что — вступление перед основной частью статьи? Хабр — не какой-то бложик, куда можно запостить шесть абзацов и назвать это статьёй.
Vest
Думаю да. А если по теме, то я недавно для себя открыл новый термин code golf: https://codegolf.stackexchange.com/
Там можно найти кучу «странных» языков, на которых народ решает всякие задачки.
MagisterLudi Автор
fireSparrow
Я что-то не так сказал? За что карму-то слили?
edo1h
у вас почти тысяча комментариев, почему вы уверены, что карму слили именно за этот?
fireSparrow
Потому что сначала именно этот коммент у меня был с минусовой оценкой. А у меня очень мало комментариев, которые получают минусы.
Politura
Если комментарий что-то критикует помимо кода или аспектов программирования, то публика в таких разделах довольно обидчивая, воспринимает критику глубоко лично и могут слить карму и за заплюсованный комментарий. А плюсы в карму за комментарии ставить как-то не принято, нужны плюсы - пишите статью.