http://www.aurora-x.net/blog/oasis/?p=92
by opengl@rygh
現(xiàn)在市面上系統(tǒng)的,由淺及深的講Ruby的書鳳毛麟角,這本是分量最重的一本。原書第二版出版到現(xiàn)在也過去兩年了,國內(nèi)剛剛在這個月由博文引進電工發(fā)行了譯本。
800+頁的大部頭,一半是核心庫和標(biāo)準(zhǔn)庫的參考,另外一半分為三個部分——基礎(chǔ)、環(huán)境、高級。這其中我覺得比較有價值的部分在于“高級這一塊”有助于讓你從一個更高的層次來理解和掌握這門語言,這一部分也是需要經(jīng)常參考的部分。
就國內(nèi)目前引進的唯一一本算是講Ruby的書,要從這本書開始學(xué)習(xí)Ruby估計會嚇跑不少潛在用戶。作者是大牛沒錯,不過教學(xué)則是另一回事了(大家都應(yīng)有體會,本科上課的時候課講的最好的老師通常都不是學(xué)術(shù)最牛的老師)。缺點有兩處很明顯:
第一是自頂向下,它的順序是這樣的:
對象和類–>容器、集合–>標(biāo)準(zhǔn)類型–>表達(dá)式–>異常和模塊–>基本輸入輸出
一個從上降到低又陡然上升的過程。作者自己也說在第一版里這樣的效果并不好,因此在第二版里特意增加了一個介紹性章節(jié),粗略的先把所有東西列給讀者看一遍。雖然起到些作用,但是實際效果我想對于初學(xué)者來說仍然不會太好。C++/Java的書我都讀過不少,也沒見哪個是一上來就把Class/Object這些東西甩給讀者的,總是從基本類型、控制語句過渡。除非你已經(jīng)對OO這套相當(dāng)熟悉了,否則上來這個門檻就能把一堆新手擋在門外。
接下來的,談不上十分晦澀,但也不是什么讀來輕快的內(nèi)容,關(guān)鍵是作者給的例子較少,使得象塊、迭代這些特色難以掌握。再有一點,ruby的語法風(fēng)格有相當(dāng)部分還保留有Perl的痕跡,而Perl是出了名的以奇怪符號著稱于世,這些符號在新手眼里不外天書,而高手們則愛不釋手。
所以,要能比較順利的通過這本書的入門之路,你得事先具有OO的基礎(chǔ),至少一門腳本語言的經(jīng)驗(Perl最佳),函數(shù)式編程的一些概念(否則當(dāng)你看到塊的一些用法時會很迷惑)。然后,可以用Ruby笨拙的寫一些小程序了。
Ruby作為動態(tài)語言之一,它的最大特點自然是“動態(tài)”兩個字,其著名的“duck typing”就是一大體現(xiàn)(在我看來,就像是基于接口的調(diào)用,但卻并不用一個給定的接口去事先限制)。這些在高級部分里都有專門講述,是應(yīng)該重點學(xué)習(xí)的部分。
那么入門究竟用什么書更好?我推薦《Everyday Scripting with Ruby》這本。和《Programming Ruby》同一個出版社,今年一月份剛出了原版。它是以相當(dāng)循序漸進的方式帶領(lǐng)讀者進入Ruby的世界,尤其是作者精心設(shè)計的幾個Project是全書亮點(學(xué)習(xí)一門語言最好的方式還是要動手寫程序)。
最后總結(jié)如下,首先看《Everyday》這本書,跟著書中的指導(dǎo)擺弄過所有的Project,并完成相應(yīng)的練習(xí)。然后再看《Programmin》一書的Crystallized部分。再之后就主要是當(dāng)作API參考手冊了。花錢去買中文版我個人覺得不是很有必要,總共四部分中,前兩部分我覺得蠻雞肋的,第四部分在電腦上查更方便,只有第三部分有較高的價值。