学习Ruby需要什么资料

Python016

学习Ruby需要什么资料,第1张

Programming Ruby(2nd Edition)

这似乎已经不是怪事:关于一种编程语言的经典教材,作者不是这门语言的创造者。就像Stan Lippman之于C++、Joshua Bloch之于Java、Martin Fowler之于UML一样,Dave Thomas也许是这个世界上最善于向别人讲解Ruby语言的人——至少超过Matsumoto是毫无问题的。也许正是因为自己也经历了“不懂到懂”的学习过程,有时候“旁观者”反倒比“创造者”更清楚学习者们需要什么。

所以这本书就是Ruby的经典教材。关于Ruby的基本语法和常用工具,书中第一部分和第二部分做了详细的介绍。第三部分“Ruby Crystallized”更加阐述了Ruby语言的一些细节和设计理念,其中第23章“Duck Typing”是刚从Java或者.NET平台走出来的读者不可错过的,因为对于类型与契约的理解、对于类与类型的理解,正是Ruby这种动态语言与Java/C#等静态语言最大的区别之一。随后的第四部分提供了Ruby基础类库的速查手册。

Dave Thomas和Andy Hunt这两个“Pragmatic Programmer”并非浪得虚名:这本Programming Ruby虽然不是一本称职的参考手册,却足够帮助一个初学者步入Ruby世界而不致误入歧途,并且能够在很少见的一些情况下——譬如说忘了yield的用法——给有经验的Ruby程序员提供帮助。在我看来,这也就足够奠定它作为经典教材的地位了。由于封面上有一柄丁字镐,这本书也被昵称为“镐头书”——它正是你发掘“红宝石”(Ruby)宝藏的必备工具。

Agile Web Development with Rails

Rails的作者David Heinemeier Hansson说过一句大实话:“我从来不会为了学语言而学语言。”大多数人在大多数时候学习一种新的语言不是为了比较语言的优劣,而是因为这个语言底下的某个工具能给他的工作带来帮助。Ruby世界里的这个“杀手应用”,让Ruby在短短一年时间里成为焦点的这个工具,就是Rails。

这是第一本介绍Rails的图书,又是由Rails的作者DHH和前面提到的Dave Thomas共同撰写,其价值可谓不言而喻了。许是两位作者有太多的“乾货”想要交给读者,这本书的第一版被他们——不幸地——写到了558页之厚。书中首先展示了一个规模不大的在线购物网站,让读者亲身体验用Rails进行敏捷开发的感受;然后针对Rails框架的各个组件和安全、部署等延伸话题展开了深入的讨论。其内容之全面、探讨之深入,令人叹为观止。看起来,和Matsumoto不同,DHH很清楚应该怎么介绍自己的作品——不管是“浅出”还是“深入”。

值得中国读者高兴的是,这本书的第一版已经由林芷薰翻译,电子工业出版社付梓。Rails仍然处在高速发展的阶段,从本书第一版截稿至今,Rails已经发生了相当大的变化,因此这本中译本甫一面世便已经有很多过时之处。但这本书毕竟不是参考手册,作者更多地是在其中阐述Rails的设计理念和最佳实践。对于英文阅读无法达到最快速度的读者来说,这个译本未尝不可以是一个称职的向导。

Rails开发者助手两种

不难想象,有很多性急的程序员会——就像我一样——草草了解Ruby语法之后就一头扎进Rails的绚丽宫殿,体验快速开发web应用的成就感,却不得不时时因为缺乏对Ruby语言的深入了解而感到迷惑:这个类里什么都没有,它为什么会工作?那个地方写的代码是什么意思?可是,要全面系统地学习Ruby,又实在令人望而生畏。还好,我们有这本Ruby for Rails。书中介绍了一些Ruby语言特性——既有普通的也有高级的,都是Rails中使用到的。简而言之,这就是一本专门为Rails应用开发者提供的Ruby指南。更有趣的是,书中还用了一章(第17章)篇幅专门介绍“如何探索Rails源代码”,真可谓是“授人以渔”的典范了。

另一个“助手”则是Chad Fowler——他也是Programming Ruby的合着者——的Rails Recipes。和任何一本“菜谱”(recipe)一样,这本书不会教你如何使用菜刀与炒勺、如何把蔬菜切片——你可以从别的很多地方学到这些技巧。这本RailsRecipes教给读者的,是如何在 Rails环境下急就章地完成一个你需要的功能。譬如说“用户登录与身份验证”这件事,每个网站、每个开发者都曾经做过不止一次,这本书中就给了读者一个简单而可靠的解决方案,读者只要抄抄改改,几分钟就可以完成这个功能。对于初接触Rails(以及Web 2.0)、面对很多问题尚且无从下手的新兵来说,这本书确实可以帮助他们解决一些实际问题。

