Forth

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

Forth
面向堆栈过程式反射式串接
設計者Charles H. Moore
1970年1970
型態系統无类型
文件扩展名.fs, .fth, .forth
網站
主要實作產品
SwiftForth (Forth, Inc.)
Gforth (自由软件)
VFX Forth (微处理器引擎)
啟發語言
Burroughs大型系统, Lisp, APL
影響語言
Factor, Joy, PostScript, RPL, REBOL

简介

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[4]

GNU/Linux系列操作系统下,GForth是GNU對ANS Forth的一個實現,可在gnu网站[5]下载(另有HTTP链接[6],GNU软件一般推荐通过镜像站点[7]下载)。下載後,使用通常的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. 镜像站点页面存档备份,存于

外部連結

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.