Chuck Moore chipchuck@colorforth.com 1991 摘要 Forth是个简单、自然的程序语言,它之所以能达到如此卓越的接受度,多半要归功其有价值的整体效率。它于1960年代开始发展,历经了大学、业界到实验室的旅程。以下是个叙述从简单解译器如何慢慢扩展它的能耐而成为一个完整程序语言及操作系统的故事。 Forth1999 这篇文章是为HOPL II(程序语言的历史)会议所写,不过它立刻被退回,很明显的是因为写作的风格吧。最后大部分的内容则收录在一般人可接受的文章中[Rather 1993]。 这个HTML的版本是由原来的手稿重新编排,在文字上有做了些许的变动,校阅人Phil Koopman建议加入原始码的例子,在这之前还没有哩。 内容 Forth 麻省理工学院,史密森尼亚天文物理观测台,1958 史丹佛大学,史丹佛线性加速中心,1961 自由程序员,1965 摩哈斯科,1968 国家无线天文台, 1971 道德论 Forth Forth发展于60年代的这个十年,横越了整个美国、在大学、商业界及实验室之中、在已确立的语言之中。在这段期间,我是它唯一的程序员,一直到后来它才有个名字。这段记述是由我记忆中回忆,只能靠着稀少的文献及幸存的列表来做些提示。 Forth几乎不是原创,但它真是个独特的组合,我由衷感谢那些允许我去开发它的人们及组织---虽然他们常不为人知,还有您,那么有兴趣想知道关于它的一切。 Forth是个简单、自然的计算机语言,今日它已是个被接受的世界级程序语言,它不是靠着业界、大学或政府的支持而达到这个目标,实在要归功于它的效率、可靠度及多样化。当Forth的效率性比其它语言的流行度还重要时,它便是被选择的语言,在现实世界中像是控制或通讯的应用,更常有这种情形。 许多Forth的组织和很多的小型公司有提供系统、应用及文件,在北美、欧洲及亚洲都有举行年度的研讨会,ANSI标准的草案也将在近期发出[ANS 1991]。 没有一本有关Forth的书可以完全的捕捉它的韵味,我想最好的仍然是最早的那一本由Leo Brodie所写的Starting Forth[Brodie 1981],另一窗口便是JFAR所提供的那无价的主题与作者索引[Martin 1987]。 我们要讨论的典型Forth,它提供最少量的支持给程序员,而程序员则需要去发展最适于他的应用的一个语言,它被设计用于工作站环境:有键盘、显示器、计算机和磁盘驱动器。 Forth是个以文字为基础的语言,基本上是与上下文无关的(Context-Free),它结合由空格所区隔的”字”来建构了新字,大约由150个这样的字来组成一个系统来提供(已引入的时间排列): 史密森尼亚天文物理观测台 1958 解译器 史丹佛线性加速中心 1961 数据堆栈 实时系统公司 1966 键盘输入 显示输出,OK 编辑器 摩哈斯科 1968 编译器 返回堆栈 字典 虚拟内存(磁盘) 多程序员 国家无线天文台 1971 线锁码 固点算术 这样的系统由10到20页的原始码编译成3到8K字节的执行码,它可以容易地由一程序员单独在一小计算机上实现。 这段记述无可避免地要循着我的经历来写,但它的用意是当成Forth的自传。我将讨论上面所列的特征;还有与这些特征有关的字的名称,许多字的意义是很明显的,某些会赋予描述,另外有些则超出本文章的范围。 Forth字典中那些将被引述的部分总结于下: 解译器 WORD NUMBER INTERPRET ABORT HASH FIND ' FORGET BASE OCTAL DECIMAL HEX LOAD EXIT EXECUTE ( 终端机 KEY EXPECT EMIT CR SPACE SPACES DIGIT TYPE DUMP 数据堆栈 DUP DROP SWAP OVER + - * / MOD NEGATE ABS MAX MIN AND OR XOR NOT 0< 0= = @ ! +! C@ C! SQRT SIN.COS ATAN EXP LOG 返回堆栈 : ; PUSH POP I 磁盘 BLOCK UPDATE FLUSH BUFFER PREV OLDEST 编译器 CREATE ALLOT , SMUDGE VARIABLE CONSTANT [ ] LITERAL ." COMPILE BEGIN UNTIL AGAIN WHILE REPEAT DO LOOP +LOOP IF ELSE THEN

评论