不过这本书的局限也同样明显:如果你需要的菜色超出了这份菜谱的范围,它就只好爱莫能助了;而且,仅仅给出解决问题的代码,却没有对应的单元测试,也让习惯了TDD的读者多少有些忐忑。在我看来,这本书对“授人以鱼”的专注恰好和前一本Ruby for Rails构成了一对“可怕的对称”,也让这两本书有理由共存于Rails开发者的案头。

Ruby In A Nutshell

作为Ruby语言的缔造者,Yukihiro Matsumoto只能写一本“果壳书”,这本身就是一件耐人寻味的事情。O’Reilly的“果壳书”系列历来褒贬不一:有人认为它们缺乏深度,也有人认为它们是快速入门的好帮手。但Matsumoto最大的问题在于:他创造了Ruby,却没有真正意识到这种语言到底有多大的威力——后来他经常在Ruby on Rails讨论组活动,从中了解一些精妙的Ruby用法。其结果也很自然:这本Ruby In A Nutshell作为语言参考中规中矩,但对于实际应用中的妙处——例如在DSL方面的应用——却语焉不详。再加上它所针对的Ruby版本是略显过时的1.6版,也让这本书的地位略显尴尬。

Ruby 奇书两种

称它们为“奇书”,因为它们的主题实在偏颇。先看这本Enterprise Integration with Ruby:虽说脚本语言常常被称为“胶水”,有多少人会当真想到用Ruby去做企业应用集成?不过细看之下,这本书多少有些名不副实之嫌,因为它真正介绍的无非只是如何访问数据库、如何操作XML、如何通过SOCKET通信之类比较底层的技术而已。在一个生僻的题目之下写着另一些生僻的内容,尽管这些内容算得上有趣,但我还是要对那些没有读过这本书的Ruby程序员说:你没有错过太多——尽管这本书与你想象的并不一样。

最后要介绍的这本书更是备受争议:有人盛赞它是“精通Ruby的必经之路”,也有人批评它沉溺于奇技淫巧缺乏实用价值。但无论褒贬,更多的读者正在逐一挑战其中的谜题——这本书就是James Edward Gray所着的Best of Ruby Quiz。这本书(目前出版的是第一卷)列举了25道题目,读者大多可以想出一种办法来解决这些问题,往往还能 通过思考和重构找到第二种优雅的设计,但这本书却给你列出了第三种、第四种真正精巧的解决方案——充分利用Ruby技巧才能得出的解决方案。这些题目的最终解法之巧妙,常常令人拍案叫绝(或是破口大骂)。不过这些“奇技淫巧”也并非全无用处,例如书中很多题目在解答时都用到了正则表达式,理解这些解答对于深入学习正则表达式的用法是很有帮助的

(Wanna be Ruby,Wanna be Ruby)

(Wanna be Ruby, Baby, Baby)

(Wanna be Ruby, Wanna be Ruby)

(Wanna be Ruby, Baby, Baby)

手(て)を伸(の)ばせば消(き)えてしまう

砂(すな)の上(うえ)の脆(もろ)い面影(おもかげ)

こんなにまで爱(あい)してても

思(おも)い通(どお)りにならないもどかしさ

伸出手去瞬间消失

浮在细沙上的缥缈容颜

我已然爱你至此

却无法如愿 内心一阵焦躁

それでも仆(ぼく)は

すべて舍(す)てて

一途(いちず)に愚(おろ)かな行为(こうい)をする

君(きみ)のためにできることは

こんなことくらいさ

但我仍愿意舍弃一切

一心一意地做尽傻事

为了你 我能做的仅此而已

赤(あか)いRuby

こう呼(よ)ばれた "Pigeon Blood"

命(いのち)より高価(こうか)な宝石(ほうせき)さ

赤(あか)いRuby

ナイフ当(あ)てた自分自身(じぶんじしん)

确(たし)かめたいんだ本当(ほんとう)の石(いし)の色(いろ)

血红Ruby 人们唤著 Pigeon Blood

比生命还要贵重的宝石啊

血红Ruby 尖刀朝著 我自己

我想要知道 这石头的真正颜色

AH~ 大地(だいち)の下(した)で

眠(ねむ)っている

思惑(おもわく)とは

欲望(よくぼう)たち

AH~ 过(す)ぎ去(さ)りし日(ひ)

夺(うば)い合(あ)った

レガシーとは破灭(はめつ)への道(みち)

沉睡於大地之下

未知念头尽是无底欲望

逝去的时日 互相争夺著

遗产宝藏通往破灭道路

どうやっても壊(こわ)せないよ

胸(むね)の奥(おく)の强情(ごうじょう)な石(いし)

今(いま)までとはどこか违(ちが)う

美(うつく)しすぎるすべてが嘘(うそ)っぽい

任何手段也无法摧毁

藏於内心深处的固执石头

和过去有所不同

美艳绝伦彷如谎言

それから仆(ぼく)は

鉄(てつ)のハンマーを

