**Forth**是1960年代末期，由查理斯·摩爾发展出来在天文台使用的電腦自動控制系統及程序设计语言，允许使用者很容易組合系統已有的簡單指令，定义成為功能较复杂的高階指令。由於其結構精簡、執行快速、操作方便，廣為當代天文學界使用。八十年代以後，有愛用者成立Forth Interest Group在世界各地推廣，並陸續在各类计算机上建立Forth系統及標準的语言。

简介
--

Forth以可延伸的词典为核心，采用以堆栈为基础的高度模块化结构，是一种将解译器和编译器合并运用的双态系统。使用FORTH，可在编译过程中检测差错，并且逐步扩充编译程序代码。利用標準Forth所写的程序几乎不必大修改，就能在各类计算机运作；甚至在特別设计的电脑上可以完全放棄组合语言，直接由Forth转化成机器语言，就好像现代的Java虚拟机。同时，使用者也可以把自己定义的运算功能加入编译器中，使Forth语言更有弹性。

Forth是一种可扩展的，交互式的语言。最初为小型的嵌入式电脑设计的，现在它几乎可以在任何主流的芯片上解译和编译，甚至已有多種可直接运行Forth指令的芯片。在电子，专家系统，多用户数据库，和分布式实时控制系统中有广泛的应用。表面来看，Forth是一种基于堆栈的概念机。例如要计算（3+4）\*5，程序就是：3 4 + 5 \*。首先把3和4入堆栈，然后调用+子程序，把堆栈的最顶上两个元素取出（也就是3和4）进行加法运算，然后把结果入堆栈，然后把5入堆栈，然后调用\*子程序，把最顶的2个元素，也就是7和5取出，并进行乘法运算，然后把结果入堆栈，最后的。把结果从堆栈中取出列印。事实上这是一种最简单有效的概念机。当然Forth远远不止这些。

最常用在内建程序，以及系统与过程控制，它也用在微电脑上。主要运用在数据搜集与处理、图形处理、专家系统，以及实时流程控制等。

样例程序
----

下面是一个在标准输出设备上输出Hello World的简单程序，这种程序通常作为开始学习编程语言时的第一个程序： 

```
: run-hello \定义一个单词，名字叫run-hello
 ." Hello, world!" CR ;
run-hello

```

只有在编译模式，也就是在定义一个单词的中使用."指令，才能输出字符串。

从程序员的角度看Forth
-------------

用Forth的"追随者"的话来说，Forth是一种"人机一体"的语言。在程序员的意识中必须要有一台逻辑上的机器（可能是实际的芯片，也可能是虚拟机）。这台机器拥有两个堆栈（数据堆栈和返回堆栈），一个词典（在Forth中的词（word）对应于高级语言的函数或者子程序，若干的词构成词典。）一个内部解释器和一个外部解释器。

和Forth语言一样，也是基于堆栈的程序设计语言还有PostScript。基于堆栈的工具还有linux下的计算器dc，在其内部是通过堆栈实现的。

使用Forth开发应用程序与使用其他语言开发应用程序的感受有很大的不同。Forth的一切都是透明的，使用者可以看到每一个功能的实现原理和过程，正是由于这一点，Forth可以作为学习操作系统及编程的非常好的工具。关于Forth编程的特点有一个较为贴切的描述："如果C语言给你的感觉是：它是最好的程序设计语言，那么使用Forth给你的感觉则是：自己是最好的程序设计师。"

实现
--

在微軟的windows操作系统下，一個很好的Forth系統是Win32Forth。詳見win32forth 。

GNU/Linux系列操作系统下，GForth是GNU對ANS Forth的一個實現，可在gnu网站下载（另有HTTP链接，GNU软件一般推荐通过镜像站点下载）。下載後，使用通常的`configure; make; make install`指令即可編譯安裝。GForth還可以內置在著名的文本編輯器Emacs中使用。若出现问题，请阅读`BUILD-FROM-SCRATCH`文件。

GForth同时适用于其他系统，例如OS X等UNIX类系统。

引用
--

1. ↑  C. H. Moore; E. D. Rather; D. R. Colburn.. . ACM SIGPLAN History of Programming Languages **28** (3). March 1993  [2021-04-04]. （原始内容存档于2011-08-22）.
2. ↑  NASA applications of Forth (original NASA server no longer running, copy from archive.org)
3. ↑ .  [2007-09-04]. （原始内容存档于2010-10-24）.
4. ↑  （页面存档备份，存于）
5. ↑  （页面存档备份，存于）
6. ↑  HTTP链接（页面存档备份，存于）
7. ↑  镜像站点（页面存档备份，存于）

