Forth

维基百科,自由的百科全书
跳转至: 导航搜索

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

FORTH以可延伸的词典为核心,采用兩個堆栈为基础的高度模块化结构,是一种将解译程序interpreting和编译程序compiling合并运用的双态系统。使用FORTH,可在编译过程中检测差错,并且逐步扩充编译程序代码。利用標準FORTH所写的程序几乎不必大修改,就能在各类计算机运作;甚至在特別设计的电脑上可以完全放棄组合语言,直接由FORTH转化成机器语言,就好像现代的Java machine。同时,使用者也可以自由使用自己定义的运算功能,加入编译器(compiler)中,使Forth语言更有弹性。台湾黃大一及現旅居美國的丁陳漢蓀是这方面的专材,黃大一在1980年代后期开发过两部完全使用FORTH的嵌入式系统,丁陳漢蓀於2002年代即以eforth架構打通軟硬体任督二脈發展完成forth芯片,並將畢生研究forth的心得於2003年代編輯成書嵌入式系統:使用eForth

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

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

Forth语言的Hello World!程序[编辑]

下面是一个在标准输出设备上输出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给你的感觉则是:自己是最好的程序设计师。”

MS Windows系列操作系統下的Forth系統[编辑]

  在微軟的windows操作系統下,一個很好的Forth系統是Win32Forth。   詳見http://win32forth.sourceforge.net 。

GNU/Linux系列操作系統下的Forth系統[编辑]

  GForth是GNU對ANS Forth的一個實現,可在下面的地址下載:     ftp://ftp.gnu.org/gnu/gforth/   下載後,使用通常的configure ; make ; make install指令即可編譯安裝。   GForth還可以內置在著名的文本編輯器Emacs中使用。

外部連結[编辑]

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