
FORTH列表
FORTH语言是1968~1970年间,美国一家软体公司——FORTH有限公司的Charles·H·Moorse推出的一种程式设计语言,它是一种与其它语言风格大不相同的词典结构的可扩充的高级语言。
基本介绍
- 中文名:FORTH列表
- 外文名:FORTH list
- 时间:1968~1970
- 人物:Charles·H·Moorse
- 系统:计算机
- 套用学科:计算机原理
FORTH的背景
在微处理机性能提高,价格降低的过程中,软体问题越来越突出,所以就产生了如何提高软体开发的生产能力及在硬体不断变化的情况下,如何继续使用已投资的软体等问题。所以就对软体的工具一一语言提出了以下要求:1.程式开发时间少;2.存储空间需求少;3.执行时间少;4.易维护;5.可移植性好。在这种前提下,FORTH语言就应运而生了。
最初的FORTH是面向小型机的,它几乎可用于所有的小型机,后来又编制了用于微处理器的MICRO FORTH,它现在巳适用于各种通用的微型机种(如APPLE,TRS一80)和各种CPU(8080,Z80,6800,6502,LSI一11,1802,PACE,8086,68000,Z8000,6809,9900等)。
FORTH语言在使用磁碟的有16K RAK的开发系统上运行,它适用于像多用户程式设计这样大型的设计方案。
FORTH的组成
词典
其中存放FORTH固有的运算符和用户自定义的运算符,这两种运算符FORTH是不加区别的,词典是FORTH最有特色的部分,使用这个词典里的单词向计算机说明问题(程式),计算机一边解释单词的意思,一边工作。
FORTH的90%是词典。FORTH程式部分(FORTH的核心)是存放核心的单词的地方。用它来定义FORTH基本词典(约140)。可以用机器语言或高级定义在词典里补充登记新词。
堆叠
FORTH有两个栈,用户打交道的堆叠叫参量栈,专门用来存放参加运算的常数。另一个堆叠起辅助作用,一般用来解决程式嵌套、递归等问题,主要记录返回地址,故称返回栈。
除了在堆叠上进行运算外,程式模组之间的数据交换全部通过堆叠进行,可以较容易地实现调用序列。
众所周知,对子程式设计而言,堆叠大概是一种最重要的数据结构,各种语言都利用它,但却对用户不透明。而在FORTH中,用户却可以直接控制堆叠。
彙编程式
FORTH语言除了它自己固有的运算符外,还兼容了其所在计算机的彙编程式。这就使FORTH成为高级语言与机器语言之间的桥樑。FORTH可以用彙编语言定义词,称为代码。当外设驱动或程式设计师要按CPU的速度运行程式时,可用代码定义。
解释程式
FORTH的全部动作都是由解释程式控制,它以人机对话形式编程和排错。解释程式规模很少,但可以进行数值转换、查找词典、生成词典条目、堆叠操作等非常重要的工作。它把新定义的词选入词典、把常数压入堆叠,根据词典找出相应的运算符的操作并执行之。
虚拟存储器
用FORTH语言编写的任何程式都能定义成一个运算符,并选入词典之中。用户不必关心记忆体的限制,因为FORTH全通过虚拟存储器使您始终觉得整个词典都在记忆体之中。
FORTH的特点
1.高级语言(如BASIC、FORTRAN、PASCAL等)一般都是依附在作业系统上的封闭系统。用户看不见计算机实际的运算过程。所以它无论从时间还是空间上都不能,充分发挥机器的潜力,FORTH语言却是与众不同的,它使用户可以通过它了解机器内部的处理过程,而且可直接干预这些过程,即它可实现对硬体的深度控制。
2.FORTH代表了一种新的程式设计思想。它把互动式高级语言、宏彙编程式、多道程式作业系统、用户实用程式系统归为一体。因此,也有人称它为近似于作业系统的语言。
3.FORTH是一种可扩充的语言。它不同于那些把源程式解释或翻译成目标程式的常规语言。它是由一个运算符词典和一个运算参量堆叠来完成程式的执行。词典中的运算符在需要时象搭积木那样组成新的运算符,从而实现自扩充。
4.FORTH语言具有极大的灵活性。由于它的可扩充性,用户可以构造自己的操作和数据类型,而且对这些定义可以象对FORTH自己的定义那样进行处理。当系统建立起来时,直接可得到这些定义,不必访问软体程式库或子程式。
5.与面向暂存器的C语言不同,FORTH语言是面向堆叠的后缀表示型,即逆波兰表示型语言。
6.FORTH适于书写过程控制、软体开发和资料库以及一般商用软体。由于它是面向堆叠的,所以对数据量大的运算不太合适。但对一般处理,它的效率是BASIC(解释)的十倍以上。
7.由于FORTH是后缀表示型(逆波兰表示),所以子程式连线非常简便,不用任何CALL语句和变数表。各种操作之间的通讯只通堆叠即可。
8.FORTH程式是可重入的,所以易于实现多任务(包括多终端)系统。FORTH也是递归型的。
9.一个完整的FORTH系统仅为6~7K位元组,它由存放基本词的词典和只用机器语言书写的FORTH程式构成,其中用机器语言写的核心部分只有800位元组,它是可自扩充的,其它部分是用FORTH语言本身写的。如果用层次来使FORTH语言更形象一些的话,可以认为最内层是处理器(裸机),外面是FORTH程式,再外一层是FORTH基本词典,最外一层是应用程式。
10.由于FORTIH具有精悍的核心,就给它带来了良好的可移植性。
11.FORTH易于实现模组化的结构程式设计。由于FORTH的词典结构,使它具有详细的模组和精确的层次概念。由低级运算符定义高级运算符,再由高级运算符定义更高级的运算符,形成一个自底向上的宝塔。实际编程时,这个过程倒过来採取自顶向下逐步求精的方法。再者,FORTH中没有Goto语句。这些特点,完全符合结构程式设计的要求,因此FORTH被称为“天生的”结构程式设计语言。
优缺点
FORTH优点:
1.程式开发时间短,约是其它语言的十分之一。
2.占用记忆体空间小,目标码比彙编语言的还紧凑,而且程式越大该优越性就越明显。这主要受惠于它的词典结构。
3.执行时间与彙编语言的程式相当。
任何语言都不可能完美无瑕,为了追求效率,FORTH也有先天的缺陷:
1.FORTH中没有数据类型。一个数值可能是实数,亦可能是逻辑值。如果结序员不小心,就会引起类型冲突。
2.没有目录档案结构。但这是可以用用户定义来克服的。
3.由于它採用了逆波兰表示法,所以源程式较难读。