发信人: william@cis_nctu (C++/ASM/Win Master), 信区: programming
发信站: 交大资科_BBS (Apr 1 12:10:28 1994)
==>[Author]: ajax@phoenix (ajax) on board 'programming'
> Forth 为何不能像 C一样的流行? 这是许多学 Forth者的疑问.
> Forth 看似不流行, 也不尽然如此, 只是给 C比下去了, 因为在
> 世界各地都有 Forth协会的组织, 包括大陆每年都要举行研讨会.
这一点我相信。
> 可能有人觉得 Forth的 postfix语法令人难接受, 但是也因为采
> 用此语法, 所它的 compiler简单到几个 Words就可定义, 而玩 Forth
> 最喜欢的就是它的一切都在控制之下, 包括硬件, OS..., Forth 的
> 系统也都是将 Source code附上, 不喜欢那里, 就修那里, 连自己吃
> 饭的东西都要给客户, 难怪 Forth Inc. 的一套系统如此贵.
Forth 的好处之一, 似乎就在于整体语法简单, 都围绕在 stack 及 word,
所以做起来、玩起来很容易。
> 有人号称 Forth是 Programer Amplifier, 即可增加程序的产量,
> 但其含义也包括烂者益烂, 变成 write-only语言.
其它有子程序观念的高级语言应该也能达到「提高产量」的要求。
> 他的 interactive发展环境实在很棒, BASIC 虽然也是, 但只能站在一边凉
> 爽, Forth 从来就不屑与 BASIC较量,
这是无庸置疑的, 它的 interactive 环境还能自己添加东东进去。而且, 会 Forth的人似乎都很狂热... 因为 Forth 让他们能随意碰到 low-level的东东。
有个疑问: 常看到 Forth程序中夹杂 assembly, 请问这种「夹杂」是否也是 Forth公认的语法之一?
还有, 底下是我以前的旧信, 还希望有人能纠正一下里面的一些偏见...很想知道习惯 Forth的人对这些意见有何看法。
发信人: william@cis_nctu (C++/ASM/Win Master), 信区: programming
标 题: Re: Forth 有人熟吗?
发信站: 交大资科系_BBS (Sep 18 01:01:32 1993)
转信站: cis_nctu
==>[Author]: "Alpha" on board 'programming'
> 我已经接触她两年了, 害得我越来越讨厌死(C)了!
我曾碰过, 但放弃了。
太依赖 stack operation, 缺乏自然;
太依赖 RPN, 违反自小受教育以来的习惯;
Conditional syntax 违反吾人习用的口语。
缺乏标准。
未和最新的 PLs 趋势连接。
语言和系统几乎为一体 (定义语言即定义系统) , 是一 overhead。
---------------------------------------------------------------------------------- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
≡ 何陋居 ≡ 圣人, 吾不得而见之矣... 论语‧述而
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
==============================================================================
发信人: TwoO@nctu_csie_bbs (O-O), 信区: programming
发信站: 交大资工天龙新闻社 (Fri Apr 1 14:32:35 1994)
我对 Forth 不算很熟,但是我很喜欢他 .........
C++/ASM/Win Master (william@cis_nctu) wrote:
> 太依赖 stack operation, 缺乏自然;
其实 Forth 的 word 相当于 C 里的 function,可见 Forth 的高度模块化。各模块间要有一致的传递界面,最理想的是什么? 答案是 Stack。 在一般的模块化语言中,大多也都是用 stack 来传递参数,传回值有些虽不用 stack,但却因而有传回值个数的问题。
在做运算时直接以 item in stack 做为 operand 有什么好处呢? 在硬件上可以少掉 operand 的 encode/decode,在软件上由于不用在 compile(/link)时去计算 operand 的地址,速度变得很快,也因而使design->coding->test
这个发展循环变得非常快,并使得 interactive develop 容易达成。
PS. 在 C 中要测试刚写好的 function 正不正确有多麻烦,大家应该都印象深刻。 如果等到程序全写完时才测试,结果就不用我说了。
> 太依赖 RPN, 违反自小受教育以来的习惯;
> Conditional syntax 违反吾人习用的口语。
习惯靠左开车的人对靠右开感到不适应。 这还只是习惯的问题,两着间并无好坏之分。 但若因为习惯而错过了更好的东西,那就不值得了。
> 缺乏标准。
缺乏标准是由于 Forth 太有延伸性,你甚至可以将其改写成前置式或中置式。这种强烈的自由度当然造成没有标准,使得各 Forth 系统的共通性大减。 有鉴于此,Forth 还是有一些刻意定出来的标准(如 F83)。 但是〞标准就像两面的刃〞,其中的拿捏非常难,不也有人将〞标准〞称为〞必要的罪恶〞吗?
> 未和最新的 PLs 趋势连接。
最新的趋势? 看起来怎么好像是〞最新流行春装〞? 依我自己的看法,现在最新的语言不如 Forth 的地方还多着呢。
> 语言和系统几乎为一体 (定义语言即定义系统) , 是一 overhead。
Forth 系统本身就是用 Forth 定义出来的,而你的应用程序也是用 Forth 定义出来的,通通都是 Forth。 就因为如此,Forth 才能和软硬件系统配合得那么好,那么有延伸性。 由于 Forth 的 code generation 很快(前面说过了),这个 overhead 变得很小。 如果你善用〞词典〞,那就几乎看不到 overhead。 用 Borland C++ 时有不喜欢的地方,你有试过改它的 IDE 吗? 在 LIB中加个 function 方不方便呢?
另外,要把在 68K 上的 Forth 移到 x86 上怎么做? 把 Meta-File 里的东西(都是些 Forth 里最基本的东西)用机器码重新定义一次,然后再 Meta-Compile一下,就好了(对,就好了)。
有这么大的自由,却只多了那么一点小到〞可能〞看不到的 overhead,不值得吗?
正文
Forth 这个东西(4)2005-08-05 15:23:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/forth/3471.html
阅读(2603) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论