Forth – Is it still relevant?
Представлена реализация eForth на C/C++ с кроссплатформенной поддержкой. Проект работает на Linux, MacOS, Windows, ESP32 и даже в WebAssembly (WASM), что делает его универсальным решением для различных систем.
Код проекта размещен на GitHub в репозитории chochain/eforth. Реализация eForth на C/C++ позволяет использовать этот язык программирования в широком спектре устройств - от настольных компьютеров до встраиваемых систем вроде ESP32, а также в веб-среде через WASM.
Комментарии (47)
- Forth ценен для образования как альтернативный подход к вычислениям наряду с Lisp, демонстрирующий разные способы выражения программной логики.
- Классические реализации Forth на ассемблере противоречат идее 100% C/C++ с кросс-платформенностью, но язык остается простым для реализации с нуля, особенно на стековых процессорах.
- Производительность Forth часто страдает из-за цепочек вызовов подпрограмм, но возможна оптимизация через инлайнинг, использование регистров и native-код для критичных участков.
- Forth сохраняет нишевое применение в embedded-системах благодаря компактности и гибкости от низкоуровневого до высокоуровневого программирования.
- Сообщества вокруг таких языков могут предлагу уникальные решения, но иногда склонны к догматизму и пренебрежению другими подходами.
Ilo – a Forth system running on UEFI
Asciinema — платформа для записи и обмена терминальными сессиями, позволяющая пользователям сохранять командную работу в различных форматах. На представленном примере запись "untitled" от пользователя crc набрала 3676 просмотров и доступна для скачивания в оригинальном формате .cast, текстовом варианте .txt или в виде анимированного GIF. Платформа поддерживает воспроизведение в терминале с помощью asciinema play и встраивание на веб-сайты через специальный плеер.
Пользователи могут делиться записями с параметрами запуска (например, указывать время начала воспроизведения через ?t=30), встраивать скриншоты в README проектов и конвертировать терминальные сессии в GIF с помощью утилиты agg. Asciinema также предоставляет CLI-инструменты для локального воспроизведения записей и предлагает варианты встраивания для различных платформ, включая HTML и Markdown.
Комментарии (42)
- Обсуждение охватывает от Open Firmware и Forth до внутреннего конфликта имени ILO/ILO и влияния на OLPC, а также затрагивает вопросы эстетики и практичности в контексте встроенного ПО и влияния на разработчиков.
- Участники обсуждают, что такое "открытая прошивка" и как она влияет на разработчиков и пользователей, а также затрагивает вопросы лицензирования и патентов.
- Обсуждение также затрагивает вопросы влияния на OLPC и другие проекты, а также затрагивает вопросы влияния на пользователей и разработчиков.
- Участники также обсуждают, как влияет выбор инструментов на разработчиков и их продуктивность, а также затрагивает вопросы влияния на пользователей.
Forth: The programming language that writes itself 🔥 Горячее
Forth — язык программирования, созданный Чаком Муром, который легендарен своей необычайной гибкостью и способностью изменять даже базовые элементы вроде целых чисел. Автор статьи рассказывает о своем пути познания Forth, начатом с легенд на Usenet в 1990-х, где Мур описывался как "волшебник", пишущий программы всего за несколько экранов кода. Несмотря на популярность Perl и других языков того времени, Forth оставался загадкой для многих разработчиков.
Хотя Forth часто ассоциируется с обратной польской нотацией (RPN), где операторы следуют за операндами (например, "3 4 +"), это лишь поверхностная особенность языка. Истинная мощь Forth заключается в его экстремальной гибкости и минимализме, что позволило автору подтвердить легенду о возможности изменения значений целых чисел. Язык продолжает вызывать интерес благодаря своей уникальной философии и эффективности.
Комментарии (121)
- Обсуждение показало, что Forth и подобные языки привлекают внимание своей элегантностью и универсальностью, но страдают от отсутствия стандартизации и сложности в чтении кода, что мешает коллаборации и масштабированию.
- Участники подчеркнули, что такие языки требуют высокой квалификации разработчика, что может ограничивать их использование в больших командах и коммерческих проектах.
- Были упомянуты примеры, где Forth использовался в критически важных системах, но это требовало больших усилий для поддержания и передачи знаний.
- Некоторые участники выразили ностальгию по временам, когда они сталкивались с такими языками в детстве или ранней карьере.
- В конце концов, обсуждение подошло к выводу, что хотя такие языки могут быть мощными и выразительными, их практическая применимость ограничена их сложностью и отсутствием стандартизации.
Easy Forth (2015)
Forth — это уникальный язык программирования 1970-х годов, который до сих пор используется в некоторых нишевых приложениях. Его ключевая особенность — работа со стеком: числа помещаются на стек, а операции (например, +) забирают верхние элементы и возвращают результат. Например, последовательность 5 2 + 10 * вычисляет выражение 10 * (5 + 2) без скобок благодаря обратной польской записи.
Определения новых слов создаются через : и ;. Например, : foo 100 + ; добавляет 100 к верхнему элементу стека. Forth требует точного соблюдения пробелов: +; будет воспринято как одно слово, а не два. Это минималистичный язык, который учит мыслить иначе, расширяя программистский кругозор.
Комментарии (105)
- Участники делятся ресурсами для изучения Forth (Jones Forth, видео, книга) и отмечают его ценность для расширения кругозора и создания собственных языков.
- Обсуждаются технические ограничения и нишевое применение Forth (встраиваемые системы с малыми ресурсами), а также его уникальные особенности, такие как использование двух стеков.
- Критикуется автоматическая прокрутка на странице проекта, делающая его неудобным в Safari и Firefox, но отмечается работоспособность с отключенным JS.
- Пользователи делятся впечатлениями от экспериментального проекта FXYT, предлагают улучшения (демо-программы в интерфейсе) и задают вопросы по реализации (например, рисование круга).
- Высказывается мнение о непрактичности Forth для создания крупных приложений и сложности решения базовых задач (например, чтения строк из файла).
Your very own humane interface: Try Jef Raskin's ideas at home
Джеф Раскин, создатель Macintosh, разрабатывал «гуманные интерфейсы» — системы, которые мгновенно осваиваются и повышают продуктивность благодаря интуитивности и уважению к человеческим слабостям. Его идеи живут в эмуляторах: например, Canon Cat, «рабочий процессор» на базе Motorola 68000, полностью управляется клавиатурой без мыши, использует единое рабочее пространство с документами и скрытую среду Forth для программирования.
Эмуляция в MAME позволяет испытать этот подход, хотя драйвер не поддерживает дисководы и зависает при звуковых сигналах — проблему решают через экран настроек, удерживая Control и нажимая SETUP. Это погружение в альтернативную историю интерфейсов, где эффективность важнее визуальных излишеств, а простота открывает мгновенную продуктивность.
Комментарии (17)
- Участники делятся личным опытом использования Canon Cat и работой с Джефом Раскиным.
- Обсуждается идея «прыжка» (leap) для быстрого выделения текста без мыши и её реализация в разных ОС.
- Поднимается вопрос о практичности функции (удержание vs. переключение) и обработке нескольких совпадений в тексте.
- Упоминаются проекты по созданию аппаратного и программного обеспечения, вдохновлённого концепциями Canon Cat.
- Отмечается отсутствие упоминания других related projects (THE/Archy, RCHI) в исходной статье.
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
Итого: два эксперимента, показывающие разницу между «просто работает» и «можно копнуть душу языка».
Комментарии (23)
- Реализация Forth на Go оказалась «не по канонам»: стек и память описаны отдельными структурами, поэтому многие стандартные слова не работают.
- Кто-то показал элегантный вариант на C++ с continuation-passing style и musttail-атрибутом clang.
- Всплыли воспоминания о Forth-диалекте FCode в Open Firmware старых Mac, но выяснилось, что Intel-Mac’и использовали EFI, а не Open Firmware.
- Читатели посетовали на читаемость кода без комментариев о стеке и отметили, что «high-level» реализации могут потерять дух Forth.
- Автор ответил: первая версия на Go была экспериментом, а «правильная» реализация на C хранит код и данные вместе, как положено.