Easy Forth (2015)

Perceived usefulness and real-world use

  • Some argue “nobody codes anything useful in Forth”; others counter with concrete examples: self-hosting OSes, roguelikes, accounting systems, device macros, signal generation, and embedded projects.
  • Factor is cited as a more active, practical descendant, with many libraries and an active release stream.
  • Others stress Forth’s value as a niche “cool little language,” and caution against dismissiveness given its different goals.

Historical niche vs today’s hardware

  • Forth originated to run interactive systems on very small machines (e.g., 8–16-bit, 8–64 KB RAM) where it competed mainly with assembly and enabled self-hosted development.
  • Today, tiny MCUs are cheap but so are far more capable chips; cross-compiling C/C++ from a powerful host often wins, shrinking Forth’s original niche.
  • Some still use Forth REPLs to explore new SoCs and microcontrollers, but production code is usually in C/C++.

Control flow, dual stacks, and implementation details

  • Many readers struggle to understand how IF/ELSE/THEN and loops are implemented, even if syntax is clear.
  • Multiple deep explanations describe:
    • Threaded code (subroutine/direct) and inner vs outer interpreters.
    • IMMEDIATE words that execute at compile time, patching placeholders for BRANCH/?BRANCH.
    • Use of the data stack at compile time to track unresolved jump addresses, enabling nested control structures.
  • There is debate over whether this model is simpler or more complex than C or assembly.

Simplicity, “revelations,” and metaprogramming

  • Some say needing a “revelation” to grasp control flow makes Forth impractical; others reply that the same is true for recursion, CPS, SSA, etc.
  • IMMEDIATE words are framed as Forth’s core superpower: compile-time metaprogramming that lets you extend the language and embed DSLs with very little machinery.
  • Alternative designs (quotations, macro-first lookup) are mentioned as ways to avoid stateful IMMEDIATE mechanics.

Strings, files, and practical friction

  • Beginners report hitting walls on mundane tasks like reading lines from files or handling strings, especially in Advent of Code–style problems.
  • Replies describe using fixed buffers, heap allocation (ALLOCATE/RESIZE/FREE), and avoiding counted strings, but acknowledge that many tutorials skip these pragmatic topics.

Relationship to other languages

  • Comparisons are drawn with assembly, the JVM/WASM as stack machines, PostScript, concatenative shells, RPL on HP calculators, and Bitcoin Script (widely agreed not really Forth).
  • Some see Forth, APL, and MUMPS as “superpower but flawed” languages whose expressiveness didn’t generalize.

Community, documentation, and resources

  • A recurring criticism: modern Forth tutorials often omit crucial concepts (especially IMMEDIATE and string handling), reflecting a community dominated by hobbyists rather than industrial users.
  • Recommended deeper resources include F83, eForth, Jones Forth, “Thinking Forth,” “Starting Forth,” and various small interpreters (forthkit, SectorForth).

Feedback on Easy Forth and spin-offs

  • Easy Forth is praised as an approachable, browser-based intro, but the auto-scrolling breaks on Safari/Firefox, and JS-free mode loses the interpreter.
  • The thread surfaces several playful Forth-inspired projects (canvas languages, haiku generators) and reinforces Forth’s value for “mind expansion” and interpreter-building practice.