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.