September 12th, 2012

with Cat The Cat

Текущее и даже слегка окончательное мнение о макросах...

...по результатам чтения кода Максимы.

Они используются для преодоления проблем с эффективностью и выражения типично лисповских идиом.

При этом в Лиспе всё настолько плохо, что есть даже макросы для имитации обращения к полям структур. Порядка 50, или около того, почти 10 процентов. Заметное число макросов определяют однострочные функции, которые могли бы быть раскрыты компилятором (опять же, около 10%).

Я предпринимал эту попытку и для проверки моего мнения о Лиспе. Моё мнение о Лиспе сложилось примерно в районе 1998 года, когда я выбирал ЯП для экспериментов и я отверг его сразу из-за отсутствия статической типизации. Вот, проверил, теперь у меня есть ещё одна причина для отвержения Лиспа.

Подведу итог. Опыт Лиспа не переносим на другие ЯП. Точно такая же ситуация, как и с Фортом. Изучение и Форта, и Лиспа не сделает вас лучшим программистом на Java, например, ибо акцент в той же Максиме совсем не на полезных переносимых абстракциях, а на конкретной реализации, которая недоступна более нигде.

PS
Если бы я писал Максиму на Хаскеле, практически ничего из кода макросов использовано бы не было. Были бы монады (ФВП), функции высших порядков (ФВП). типы данных (ФВП с маскировочной сеткой), всё такое.