Entry tags:
Почему нормальное метапрограммирование только в лиспах?
Вынесу свой коммент с ЛОРа.
Есть три базовых вида абстракции:
Синтаксическая абстракция - важная и, даже наверное, главнейшая часть метапрограммирования. Суть синтаксической абстракции - упрощение нотации в угоду предметной области. Во вменяемом виде она доступна только в диалектах лиспа, т.к:
Во-вторых, в том же CL кроме синтаксической абстракции доступны как модификация кода в рантайме, так и метаобъектный протокол. Эти два вида метапрограммирования, на самом деле, относятся ко второму вида а.(на объектах), и оба - гораздо менее мощны, чем синтаксическая абстракция(хотя и реализованы в CL на порядок приятнее и удобнее, чем во множестве других языков).
Есть три базовых вида абстракции:
- На потоках(функциональная)
- На состоянии(процедурная/оо)
- Синтаксическая.
Синтаксическая абстракция - важная и, даже наверное, главнейшая часть метапрограммирования. Суть синтаксической абстракции - упрощение нотации в угоду предметной области. Во вменяемом виде она доступна только в диалектах лиспа, т.к:
- Практически все другие языки программирования ради синтаксической абстракции заставляют нас переизобретать интерпретаторы и компиляторы(а это - невероятно сложное и нуднейшее занятие, потому кстати и малораспространенное - максимум, разве что, время от времени всплывают выродки на XML(maven'ы всякие, XAML и т.д.), плюс встраиваемый JS и всякое Lua - кривые и неудобные языки, отвратительнейше интегрирующиеся с нижележащей платформой).
- В лиспе синтаксическая абстракция, кроме прочего, не лишает нас ни встроенных средств языка, ни возможностей комбинировать разные API построенные c использованием оной абстракции(чего не скажешь о интерпретаторах, см. выше).
Во-вторых, в том же CL кроме синтаксической абстракции доступны как модификация кода в рантайме, так и метаобъектный протокол. Эти два вида метапрограммирования, на самом деле, относятся ко второму вида а.(на объектах), и оба - гораздо менее мощны, чем синтаксическая абстракция(хотя и реализованы в CL на порядок приятнее и удобнее, чем во множестве других языков).