程式語言極客Ola Bini:讓征服癌症成為可能(圖靈訪談)

盼盼姐發表於2013-09-16

程式語言極客Ola Bini:讓征服癌症成為可能(圖靈訪談)

簡介:
Ola Bini,他從7歲開始程式設計到現在,如果他不在電腦前,那他很有可能在研究箭術,武術,或者在理髮店裡。他一直關注與安全、AI,以及程式語言。他是JRuby開發團隊的早期成員,讓它從一個玩具變成一個工具,並順便寫了一本《JRuby實戰》。他設計了兩種程式語言,它們都是他的試驗品。去年他一直都在學習關於基因和分子生物學的知識,因為結合大資料的資訊,基因測序技術的發展已經讓攻克癌症變成可能。

程式語言會變得面目全非

你為什麼對程式語言如此感興趣?

我從很小的時候就開始程式設計了,我學了很多程式語言。對於我來說,作為一名程式設計師,我認為最重要的工具就是程式語言,其他所有的一切,庫、IDE、甚至作業系統都不是最重要的。程式語言會制約我,但也會指導我如何寫一個程式,如何解決一個具體問題。所以,對於我來說,如果可以控制一個程式語言,也許就可以在很多不同的環境下優化我的程式,可以優化和團隊成員的溝通,可以讓我把一個問題描述得更清楚,甚至可以簡化我的程式碼數量。比如50萬行的java的程式碼,有時可以用5000行ruby程式碼就解決掉,這種區別是巨大的,更少的程式碼就意味著更少的bug,也意味著程式碼也更容易理解。這對於我來說是最重要的,理解,並作出合理的決定。

你自己寫了一種語言Ioke/ai’oki/,你寫這個語言的初衷是什麼?

我認為現在所有的語言都挺糟糕的。雖然有好一些的,也有差一些的,但是它們的層次都很低,都沒有達到理想中的效果。甚至最好的語言也有一些自身的問題。我創造Ioke不是為了用它寫我下一個專案,它是我的一個實驗,我就是想看看如果我完全忽視效能和其他一些東西,我是否能創造出一種表現力更強的語言。這就是我的初衷。然後我又創造了另外一種語言Seph,它也是一個試驗品,我想研究各種可能性。

這些語言第一無二的特點是什麼?

最大的特點就是它們超級慢!但是非常靈活,就像是一塊粘土,怎麼捏怎麼弄都可以。所有東西在執行時都可以改,所有東西都是開放的。它是基於原型的語言,我認為基於原型的設計是很純淨的,比如Io, Smalltalk, Lisp, 以及Ruby。同時它還是一種面向JVM的動態語言,它有執行時巨集命令,這個是很強大的,你在執行時就可以對程式進行修改。還有一個就是很多語言都會在自身上執行,而Ioke所包含的幾乎是最少的,它的庫不多,因為所有的東西都可以用語言自身來實現。

你覺得未來的程式語言是什麼樣子的?比如20年後,或者100年後?

我覺得到那時程式語言會變得面目全非,它們看起來什麼樣我不知道。我認為到時候計算機會起到更大的作用,計算機很可能已經可以自己解決一些問題了。但是我認為大方向上應該是,因為我們到時候會面對更復雜的系統(現在就已經可以看出我們每年要面對的系統都比去年要複雜得多)。所以20年後,甚至100年後的複雜系統有多複雜真的是很難想象。

另外還有一個方向是網際網路方面的。我們越來越多地把計算機放進我們生活的環境中。你回家時,會有電腦控制照明,電冰箱裡也有電腦,它會提醒你你的飲料不夠了,你的車上也有很多電腦系統。這些電腦越來越多,也越來越小。甚至在你的眼鏡上,衣服上,手錶上都會有電腦。20年後,如果一個人的身上有成百上千臺電腦,我一點也不會感到奇怪。這時候你就要考慮為這些小裝置程式設計是怎麼回事,因為這些裝置需要和人如何互動,裝置之間如何互動,能量怎麼獲取。我們現在的假設都是隻要讓它們連上伺服器就行了,跑什麼都可以,我懷疑很多這些概念都會改變的。

