Forth Language
Added 31 Jul 2008
Forth is a structured, imperative, stack-based, computer programming language and programming environment. Forth is sometimes spelled in all capital letters following the customary usage during its earlier years, although the name is not an acronym.
A procedural, stack-oriented and reflective programming language without type checking, Forth features both interactive execution of commands (making it suitable as a shell for systems that lack a more formal operating system) and the ability to compile sequences of commands for later execution. Some Forth implementations (usually early versions or those written to be extremely portable) compile threaded code, but many implementations today generate optimized machine code like other language compilers.
A Forth environment combines the compiler with an interactive shell. The user interactively defines and runs subroutines, or "words," in a virtual machine similar to the runtime environment. Words can be tested, redefined, and debugged as the source is entered without recompiling or restarting the whole program. All syntactic elements, including variables and basic operators, appear as such procedures. Even if a particular word is optimized so as not to require a subroutine call, it is also still available as a subroutine. On the other hand, the shell may compile interactively typed commands into machine code before running them. (This behavior is common, but not required.) Forth environments vary in how the resulting program is stored, but ideally running the program has the same effect as manually re-entering the source. This contrasts with the combination of C with Unix shells, wherein compiled functions are a special class of program objects and interactive commands are strictly interpreted. Most of Forth's unique properties result from this principle. As a "jack of all trades" including interaction, scripting, and compilation, Forth was popular on computers with limited resources, such as the BBC Micro and Apple II series, and remains so in applications such as firmware and small microcontrollers. In this way, Forth is broadly comparable to BASIC, but emphasizing optimization over ease of use. Where C compilers may now generate code with more compactness and performance, Forth retains the advantage of interactivity.
Certain words are predefined, including the basic arithmetic operators. Predefined words which may be used at runtime are collectively called the "kernel." When the user starts an interactive Forth environment, it typically consists of the kernel and the interpreter. The compiler comprises a set of commands within the interpreter. Most of the ANS Forth standard is devoted to defining the contents of the kernel and the interface to the compiler. Aside from the predefined words, the main requirement is that words are executed in sequence. Here is an example of a programmer "developing" the hello world program. By convention, source code examples are written as a log, showing the programmer's input and the interpreter's response. Interpreters traditionally say "OK" after the successful completion of a command line.