Forth

From EDM2
Jump to: navigation, search

An imperative, hierarchical stack based language with an almost quasi-religious following. Like so many languages at the time FORTH was initially spelled all caps, but it had become the custom to spell it as a noun as early as the mid 70's, unlike most contemporary languages. The language was originally developed in FORTRAN on an IBM 1130 computer by Charles H. Moore and then known as Fourth to reflect that it was a 4th-generation computer language (actually it isn't), but as the IBM 1130 filesystem only allowed five character upper case names the name was shortened to FORTH.

Forth's strongest points and its weakest point are basically the same feature, it is extensible to a fault and it also does not integrate well with modern operating systems as many of its features were originally concepts that in a modern setting are replaced by OS functions and the behaviour of the Forth system often totally alien to the host.

The language allows you to build keywords that encapsulate functions or code, this is similar to how a library works in other languages except that the new keywords are not auto-documenting like libraries usually are. This means that you do not only need to learn the language and all the new keywords each implementation brings, but if you are using or updating code from someone else you are required to learn all their frequently undocumented extensions to the language which with larger programs can become a seriously daunting task.

Forth has however found a strong niche in embedded systems where it can take over the tasks we would normally associate with an operating system, interpreter, compiler, editor and assembler into one coherent whole that can be a joy to work with compared to the often cumbersome IDE based modern embedded development systems.

A list of OS/2 implementations of Forth

  • C-Forth - Open Source - Discontinued
  • FIG Forth - Status unknown
  • FORTH/2 - Shareware - Discontinued
  • FORTH32 - Shareware - Discontinued
  • LMI Forth-83 - Commercial - Discontinued - Cross development tool that runs on top of UR/FORTH.
  • Portable Forth Environment - Open Source - Current
  • UR/Forth - Commercial - Discontinued

OS/2 editors with Forth support

  • jEdit - Java based - FORTH syntax highlighting built in

A list of DOS implementations of Forth

  • Ale Forth - Freeware - Discontinued
  • BBL - Freeware - Discontinued
  • bigForth - Commercial - Discontinued
  • C-Forth - Open Source - Discontinued
  • ciforth - Open source - Current
  • ColorForth - Open source - Current
  • eForth - Open source - Sort of current
  • FIG Forth - Open Source - Discontinued
  • F-PC - Open source - Discontinued
  • Fifth - Freeware/Commercial
  • Forth Express - Commercial - Discontinued
  • Forthmacs - Commercial - Discontinued
  • FORTH32 - Shareware - Discontinued
  • f83 - Open source - Discontinued
  • GForth - Open source - Discontinued
  • Golden Porcupine Forth - Shareware - Discontinued
  • HENCE4TH - Open source - Discontinued
  • hForth - Open source - Discontinued
  • Hierarchical Music Specification Language - Commercial - Discontinued
  • HS/FORTH - Commercial - Discontinued
  • LMI Forth-83 - Commercial - Discontinued - Cross development tool that runs on top of UR/FORTH.
  • MiniForth - Open source - Discontinued
  • MMS Forth - Commercial - Discontinued
  • Modular Forth - Commercial - Discontinued
  • OOF - Open source - Discontinued
  • Portable Forth Environment - Open Source - Current
  • PowerForth - Commercial - Discontinued
  • polyFORTH - Commercial - Discontinued
  • Pigmy Forth - Open source
  • TCOM - Freeware - Discontinued
  • ThisForth - Open source - Discontinued
  • TIMBRE - Freeware - Discontinued
  • TURBO-Forth - Commercial - Discontinued
  • UniForth - Commercial - Discontinued
  • UR/Forth - Commercial - Discontinued
  • WPForth - Commercial - Discontinued
  • Zen - Open source - Discontinued
  • 4THCMP - Freeware - Discontinued

A list of Forth implementations that run under WinOS/2

  • Forthmacs - Commercial - Discontinued
  • ProForth - Commercial - Discontinued
  • WinForth - Commercial - Discontinued

A list of Forth implementations that run under Java

  • Delta Forth - Open source - Discontinued
  • J2EE Forth - Open source - Discontinued

A list of Forth implementations in JavaScript

  • wForth - Open source - Discontinued.
  • jsForth - Very minimalistic but works, intended for use in a browser rather than stanadalone - Open source - Discontinued

Publications

Interviews

Tutorials and other learning material

Links

USENET

Standards

Most early FORTH standards were informal and based on books and articles by the original language author or on work by sundry Forth Interest Groups.

  • FORTH-77 more commonly known as just F77 was developed by the European Forth User Group and most European implementations of FORTH in the 1970's and 80's derive from this standard.
  • fig-FORTH was defined by the "fig-Forth Installation Manual" for the fig-FORTH 6502 version released by FIG in latter half of the 70's with an update in 1980. Most if not all fig-FORTH compatible releases reference this document rather than the F77 standard, although a few reference a later fig-FORTH for the IBM PC document. You can read the text here.
  • FORTH-79 more commonly known as just F79 is an extension to fig-FORTH and adds about 40 new functions most of the derived from the F77 standard, you can download the standard text here. It never became as popular as fig-FORTH and most IBM PC systems skipped this standard and went from fig to F84.
  • The F83 standard was done by Henry Laxon and Mike Perry at the USA Forth Interest Group, this massively extends the Forth base, the language now had over 1000 functions in addition an extensive standard library. The size however meant that the 8 bit implementations never bothered to follow the F83 standard and it was only on DOS were it became popular simply due to the existence of a public domain implementation from FIG. You can read the F83 standard here
  • ANS Forth - 1994 draft - Aka ANSI Forth.
  • Peter Knaggs: A truly International Standard - Fixes to the absolute lack of international support in ANS Forth. (1998).

History

  • Invented by Charles H. Moore in 1966/7 and released in 1968 for the IBM 1130, it became an almost instant hit as it suited the limited hardware and processing power of the 1130 much better than some of the traditional toolkits that IBM offered for the system.