另外還有一點就是我們現在還在用瀏覽器,HTML5,我們也用JS,大家還都挺滿意的。但是說實話,我認為用瀏覽器和HTML5在5到10年後應該是件落伍的事。因為在你面前擺一個長方形的屏這樣的概念,已經不適用與我們和周圍環境和裝置溝通的方式了。到了那時,我不確定我還想用CSS來渲染這些互動介面,我相信HTML5和CSS在這種情況下都不是稱職的工具。但是話說回來,我真的不知道未來會是什麼樣的,但是可以確定的是未來一定會有所改變,而我們現在就能從很多事情上看出些端倪。

你打算針對你對移動和可穿戴裝置的趨勢寫一種更合適的語言嗎?

未來有可能。我打算創造的下一種語言也是一個試驗品,但都是對於程式語言表達能力的探索。所以剛才所說的一切都跟我眼前打算做的事沒有直接關係。因為表達能力是第一步,而其他問題可以在以後慢慢解決。設計程式語言是一件很花時間的事情,在過去的一年半我都沒有時間做這件事,因為我一直都在忙一個和癌症相關的專案。今年我的工作重點是在網際網路隱私,安全,監管這些問題上,所以要設計程式語言真的要擠時間。

你自己設計語言的最大收穫是什麼?

我覺得首先是很有趣。說真的,我們真不應該低估從程式設計中獲得快樂這件事。我是個程式設計者,你看,我沒有說我的工作是個程式設計師。當我和客戶分開之後我的工作也沒有停止,我在半夜也會讀書,也在想著怎麼解決問題。作為一個程式設計者,我整天都在程式設計,如果這件事沒有樂趣,那我為什麼還要這麼做呢?

設計語言的另一個樂趣是從零到有創造一個東西的感覺。這和寫一個新程式不一樣,一個新程式無疑是一樣嶄新的東西。但是創造一種程式語言實際上是你創造了一種可以用來創造其他東西的工具。你製造了一個製造者。這個過程和寫書也有點像,你寫的書會完全反映你的想法。而程式語言也是同樣。

你建議其他程式設計師也設計一種自己的語言或者作業系統之類的嗎?

執行語言和作業系統最重要的不是設計。我認為不是所有人都應該去設計自己的語言或者作業系統。但是我認為大家都應該去執行語言,實現作業系統。因為對於後者來說,一個程式設計師應該理解我們在作業系統上建立的各種層級,從機器的最底層,到最頂層的瀏覽器,中間的各個層都值得程式設計師好好理解。而對於前者來說,程式語言是一種最重要的工具,理解它是如何工作的也很重要。但是我個人認為程式語言的重要性更勝一籌。

所有人都覺得你是一個極客,甚至你公司介紹你的頁面也是這麼說的,中文對於GEEK的翻譯有點像極端主義者,你自己是怎麼定義極客的?你在平時是個Hacker嗎?

我沒說過自己是極客,也沒把這個標籤往自己身上貼。別人說我是極客我覺得沒有關係,但是我很不喜歡被稱為傳統意義上的黑客(當然,我知道這個詞現在有了引申的意義)。同樣類似的情形還有這個詞amateur, 這個詞是個法語詞,它的本意是愛好者,但是在英語中它的意思變成了非專業的。

極客就是自己享受自己做的事,對於我來說就是技術,同時包含的意義還有對於細節的關注。喜歡和細節以及很多資訊打交道,雖然很難解釋,但是就是這樣一種感覺。如果你一直在寫程式,幾年來一直在完善一個產品,有上百萬行的程式碼在那裡,但是你仍然要全神貫注在每一行程式碼上,而且你得知道每一行程式碼在整個系統中是如何工作的。所以這就要求你對每一行程式碼極端地精雕細酌,而且還要時刻謹記整個大環境是什麼樣的。我覺得這就是極客擅長做的事。無論是關於科幻小說,還是什麼的,這樣的精神的本源都是相同的。

Ruby 的作者松本行弘認為21世紀是屬於開源軟體的,你同意嗎?

