A low-level functional programming language, mostly concatenative, with imperative features, for a stack-based VM model, invented by Chuck Moore. It is a very interesting language to study, both for its achievements and its shortcomings. The writer won't list those shortcomings of Forth here, and he doesn't list any of its achievements either. You'll just have to guess what he must have been thinking. -- A N Other
Central to Forth is the notion of a "word", corresponding to a function in other languages. A Forth program, after parsing, is nothing but a list of words, executed consecutively by the "inner interpreter", the core of Forth.
Forth is fully reflective and self-containing; the Forth parser (the so-called "outer interpreter") is written in Forth and can be modified at any time. It has also a set of words to access the input buffer (see for example the word
PARSE). Thus, at least potentially, Forth can have any syntax.
Forth is usually untyped, much in the same way that Assembly is (though see strongForth below). More generally, Forth is a very low-level language, with manual management of memory, fixed-size buffers, pointer manipulation; but reflection makes it a remarkably powerful language among low-level languages.
- "Gforth": GNU Forth.
- "Mops": A superb public domain FORTH with OO extensions for Mac OS X. (An older version for "Classic" Mac OS can be found on the "Mops FTPsite".)
- "strongForth Homepage", by "Dr. Stephan Becher" ("old strongForth Homepage" [[[MIA]]] "archived" at Internet Archive) ("strongForth Yahoo! group" [[[MIA]]]) an ANS FORTH with strong compile-time typechecking. See also discussions in concatenative Yahoo! group.
- "Frugal" - HardCore SoftWare's Forth system.
- "Dreams" - a Forth object-oriented programming extension.
- "Pgforth" - a Forth interpreter in Perl.
- "IsForth" - a 32 bit Direct Threaded Linux Forth compiler.
- "Atlast" - Autodesk Threaded Language Application System Toolkit, a programming language based on FORTH-83.
- "4th" compiler.
- "Gforth" system.
- For various implementations see "comp.lang.forth.repository".