本気(ほんき)で振(ふ)り下(お)ろしてみたんだ

でも无力(むりょく)さに気(き)づいただけ

何(なに)も変(か)わらないよ

然後我 仍然试著认真地

重重砸下铁鎚

但却突然察觉到自己的无力

什麼也没有改变

性悪(しょうわる)Ruby

持(も)て馀(あま)した "True Blood"

未来(みらい)を语(かた)れない宝石(ほうせき)さ

性悪(しょうわる)Ruby

过去(かこ)はいつも丑(みにく)い

谁(だれ)かのものにはなれやしないんだ

恶劣Ruby 束手无策 True Blood

无法预言未来的宝石啊

恶劣Ruby 过去看来总是丑陋

我无法变成专属於谁的存在

AH~ あの先人(せんじん)たちは

知(し)っていたんだ

月(つき)の位置(いち)も

この谜(なぞ)まで

AH~ 鸠(はと)の血(ち)の色(いろ)した

生々(なまなま)しさ

本能(ほんのう)には

逆(さか)らえないこと

过去的人们 早就知道

包括月亮的位置 还有这个谜团

如鸽血般颜色 无比鲜活

本能本就是无法违抗

仆(ぼく)が嵌(はま)った光(ひかり)

君(きみ)の冷(つめ)たさは辉(かがや)き

鷲掴(わしづか)みにする魔性(ましょう)

爱(あい)に杀(ころ)されるだろうYeah

我深嵌的光

而你的冷淡散发光辉

那满盈於手的魔性

也会被爱杀死吧 Yeah

赤(あか)いRuby

こう呼(よ)ばれた "Pigeon Blood"

命(いのち)より高価(こうか)な宝石(ほうせき)さ

赤(あか)いRuby

ナイフ当(あ)てた自分自身(じぶんじしん)

确(たし)かめたいんだ本当(ほんとう)の石(いし)の色(いろ)

血红Ruby 人们唤著 Pigeon Blood

比生命还要贵重的宝石啊

血红Ruby 尖刀朝著 我自己

我想要知道 这石头的真正颜色

AH~ 大地(だいち)の下(した)で

眠(ねむ)っている

思惑(おもわく)とは

欲望(よくぼう)たち

AH~ 过(す)ぎ去(さ)りし日(ひ)

夺(うば)い合(あ)った

レガシーとは破灭(はめつ)への道(みち)

沉睡於大地之下

未知念头尽是无底欲望

逝去的时日 互相争夺著

遗产宝藏通往破灭道路

(Wanna be Ruby,Wanna be Ruby)

(Wanna be Ruby, Baby, Baby)

罗马音。

(Wanna be Ruby, Wanna be Ruby)

(Wanna be Ruby, Baby, Baby)

(Wanna be Ruby, Wanna be Ruby)

(Wanna be Ruby, Baby, Baby)

te wo nobaseba kiete shimau

suna no ue no moroi omokage

konna ni made aishitete mo

omoidoori ni naranai modokashisa

sore demo boku wa

subete sutete

ichizu ni oroka na koui wo suru

kimi no tame ni dekiru koto wa

konna koto kurai sa

akai Ruby

kou yobareta

"Pigeon Blood"

inochi yori kouka na houseki sa

akai Ruby

NAIFU ateta jibun jishin

tashikametainda hontou no ishi no iro

AH~ daichi no shita de

nemutte iru

omowaku to wa

yokuboutachi

AH~ sugisarishi hi

ubaiatta

REGASHII to wa

hametsu e no michi

dou yatte mo kowasenai yo

mune no oku no goujou na ishi

ima made to wa doko ka chigau

utsukushisugiru subete ga usoppoi

sore kara boku wa

tetsu no HANMAA wo

honki de furioroshite mitanda

demo muryokusa ni kidzuita dake

nani mo kawaranai yo

shouwaru Ruby

moteamashita

"True Blood"

mirai wo katarenai houseki sa

shouwaru Ruby

kako wa itsumo minikui

dareka no mono ni wa nareyashinainda

AH~ ano senjintachi wa

shitte itanda

tsuki no ichi mo

kono nazo made

AH~ hato no chi no iro shita

namanamashisa

honnou ni wa

sakaraenai koto

boku ga hamatta hikari

kimi no tsumetasa wa kagayaki

washitzukami ni suru mashou

ai ni korosareru darou

Yeah

akai Ruby

kou yobareta

"Pigeon Blood"

inochi yori kouka na houseki sa

akai Ruby

NAIFU ateta jibun jishin

tashikametainda hontou no ishi no iro

AH~ daichi no shita de

nemutte iru

omowaku to wa

yokuboutachi

AH~ sugisarishi hi

ubaiatta

REGASHII to wa

hametsu e no michi

(Wanna be Ruby, Wanna be Ruby)

(Wanna be Ruby, Baby, Baby)