Go 會接替 Java,成為下一個企業級程式語言嗎?

有隻黑白貓發表於2020-01-07

點選這裡,檢視GO的優勢、劣勢等剩餘重要內容

Go 的優勢在於能夠將簡單的和經過驗證的想法結合起來,同時避免了其他語言中出現的許多問題。本文概述了 Go 背後的一些設計原則和工程智慧,作者認為,Go 語言具備的所有這些優點,將共同推動其成為接替 Java 並主導下一代大型軟體開發平臺的最有力的程式語言候選。很多優秀的程式語言只是在個別領域比較強大,如果將所有因素都納入考慮,沒有其他語言能夠像 Go 語言一樣“全面開花”,在大型軟體工程方面,尤為如此。

基於現實經驗 Go 是由經驗豐富的軟體行業老手一手建立的,長期以來,他們對現有語言的各種缺點有過切身體會的痛苦經歷。幾十年前,Rob Pike 和 Ken Thompson 在 Unix、C 和 Unicode 的發明中起到了重要作用。Robert Griensemer 在為 JavaScript 和 Java 開發 V8 和 HotSpot 虛擬機器之後,在編譯器和垃圾收集方面擁有數十年的經驗。有太多次,他們不得不等待 Google 規模的 C++/Java 程式碼庫進行編譯。於是,他們開始著手建立新的程式語言,將他們半個世紀以來的編寫程式碼所學到的一切經驗包含進去。

專注於大型工程 小型工程專案幾乎可以用任何程式語言來成功構建。當成千上萬的開發人員在數十年的持續時間壓力下,在包含數千萬行程式碼的大型程式碼庫上進行協作時,就會發生真正令人痛苦的問題。這樣會導致一些問題,如下:

  • 較長的編譯時間導致中斷開發。
  • 程式碼庫由幾個人 / 團隊 / 部門 / 公司所擁有,混合了不同的程式設計風格。
  • 公司僱傭了數千名工程師、架構師、測試人員、運營專家、審計員、實習生等,他們需要了解程式碼庫,但也具備廣泛的編碼經驗。
  • 依賴於許多外部庫或執行時,其中一些不再以原始形式存在。
  • 在程式碼庫的生命週期中,每行程式碼平均被重寫 10 次,被弄得千瘡百痍,而且還會發生技術偏差。
  • 文件不完整。
    Go 注重減輕這些大型工程的難題,有時會以使小型工程變得更麻煩為代價,例如,程式碼中到處都需要幾行額外的程式碼行。

注重可維護性 Go 強調儘可能多地將工作轉給自動化的程式碼維護工具中。Go 工具鏈提供了最常用的功能,如格式化程式碼和匯入、查詢符號的定義和用法、簡單的重構以及程式碼異味的識別。由於標準化的程式碼格式和單一的慣用方式,機器生成的程式碼更改看起來非常接近 Go 中人為生成的更改並使用類似的模式,從而允許人機之間更加無縫地協作。

保持簡單明瞭

初級程式設計師為簡單的問題建立簡單的解決方案。高階程式設計師為複雜的問題建立複雜的解決方案。偉大的程式設計師找到複雜問題的簡單解決方案。
——Charles Connell

讓很多人驚訝的一點是,Go 居然不包含他們喜歡的其他語言的概念。Go 確實是一種非常小巧而簡單的語言,只包含正交和經過驗證的概念的最小選擇。這鼓勵開發人員用最少的認知開銷來編寫儘可能簡單的程式碼,以便許多其他人可以理解並使用它。

使事情清晰明瞭 良好的程式碼總是顯而易見的,避免了那些小聰明、難以理解的語言特性、詭異的控制流和兜圈子。

許多語言都致力提高編寫程式碼的效率。然而,在其生命週期中,人們閱讀程式碼的時間卻遠遠超過最初編寫程式碼所需的時間(100 倍)。例如,審查、理解、除錯、更改、重構或重用程式碼。在檢視程式碼時,往往只能看到並理解其中的一小部分,通常不會有完整的程式碼庫概述。為了解釋這一點,Go 將所有內容都明確出來。

錯誤處理就是一個例子。讓異常在各個點中斷程式碼並在呼叫鏈上冒泡會更容易。Go 需要手動處理和返回每個錯誤。這使得它可以準確地顯示程式碼可以被中斷的位置以及如何處理或包裝錯誤。總的來說,這使得錯誤處理編寫起來更加繁瑣,但是也更容易理解。

簡單易學 Go 是如此的小巧而簡單,以至於人們可以在短短几天內就能研究通整個語言及其基本概念。根據我們的經驗,培訓用不了一個星期(相比於掌握其他語言需要幾個月),初學者就能夠理解 Go 專家編寫的程式碼,併為之做出貢獻。為了方便吸引更多的使用者,Go 網站提供了所有必要的教程和深入研究的文章。這些教程在瀏覽器中執行,允許人們在將 Go 安裝到本地計算機上之前就能夠學習和使用 Go。

解決之道 Go 強調的是團隊之間的合作,而不是個人的自我表達。

在 Go(和 Python)中,所有的語言特性都是相互正交和互補的,通常有一種方法可以做一些事情。如果你想讓 10 個 Python 或 Go 程式設計師來解決同一個問題,你將會得到 10 個相對類似的解決方案。不同的程式設計師在彼此的程式碼庫中感覺更自在。在檢視其他人的程式碼時,國罵會更少,而且人們的工作可以更好地融合在一起,從而形成了一致的整體,人人都為之感到自豪,並樂於工作。這還避免了大型工程的問題,如:

關鍵字:GO  JAVA  程式語言

相關文章