Matz訪談錄:我為什么要創(chuàng)造Ruby語言?
本文是Ruby in a nutshell一書出版之際,該書的作者,同時也是Ruby語言的創(chuàng)始人Matz介紹O'Reilly出版社訪談的對話內(nèi)容整理總結(jié)。
Yukihiro Matsumoto (松本行弘,網(wǎng)上被稱為 Matz)是 Ruby 的創(chuàng)始人,同時也是O'Reilly 最新出版的語言類書籍 “Ruby in a nutshell” 的作者。
Matz 是一位專業(yè)的程序員,他在日本的開源公司 netlab.jp 工作。他也是日本最為著名的開放源碼傳播者之一。他發(fā)布了許多開源的產(chǎn)品,包括 cmail,一個基于 Emacs 的郵件客戶端程序,完全用Lisp 寫的。
Ruby 是他第一個在日本以外國家成名的軟件。最近我們跟Matz 談起了Ruby 的歷史,Perl , Python 對 Ruby 的影響以及為什么我們需要另外一種腳本語言。
以下就是訪談內(nèi)容片段:
Stewart: 讓我們從回顧歷史開始吧,您為什么要決定開發(fā) Ruby 語言?
Matz: 那追溯到 1993 年的事情了,我當時跟一個同事談起了腳本語言,它們的強大的功能和可能性給我留下了深刻的印象,我覺得腳本語言是條正確的道路。作為一個長期的面向?qū)ο缶幊痰闹覍崜碜o者,對我來說面向?qū)ο缶幊桃卜浅_m合于腳本語言,所以我開始在網(wǎng)上搜尋。我發(fā)現(xiàn)了 Perl 5,當時它還沒正式推出,正打算實現(xiàn)一些 OO 的特點,但是那不是我想要的, 我最終放棄了將Perl 作為一個面向?qū)ο竽_本語言的企圖。
后來我發(fā)現(xiàn)了 Python, 它是一個解釋型,面向?qū)ο蟮恼Z言,但是我覺得它不是一個“腳本”語言,除此之外,它還是一個包括了過程編程和面向?qū)ο缶幊痰幕旌闲驼Z言 。
我需要的是一個比 Perl 更強大,比 Python 更面向?qū)ο蟮恼Z言,這就是為什么我決定設計我自己的語言的原因。
Stewart: 你什么時候真正開始編寫 Ruby 的? 最終花了多長時間才使成為一個可用的語言?
Matz: 我開始開發(fā) Ruby 是 1993 年的 2 月 24號, 第一個 Ruby 版本的“Hello world” 運行的時候是同年的夏天。第一個 Alpha 版本發(fā)布于1994 年 12 月。
Stewart: 你是單獨完成它的嗎?或是由開源社區(qū)貢獻了大部分代碼?
Matz: 直到 1996 年,我都是獨立在開發(fā)它,打那兒以后,一個 Ruby 社區(qū)形成了,他們幫了我很大的忙,但是我仍然做絕大部分的工作,但是很多人給我提供的代碼的修補和補丁。
Stewart: 日本的開源社區(qū)有多活躍?和美國的開源社區(qū)運動相比,你覺得如何?
Matz: 非常的活躍,但是我覺得比美國的社區(qū)在規(guī)模上要小。
Stewart: 你怎么會想起用 "Ruby" 這個名字的?
Matz: Ruby 是一種珍貴寶石的名字(紅寶石)。它不是什么簡稱。當我始這個語言項目的時候,我就跟一個同事開玩笑說,這個項目必須以一個寶石的名字來命名(比如 Perl),我的朋友想出了“Ruby”,它是一種美麗珍貴的寶石的簡稱。所以我就采納的這個名字,它最終成為了這個語言的官方名字。
后來我發(fā)現(xiàn) Pearl(珍珠)是六月的誕生石,而Ruby 是七月的誕生石, 我認為Ruby 這個名字作為 Perl 之后的一門語言的名字真是再恰當不過了。
Stewart: 你在設計 Ruby 的時候有什么指導原則嗎?
Matz: 是的, 我稱之為“最少的驚奇”,我覺得人們在編程的時候都希望表達他們自己的思想,他們并不想使用語言來斗爭。編程語言對程序員來說應該顯得自然。 我試圖讓程序員在使用 Ruby 的時候感受到編程的樂趣,而將注意力集中在編程的趣味和創(chuàng)新上來。
Stewart: 你在 Ruby 的郵件列表中很活躍,在那里最通常的問題是什么?
Matz: 各種各樣的問題,從“我如何在 windows 2000 的機器上安裝 Ruby” 到 “你能將我的補丁合并進來修復你的錯誤嗎”,應有盡有。 Ruby 社區(qū)中的人是如此的不同而又互相友好,真是讓人驚奇,我相信社區(qū)是 Ruby 最強大的力量。
Stewart: 在 Slashdot 或其他網(wǎng)站上,如果提及 Ruby , 有個問題總是會反復出現(xiàn),“為什么會需要另外一種腳本語言?”,你對這個問題的想法是怎樣的?
Matz: 為什么需要另外一種語言?理論上,不需要。我們只是需要一個圖靈機來解決我們所有的問題。人們需要更多復雜的工具來編程,這是人類的需求。只有有人覺得使用Ruby很快樂,對我來說,這個原因就足夠了。
Stewart: 我注意到,在發(fā)明 Ruby 之前你在使用 Perl 和 Python. 在 Ruby 中你集成了 Perl 的那些部分?
Matz: 很多。 Ruby 的類庫是對 Perl 語言功能的面向?qū)ο笾亟M,另外添加了一些Smalltalk 和 Lisp 的東西。我想我是用了很多 Perl 的東西, 不過我不應該繼承諸如 $_ $& 和其他一些風格丑陋的變量。
Stewart: 那么 Python 呢?你試圖重用這個語言中的哪些特點?
Matz: 遠比 Perl 要少,但是我還是偷學了一些東西,比如異常名,另外我從它的源碼中學到很多東西。
Stewart: 如果人們已經(jīng)熟悉了 Perl 和 Python, 他們有什么理由要轉(zhuǎn)到 Ruby 上來呢。
Matz: 為什么要轉(zhuǎn)到Ruby? 如果對Perl 或者 Python 很滿意,就不需要轉(zhuǎn)到 Ruby上來。但是如果確實覺得需要一門更好的語言,Ruby 可能就是你的選擇。學習一種新的語言并沒有害處。 它給你新的想法和見解,你不比轉(zhuǎn)到它,可以僅僅學習和試試。 在你覺得 Ruby 使用起來非常舒服的時候再決定轉(zhuǎn)到使用它。
Stewart: 你覺得 Ruby 在日本如此成功,但是在美國和歐洲并流行是什么原因呢?
Matz: Ruby 自從 1995 年第一次正式發(fā)布就在日本有了名氣,直到 1997 年才有了英文文檔。 在 1998 年建立 Ruby-talk郵件列表之前我沒有對Ruby 做過任何宣傳,所以,對非日語國家來說,這是一門非常新的語言。我想這是主要原因。現(xiàn)在我們有了關于 Ruby 的英文書籍了,就像我的這本 “Ruby in a Nutshell"。 社區(qū)也在發(fā)展,去年日本之外沒有人知道 Ruby 是什么。今年,人們知道Ruby是一個語言的名字,我想今后三年情況會有所改觀。
Stewart: 文化差異是否也在其中起了作用?
Matz: 我不這么認為。我設計 Ruby 是為了盡量減少我的驚奇。當世界各地的人告訴我Ruby 減少了他們的驚奇并讓他們享受到編程的快樂,這多少讓我感到驚訝,現(xiàn)在我確信全世界的程序員都是很相像。
Stewart: 你未來還有什么計劃嗎?
Matz:
- loop do
- read and reply mails
- write code
- write document/article/book
- write code
- end
Stewart: 你現(xiàn)在對下一個版本 Ruby 有什么計劃嗎?
Matz: 我希望把它做的更快,更穩(wěn)定。我計劃重寫 Ruby 2.0 的解釋器,代碼名是:”Rite“.它將更小,更容易嵌入,線程安全而且速度更快。它將使用字節(jié)碼引擎。它可能要讓我花上幾年的時間來實現(xiàn),因為光維護現(xiàn)在的 版本已經(jīng)讓我相當?shù)拿β盗恕?
【編輯推薦】