世界上還需要另外一個編程語言嗎?
——Rob Pike討論為什么Google要開發新的Go語言 Rob Pike總是會在恰當的地方做事。在80年代初期,他在貝爾實驗室與Brian Kernighan以及Ken Thompson一起工作,與Kernighan合寫了“UNIX編程環境”,并與Thompson合作開發了UTF-8 字節編碼標準。Pike現在是Google的一個首席工程師,并與人合作開發了Go,一個新的編程語言。Pike將在下月的OSCON大會上討論Go,他也在下面的采訪中談論了Go的開發以及編程語言的當前狀態。
創建Go語言的動機是什么?
Rob Pike:幾年以前,我們在Google的幾個人開始對軟件開發過程感到沮喪,尤其是在使用C++編寫大型的服務器軟件時更是如此。我們發現二進制文件變得越來越大。他們需要花費太多的時間去編譯。此語言幾乎是當前世界上主要的系統軟件語言,其本身已經是一種非常老舊的語言了。最近二十年來許多在硬件上的思想和變化都未能影響C++。于是我們決定著手從新設計設計一種能解決我們問題的語言:我們需要快速地構建軟件,使其能在現代的多核心硬件和網絡環境中運行良好,并且做到快樂編程。
盡管我們針對一些特定的問題來設定Go的目標,它已經變成一個比我們最初的設想更加通用和適用的編程語言。因此我們現在正使用它做許多不同的事情。我認為它應該在多個方向上都有美好的未來。
使用Go編程會感覺如何呢?
Rob Pike:Go具有動態語言如Python、Ruby或JavaScript的味兒,但它同時具有像Java、C或C++類語言的性能和安全性。這樣你會感覺就像在使用一個輕量級的現代的腳本動態語言,但同時獲得了傳統語言的健壯性和性能。
Go是否具有一個強大的開發環境?
Rob Pike:我們有一套與此語言配合使用的有趣的工具。其中發布版本的標準庫就有完整性分析器。因此依據問題的復雜程度,你可以編寫你自己的工具,也許在使用已有庫時只需要一頁代碼。
有一些工具可以使你與已有的庫連接。對于大型的如OpenGL一類的包,你最好是僅僅連接使用已有的東西。我們可以使用我們的封裝工具來做這些事,另外SWIG支持使得我們能與C++連接。但所有的基類庫都是由Go編寫的。
已經有了針對Eclipse以及其他環境的插件。但還需要更多的工作,我們尚沒有一個IDE,我們已經有了做這些事情的一些想法。
世界上還需要另外一個編程語言嗎?
Rob Pike:這是一個關于語言的愉快時光,因為已經產生了如此眾多的語言。60年代末到70年代初是語言開發的爆發期,接下來則一切歸于平靜。這并不是說沒有出現新的語言,而是語言的設計似乎都無功而返。然而在最近的5到10年,又一次出現了復興。我將在OSCON上談論這種現象的原因之一,便是當前常用的語言并不能滿足人們的需求。這里有新語言的生存之所,在這些方面Java、C、C++、JavaScript甚至Python都不能很好的滿足需求。
Google與貝爾實驗室比起來怎么樣呢?
Rob Pike:這兩方面都已經發生了很多改變。當我在貝爾實驗室工作時,我們做了許多研究驅動的、出版導向的事情。在很大程度上,此公司不理解開源。當我到Google后,方向則變得非常不同。我們完全是一個試圖讓事情實現的公司。至少在后來,開源變成了公司文化的一個基本部分。因此在這方面他們是非常不同的。
隨著一天天的工作進展,我認為他們有許多共通點。他們都是令人向往的工作地點,他們都具有許多聰明的人們。但在文化上,他們是通訊公司和互聯網公司的差別。他們從根本上是兩回事。
【編輯推薦】