Ruby之父松本行弘:自主性、決定權和屬於自己的思考(圖靈訪談)

何逸勤發表於2011-11-13

圖靈訪談之四:松本行弘專訪

2011年11月11日,圖靈社群就Ruby的設計和中國程式設計師關注的諸多話題,採訪了Ruby設計者松本行弘先生,以下為訪談內容。(視訊在此)

圖靈社群:《松本行弘的程式世界》中文版上市之後,在程式設計師(不僅僅是Ruby)社群取得很好的反響,在此我們對您表示祝賀。在這本書裡面,您以Ruby的設計為參照,討論了程式語言設計與開發的很多知識,這是挺新鮮的角度。是否可以介紹一下,您是如何設計出這樣的寫作角度的呢?

松本行弘:我寫過一本《物件導向的語言Ruby》,那本是專門介紹Ruby的,這一本(指《松本行弘的程式世界》)是介紹程式語言知識的。以這樣的形式撰寫,我還是頭一次。這本來是寫給《日經Linux》雜誌的一系列專欄文章,最後彙總起來成書。

我主要想通過這些文章來告訴讀者作為程式設計師所需要具備的背景知識,並幫助讀者梳理程式語言的歷史。作為一名程式設計師,不僅僅要懂得程式,還要懂得計算機的發展歷程、程式設計的本質、計算機的性質和技巧等等這些看似跟語言沒什麼關係的東西。一般來說,程式設計師難以系統地學習這些知識。我在三十幾年的工作中,一直在教別人這些內容。不是當老師,而是在工作中教別人,或者作為一種興趣與別人交流。

對這本書上市之後取得的成績,我個人也是蠻驚訝的。這本書在日本的反響不錯,但在臺灣地區的繁體中文版就叫好不叫座。中國內地讀者可以選擇並喜歡這本書,我覺得這是程式設計師群體邁向成熟的一個標誌。

圖靈社群:目前《日經Linux》的“松本行弘技術剖析”的連載,與《松本行弘的程式世界》的寫作角度有什麼差異?將來是否也會結集出版?

松本行弘:實際上,沒有什麼區別(笑)。因為出版《松本行弘的程式世界》之後,我又有許多新的認識,所以想繼續深入探討。

新的專欄(指“松本行弘技術剖析”)還沒有出版的安排,可能會出吧。目前文章還不夠多。收錄到《松本行弘的程式世界》中的文章總共連載了3、4年。現在的這個專欄才剛剛開始不久。

圖靈社群:您有一個很有意思的觀點:“相對於數學來說,程式設計師更需要的是傾聽能力和理解能力,最重要的是溝通能力。”是否可以結合設計Ruby的過程來闡述一下這個觀點呢?

松本行弘:這主要來自個人經歷吧。說起來慚愧,我小時候數學差極了。語文、英語什麼的成績比較好。可是我又特別喜歡計算機。在研究計算機的過程中,當然也有因為數學不好而遇到困難的時候,不過幾乎不成問題啦。相對於數學來說,程式設計人員更需要諸如揣摩使用者的感受、使用者真正的需求等等的能力。在程式設計這個廣闊的領域中,雖然也有不擅長數學就什麼都做不了的部分,但大部分是與數學沒有什麼關係的。我個人就是這麼感覺的。包括Ruby的設計過程,大部分都不用到數學,所以我能做出來。

圖靈社群:Ruby的人性化,一直為人所稱道。是否可以簡要介紹,在設計Ruby的過程中,您是如何提煉並貫徹這一原則的?

松本行弘:在設計這個語言的時候,我首先想到的是:誰來用這個語言。然後換位思考:如果我是對方,我會需要什麼,使用起來是什麼感受。於是我就設計了一種我自己覺得用起來很舒服的語言。令我感到意外的是,許多使用者的體驗和我相似,他們也覺得這種語言用起來十分容易上手。

圖靈社群:對於中國程式設計師來說,大家很熟悉您的“Ruby之父”這一頭銜。不過,我們注意到,其實您同時在Ruby Association、Heroku等幾個機構任職,一直在全方位地推廣Ruby。可以簡要介紹這些機構在Ruby的推廣工作中的不同作用嗎?

