Ruby之父松本行弘表示,物件導向的直譯是語言已成現今程式開發的重要角色。

圖片來源: 

flickr_Marcin Bajer

日前在全臺最多外國開發人參與的Railsconf社群2014年臺灣年會上,來了一位風靡全球開發社群的重量級開發領袖。

講臺上的投影螢幕打出了Matz這4個英文字母以及1個向下的箭頭,有一個人走到投影螢幕前,讓箭頭剛好指著他,這個人就是Ruby之父松本行弘。Matz是他的網路代號,他在1995年發表自己所創造的程式語言Ruby的第一個版本,Ruby這個名字參考了另一個腳本語言Perl的命名方式,Perl取自6月誕生石珍珠的英文諧音,而Ruby正是7月的誕生石。

松本行弘說,Ruby的誕生算是運氣好,「當初只是依照自己的喜好創造了Ruby,而它剛好符合現今物件導向腳本語言的趨勢。」

Ruby是以簡單易用為設計概念的直譯式腳本語言,靈感來自Perl、Smalltalk、Eiffel、Ada以及Lisp語言。有別於眾多從機器的角度為設計考量的程式語言,松本行弘想讓Ruby很人性化,開發者可以更專注地用程式解決問題,而不用再煩惱程式的編寫語法,消除開發者擔心不同的程式語法帶來不同的執行效率等疑慮。

RoR拉高Ruby語言知名度

而後又因開源專案管理平臺Basecamp創辦人DHH(David Heinemeier Hansson)以Ruby開發出了知名Web應用程式框架RoR(Ruby on Rails),更提升了Ruby語言的知名度,甚至還發展出了在Java平臺上的JRuby,以及.NET平臺的IronRuby。在2006年時,Ruby被TOIBE開發語言排行榜選為年度程式語言。

不過由於Ruby發明者是日本人,英文以及中文的網路相關資料較少,更不用說是Ruby的工具書,市面可見的屈指可數,Ruby絕大多數為日文的資源,但是在臺灣懂日文的開發者又相對較少,而且比起Perl或Python,Ruby年輕很多,知名度在臺灣一直不高,因此使用Ruby的開發者實屬小眾。

約在2000年左右,Ruby開始進入美國,累積的英文資料漸趨豐富完整,因此各國使用Ruby的開發者開始明顯增加,更有越來越多知名大型網站服務以Ruby來開發,例如提供社群網路和微網誌服務的Twitter、網路訂房服務Airbnb、共享虛擬主機服務Github和美國免費正版影視節目網站Hulu,這些成功案例同時證明了Ruby語言已足夠成熟用來開發大型網路服務。

Ruby熱潮延燒至臺灣,在地社群開始熱絡起來,甚至有國外公司來臺徵求Ruby開發人才,帶動了Ruby語言的市場,例如國外教育類SaaS服務公司Faria systems,甚至直接在臺設立子公司招募Ruby人才。目前臺灣Ruby社群正向日本Ruby認證單位爭取,計畫在臺灣推行中文版Ruby認證,以增加企業採用Ruby語言開發的意願。

Ruby簡單易用的特性也吸引了一群女性開發者,Linda Liukas和Terence Lee創辦Rails Girls社群,提供女生學習Ruby on Rails的環境,這個社群在各國遍地開花,包括臺灣也有定期舉辦Rails Girls的活動,並且每個場次參加人數皆爆滿。從女性使用Ruby的情況,也顯示出Ruby發展的力道。

松本行弘講述Ruby的設計理念Objective Ruby

松本行弘說,他從國中開始寫程式,當時就深深地被物件導向程式設計所吸引,覺得物件導向在程式語言的發展,未來將會占據要角。一般人講到物件導向都會直覺聯想到C++,這種專門用來開發大型專案,或是複雜系統的程式語言。松本行弘解釋,如同C++這類的編譯語言在過去之所以有不可取代的地位,是因為當時執行程式的電腦運算效能低落,因此程式碼撰寫完後,需要經過編譯產生原生碼(Native code),以加速程式執行的速度,不只如此,早期電腦儲存容量價格昂貴,原生碼占據儲存空間較小的特性,剛好符合當時的程式開發需求,C++因而大受歡迎。

然而,近年電腦效能大幅提升,程式的執行效能以及儲存空間等問題,不再是程式開發者的第一考量,所以語法及結構簡單易學的直譯式腳本語言因而興起。雖然這個特色使開發門檻降低,但松本行弘表示,直譯式腳本語言因語法及結構簡單,過去僅被認為適合用於開發小型簡單的程式。不過,這個問題在直譯式腳本語言導入物件導向的概念後迎刃而解,近年直譯式腳本語言在網路層面的應用上占有極重要角色。

松本行弘說,Ruby正是一個物件導向的直譯式腳本語言,當初他僅是喜歡物件導向的程式設計典範,加上希望開發者使用Ruby時,可以不需要在語法上鑽牛角尖,而能夠專注地解決問題,因此發展出了Ruby。

而物件導向概念中,繼承是一個很重要的概念,Ruby為了避免多重繼承帶來程式碼過於複雜以及容易混淆的缺點,所以採用單一繼承(Single inheritance)。不過單一繼承同樣有其缺點,松本行弘用動物比擬物件程式碼為例,一個馬的程式物件加上了線條樣式成為斑馬物件,馬是父類別,斑馬繼承了馬類別,所以斑馬是馬的子類別,而線條樣式是另外撰寫的程式碼,若又要用同樣做法將貓加上線條使其成為老虎,貓是父類別,老虎繼承了貓類別,所以老虎是貓的子類別,而線條樣式仍然是要另外撰寫的程式碼。

松本行弘表示,由於斑馬與老虎僅單一繼承一個父類別,因此必須重複撰寫程式碼,例如線條樣式的程式碼就重複兩次,而一旦需求改變,欲同時修改斑馬物件與老虎物件的線條樣式時,就有兩份線條樣式的程式碼需要修改,諸如此類的例子都會造成程式碼維護上的困擾,因此松本行弘才在Ruby中增加了模組(Module),為Ruby提供多重繼承的功能,當線條是模組時,在撰寫斑馬以及老虎時,可以引入線條模組,往後只要維護線條模組唯一的程式碼來源就可以了。

松本行弘說,目前知名的物件導向直譯式腳本語言有Perl、Python跟Ruby,開發者無論使用哪一種都很好,這些語言的興起表示直譯式腳本語言時代已經來臨,但他也很高興越來越多的人都可以開始使用Ruby,並非因為Ruby是他所開發的,「而是藉由Ruby可以幫助更多開發者解決問題。」


Advertisement

更多 iThome相關內容