正文

Forth-早期岁月(1)2005-08-05 16:13:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/forth/3486.html

分享到:

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

阅读(3944) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册