1/06/2007

[轉錄] 世界喜愛 Ruby 的理由 - 專訪松本行弘(摘要)

這是日経 BP主辦的「次世代開發論壇」時的訪談 Matz (Ruby 作者),於 2006 年 12 月底刊載的。原文在スペシャルインタビュー 世界がRubyを愛する理由,PTT 的 ericyu 進行翻譯以及中文哉要,出處在此。本人在獲得 ericyu 書面同意下,進行轉錄的工作。本圖以及文章版權屬於日經 BP 所有,如本文章發佈形式有版權問題或是不妥,請來信告知。



看完之後的感覺

這篇主要講的是 Ruby 的歷史,但是 Matz 也提到他認為未來語言的趨勢在於多CPU的平行化,個人認為他的想法非常的正確。或許最快10年後,所有的程式語言都得加入平行化處理的技巧,不然被淘汰只是遲早的事情。

原文開始

在 Ruby 的 mailing list 上,英語討論量約為日語的十倍。Ruby 的 conference (Ruby Conference) 也是國外先,例如美國 (RubyConf) 2001,歐洲 (Euruko) 2003,日本 (RubyKaigi, [報導] [網站]) 2006。

Ruby 的英文相關書籍已有 30 本以上,2000 年在美國的 Programming Ruby 是第一本。目前銷售量甚至超越 Perl 及 Python。

Rubyforge 上也有超過 2500 件專案,這些專案幾乎都是以國外開發者為中心。

為何創造出 Ruby?

本來就喜歡語言,原本想設計一種自然語言,不過不太行,後來覺得如果是程式語言的話自己就作得到。大學進入程式語言研究室,光只有構想的語言就有好 多,如果連只有想到名字的也算大約有 11 個 (笑)。實際動手的只有 2 個。學生時所作的是幫 C 加上 Eiffel 風格的 OO。

會想做 Ruby 是因為同事(石塚圭樹)「Perl 寫來方便但讀起來很難。如果有好的 OO Scripting 語言就好了」。雖然當時有 Python,不過沒有內建 regular expression,寫起來不像 Perl 那樣快速。因此想寫一個能兼有 Perl 的快樂及 OO 美感的語言。

1995 年 12 月 Alpha 版在 newsgroup 上公開。收到了很多 bug report,為了修正 bug,睡眠時間都變少了。

為何很快就擄獲了最開始的使用者?

希望能很方便的處理文字,寫 script,大概是這樣的使用者吧。此時對於感到 Perl 極限的使用者選擇有三個: Perl5,Ruby,Python(按: Perl 5 於 1994/10 released)。Python 剛提過沒內建 regular expression,而 Ruby 比 Perl OO 得更徹底。

很多使用者送來 patch 或應用。譬如有天送來一個 patch,發現只要 patch 後,就能讓 Ruby 支援 UTF-8。

海外的使用者是如何擴大的?

Programming Ruby 開始。

創造 Smalltalk 的 Alan Kay,創造 Objective-C 的 Brad Cox,以及提倡重構 (refactoring) 的 Martin Fowler 也注意到 Ruby。

2004 年推出的 Web Application Framework - Ruby on Rails 使得 Ruby 廣泛備用在商業上。O’Reilly 站內文章提到生產力是 Java 十倍,雖然是否有十倍尚有爭議,但實際寫程式的量只有十分之一。RoR 作者 David Heinemeier Hansson 說 Ruby 是「能寫出美麗的程式碼,能使程式員快樂的語言」。

要怎樣能寫出普及世界的軟體呢?

回頭看 Ruby 的例子,覺得是因為累積了很多的幸運。不過,一開始就有想到「不要只有侷限在日本」。1997 年開始有英文 mailing list,ChangeLog 也附了英文,集結 Ruby 應用的 Ruby Application Archive 也希望日本使用者用英文登錄。

日本也有很多有趣的技術,但缺乏英文文件等有很大的語言隔閡。

回到 Ruby,當初是追求「要怎麼作才能讓自己能快快樂樂寫程式」,而將自己想要的東西具體化。Ruby 並沒有作出什麼其他語言沒有的創舉,而是相信程式員的感受,從現有程式語言中選出對使用者來說好用的東西。這就是 Ruby。

想要的是能將自己的工作立刻變為程式語言。最好是能這樣:將腦中所想到的演算法給記下來,就能直接變成程式跑。為了讓程式動,往往要經過一大堆繁雜的程序。不過,我們不是為了電腦而工作,而是要讓電腦替我們工作。所以要能夠快樂寫程式,我是這樣想著而創造 Ruby 的。

之後程式語言會如何進化呢?

多核心是現在注目的焦點。不久將來可能大家電腦都是 64-core,128-core,task 的分配就不可能以 thread 進行,而不得不自動化。程式語言的平行化處理能到什麼地步呢?說不定不是 C 或 Ruby 這種 procedural language,而是 functional language 存活也不一定。

我認為必須要有更多程式語言被創造出來才行。無數的應用程式創造出了 design pattern,就像(圍棋的)定石一樣。相較之下,目前也有幾千幾萬種程式語言了吧?但是程式語言的 know-how 仍未確立。希望年輕的工程師們來挑戰程式語言的開發。

2006年12月21日 ITpro

關於まつもと ゆきひろ (Matsumoto Yukihiro,松本行弘)

中學二年級時,在父親的口袋型電腦 Sharp PC-1210 上以 Basic 寫了第一個程式。1984 年進入筑波大學第三學群資訊(情報)學類。大學其中兩年休學,從事基督教傳教工作。大學時在程式語言研究室,1990 年畢業。1993 年以來,一直從事物件導向程式語言 Ruby 的設計與開發。

1997 年開始,在「株式會社 Network 應用通信研究所」擔任特別研究員,專注開發 Ruby。著書: 「物件導向 Script 語言 Ruby」(與石塚圭樹共同著作),「Ruby Desktop Reference」,「軟體工匠(ソフトウェアの匠)」等。自稱「語言 otaku」 (語言宅男?)。在家中是三個女兒與一個兒子的爹。




沒有留言: