@forthuse

Какие бывают примеры метапрограммирования на Форт?

В характеристиках Форт (Forth) языка проговаривается, что он обладает свойством метапрограммирования, но в книгах по нему, по моему, этот вопрос не достаточно раскрывается как к примеру для разных классических языков.
  • Вопрос задан
  • 309 просмотров
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Не Фортист. Но я-бы обозвал себя Форт-любознательный. Что такое вообще мета-программирование.
Вики определяет так
Метапрограммирование — вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы

Туда-же до кучи кидают и макросы и кодо-генерацию. Достаточно общо. Мне это и нравится
и не нравится. Нравится тем что в топике Форта безо всякой конкретики мы можем
крутить это определение как есть и натягивать его как сову на мячик.

Что вообще есть в языке Форт. Макросы? Вроде там весь синтаксис - это слова (words). И можно определять
новые слова и переопределять старые. Например вместо цифры 2 можно определить 3. Вот даже так.

Про кодо-генерацию говорить не интересно. Форт - язык для встраиваемой техники и микро-контроллеров
и таких вобщем-то задач как кодогенерация в ентерпрайзе и финтехе - вобщем -то нету. Тоесть типичная
задача генерации ORM-Entities где на вход приходит реляционная БД со схемой а на выходе например
C#/Java код с готовыми сущностями - неспецифичная для Форт. Ну нету такой потребности.

По поводу макросов. Тут мне приходит на ум такая аналогия что рыба, плавая в воде не замечает самой воды.
Вот. И мне кажется что Форту что макросы что функции - все едино. Если говорить о подстановках - то все
программирование на Форте - это сплошные подстановки. Есть даже такое утверждение что Форт - конкатенативный язык и в нем функционал достигается просто сцеплением кода. Макросы - налицо.

Вот эта конструкция берет с вершины стека число и считает целое число в кубе.

CUBE DUP DUP * * ;

Функция или макрос? Вот если макрос - то я уже мета-программирую. Тоесть
форт мета-программирует постоянно.

Возможно щас в топик зайдут настоящие форт-овые или фортеры и добавят свои 5 копеек.
Если есть какая-то семантическая или любая другая разница между вызовом функции и макро-подстановкой
- то прошу дать больше каментов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы