Implementing Forth in Go and C
-
Почему Forth?
20 лет назад прочёл про язык в книге по embedded, но не вник. В июне 2025-го захотелось просто писать код и наткнулся на статьи Dave Gauera — решил попробовать. -
Два уровня Forth
User: просто пользуешься языком.
Hacker: IF…THEN, BEGIN…UNTIL и прочие конструкции — обычные слова, которые можно переопределить; язык описывает сам себя. -
goforth (Go)
«Чистый» интерпретатор: слово хранит исходный текст, который повторно интерпретируется. Для пользователя работает, но нельзя реализовать IF внутри Forth — всё контролирует Go. -
ctil (C)
Классическая реализация: связанный словарь, токен-трединг, большая часть на Forth. Позволяет писать:
: variable create 1 cells allot ;
: if ' 0branch , here 0 , ; immediate
: then here swap - swap ! ; immediate
: else ' branch , here 0 , swap dup here swap - swap ! ; immediate
Итого: два эксперимента, показывающие разницу между «просто работает» и «можно копнуть душу языка».