Не Фортист. Но я-бы обозвал себя Форт-любознательный. Что такое вообще мета-программирование.
Вики определяет так
Метапрограммирование — вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы
Туда-же до кучи кидают и макросы и кодо-генерацию. Достаточно общо. Мне это и нравится
и не нравится. Нравится тем что в топике Форта безо всякой конкретики мы можем
крутить это определение как есть и натягивать его как сову на мячик.
Что вообще есть в языке Форт. Макросы? Вроде там весь синтаксис - это слова (words). И можно определять
новые слова и переопределять старые. Например вместо цифры 2 можно определить 3. Вот даже так.
Про кодо-генерацию говорить не интересно. Форт - язык для встраиваемой техники и микро-контроллеров
и таких вобщем-то задач как кодогенерация в ентерпрайзе и финтехе - вобщем -то нету. Тоесть типичная
задача генерации ORM-Entities где на вход приходит реляционная БД со схемой а на выходе например
C#/Java код с готовыми сущностями - неспецифичная для Форт. Ну нету такой потребности.
По поводу макросов. Тут мне приходит на ум такая аналогия что
рыба, плавая в воде не замечает самой воды.
Вот. И мне кажется что Форту что макросы что функции - все едино. Если говорить о подстановках - то все
программирование на Форте - это сплошные подстановки. Есть даже такое утверждение что Форт - конкатенативный язык и в нем функционал достигается просто сцеплением кода. Макросы - налицо.
Вот эта конструкция берет с вершины стека число и считает целое число в кубе.
CUBE DUP DUP * * ;
Функция или макрос? Вот если макрос - то я уже мета-программирую. Тоесть
форт мета-программирует постоянно.
Возможно щас в топик зайдут настоящие форт-овые или фортеры и добавят свои 5 копеек.
Если есть какая-то семантическая или любая другая разница между вызовом функции и макро-подстановкой
- то прошу дать больше каментов.