正文

Forth 常见问题解答(1)2005-08-05 13:15:00

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

分享到:

本文译自 comp.lang.forth Frequently Asked Questions (1/6): General/Misc

原文整理 M. Anton Ertl, anton@mips.complang.tuwien.ac.at

Forth 是什么?
Forth 是怎么来的?
Forth 用在什么地方?为什么要使用 Forth?
Forth 过时了吗?
Forth 比 C 语言还要小、还要快吗?



Forth 是什么?
----------------------------------------
Forth 是一个基于堆栈的、可扩展的、没有类型检测的语言,可能最有名的是它的“逆波兰”(后缀)算术表达法,使用过 HP 计算器的人应该对这种方法比较熟悉:在 Forth 中把两个数相加,你需要输入 3 5 + 而不是 3 + 5 。

在 Forth 中,基本的程序单位是“字”:字可以是一个命名的数据项、子程序或者操作符。 Forth 的编程就是用已经存在的字来定义新的字。

Forth 语句:

: SQUARED DUP * ;

定义了一个新的字 SQUARED ,它的功能是对一个数求平方(通过自身相乘)。由于全部的语言结构都是由字组成的,应用程序员可以根据需要“扩展” Forth 以加入新的操作符、程序结构或者数据类型。 Forth 的“内核”包含了用于整数、地址、字符和布尔值的操作符,字符串和浮点操作可以选择加入。



Forth 是怎么来的?
-------------------------------------
Forth 这个名字的本意是想说明这个软件是为第四代(下一代)计算机设计的,那正是 Moore 通过分布式小型计算机所看到特色。不过,当时他使用的操作系统限制文件名只能少于 5 个字符,所以字母 'U' 就被去掉了。

直到 70 年代未期,还是使用着 FORTH 这种全部大写的字母,因为那个时候流行着只支持大写字母的 I/O 设备。随着小写 I/O 设备的普及, Forth 这种拼写方法被广泛接受,因为它毕竟不是几个单词的缩写。

参见 Rather, Colbourn, and Moore: The Evolution of Forth

<http://www.forth.com/Content/History/History1.htm>, in: History of Programming Languages (HOPL-II), ACM Press/Addison-Wesley 1996.

注意: Forth 不是 4GL (用于数据库应用开发的语言)

Forth 用在什么地方?为什么要使用 Forth?
---------------------------------------------
Forth尽管早在 1970 年就出现了,但是在个人计算机时代才变得广为人知,它的高性能和存储器的经济性很有吸引力,这些优点还使得 Forth 在嵌入式系统中应用得很普遍,包括从航天飞机到联邦快递的条码阅读器驱动器。 Forth 交互式的特点使得新硬件的测试和开发流畅自如。增量式开发、快速的程序调试周期、对任何级别程序的完全交互式访问,很高“抽象级”的工作能力,所有这些都使 Forth 拥有一个高程序生产率的好名声。再加上语言的灵活性和可扩展性,是嵌入式系统选择 Forth 的主要理由。


Forth 过时了吗?
---------------------------------------------
这个问题最好的答案之一来自 Brad Rodriguez(mailto:bj@forth.org) ,可以在 http://www.complang.tuwien.ac.at/forth/faq/why-forth 找到一个完整的版本。一句话, Forth 的优点是它的可理解性、短小、交互式、快速、可扩展性和很容易使它在一个高级别抽象上工作。

顺便说一句,提出这个问题的人可能是把十几年以前的 Forth 系统与最新版本的 Borland C++ 进行了比较。不过,他使用的系统实在是太过时了,虽然也具有现代 Forth 系统的许多方面。

Forth 比 C 语言还要小、还要快吗?
-----------------------------------------
不一定,如果你把一个 C 语言程序一对一地转换成 Forth ,你会发现程序变得很慢(比如使用串线编码的 Gforth 系统,大约慢 4-8 倍,如果使用典型的本地码编译器,则大约慢 1-3 倍)。同样,你看不到 Forth 中固有的代码大小方面的优点。详情可参见

<http://www.complang.tuwien.ac.at/forth/performance.html>.

然而,许多开发案例都说明 Forth 在尺寸和/或速度方面胜过了其它语言。我猜想这是 Forth 所附加的灵活性帮助程序员产生了更快和/或者更小的程序。

阅读(2702) | 评论(0)


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

评论

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