`
tetsu.soh
  • 浏览: 78163 次
  • 性别: 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强很多。

相关推荐

    Ruby元编程 源代码 Metaprogramming Ruby source code

    Ruby元编程是编程领域中的一个高级技术,它允许程序员在运行时操纵语言的结构和行为。这本《Metaprogramming Ruby》书籍深入探讨了如何利用Ruby的特性进行元编程,帮助开发者提升代码的灵活性、可扩展性和复用性。源...

    ruby 1.9.3 source code

    ruby 1.9.3 source code

    Ruby Source Code

    本资源“Ruby Source Code”提供了一系列的Ruby源代码示例,旨在帮助学习者深入理解Ruby编程语言的核心概念和实践技巧。 1. **面向对象编程**:Ruby是完全的面向对象语言,所有数据都是对象,包括基本类型。了解...

    Programming Ruby (English Version) and Source Code

    《Programming Ruby》是著名的Ruby语言教程,英文版的书籍旨在为全球开发者提供深入理解Ruby编程语言的途径。这本书详尽地介绍了Ruby的语法、特性、类库以及编程实践,是学习和进阶Ruby编程的宝贵资源。源代码的提供...

    source code

    源代码(Source Code)是计算机程序设计中的一个重要概念,它是指程序员用高级编程语言书写的、人类可读的文本形式的指令集合。这些指令描述了软件如何运行,以及如何处理各种输入、输出和数据交互。在计算机系统中...

    ruby part code of proj

    this is a ruby project code

    ruby part code of 2

    ruby part code of proj this is a sample of survey

    ruby part code of proj3

    ruby part code of proj this is a sample of survey

    ruby part code of proj 6

    ruby part code of proj this is a sample of survey

    ruby part code of proj5

    ruby part code of proj this is a sample of survey

    ruby part code of proj2

    ruby part code of proj this is a sample of survey

    ruby part code of proj4

    ruby part code of proj this is a sample of survey

    ruby part code of proj7

    ruby part code of proj this is a sample of survey

    sourcecode:Scala库为您的程序提供“源”元数据,类似于Python的__name __,C ++的__LINE__或Ruby的__FILE__-python source file

    sourcecode是一个小的Scala库,用于在运行时为您的程序提供通用的“源代码”上下文,类似于Python的__name__ ,C ++的__LINE__或Ruby的__FILE__ 。 例如,您可以通过()语法或通过隐式查询当前文件的文件名和行号: ...

    Ruby 教程 The Book of Ruby

    ### Ruby 教程《The Book of Ruby》知识点总结 #### 一、书籍基本信息 - **书名**:《The Book of Ruby》 - **作者**:Huw Collingbourne - **出版年份**:2011年 - **出版社**:No Starch Press - **ISBN-10**:1-...

    Ruby Ruby Ruby Ruby Ruby Ruby

    Ruby Ruby Ruby Ruby Ruby Ruby

    ruby1.8.6stdlib.rar完整版

    stdlib-doc is a RubyForge project that converts Ruby source code into this documentation you are looking at. It also tracks the status of the documentation effort; you can see some of that effort in ...

    RubyDoc Source Code Documenter-开源

    RubyDoc 是一个开源的源代码文档生成工具,它主要用于解析 Ruby 语言的代码,并自动生成易于阅读和理解的文档。这个项目虽然已经终止,但它的影响力依然存在,尤其是在早期的 Ruby 社区中,RubyDoc 曾是重要的文档...

Global site tag (gtag.js) - Google Analytics