《编程语言的设计与实现》读后感

《编程语言的设计与实现》读后感
前几天在网上找ruby的书,没有新书,再找lisp也没新书,再找matz的书,居然发现他写了新书,立即下手。到手后,立马阅读,感觉作者居然介绍新的语言,steem,而没有讲ruby,真是有些失望。但前几章,基本上讲了ruby,让我失望中多少有了些高兴。
因为我有段时间真想读一种编程语言的源码,当时呢,找sed的源码,一个getopt就把我弄晕了。再找gawk的源码,一个regex.c把我弄晕了,后来,再找ruby0.49的源码,发现量太大,看不了。于是又回到gawk的源码。
因为用到yacc,于是补习这段。但gawk中,那个超复杂的struct NODE让我晕,又不知如何用。
后来,就把regex.c略掉,反正只要知道如何用即可。重点放在awk1.c上,后来,终于大致了解了流程。但只是知道程序打开文件,按分隔符分开,再进行处理。在处理时的逻辑就完全不明白了。
后来又看了一段ruby0.49的源码,可恶的是,我老是编译不了ruby0.49的代码,没办法,如果gawk的代码还能编译成功,那ruby0.49连编译都编译不了,代码也无法看。于是就浏览了一下。大致有些印象,感觉ruby0.49和gawk很象,应该是matz学gawk写的。
读了松本的新书,我终于明白了,原来我不理解的是,作者自己写词法分析程序,再根据语法,用bison进行语法分析后,生成语法树。最后解析语法树,计算出结果。
而我对bison不太熟悉,那个语法树又不熟悉,对编译原理理论也有所欠缺,所以看不懂也正常,终于原谅了自己。
再读松本的新书,明白了他设计if语句的原由。
因为C语言中,
if 条件
    语句;
如果后来,要增加语句,就要变成、
if 条件 {
    语句;
    增加的语句;
}
这样不方便,因此,松本设计ruby时,就用了end
如在ruby中
if 条件
    语句
end
增加语句时,直接加就是了,
if 条件
    语句
    新增语句
end
作者面向对象设计的理由也写得很好。因为他是因为用bash编程,感觉程序大了,不好读,想给bash增加面向对象功能。
读了作者的书,感觉终于有些理解了,ruby只支持单继承,不允许多继承。如果有多个父类,以一个作为父类,其它的全作成模块,再include进去。
终于有些理解了。
作者还介绍了代码块的设计理由。其实这些在他以前写的几本书中都有所介绍。
我想,如果松本写一本书,专门讲ruby是如何设计的就好了,我现在真是有些喜欢ruby了。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值