欢迎来到天天文库
浏览记录
ID:14170259
大小:58.00 KB
页数:25页
时间:2018-07-26
《forth系统入门指导手册0-11(告一段落)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、forth系统入门指导手册0-11(告一段落)forth系统入门指导手册0-11(告一段落).txt24生活如海,宽容作舟,泛舟于海,方知海之宽阔;生活如山,宽容为径,循径登山,方知山之高大;生活如歌,宽容是曲,和曲而歌,方知歌之动听。第0章前言这是一本游戏手册,是的,你没听错,因为forth不能给你带来显而易见的实际利益,几乎没什么公司会招聘一个forth程序员,因为forth太冷门了,所以你只能把它当成一个游戏来玩。在推销一件东西的时候,吹嘘它的优点是必须的,虽然对forth吹得天花乱坠的溢美
2、词很多,但是冷门还是冷门,所以我也懒得吹了。简单说说它的优缺点吧优点:可以迅速适应不同的CPU(可移植性好),结构小巧紧凑,模块化优秀,可以自制语法,足够自由。缺点:与主流语言差异很大,太过自由,过于个性化,只有一个基本的统一标准,对程序员自身思维水平的要求比较高,没有足够的函数库,需要重新发明轮子,使用者稀少,趋近消亡。本文的目标是让那些有一定编程经验、对forth感兴趣、但是对forth和汇编毫无概念的业余爱好者也能看得懂。这里是forth所有版本的编译器http://www.forth.or
3、g/compilers.html,本文主要是以eforth为例,理由是够简陋。我会把我反复咀嚼过的东西再吐出来喂给你们吃的,哇哈哈哈哈哈!第1章简单的语法还记得以前我们是怎样学英文的吗?现在来回顾一下吧heisaboldmanhe:他is:是a:一个bold:man:人我不认得bold这个单词,怎么办?聪明好学的同学提供了一个方法,查字典。OK,那就查吧。bold:大胆的好了,现在我知道怎么翻译了,他就是一个胆儿肥的人。以后再遇到不懂的单词,我就知道该去查字典了。英文是这样,中文也是这样,碰到不懂
4、的字,我们就会去查字典,弄清这个句子里所有的字是什么意思的时候,我们也就完全明白这个句子是什么意思了。让我们继续翻译heisasdfmansdf:胆大的;是bold的同义词“sdf???你瞎编的吧?”没错,就是瞎编的,而且我还成功忽悠了刚刚学英语的小朋友,这让我很有成就感!但是大朋友们就不那么好忽悠了,他们会用怀疑的目光看着我,然后转过头去翻字典,这让我很没成就感!为了将忽悠进行到底,我决定贿赂该字典的出版社,让他们把我瞎编的词收录到他们的字典里,然后自掏腰包出版新字典。这样一来,当大朋友们在字典
5、上查不到sdf时,我会告诉他们说,他们用的是过了期的字典,然后递给他们一本我自费出版的新字典,再然后。。。他们全信了!这让我的虚荣心得到了极大的满足,哈哈哈哈哈!现在,我可以在跟别人沟通交流时毫无障碍的使用sdf这个流行词了。以上所说的就是forth里最基本的内容:字,字典,造字。forth里有几十个最基本的字,它们被人称作code字、核心字、原语、一级字等等等等。下一个阶层的字则是由这些最基本的字或本阶层的字组合而成,被称作colon字、扩展字、冒号字、二级字等等等等。拿上面的英文句子举个例子:
6、输入::he."他";:is."是";:a."一个";:bold."胆大的";:sdfbold;:man."人";heisasdfman屏幕显示:他是一个胆大的人需要说明的一点就是:bold必须在:sdf之前,否则forth会告诉你没有sdf这个字。forth的语法就是按顺序执行每一个字,碰到字典里没有的字的时候,就给出提示,并终止运行,这语法够简单吧?:(冒号)是一个用来定义一个新字的字,;(分号)是一个表示语句结束的字,."是一个用于输出字符串的字,与输出内容用空格隔开。在forth里面,“有
7、且只有”字,这保证了forth整体上的统一性。如果还要再算上一个,那就是空格,它是使用频率最高的符号,用于区分字与字。有人要问了,为什么要把冒号放在顶头,这不是完全违反了人类的语法习惯?我的回答是,forth这种反人类反社会的语法不是专门给人看的,是给机器看的,但是人也能看懂。就像听老外说中国话,虽然他时不时的反一下人类,但你也能听懂他说的是什么意思。另一个反人类的语法1+2=?如果你这样询问forth,它会告诉你没有“1+2=?”这个字。那么应该怎么问呢?是这样的,问它“12+.”(“.”是输出
8、十进制数值),然后它会告诉你“3”,再然后你又该骂它反人类反社会了,╮(╯_╰)╭我想我不需要再重复的解释理由了吧?第2章forth机的基本结构大家都知道堆栈吧?先进先出的堆和先进后出的栈。什么?你不知道?嗯,内事问百度。什么,你连百度都不想问?你太懒了,我很不喜欢除了自己以外的懒人。主流编程语言习惯由编译器自动分配释放栈区(stack),存放函数的参数值,局部变量的值等。而堆区(heap)一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。而forth机的本质就是先进
此文档下载收益归作者所有