Hacker News Digest

27 августа 2025 г. в 13:19 • eli.thegreenplace.net • ⭐ 149 • 💬 23

OriginalHN

#forth#go#c#interpreters#stack-based-languages#embedded-systems

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

Итого: два эксперимента, показывающие разницу между «просто работает» и «можно копнуть душу языка».