История изменений
Исправление dimgel, (текущая версия) :
Может я не прав. По-мне компиляция есть компиляция, выполнение есть выполнение.
Всё, что можно сделать в buildtime, – надо делать в buildtime. Чтобы облегчить/ускорить runtime.
Частные, но вполне полноценные и показательные примеры – статическая типизация и автоматическое тестирование. Вы ж не станете утверждать, что и то, и другое плохо?
Ещё пример из моей привычной области – лёгкие ORM на AST-макросах, транслирующие статически-типизированные DSL в SQL. Прекрасно, что не надо это делать в рантайме. (UPD: Ведь по большому счёту, это тоже этап компиляции. Да и банальная кодогенерация используется очень много где.)
Да полно на самом деле юз кейсов. Мета-программирование – такая же мощная парадигма, как и ООП и ФП, причём все три друг дружке ортогональны, т.е. могут использоваться совместно. Помнится, не успели МП в скалу завезти, как тут же оказалось, что с его помощью можно некоторые части компилятора улучшить.
Исходная версия dimgel, :
Может я не прав. По-мне компиляция есть компиляция, выполнение есть выполнение.
Всё, что можно сделать в buildtime, – надо делать в buildtime. Чтобы облегчить/ускорить runtime.
Частные, но вполне полноценные и показательные примеры – статическая типизация и автоматическое тестирование. Вы ж не станете утверждать, что и то, и другое плохо?
Ещё пример из моей привычной области – лёгкие ORM на AST-макросах, транслирующие статически-типизированные DSL в SQL. Прекрасно, что не надо это делать в рантайме.
Да полно на самом деле юз кейсов. Мета-программирование – такая же мощная парадигма, как и ООП и ФП, причём все три друг дружке ортогональны, т.е. могут использоваться совместно. Помнится, не успели МП в скалу завезти, как тут же оказалось, что с его помощью можно некоторые части компилятора улучшить.