怎样学Ruby和Rails

December 29, 2010

为什么对Ruby感兴趣

最近我对Ruby产生了浓厚兴趣。之前学过一段时间的Python,感觉Python虽然用途比Ruby更广泛,却不适合我。

Python的哲学是:

There should be one and preferably only one - obvious way to do it!

Python的创造者认为一定有一种最佳的方法去完成某件事。这种哲学有点过于死板,也不符合现实。

Perl的格言是:

There's more than one way to do it!

Larry Wall认为可以用许多不同的方法,去完成同一件事情。显然,我是更认同Perl的哲学的。

Ruby的格言是,程序员之友(A Programmer’s Best Friend)。Ruby是以人为中心,为程序员的方便而创造的编程语言。

Ruby继承了很多Perl的精华和哲学。所以,相对Python,我更喜欢Ruby。

别人是怎么学Ruby的

不同的人有不同的背景,有不同的学习方式。

这里有一大堆Rails社区中的领军人物说他们是怎么学会Ruby和Rails的:

从他们的经验里,我学到的是,最佳的学习方式是自己写实用的代码,其次是读别人写的好代码,再其次是读经典的好书。

别人的建议

最后一条建议是,不要去寻求别人的建议了,现在就开始写点代码吧。所以说,编程这件事,终极建议仍然是,写代码。代码写的越多,编程水平越高。

读完这一堆的建议,我得到的感悟是:

到哪里去找别人的代码读,Github是最佳场所。注意别人是怎么解决你所解决不了的问题的。当然,先要自己写点代码才会有解决不了的问题。 ## How Person 和 Why Person

How Person应该看railscasts,读Ruby on Rails Guides。还有这里http://www.pragprog.com/screencasts

Why Person应该读Ruby Programming LanguageThe Well-Grounded Rubyist, aka Ruby for Rails 2nd edition

我自觉是Why Person。但是看视频和例子,对我也很有帮助。

两本Way书:

学习者的境界

### 第一层,写了一些Rails程序

已经可以熟练编写Rails程序了。还要继续学习,离大师的境界还很远。

问自己一些问题:

这时候你还有很多弱点。但你已经可以去贡献一点代码给其他开源项目了。

第二层,写了不少Rails程序,写了一些Rails插件,写了一些Gem包

这时候,你已经对RoR非常熟悉了。可以去读点Ruby的源代码了。

这个时候,该学点其他的编程语言了,如Python,Java,Scala,Clojure,Objective-C,Ocaml,Scheme之类。总之,只要你感兴趣的编程语言,这时都可以学一点。并不一定要成为这些语言的专家,但要试着去理解它们的利与弊。这会拓宽你的视眼,也能加强你的Ruby技术。

也就是说,编程语言的学习,当精通一门之后,就开始多多益善。

第三层,比任何人精通RoR,甚至可以背诵Ruby源码了

这时你应该去试着改善Ruby 1.9,以及其他的Ruby实现,如JRuby,IronRuby,MacRUby和Rubinius。你还应该贡献点代码给Rails 3了。

你已经是大师了。

Reference