松本行弘:從2007年開始,在工作中使用Ruby語言的人漸漸增多,比如說為公司編寫一個程式等等。在此之前,許多人僅僅將Ruby作為一種興趣,用它編著玩兒。當他們真正在工作上使用Ruby的時候,就會開始問:“誰設計了這種語言?松本?松本是誰?”這個時候,商業開發者和使用開源軟體的興趣愛好者之間的矛盾愈來愈明顯。為了解決這個問題,我創設了Ruby Association。這樣可以給商業開發者提供一個付費的平臺,使用起來有了商業保障。不過這個組織還很小,目前只在日本國內活動。當然創立當初是放眼全世界的。

說到Heroku則是另外一回事了。去年的12月,Heroku被Salesforce收購。我雖然有朋友在Salesforce工作,但是對Heroku完全陌生,只是聽說了它被收購的訊息。今年,Salesforce的Marc Beniof希望能接觸一些Ruby的相關人士,於是便找到我說:“將來希望能用Heroku的資源來推進Ruby的發展。”過了一週之後,他邀請我與他一起工作。我答應了。這件事本身是他們主動來找我們,我們自己並沒有說去尋求什麼支援。以前,Ruby社群中有些人白天工作,晚上因興趣而搗鼓Ruby。而現在到了Heroku工作,則一天到晚都能搗鼓Ruby了。Heroku提供了這樣的平臺。

圖靈社群:您在書中提到過,日本的軟體業比美國有所滯後。我們覺得,中國應該會比日本還滯後一些。請結合Ruby在日本和美國的發展,給中國的Ruby程式設計師指點一下未來之路。

松本行弘:我這麼寫了嗎?如果有寫的話,我忘記了(笑)。(注:請參見《松本行弘的程式設計》第14.2節。)

日本和美國的軟體業,其實並不存在誰落後於誰的情況,因為二者有很大的差異性。當A和B在同一個方向上發展的時候,我們可以根據先後次序說A落後於B或者是B落後於A。但是日本和美國軟體業的發展方向並不相同。日本在傳統上比較偏重製造業,比如汽車、鋼鐵、船舶等等。到了軟體業,也想照搬製造業的模式。但是,畢竟軟體行業和汽車、船舶之類傳統行業的還是有一定區別的,照搬的話,發展就並不是那麼順利了。我想如果大家通過使用Ruby能體會到Ruby的構思和程式設計的本質,明白軟體業和傳統制造業的區別,使日本的軟體業走上正軌,我的目的就達到了。這也是我當時寫《松本行弘的程式世界》的初衷之一。

圖靈社群:中國目前的經濟發展模式實際上和日本早期的比較相似,目前在國內有許多各種型別的代工工廠,傳統的製造工業比較多,而軟體行業還不是那麼成熟。

松本行弘:好像有美國企業把軟體放在中國生產吧?但它是沒有放在日本的。中國的軟體業還是和日本有區別。我想強調的是,在軟體行業,最重要的是:是否有決定權。具體來說就是:第一,是否能夠自己選擇技術;第二,是否能夠決定做什麼;第三,是否能夠決定在什麼環節做出什麼特色。

日本有一種職業叫做SE(Software Engineer),你知道嗎?他們一般都是聽上頭那些不寫程式碼的領導的指示來做軟體,而自己沒有決定權。日本有大量這樣的SE。作為軟體的直接製造者,如果不能自己思考,我覺得那是蠻悲哀的。

我回頭來想,中國會不會也有這種情況呢?比如那些做軟體代工的企業,美國人或者其他國家的人決定了之後,這些企業就遵照美國人的指示做,可能是有這種情況的。那麼我想給中國這些工程師的建議就是:一定切記要自主性、決定權和屬於自己的思考。

圖靈社群:作為開源/自由軟體的踐行者,您是否可以對有志投入這一領域、但又擔心如何為生的程式設計師提供一些建議?

松本行弘:這個問題好難回答。在日本,倒是愈來愈多的工程師因開源軟體而開始變得有飯可吃了,當然不是很多,只是一部分。我做開源做了十幾年了。

