很多人是: 先学 Rails 做项目, 然后再来学 Ruby...

@RednaxelaFX 的学习流程就不一样, 他是先看 Ruby 的 parse.y 来速成语法, 然后再用来爬小黄图或者汉化日文游戏, 同时看看各种 VM 的实现例如 JRuby 啦, Rubinius 啦, MRuby 啦, IronRuby 啦...

正统点的学习法是找一本书看, 例如 Programming Ruby 1.9 & 2.0 , 但是可能会慢一点但适合没什么编程基础的. 实践派可能会喜欢看 Learn Ruby with the Neo Ruby Koans

对有前途的小姑娘小伙我会推荐看上古邪书 Why's (Poignant) Guide to Ruby

有点编程经验的, 直接看一张网页 Ruby.on-page.net 或者比着 code roseta 做就可以了

Ruby Quiz 每周一题全看一遍你会受益良多, 在学习了基础语法后可以开始看

旁门左道的例如我, 在各问答网站和社区上找 Code Golf 问题用 Ruby 回答, 或者关注知乎的 Ruby
话题

1. 学语法
2. 看cruby的代码
3. 写一个ruby扩展
4. 开始玩黑科技

取决于:
1. 你为何学ruby.
2. 你学ruby之前, 是不是已经是一个有经验的开发者.
我随手翻了一下ruby的语法, 就是七周七语言里面ruby那部分, 然后就开始看 了. 然后由于我根本不需要web相关的东西, 所以我看了.
虽然我看了这本书, 但是我最近几天想开发个高效的cli下看log的工具时, 因为效率问题, 我放弃了ruby和clojure... 尽管这两个才是我最爱的语言...
接下来我有时间的话就会去看 , 其实已经看了一部分了, 不过后来弃坑而逃... (sigh, 坑太多... 何时能填完...

刚巧花半天工夫学了一下,感觉最好是带着问题去学,比较不容易失去方向。

大部分编程语言,都有通用的部分和特色的部分:
类型、变量申明和作用域、表达式和操作符、流程控制语句这些是通用的。
类申明语法、类(静态)成员定义、实例成员的定义、 accessor、成员可见性控制、继承、重载与覆盖、对象模型这些是OO语言都有的,exception语法大部分语言也有。
新一点的语言里,多少都会有一点函数式编程的内容,比如函数做为数据引用、代码块做为语法元素传递。

所以有基础的话,学习新语言从这些基本的部分入手,然后再理一理特色的部分,就能上手了。第一门语言的话,随便找本书从 hello world 开始边学边练吧,对于初学者英文可以的话,一律推荐 codeschool 的 learn by do 在线教程。

Ruby 的特色很多,最容易感觉到的是对命名约定的广泛使用,这让初学的记忆负担有点重,不过代码的可读性很好。

语法特色太多了,这个只能记了,block 语法元素在实际代码里简直泛滥了,Proc对象用也到处都是,(block 不是对象,不能脱离函数调用语法结构,Proc 是对象),所以这个得要搞得比较熟。Exception 处理的语法是 Ruby 的一大特色,让异常处理与正常流程能比较好的分开,对可读性的更高大有好处。

OO语言每个都会玩出点花样来,比如 JavaScript 在 ES6 之前是没有类的,C++ 是多继承的,Objective-C 有 KVC 等等,在 Ruby 这里花样可太多了,除了语法,method_missing、 Module 和 Mixin 应用广泛,也得熟记。

学任何语言,上手写是根本,看再多的书,看再多的示例代码,不如上手写个1万行。

找我,包教包会,但你要给我干活,有点像长工。

© COPYRIGHT BY i How And Why.com 2015