Какая польза от метапрограммирования? - PullRequest
69 голосов
/ 12 августа 2010

Я прочитал:

, и я признаюсь в некоторой путанице в целях метапрограммирования / генерации кода.

У кого-нибудь есть конкретный пример использования метапрограммирования / генерации кода?Еще лучше было бы сопроводительное объяснение, почему это было лучше, чем альтернатива.

edit : Будет ли Thistle считаться метапрограммированием?

Ответы [ 11 ]

0 голосов
/ 14 августа 2010

Вы можете посмотреть макросы Common Lisp или шаблоны C ++ и посмотреть, как они используются. Оба являются метапрограммированием в том смысле, в каком вы используете. Вы обнаружите, что оба кода интенсивно используются в большом количестве кода.

Макросы Lisp часто используются для переопределения языка. Например, последняя глава Пола Грэма о Лиспе создает работающее объектно-ориентированное расширение для Common Lisp. Другой пример - ныне несуществующий Гранат .

Старая Стандартная библиотека шаблонов для C ++ (в основном включенная в стандартную библиотеку) была способом введения большого количества контейнеров и алгоритмов, которые работали так, как если бы они были встроены в язык, по крайней мере с точки зрения интеграции и эффективности не синтаксически).

...