Comments 22
Я когда-то очень давно изучал Лисп и Автолисп. Интересно, сейчас реально вообще найти работу, как-то связанную с лиспом?..
В каком смысле «связанную»? Всё IT связано с Lisp. Если точнее, то диалекты Lisp, в широком смысле, традиционно используются в качестве внутреннего представления в компиляторах.
Так, чтобы была какая-то продуктовая контора, имеющая своим внутренним языком Common Lisp/Scheme — сомнительно.
Вот и мне кажется, что сомнительно...
Lisp это по сути AST в чистом виде с накрученным поверх метапрограммированием. Знать и уметь перекладывать AST это одно из умений за которые платят много.
Знание Lisp у людей умеющих перекладывать AST обычно есть. Не знаю почему так выходит.
Вот, кстати, подскажи: в подходе Nanopass приходится делать много (десятка 2) типов AST, которые служат интерфейсами между проходами. С одной стороны, соседние AST практически не отличаются друг от друга, с другой — хотелось бы как-то их отличать.
То есть, в идеале мне нужно иметь какой-то вариант мягкого изменения типа AST, например, добавления payload (это легко — делается полиморфный тип), или добавления/удаления конструкторов (а это как?).
В общем, есть где что почитать на эту тему?
СПА-СИ-БО!!!
В лиспах эта проблема решается generic-процедурами, которые легко реализуются на core-языке без привлечения десятка "well established language extensions". Поэтому, вряд ли можно утверждать, что в лиспах есть сложности в работе с подобными древовидными конструкциями
Это я знаю! :-) Но ADT мне лично сильно нехватает. Как-то чувство спокойствия появляется.
Но, конечно, эти проблемы связаны исключительно с наличием типов. Что вы, что ув@true-grue, который пишет на Питоне, этих проблем не видите.
Мир большой и разный. Да и программирование не заканчивается на продуктовых которах, да и вообще на зарабатывании денег. Есть вещи, которые делаются в качестве хобби, к примеру.
Конкретно меня эта статья зацепила тем, что в ней один из авторов технологии квазицитирования (которая, по-сути, удачное расширение широкоиспользуемой сейчас строковой интерполяции — f-strings, если писать лекцию для колхозников) рассказывает про детали и историю этой технологии.
Формат, конечно, не для Хабра — слишком глубоко и длинно, но ведь и Lisp* — это тоже хаб не для всех с улицы.
Riggeti Computing, Grammarly, Boeing, Cadence и т.д.: https://common-lisp.net/lisp-companies
Кроме того, Clojure широко используют, часто предлагают работу на нём.
Выглядит как диссертация по ИТ-палеонтологии.
Эх... Могли бы раскрыть тему параллели с Expression в .Net
И при всем при этом внутреннее представление квазицитирования до сих пор не стандартизовано в CL. Никаких тебе quasiquote
, unquote
и пр., каждый компилятор сам решает, как это представлять. И ведь столько лет прошло.
Квазицитирование в Lisp