`
tetsu.soh
  • 浏览: 79001 次
  • 性别: Icon_minigender_1
  • 来自: 东京
社区版块
存档分类
最新评论

Ruby的source code很难读

阅读更多
最近在读CRuby1.9的source code,感觉code写的很烂。
到不是我的C有多好,只是同时也在读Python的code。
对比之下有差距。

最明显的两点:
1。 Ruby的src基本没注释。
随便打开一个Ruby的src file,比如gc.c 或者 thread.c, 从头浏览到尾,没几行注释。
类似的,找个Python的src file看看,该有注释的地方都有。

2。 Ruby的命名混乱。
变量名,方法名很多时候让人莫名其妙。更糟糕的是误导。比如gc.c里面定义了heaps_used,从名字上看会给你一个印象--已经被使用了的heaps的大小。(这里的used本身就是很泛泛的词)其实看了具体的实现就会发现,这里的used是allocated的意思,就是通过malloc取得了实际的内存。

Ruby对内存管理部分的命名也很郁闷。最小的单位是slot, slot的数组称为heap, heap的数组称为heaps。
看看Python是怎么命名的吧--最小的单位是block,block的集合称为pool, pool的集合称为arena。这样避免了*heap*这个被滥用的词。而且单从字面意思上也能看出层次。

鄙人英文一般,不看src是死活品味不出slot和heap怎么会有集合的关系。
分享到:
评论
19 楼 mathgl 2009-07-23  
没觉得Python 完美。相反。很多特性只是类似而非。。不过 够简单。库够多。足够了。
18 楼 下一站,火星 2009-07-23  
towjzhou 写道
从python的语法上看就知道python是完美主义设计的,源码当然也很完美了。


你给解释解释函数也是对象这个是什么意思呗

个人认为,就完美性而言,如果说ruby能甩开python一条街的距离,那么as要甩开python好几条街的距离,所以完美性不足以作为python的卖点,倒是稳定性、可用的库比较强大
17 楼 towjzhou 2009-07-23  
从python的语法上看就知道python是完美主义设计的,源码当然也很完美了。
16 楼 fantasybei 2009-07-22  
要是大部分人能很清楚的理解代码,还要注释干嘛..
15 楼 potian 2009-07-22  
yawl 写道
我不知道这个幻灯片。我是大约一年前和chad fowler谈论各种ruby实现时他谈起的。大体的意思是matz对chad說过自己更喜欢做语言设计,不喜欢做实现。也承认自己实现的不太好。


koalant 写道
potian 写道
yawl 写道
不是你的问题,据说matz也承认很烂:)


第一次听说,给个出处


2003 年 matz 做过一个讲演的幻灯片上有这个标题,但是跟代码烂好像是两回事,断章取义了。

http://www.rubyist.net/~matz/slides/rc2003/mgp00003.html
http://www.rubyist.net/~matz/slides/rc2003/mgp00004.html


这是全部 PPT
http://www.rubyist.net/~matz/slides/rc2003/index.html



MRI的虚拟机、垃圾收集、解析器确实并不是很先进

但这并不一定是指代码层次上的问题
14 楼 yawl 2009-07-21  
我不知道这个幻灯片。我是大约一年前和chad fowler谈论各种ruby实现时他谈起的。大体的意思是matz对chad說过自己更喜欢做语言设计,不喜欢做实现。也承认自己实现的不太好。


koalant 写道
potian 写道
yawl 写道
不是你的问题,据说matz也承认很烂:)


第一次听说,给个出处


2003 年 matz 做过一个讲演的幻灯片上有这个标题,但是跟代码烂好像是两回事,断章取义了。

http://www.rubyist.net/~matz/slides/rc2003/mgp00003.html
http://www.rubyist.net/~matz/slides/rc2003/mgp00004.html


这是全部 PPT
http://www.rubyist.net/~matz/slides/rc2003/index.html

13 楼 20029388 2009-07-21  
那么我们要先学习一下日语然后在来看代码了@

但是日本人写代码的注释还是不少的e
12 楼 potian 2009-07-21  
tetsu.soh 写道
potian 写道

代码注释本来就是没有必要的

相反,对于CAPI部分,文档说明非常完整



“代码注释没有必要" 这种话还是很牛的。个人不敢苟同

CAPI的文档那是最低要求。


恩,不妨搜索一下javaeye相关的文章,会有非常多的讨论,非常多的观点,可以了解一下别人的看法




11 楼 potian 2009-07-21  
koalant 写道
potian 写道
yawl 写道
不是你的问题,据说matz也承认很烂:)


第一次听说,给个出处


2003 年 matz 做过一个讲演的幻灯片上有这个标题,但是跟代码烂好像是两回事,断章取义了。

http://www.rubyist.net/~matz/slides/rc2003/mgp00003.html
http://www.rubyist.net/~matz/slides/rc2003/mgp00004.html


这是全部 PPT
http://www.rubyist.net/~matz/slides/rc2003/index.html


Ruby 1.6.X开始的语法设计有些随意,慢慢到1.8.x关注度就比较高了,ruby-talk经常会进行讨论某些小的语法变化和设计趋势

Ruby在虚拟机实现,特别解析器实现上很多是hack出来的,这个femto作了2个Ruby解析器以后是有深刻体会的

我分析过从1.8.7和1.9.1源代码的几乎所有文件,单从代码的角度来说,并没有多少可以挑剔的地方
10 楼 vdgame 2009-07-21  
我最讨厌代码没注释了,简直就是在浪费看代码人的时间。
9 楼 碧海山城 2009-07-21  
...代码注释本来就不必要的,汗
8 楼 tetsu.soh 2009-07-21  
potian 写道

代码注释本来就是没有必要的

相反,对于CAPI部分,文档说明非常完整



“代码注释没有必要" 这种话还是很牛的。个人不敢苟同

CAPI的文档那是最低要求。
7 楼 koalant 2009-07-21  
potian 写道
yawl 写道
不是你的问题,据说matz也承认很烂:)


第一次听说,给个出处


2003 年 matz 做过一个讲演的幻灯片上有这个标题,但是跟代码烂好像是两回事,断章取义了。

http://www.rubyist.net/~matz/slides/rc2003/mgp00003.html
http://www.rubyist.net/~matz/slides/rc2003/mgp00004.html


这是全部 PPT
http://www.rubyist.net/~matz/slides/rc2003/index.html
6 楼 potian 2009-07-20  
yawl 写道
不是你的问题,据说matz也承认很烂:)


第一次听说,给个出处
5 楼 potian 2009-07-20  
我不觉得,整个宏、数据结构、函数、变量的命名还是一致可读的

代码注释本来就是没有必要的

相反,对于CAPI部分,文档说明非常完整

4 楼 icefishc 2009-07-20  
rainchen 写道
日本人公认英文烂的,不过方法、变量起名这些“小问题”对我们这些非原生英文母语的人来说是个头痛的问题。

一般说日本人英语不好 指的是他们的口语不好. 实际上他们的词汇量是相当大, 因为很多日语词就是英语的简单音译...
3 楼 t0uch 2009-07-20  
我也是这么觉得的,看得云里雾里的。
2 楼 rainchen 2009-07-20  
日本人公认英文烂的,不过方法、变量起名这些“小问题”对我们这些非原生英文母语的人来说是个头痛的问题。
1 楼 yawl 2009-07-19  
不是你的问题,据说matz也承认很烂:)

语言设计上,我喜欢ruby。代码实现上,python比ruby强很多。

相关推荐

Global site tag (gtag.js) - Google Analytics