我舉個例子吧,比如說漁民。剛開始他們捕魚,魚是現成的對吧?這就有點像開源。捕著捕著,魚就漸漸少了,到後來就沒有了。這時候就會有人想:如果一直能有更多、更好的魚就好了。於是這個時候就出現了養殖業。

我覺得開源軟體的發展也會出現類似的情況。剛開始很多企業都使用開源軟體,唾手可得,也不需要付費。不過用著用著就會發現,好像這些軟體都不能滿足自己的需求。於是企業希望能夠更適合自己的軟體來解決問題。這個時候它們會花錢花人力讓一些開源軟體更加完善,或者將自己的軟體開源。在美國有許多這樣的企業,日本也有一些,好像歐洲也有。我想中國未來的情況應該也會差不多,我很期待的。

目前在世界上還是很少看到中國、韓國、印度的開源軟體。中國有龐大的IT從業隊伍,今天的Ruby大會也來了很多優秀的青年,希望他們將來能夠使中國的開源軟體享譽世界。

以下三個問題,分別來自圖靈社群的讀者Kraft、劉曉日和無鋒之刃。

圖靈社群:請問您如果再設計新的語言,會有什麼特性呢?

松本行弘:除了Ruby嗎?我目前沒有其他計劃啊。目前是計劃2013年釋出2.0版的Ruby。此後,Ruby還有好多東西要做,能做個10或者20年吧。之後會不會開發新語言就不知道了。

圖靈社群:一門通用型程式語言必定會跟隨著應用開發趨勢進化,為了增強表達力又勢必需要新增新的特性,而為了向下相容又不能隨意刪除既有特性,那麼在進化過程中將如何保持特性正交、減少特性之間的相互衝突、降低特性組合產生的新風險/隱患/漏洞?

松本行弘:這個……幾乎無法解決(笑)。不過其實針對某種特定目的而開發的語言是比較少的。能舉例的比如說PHP,是針對Web應用程式所開發的。它有它的專業性,也有侷限性。說到Ruby,則不是針對某種特定目的開發的,雖然它誕生初期是一種處理文字的指令碼語言,但是它不僅僅侷限於這個功能。軟體開發、教育、大型計算機等等Ruby都能派得上用場。Ruby並沒有針對某些目的去特意地增加什麼便利的功能,因為這樣一來反而比較危險,會侷限Ruby未來的發展。我在設計的過程中一直很注意這一點,不會去弄一個比如針對Web的Ruby。

圖靈社群:猴子補丁是個很巧妙而又難以掌握的特性,請問是如何構思出來的?

松本行弘:實際上猴子補丁來自於Lisp,誕生於1958年。Ruby把它拿過來,並起了一個名字,叫做“猴子補丁”。有了名字之後呢,它就開始廣為人知。剛開始,它叫做“雜牌軍補丁”(guerilla patch),“雜牌軍”就是自發參加的軍隊的意思。後來有人因為口誤叫成“猩猩”(gorilla),再後來乾脆就叫“猴子”(monkey)了。

這個“猴子”不是我自己起的名字,而是在社群裡很自然地演變成“猴子”,從“雜牌軍”到“猩猩”再到“猴子”。不過叫它“猴子補丁”是Ruby的創意。有了名字,大家就漸漸關注得多了。 這個猴子補丁也不是很難掌握啦,只要理解就很容易了。

最後,松本行弘先生還寄語中國讀者,一同為Ruby社群創造更美好的未來!


現場精彩圖片

Matz大神演講中

演講中

Matz大神在2011中國Ruby技術大會上挑選幸運的提問讀者

松本行弘先生在2011中國Ruby技術大會上挑選幸運的提問讀者

會議組織者呂國寧先生向幸運讀者送出圖靈出版的“神棍節”Matz大神簽名本《松本行弘的程式設計》

會議組織者呂國寧先生向幸運讀者送出圖靈出版的《松本行弘的程式設計》

圖靈公司日文圖書策劃編輯樂馨正在採訪Matz大神

圖靈公司日文圖書策劃編輯樂馨正在採訪Matz大神

筆者與Matz大神合影

筆者與Matz大神合影

Matz大神近照

近照

相關閱讀

訪談視訊

“圖靈訪談”系列的更多精彩內容

松本行弘:我的程式設計人生


更多精彩,加入圖靈訪談微信!

相關文章