外部連結
----

* FIG（页面存档备份，存于），Forth兴趣小组，是致力于教育和推广Forth编程语言的一个全球性的非盈利组织。
* Forth公司主页（页面存档备份，存于），上面有很多经典的Forth学习资料，历史和教程。
* 中国Forth程序员，Forth程序员社区和资料站。
* Starting Forth（页面存档备份，存于），Leo Brodie写的Forth语言的入门教材，该书的特色是使用大量生动的图片来说明程序执行的流程。



|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
程序设计语言 |
| --- |
|  |
| 按范型 | 

|  |  |
| --- | --- |
| 过程式 | 
* FORTRAN
* COBOL
* ALGOL 60
* BASIC
	+ QB64（英语：）
* PL/I
* MUMPS（英语：）
* ALGOL 68
* Forth
* Pascal
	+ Turbo Pascal
* C
* Modula-2
* Ada 83
* occam
* Oberon
* Go
* Zig
* Carbon

 |
|  |
| 面向对象 | 
* Simula 67
* Smalltalk
* C++
* Objective-C
* Eiffel
* Object Pascal
	+ Delphi
* Self
* Visual Basic
	+ Gambas
* Ada 95
* Java
* C#
	+ Vala
* Fantom（英语：）
* Crystal（英语：）

 |
|  |
| 多范型 | 
* Modula-3
* Dylan
* Python
* Lua
* JavaScript
* Ruby
* D
* Factor
* Scala
* F#
	+ F\*
* Haxe
* Dafny（英语：）
* Nim
* Rust
* Dart
* Julia
* Swift
* Bosque（英语：）

 |
|  |
| 函数式 | 

|  |
| --- |
| 
* LISP
	+ Scheme
	+ Common Lisp
	+ Clojure
* Logo
* APL/J
* ML
	+ Standard ML
	+ OCaml
* Erlang
	+ Elixir
* Haskell
	+ Curry
* SAC
* Agda
* Idris
* Pure（英语：）
* jq（英语：）
* Cuneiform

 |

 |
|  |
| 逻辑式 | 
* Prolog
* Datalog
* Mercury
* AnsProlog

 |

 |
|  |
| 脚本语言 | 

|  |  |
| --- | --- |
| 动态语言 | 
* SNOBOL
* Icon
* REXX
* Perl
	+ Raku
* Tcl/Tk
* CLOS
* newLISP
* Python
* Lua
* Ruby
* PHP
	+ Hack
* REBOL
	+ Red（英语：）
* Julia

 |
|  |
| Shell语言 | 
* Unix shell
	+ sh
	+ csh/tcsh
	+ ksh
	+ bash
	+ ash
	+ zsh
	+ rc（英语：）
	+ fish
* sed
* AWK
* PowerShell

 |
|  |
| ECMA-262 | 
* ECMAScript
	+ JavaScript
* TypeScript
* Node.js/Deno
* CoffeeScript/LiveScript（英语：）
* Elm
* PureScript
* Reason

 |

 |
|  |
| 特定平台 | 

|  |  |
| --- | --- |
| .NET | 
* C#
* C++/CLI
* F#
* PowerShell
* VB.NET
* Small Basic

 |
|  |
| JVM | 
* Java
	+ AspectJ（英语：）
* Scala
* Clojure
* Groovy
* Kotlin

 |

 |
|  |
| 特定领域 | 

|  |  |
| --- | --- |
| 科学计算 | 
* Speakeasy（英语：）
* IDL
	+ GDL
* Maxima
* Maple
* MATLAB
	+ Octave
	+ Scilab
* Wolfram
* R
* Yorick（英语：）
* SageMath
* Julia

 |
|  |
| GPU计算 | 
* GLSL
* HLSL
* OpenCL
* CUDA
* Futhark

 |
|  |
| 数据查询 | 
* SQL
	+ PL/SQL
	+ T-SQL
	+ SQL/PSM（英语：）
* xBase（英语：）
* XPath
* XQuery（英语：）
* GraphQL

 |
|  |
| 可视化 | 
* Simulink
* LabVIEW
* Orange（英语：）
* KNIME（英语：）
* Scratch
	+ Snap!
* Power Fx

 |
|  |
| 传媒设计 | 
* SuperCollider
* Pure Data
* Processing
* ChucK

 |

 |
|  |
| 其它 | 
* 汇编语言
* make
* PostScript
* XSLT
* WebAssembly

 |
|  |
| 
* 分类 目录
* 列表级条目 列表
* 历史
* 比较（英语：）
* 时间线（英语：）

 |

 |