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
正文
Forth-早期岁月(1)2005-08-05 16:13:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/forth/3486.html
阅读(4042) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论