"Ruby".say_hello

(本文系筆者爲《Programming Ruby》第二版所作的推薦序。)

"Ruby".say_hello

根據我的觀察,習慣於Java或者C#的程序員在初初接觸Ruby時,最能打動他們的往往就是像本文標題這樣的一句代碼:原本熟悉的字符串或者整數突然搖身一變,有了很多新的行爲,甚至讓整個Ruby語言都似乎變了個樣。儘管“改變標準庫的行爲”並不總是值得推薦的做法,但如果使用得當,你能夠在Ruby的基礎上創造出一種貼近項目需求、易寫易讀的方言——也有人把這些方言叫做“領域專用語言”(DSLDomain Specific Language)。更多的程序員是因爲Rails這個框架纔開始對Ruby語言產生興趣,而Rails在很大程度上正是一種針對Web應用開發的DSL

能夠創造DSL,這是Ruby語言最大的魅力之一。但僅僅這一點並不足以解釋爲何有那麼多優秀的程序員如此盛讚Ruby語言,更不足以解釋爲何它會突然間紅透半邊天——畢竟,在元編程方面更具實力的LISPSmalltalk並沒有像如今的Ruby這樣流行。作爲一個Java程序員的Mike Clark給了我們一個有趣的比喻:推繩子——他說“讀了僅僅幾頁 Programming Ruby之後,再使用Ruby之外的語言編程感覺就像是在‘推繩子’(push rope)。”把一根軟綿綿的繩子往前推,那種有勁使不上的感覺,正是用慣Ruby之後再回到Java/C#時的真實感受。

靈活、優雅、巧妙、便利……這些溢美之辭我們已經聽得太多了。但在我看來,Ruby最大的特點就一個字:快。這不僅意味着你能夠很快地爲自己的問題找到現成的解決辦法,更意味着你能夠直觀地描述自己心中的想法,並且在改變想法時能夠很快地調整你的程序。這種能力對於今天的軟件開發者而言顯得尤爲重要,因爲世界在飛快地改變,軟件項目的需求在飛快地改變。對於今天的軟件客戶來說,儘快得到可以工作的軟件、儘快反饋、儘快看到調整的效果,比一個完美但尚未實現的設計要有價值得多。而Ruby這種“快速實現想法”的能力,正是衆多開發者對之青睞有加的根源所在。

Ruby能夠幫你描述心中所想——這句話,在某種意義上,也意味着你需要熟悉Ruby的思考方式。儘管自稱是面向對象的腳本語言,Ruby的精神仍然與函數式編程(functional programming)一脈相承。這種精神不僅體現在語法層面上,還體現在構建系統的思路上。Ruby社羣很少會一開始就把要實現的目標想得清清楚楚、或是首先制定種種規範標準,相反,他們會充分利用Ruby的靈活與簡潔、優雅與巧妙,從一個簡單的、能夠工作的軟件開始,逐步增加更多的功能,並通過不斷重構和優化讓良好的設計逐漸浮現。

是以,跨進Ruby的世界,也許你首先需要學會的是這種“漸進式”的思維方式——不僅僅是編寫軟件,就連“學習Ruby語言”本身也是一樣。你不需要讀18本書或者參加半年培訓來學會Ruby編程——另一方面即便你這麼做了也未必就能學會,如果你沒有使用Ruby來編寫真正有用的程序的話。所以,如果你對Ruby產生了興趣,稍微瞭解一下,然後就開始寫吧:把編寫shell腳本的首選語言從Perl改爲Ruby,用Rake來構建你的項目,或者——像大多數人那樣——用Rails來開發一個小網站。你會遇到無數的問題,解決這些問題的過程就是對你的技術進行重構的過程。

但你至少還需要通過某種途徑來“稍微瞭解”Ruby語言,而且在遇到問題時也需要一本手冊來幫你排疑解難。在你手上的這本《Programming Ruby》正是爲此而生的一本書。書中的精彩內容無須我在這裏贅述,你大可以自己去發掘。我唯一想要告訴你的是:如果你想要開採最瑰麗的“紅寶石”寶藏,這本書就是你不可或缺的“鎬頭”。鍛造這柄鎬頭的是兩位大名鼎鼎的“實用主義程序員”Dave ThomasAndy Hunt,這兩位撰寫過一系列C++/Java/.NET技術圖書的開發者最終選擇用Ruby on Rails來開發他們自己的網站(PragmaticProgrammer.com),這本身就已經證明了Ruby的價值,同時也讓我們對這本書的實用性更有信心。

所以,你還在猶豫什麼呢?既然已經拿起了這本書,既然已經對Ruby產生了興趣,就不要再浪費時間了。翻開書,跟着這兩位講求實效的作者一道,現在就開始你的Ruby編程之旅吧。Ruby已經向你說過“hello”了,你將會如何迴應它呢?

最後,和以往一樣,祝你在Ruby的世界裏,編程快樂!

熊節

ThoughtWorks諮詢師

20061216

西安

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章