Ruby是一種物件導向的元程式設計語言,是它讓許多開發人員感到驚訝,甚至令他們提出這樣的疑問:是否真正存在比Java和C#更好的語言?本文將對Ruby語言作初步的探討並試圖回答這一問題。
一、 引言
你是否聽說過Ruby?如今,它成了軟體開發界的一個流行話題。該語言在去年春天的一次Java會議上引起我的注意,當時象Bruce Tate,Dave Thomas等著名人物都在談論Ruby並且告訴在場的觀眾Ruby值得一看。
現在,如果你象我一樣正在從事軟體開發,那麼我們就有共識:儘管學習一種新的程式設計語言可能是一件趣事,但是只有你對它具有深入瞭解之後,你才有資格以一種懷疑眼光來看待另一種程式設計語言。畢竟,在上世紀八、九十年代的程式設計語言之爭最終得出結論-從根本上看存在兩大陣營:Java世界和微軟基於.NET支援的開發語言。並不是我不想學習另一種語言,其實我只是期望通過選擇其它程式設計語言才能獲得一定技術優勢的日子早點結束。然而,由於前面幾位著名人士的影響,我決定一試Ruby。
好,假定"我已經到過山頂",那麼本文就是我對Ruby的研究報告。
二、 安裝Ruby
Ruby是一種開源的程式設計語言,由日本的Yukihiro Matsumoto在九十年代中期開發。你可以在www.ruby-lang.org網站得到Ruby。這種語言最初被作為一種指令碼語言建立,可應用於許多平台上,包括Linux、各種類UNIX、MS-DOS、Windows、BeOS、Amiga、Acorn Risc OS和MacOS X。當前Ruby的最新版本是1.8.4。對於使用Windows平台的使用者,你可以點按這裡來得到一個"one-click"型Windows安裝程式。隨同基本的Ruby二進位檔案和庫檔案,這一下載中還包含一些有用的(並且是免費的)IDE和工具,包括協助文檔和範例程式碼,RubyGems包管理器,FreeRIDE(免費的Ruby IDE),Fox GUI庫,fxri(一種搜尋引擎和Ruby文檔的GUI指南,還有一個互動式命令列工具)和SciTE(Scintilla文字編輯器IDE)。在寫本文時,Windows安裝程式所提供的Ruby的"穩定"版本是1.8.2,還有一個1.8.4版本的預覽版。注意,本文中的範例程式碼是用Windows安裝程式所提供的1.8.2版本編寫的。
使用Windows安裝程式安裝Ruby是相當直接的事情。你只要下載並運行一個簡單的可執行安裝檔案(ruby182-15.exe),這個程式就會啟動一個標準的安裝嚮導。下載檔案大約有15MB,在嚮導把Ruby安裝到Windows平台上後佔大約40MB的硬碟空間。
對於那些偏愛自己的編輯器的程式員,大量的編輯器都提供了對Ruby的支援,包括emacs,vim,JEdit,Jed,Nedit和Textpad。當然,還有著名的Ruby Eclipse工程。Ruby開發工具(RDT)是一種Eclipse外掛程式,當前仍處於早期開發中,但是你可以從此處下載試用它。另外,市場上還有一些便宜的Ruby IDE,Arachno Ruby就是其中之一。
運行Ruby
就象許多解釋性語言一樣,Ruby提供給程式員多種開發代碼的方法。你可以使用命令列工具以互動方式運行Ruby或者建立一個Ruby程式檔案,然後要求Ruby的解譯器執行此程式。
在Windows中,開啟命令列提示符視窗,在提示符上輸入"Ruby"並斷行符號(注意:你應該能夠使系統沿Ruby的/bin目錄找到Ruby可執行檔)。那麼,Ruby就會運行並等候你輸入程式。輸入下面的程式,然後按Ctrl+D再按斷行符號鍵,你就會看到Ruby執行你的程式,1所示。
def convertCtoF (celsius) print(celsius.to_s + " degrees celsius is " + ((celsius * 9)/5 + 32).to_s + " degrees in fahrenheit/n") end convertCtoF(20) |
圖1.在Ruby中以互動方式運行攝氏到華氏溫度轉換計算
圖1中的轉換程式也可以用一種Ruby IDE或簡單文字編輯器實現並儲存到一個檔案中-例如convertCtoF.rb(.rb是Ruby程式的熱門檔案類型)。現在,Ruby解譯器將執行這個檔案中的Ruby程式,見圖2。
圖2.運行convertCtoF.rb
那些熟悉Smalltalk,Common Lisp Object System(CLOS),或其它解釋性編程環境的使用者肯定都會熟悉互動的開發環境。互動特點允許你用小塊編程代碼進行實驗。通過使用一個特殊的Ruby批次檔irb.bat,你就能夠克服Ruby解譯器的非互動性特徵。圖3顯示了使用irb.bat命令啟動的Ruby。現在,代碼可以被逐行地輸入,解釋和測試。
圖3.互動式Ruby
互動式Ruby特徵也被嵌入到若干工具中。例如,Ruby文檔的圖形介面fxri,不僅可作為一種語言指南,而且可以用作一種互動式Ruby解譯器(見圖4)。
圖4.fxri的互動式Ruby能力:在此,fxri也用來運行和圖3相同的Ruby命令,但這是從文檔工具內部啟動並執行。