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.