為什麼Go語言設計受到歡迎?

banq發表於2015-03-03
Go言的參與者Dave Cheney針對GO語言為什麼當前越來越受歡迎的原因提出了一些新的見解。

原文見:Go’s Language Design Leaves Others Behind

Cheney指出大多數現代語言都是從簡單出發,最後卻很少實現強大的目標,他認為複雜語言其內部的笨拙語法其實使用“富有表現力”等詞語委婉掩蓋了,這些複雜語言不會直接承認他們在簡單和直接上做得很失敗。

大多數語言起初理想目標是簡單,但是當他們試圖加入前人語言的同樣特性以後,反而失去了簡單的目標,作為一個新語言通常面對如何替換以前語言的壓力,成為那些被替換語言的子集變成了這些新語言的一個目標(banq注:好像在黑Scala之類JVM語言),結果導致了巴洛克風格(banq注:華而不實),我們在其他語言中到處看到不必要的複雜性。

Cheney認為一個新語言應當是精製的,不是單純對老語言的替換,應該是從前任語言的錯誤中得到學習。

為什麼Go語言不同於前期的語言?首先,它離開了前期語言達成的公約,或者說約定俗成,這些約定其實沒有意義,Go成功就是因為將這些約定扔掉,相當於加入了新功能(banq注:少則意味多,減意味著增)。其次,Go語言允許程式設計師建立堅實的基礎,Cheney使用流沙比喻比喻其他語言,幾十年來這些繁瑣的語言將大型架構其實建立在流沙上,基礎不簡單也不堅實。

你不能在事後再增加簡單,簡單隻有扔掉一些東西后才會得到。

發明一個可理解的語言不意味著就是讓它變得容易,而是讓它直接。Cheney進行了一些舉例說明,比如限制語法的數量能夠方便於有經驗程式設計師,同是又避免疏遠新程式設計師。

Cheney相信今天需要簡單的程式設計是不言而喻的,Rob Pike作為Go語言的一個建立者說:Go語言不是來自一個委員會的群體作品,而是代表Ken Thompson, Robert Griesemer 和他自己的經驗昇華”。所有有經驗的程式設計師都同意在Go中不需要額外的垃圾,Go為簡單設計,簡單是其原始特性,而不是副特性。

Cheney還談了GO在大型團隊合作中的好處。

Cheney認為Go秉承了UNIX哲學:簡單而鋒利,結合在一起能夠完成更復雜的任務。更重要的是,能完成語言原始作者都沒有想到的任務,Go的包可以透過更簡單的介面彼此互動,這些介面相比Java或C++更簡單沒有限制、可組合,從而引向更簡單實現。

Cheney還解釋了GO語言在容器集裝箱流程市場上的強有力地位(Docker)。

最後他說:Go語言適合願意把事情做好的程式設計師。


[該貼被banq於2015-03-03 11:04修改過]

相關文章