A _(low-level) *(functional)-like *(programming language) 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. <span class="comment">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.</span>

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 <code>PARSE</code>). 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.

See also _(Forth OSes), _(Forth is NOT intrinsically slow).

<ul class="links">
<li>_("forth.org"|http://www.forth.org/), _("FTP Site"|ftp://ftp.forth.org/), _("German FTP Mirror"|ftp://ftp.uni-bremen.de/pub/languages/programming/forth/Taygeta-Archive).</li>
<li>_("The Evolution of Forth"|http://www.forth.com/Content/History/History1.htm), a Forth history by _(Charles H. Moore|Chuck Moore), Elizabeth D. Rather, Donald R. Colburn.</li>
<li>_("FORTH - A Language for Interactive Computing"|http://www.ultratechnology.com/4th_1970.html): the original FORTH paper by _(Chuck Moore).</li>
<li>_("Forth - The Early Years"|http://www.colorforth.com/HOPL.html) another Forth history from its inventor.</li>
<li>_("Draft ANS Forth"|http://www.taygeta.com/forth/dpans.html) the standard.</li>
<li>_("The ForthFreak Wiki"|http://www.forthfreak.net/wiki/)
<li>_("An Introduction to Forth Using StackFlow"|http://www.taygeta.com/forth_intro/stackflo.html).</li>
<li>_("FAQ"|http://www.faqs.org/faqs/computer-lang/forth-faq/) written by the good people at comp.lang.forth.</li>
<li>_("cera2.com"|http://www.cera2.com/softd/forth.htm) and _("eg3.com"|http://www.eg3.com/softd/forth.htm).</li>
<li>_("Stack Computers: the new wave"|http://www.ece.cmu.edu/~koopman/stack_computers/index.html): a freely available online book by _("Philip J. Koopman, Jr."|Philip Koopman)</li>
<li>_("Starting Forth"|http://home.iae.nl/users/mhx/), Leo Brodie's classic introductory book is now available on-line (from Marcel Hendrix's home page).</li>
<li>_("M. Anton Ertl's WWW site"|http://www.complang.tuwien.ac.at/anton/home.html).</li>
<li>_("Forth entry in the Open Directory Project"|http://dmoz.org/Computers/Programming/Languages/Forth/): a comprehensive list of Forth related links</li>
</ul>

<ul class="links">
<li>_("colorForth"|http://www.colorforth.com/): _(Chuck Moore)'s colorForth Homepage</li>
<li>_("UltraTechnology.com"|http://www.ultratechnology.com/): Jeff Fox's UltraTechnology Homepage</li>
<li>_("Forth, Inc."|http://www.forth.com/): founded by the original developers of Forth.</li>
<li>_("Taygeta Scientific Incorporated"|http://www.taygeta.com/).</li>
<li>_("Patriot Scientific Corp."|http://www.ptsc.com/): FORTH chip maker.</li>
</ul>

<ul class="links">
<li>_("Linear Logic and Permutation Stacks--The Forth Shall Be First"|http://home.pipeline.com/~hbaker1/ForthStack.html) (_(".ps.gz"|http://home.pipeline.com/~hbaker1/ForthStack.ps.gz)), a paper by _(Henry Baker)
<br><strong>Abstract</strong>:
<blockquote>Girard's _(linear logic) can be used to model programming languages in which each bound variable name has exactly one "occurrence"--i.e., no variable can have implicit "fan-out"; multiple uses require explicit duplication. Among other nice properties, "linear" languages need no garbage collector, yet have no dangling reference problems. We show a natural equivalence between a "linear" programming language and a stack machine in which the top items can undergo arbitrary permutations. Such permutation stack machines can be considered _(combinator) abstractions of Moore's Forth programming language.</blockquote>
</li>
</ul>

<ul class="implementations">
<li>_("Gforth"|http://www.jwdt.com/~paysan/gforth.html): GNU Forth.</li>
<li>_("Mops"|http://www.PowerMops.org/): A superb public domain FORTH with _(OO) extensions for Mac OS X. (An older version for "Classic" Mac OS is still available.)</li>
<li>_("PFE"|ftp://ftp.taygeta.com/pub/Forth/).</li>
<li>_("strongForth Homepage"|http://home.t-online.de/home/s.becher/forth/) (_("strongForth Yahoo! group"|http://www.egroups.com/group/strongforth/), _("concatenative Yahoo! group"|http://www.egroups.com/group/concatenative/)) an ANS FORTH with strong compile-time typechecking.</li>
<li>For various implementations see _("comp.lang.forth.repository"|http://forth.sourceforge.net/).</li>
</ul>