我認為是20世紀來著,哈哈,開玩笑的。我希望松本是對的,但是在過去的5到10年中,雲(面向伺服器的架構)變得越來越普及,雖然開源一直都在我們身邊,但是變得越來越無關緊要。因為如果你在自己的計算機上用開源軟體,這沒什麼關係,但是如果你要用一個大家都在用的網站的話,開源就不那麼重要了,舉例來說,誰需要Google把Gmail開源呢?我認為這個趨勢正在繼續,面向伺服器的架構和雲端計算正讓開源變得越來越沒有用武之地。當然,對於庫來說,開源無疑還是很好的,但是對於我們每天都在使用的東西,開源都不構成任何話題,我其實對此感到很難過。但是這似乎就是現實。

讓征服癌症成為可能

關於癌症的那個專案,可以簡要的向我們介紹一下嗎?

這個很難簡要的說明,要知道我把整個演講壓縮到一個小時都很苦難來著(笑)。癌症並不是一種病,而是很多種病,直到不久以前,我們仍然不明白基因在整個癌症發展過程中扮演的角色。我們現在瞭解得更多了,因為基因組測序變得越來越簡單、廉價,為癌症排序成為可能,從而分析癌症的致病機理到底是什麼。一旦完成了為癌症測序,我們就可以利用這些資訊和研究資訊以及臨床實驗資訊進行比對,由此就能知道對於特定病人來說正確的治療方法是什麼。這就是我們所做的,我們把特定病人的癌症基因資訊拿出來,告訴病人最合適的治療方法是什麼。這就要比現行的治療方法要好很多了,如果有人得了肺癌,那就按照肺癌方法治療,如果有人的了胰腺癌,就按照胰腺癌方法治療。但是事實上,癌症從哪個器官出現並沒有癌症序列重要,所以有些治療胰腺癌的方法對於治療肺癌同樣適用(當然,對於某些人來說)。所以我們要做的就是基於癌症序列給病人提供更好的治療方案。

現在所有的資訊都已經到位了。再過幾年,病人只要打個噴嚏就可以做一次基因測序,現在我們會給患癌症的病人做基因測序。在一兩年前,這都是不可能的,但是在現在,這都是可以實現的了。我們在兩年前就開始了這個專案,而現在我們可以說是領先於世界的,這也是我們一直以來想達到的目標。很多其他公司也開始了類似的研發,但是我們現在至少領先於其他人一年的時間。這個系統其實有潛力成為在接下來十年都對相關領域產生重大影響的專案。

有具體的案例嗎?

卵巢癌的生存率在幾十年內都沒有什麼明顯提高,這都是因為對於防止這種癌症復發一直依靠著試驗試錯法。而現在我們知道卵巢癌是一種異種疾病,癌症的特徵會根據每個病人而有顯著不同。DNA測序和基因表達分析這樣的技術讓每個腫瘤都有自己的分子檔案,整合和解讀這些資料,為每個病人都有自己個人化的解決方案是很有挑戰性的工作。Clearity基金已經建立了專業bono服務幫助醫師和他們的病人做出更加合理的選擇。

技術上你們解決了什麼問題?

這個專案是由Annai主持的,MedTrust E2軟體系統建立在科學研究報告之上,從專業健康專家的臨床經驗資料庫到具體病人具體腫瘤的藥物治療可行性報告,資料庫的來源不能不說是非常廣。MedTrust E2系統最強大的一點在於它極其靈活,可以吸收很多不同種類資料中的內容,並輕鬆把資料和概念從一個環境中聯絡到另一個環境中。E2是一個證據驅動,而非規則驅動的引擎。這讓這個系統變成了一個真正的可學習系統。

在這過程中你需要學習不少關於癌症的知識吧?

當然!我帶領這個專案團隊一年零兩個月,在這期間,我從對分子生物學一無所知,到最後我的想法可以影響到生物科學家和基因科學家,我的同事要學習的也有很多。因為我們的客戶知道自己要做什麼,而我和我的同事則負責做的方法,具體要實現什麼。但是要做到這些,就需要學習大量分子生物學的知識。我很喜歡學習,所以整個專案對我來說都很有趣。

我們團隊有四個人,我是領隊,但是我們每個人都是開發者,每個人也都是專家,我們都是QA,我們也都做模型分析,我們四個人什麼都幹。雖然有點怪,但是最後的效果非常不錯。

相關文章