Hacker News Digest

Тег: #forth

Постов: 6

Forth – Is it still relevant? (github.com)

Представлена реализация eForth на C/C++ с кроссплатформенной поддержкой. Проект работает на Linux, MacOS, Windows, ESP32 и даже в WebAssembly (WASM), что делает его универсальным решением для различных систем.

Код проекта размещен на GitHub в репозитории chochain/eforth. Реализация eForth на C/C++ позволяет использовать этот язык программирования в широком спектре устройств - от настольных компьютеров до встраиваемых систем вроде ESP32, а также в веб-среде через WASM.

by lioeters • 09 ноября 2025 г. в 04:59 • 78 points

ОригиналHN

#forth#c#c++#webassembly#embedded-systems#lisp#esp32#github

Комментарии (47)

  • Forth ценен для образования как альтернативный подход к вычислениям наряду с Lisp, демонстрирующий разные способы выражения программной логики.
  • Классические реализации Forth на ассемблере противоречат идее 100% C/C++ с кросс-платформенностью, но язык остается простым для реализации с нуля, особенно на стековых процессорах.
  • Производительность Forth часто страдает из-за цепочек вызовов подпрограмм, но возможна оптимизация через инлайнинг, использование регистров и native-код для критичных участков.
  • Forth сохраняет нишевое применение в embedded-системах благодаря компактности и гибкости от низкоуровневого до высокоуровневого программирования.
  • Сообщества вокруг таких языков могут предлагу уникальные решения, но иногда склонны к догматизму и пренебрежению другими подходами.

Ilo – a Forth system running on UEFI (asciinema.org)

Asciinema — платформа для записи и обмена терминальными сессиями, позволяющая пользователям сохранять командную работу в различных форматах. На представленном примере запись "untitled" от пользователя crc набрала 3676 просмотров и доступна для скачивания в оригинальном формате .cast, текстовом варианте .txt или в виде анимированного GIF. Платформа поддерживает воспроизведение в терминале с помощью asciinema play и встраивание на веб-сайты через специальный плеер.

Пользователи могут делиться записями с параметрами запуска (например, указывать время начала воспроизведения через ?t=30), встраивать скриншоты в README проектов и конвертировать терминальные сессии в GIF с помощью утилиты agg. Asciinema также предоставляет CLI-инструменты для локального воспроизведения записей и предлагает варианты встраивания для различных платформ, включая HTML и Markdown.

by rickcarlino • 21 октября 2025 г. в 13:05 • 108 points

ОригиналHN

#forth#uefi#open-firmware#olpc#cli#asciinema#gif#html#markdown

Комментарии (42)

  • Обсуждение охватывает от Open Firmware и Forth до внутреннего конфликта имени ILO/ILO и влияния на OLPC, а также затрагивает вопросы эстетики и практичности в контексте встроенного ПО и влияния на разработчиков.
  • Участники обсуждают, что такое "открытая прошивка" и как она влияет на разработчиков и пользователей, а также затрагивает вопросы лицензирования и патентов.
  • Обсуждение также затрагивает вопросы влияния на OLPC и другие проекты, а также затрагивает вопросы влияния на пользователей и разработчиков.
  • Участники также обсуждают, как влияет выбор инструментов на разработчиков и их продуктивность, а также затрагивает вопросы влияния на пользователей.

Forth: The programming language that writes itself (ratfactor.com) 🔥 Горячее

Forth — язык программирования, созданный Чаком Муром, который легендарен своей необычайной гибкостью и способностью изменять даже базовые элементы вроде целых чисел. Автор статьи рассказывает о своем пути познания Forth, начатом с легенд на Usenet в 1990-х, где Мур описывался как "волшебник", пишущий программы всего за несколько экранов кода. Несмотря на популярность Perl и других языков того времени, Forth оставался загадкой для многих разработчиков.

Хотя Forth часто ассоциируется с обратной польской нотацией (RPN), где операторы следуют за операндами (например, "3 4 +"), это лишь поверхностная особенность языка. Истинная мощь Forth заключается в его экстремальной гибкости и минимализме, что позволило автору подтвердить легенду о возможности изменения значений целых чисел. Язык продолжает вызывать интерес благодаря своей уникальной философии и эффективности.

by suioir • 20 октября 2025 г. в 00:40 • 285 points

ОригиналHN

#forth#reverse-polish-notation#chuck-moore#programming-language-design#low-level-programming

Комментарии (121)

  • Обсуждение показало, что Forth и подобные языки привлекают внимание своей элегантностью и универсальностью, но страдают от отсутствия стандартизации и сложности в чтении кода, что мешает коллаборации и масштабированию.
  • Участники подчеркнули, что такие языки требуют высокой квалификации разработчика, что может ограничивать их использование в больших командах и коммерческих проектах.
  • Были упомянуты примеры, где Forth использовался в критически важных системах, но это требовало больших усилий для поддержания и передачи знаний.
  • Некоторые участники выразили ностальгию по временам, когда они сталкивались с такими языками в детстве или ранней карьере.
  • В конце концов, обсуждение подошло к выводу, что хотя такие языки могут быть мощными и выразительными, их практическая применимость ограничена их сложностью и отсутствием стандартизации.

Easy Forth (2015) (skilldrick.github.io)

Forth — это уникальный язык программирования 1970-х годов, который до сих пор используется в некоторых нишевых приложениях. Его ключевая особенность — работа со стеком: числа помещаются на стек, а операции (например, +) забирают верхние элементы и возвращают результат. Например, последовательность 5 2 + 10 * вычисляет выражение 10 * (5 + 2) без скобок благодаря обратной польской записи.

Определения новых слов создаются через : и ;. Например, : foo 100 + ; добавляет 100 к верхнему элементу стека. Forth требует точного соблюдения пробелов: +; будет воспринято как одно слово, а не два. Это минималистичный язык, который учит мыслить иначе, расширяя программистский кругозор.

by pkilgore • 22 сентября 2025 г. в 11:52 • 194 points

ОригиналHN

#forth#programming-languages#stack-based#reverse-polish-notation

Комментарии (105)

  • Участники делятся ресурсами для изучения Forth (Jones Forth, видео, книга) и отмечают его ценность для расширения кругозора и создания собственных языков.
  • Обсуждаются технические ограничения и нишевое применение Forth (встраиваемые системы с малыми ресурсами), а также его уникальные особенности, такие как использование двух стеков.
  • Критикуется автоматическая прокрутка на странице проекта, делающая его неудобным в Safari и Firefox, но отмечается работоспособность с отключенным JS.
  • Пользователи делятся впечатлениями от экспериментального проекта FXYT, предлагают улучшения (демо-программы в интерфейсе) и задают вопросы по реализации (например, рисование круга).
  • Высказывается мнение о непрактичности Forth для создания крупных приложений и сложности решения базовых задач (например, чтения строк из файла).

Your very own humane interface: Try Jef Raskin's ideas at home (arstechnica.com)

Джеф Раскин, создатель Macintosh, разрабатывал «гуманные интерфейсы» — системы, которые мгновенно осваиваются и повышают продуктивность благодаря интуитивности и уважению к человеческим слабостям. Его идеи живут в эмуляторах: например, Canon Cat, «рабочий процессор» на базе Motorola 68000, полностью управляется клавиатурой без мыши, использует единое рабочее пространство с документами и скрытую среду Forth для программирования.

Эмуляция в MAME позволяет испытать этот подход, хотя драйвер не поддерживает дисководы и зависает при звуковых сигналах — проблему решают через экран настроек, удерживая Control и нажимая SETUP. Это погружение в альтернативную историю интерфейсов, где эффективность важнее визуальных излишеств, а простота открывает мгновенную продуктивность.

by zdw • 19 сентября 2025 г. в 17:43 • 110 points

ОригиналHN

#canon-cat#forth#mame#motorola-68000#human-computer-interaction#user-interface-design#emulation

Комментарии (17)

  • Участники делятся личным опытом использования Canon Cat и работой с Джефом Раскиным.
  • Обсуждается идея «прыжка» (leap) для быстрого выделения текста без мыши и её реализация в разных ОС.
  • Поднимается вопрос о практичности функции (удержание vs. переключение) и обработке нескольких совпадений в тексте.
  • Упоминаются проекты по созданию аппаратного и программного обеспечения, вдохновлённого концепциями Canon Cat.
  • Отмечается отсутствие упоминания других related projects (THE/Archy, RCHI) в исходной статье.

Implementing Forth in Go and C (eli.thegreenplace.net)

  • Почему 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

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

by Bogdanp • 27 августа 2025 г. в 13:19 • 149 points

ОригиналHN

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

Комментарии (23)

  • Реализация Forth на Go оказалась «не по канонам»: стек и память описаны отдельными структурами, поэтому многие стандартные слова не работают.
  • Кто-то показал элегантный вариант на C++ с continuation-passing style и musttail-атрибутом clang.
  • Всплыли воспоминания о Forth-диалекте FCode в Open Firmware старых Mac, но выяснилось, что Intel-Mac’и использовали EFI, а не Open Firmware.
  • Читатели посетовали на читаемость кода без комментариев о стеке и отметили, что «high-level» реализации могут потерять дух Forth.
  • Автор ответил: первая версия на Go была экспериментом, а «правильная» реализация на C хранит код и данные вместе, как положено.