主流程式設計師的絕佳選擇?三個選擇使用 Go 語言的理由

2020-12-14 開源中國

幾個星期前,我一個朋友問我:「為什麼要關心 Go 語言」? 因為他們知道我熱衷於 Go 語言,但他們想知道為什麼我認為其他人也應該關心。本文包含三個我認為 Go 是重要的程式語言的原因。

安全

個人而言,你和我或許完全有能力在 C 中編寫程序,既不會洩漏內存,也不會不安全地重複使用內存。然而,整體上,即使有超過 40 年的經驗,用 C 的程式設計師也無法可靠地這樣做。

儘管靜態代碼分析、valgrind、tsan 以及 「-Werror」 已經存在了幾十年,卻很少有證據表明這些工具被廣泛認可,更不用說廣泛採用。總而言之,事實表明,程式設計師根本無法安全地管理自己的內存。現在是離開 C 的時候了。

Go 不需要程式設計師直接管理內存,所有內存分配都由語言運行時自行管理,使用前初始化,必要時檢查邊界。它肯定不是提供這些安全保障的第一個主流語言,Java(1995)可能是該冠軍的競爭者。關鍵是,世界對不安全的程式語言沒有胃口,所以人們默認認為,Go 是內存安全的。

開發人員生產力

從 20 世紀 70 年代末,開發人員的時間變得比硬體所耗費的時間更昂貴了。開發人員的生產力是一個不斷擴展的話題,但它歸結為這一點:你花了多少時間做有用的工作,又有多少時間等待編譯器或者失望地迷失在外部代碼庫中。

有個笑話說 Go 是在等待 C ++ 程序編譯時開發的。快速編譯是 Go 的一個重要功能,也是吸引新開發人員的關鍵工具。雖然編譯速度仍然是一個永久的戰場,但公平地說,在其他語言中需要幾分鐘的編譯,在 Go 中只需要幾秒鐘。

Go 程式設計師意識到生產力的更根本的問題是代碼是為了讀而寫的,所以將代碼的閱讀行為放在編寫之上。Go 通過工具和自定義來強制所有代碼格式化成特定的樣式。這消除了學習項目特定語言的方言時的困難,並有助於發現錯誤,因為它們看上去就是不正確。

由於專注於分析和機器輔助,Go 開發人員開始採用越來越多的工具來發現常見的編碼錯誤,這種工具從來沒有在 C 語言開發者中產生共鳴 - Go 開發人員希望工具幫助他們保持代碼清潔。

並發性

十多年來,晶片設計師一直在警告免費午餐將會結束。從最低端的手機到最耗電的伺服器,硬體的並行性以更多、更慢、堆砌 cpu 內核的形式出現,但只有你的語言可以利用它們才有意義。因此,並發特性需要內置到我們編寫的要在今天的硬體上運行的軟體中。

通過提供一種基於協程的輕量級並發模型,或者是 Go 中已知的 goroutines,Go 超越了那些暴露作業系統的多進程或多線程並行模型的語言。goroutines 允許程式設計師避開複雜的回調,而語言運行時確保有足夠的線程來保持你的內核的活躍。

總結

我給朋友推薦 Go 有三個原因:安全性、生產力和並發性。有些語言可以涵蓋一個也有可能是兩個方面,但是這三個方面的結合使得 Go 成為主流程式設計師的絕佳選擇。

編譯自:https://dave.cheney.net/2017/03/20/why-go 作者: Dave Cheney
原創:LCTT https://linux.cn/article-8368-1.html 譯者: geekpi
來源:https://linux.cn/article-8368-1.html

相關焦點

  • 知乎問答:為什麼字節跳動選擇使用 Go 語言?
    該提問者說:之前一直是聽說字節跳動使用 Python 語言作為開發的主要語言,今年(2019 年)秋招實驗室去字節跳動的幾個同學分屬於不同部門,被告知使用 Go 語言。問題見:https://www.zhihu.com/question/353085825。
  • GO語言入門(第一個go程序)
    Go語言通過減少關鍵字的數量(25 個)來簡化編碼過程中的混亂和複雜度。函數是 Go 語言中的基本構件,它們的使用方法非常靈活。在第六章,我們會看到 Go 語言在函數式編程方面的基本概念。Go 語言使用靜態類型,所以它是類型安全的一門語言,加上通過構建到本地代碼,程序的執行速度也非常快。
  • 我不喜歡Go語言的十個理由
    但再好的程式語言也不會是完美的程式語言,本文作者 Lawrence 使用了三年 Go 語言,並在這三年間參與了幾個大型 Go 語言項目,但三年後他徹底放棄 Go 語言,而且不打算在新項目中使用它。Go 語言帶給他的總體印象是:「好的方面非常好,不好的方面實在令人無法忍受」。
  • [GO語言基礎] 一.為什麼我要學習Golang以及GO語言入門普及
    庫程序裡有我想要的一切,總體實現較為完善。學習體驗也十分順暢,不得不說,Go 是一種經過精心設計的實用性語言。舉個例子:一旦你知悉了 Go 的語法,就能將其他語言中慣用法延續到 Go 中。只要你學會一些 Go,就可以相對輕易地推測 Go 語言的其他特性。憑藉一些來自其他語言的知識,我能夠閱讀並理解 Go 代碼,而不需要過多的搜索(Google)。
  • 選擇美國留學的十大理由
    也許你不一定確定自己能在國外學習這段經歷中獲得什麼好處,那麼,伯樂留學美國部老師推薦給你十個非常值得讓你考慮出國留學的理由。  1.出國留學是學習語言的最佳途徑。學習語言的最好最有效的方法就是沉浸在這種你需要學習的語言氛圍之中。
  • 2020 年為什麼要選擇 Go 並放棄 Python
    否則將會選擇Python。那麼我們討論一下。Python 的夥伴們,有 5 個理由可以讓您選擇 Go。讓我們一起閱讀這篇文章。「 Python非常強大,尤其是 Python 3 具有異步功能,但是 Go 將完全取代它在大型企業中的地位……」如果您真的理解引號,則可以嘗試使用 Go 程式語言。
  • C語言簡明教程(四)選擇程序設計
    >(四)選擇程序設計實驗內容前面講述了順序結構設計,同時在裡面穿插了 C 語言的數據類型和運算符等內容。知識點條件判斷案例用 if 語句實現選擇結構關係運算符和關係表達式邏輯運算符和邏輯表達式條件運算符和條件表達式用 switch 語句實現多分支選擇結構接下來,我們將通過一些實際的例子,來熟悉 C 語言的選擇結構,以及相關語言的語法特點。
  • 作為多年 PHP 的開發者,在使用了 Go 語言之後……
    Go 是一種功能強大的程式語言,具有獨特的功能組合。而 PHP 是在伺服器端執行的腳本語言,與 C 語言類似,是常用的網站程式語言,同時適用於所有微服務、小型、中型乃至大型應用程式。對於開發者而言,兩者在使用過程中,有哪些不同的體驗?本文即將為大家揭曉。
  • 一次使用 Go 語言編寫腳本的經歷
    如果我的大多數代碼使用 Go 語言編寫,那麼我更傾向於使用 Go 作為我的腳本語言。當代碼由許多人協作維護,那麼使用一種大家都能完全掌控的語言會降低維護成本,即使是一些腳本。Go 語言已經 99% 支持腳本事實上,我已經可以使用 Go 語言來編寫腳本。
  • Go語言:1分鐘寫下第一個Go程序,並在終端裡以指令方式運行
    GOPATH變量不設置,不影響運行,它在Go語言安裝包默認安裝後有一個~/go的默認地址,但$GOPATH/bin必須添加到$PATH的路徑中。這是所有開發者自安裝的Go語言第三方類庫所生成的工具指令,在系統上能夠被查到的基礎,如果不設置,系統不知道去哪裡查找我們在終端裡隨意寫出的指令名稱。舉個例子,gin是一個Go語言編寫的為Go程序提供熱編譯功能的工具。
  • 4個選擇雙體船的理由
    4個選擇雙體船的理由近年來,隨著越來越多的船東和遊艇租賃客戶都願意選擇在雙體船上享受奢華遊艇租賃假期,豪華雙體船業務呈現爆炸式增長。租賃一艘雙體船出遊都會給你帶來卓越的體驗以及許多你意想不到的好處。當你準備下一次航海之旅時,為什麼不也選擇一艘豪華雙體遊艇呢? 至少有4大理由可以支持你的決定。01在海上頂級的舒適享受豪華雙體船在停泊時非常穩定,正如任何一個遊艇租客都會告訴你的那樣,完全打破了你對豪華包租遊艇旅程的體驗。
  • 解讀 Go 語言的 2019:Go 語言不行了嗎?
    已經在使用 Go 語言的技術團隊逐漸開始專注於埋頭寫代碼,而剛開始使用 Go 語言的團隊也沒有進行大肆的宣傳。Go 語言已經悄悄地變成了我們的家常便飯。Go 語言目前所擅長的領域仍然在服務端的 Web 系統、API 網關、中間件、緩存系統,以及資料庫、容器技術和雲計算等方面。在這些方面,我們有非常多的框架可以選擇。
  • go語言有哪些優勢
    Go裡面的標準庫基本上已經是非常穩定了,特別是我這裡提到的三個,網絡層、系統層的庫非常實用。Go 語言的 lib 庫麻雀雖小五臟俱全。Go 語言的 lib 庫中基本上有絕大多數常用的庫,雖然有些庫還不是很好,但我覺得不是問題,因為我相信在未來的發展中會把這些問題解決掉。
  • 大數據開發語言怎麼選?Scala還是Go
    Play框架提供了一個高度並發的Web框架,以構建由Akka支持的應用程式和API。 巨石架構。 對於大型整體應用程式(甚至是分布式應用程式),Scala是絕佳的選擇。 使用Akka群集,您可以在單個應用程式內創建高度分散的應用程式。 通常,Scala用於為特定領域(例如Akka或Spark)構建框架和庫。
  • 商城系統開發,選擇PHP語言開發好,還是選擇JAVA語言開發好?
    在網際網路快速發展的今天,越來越多的企業通過開發商城系統來拓展自己的業務,目前商城開發系統的主流語言有兩個:PHP語言和JAVA語言,很多企業也會糾結:用哪種語言開發的商城更好呢? 商城系統開發,選擇PHP語言開發好,還是選擇JAVA語言開發好?
  • Go語言(Golang)環境搭建詳解
    這個的確是我忽略了,按照我寫書的邏輯,也是先有環境搭建,才能有語言功能介紹,這個直接把Go語言的開發環境搭建等配置跳過去實在不應該,所以這篇特意針對Go語言的開發環境搭建、配置、編輯器選型、不同平臺程序生成等做了詳細的介紹。
  • Go 泛型的括號選擇:[ ] or ( )?
    Go 語言設計者 Robert Griesemer 和 Ian Lance Taylor 近日在 Golang 官方論壇發帖討論關於泛型及其括號使用的問題
  • 選擇西雪梨大學翻譯專業的N個理由
    因此,選擇一所合適的學校就顯得尤為重要。  選擇西雪梨大學翻譯專業的N個理由!  西雪梨大學提供廣泛的課程,從本科、研究生證書到碩士,每個課程都有特定的語言重點。課程適合所有需求和層次,有靈活的開始和結束的時間和獲得專業認證的機會  畢業後可以報考NAATI的四項翻譯認證!
  • 小試牛刀,手把手帶你實現第一個Go程序
    大家好,我是星期八,是一個每天都要在鏡子前給自己梳僅剩三根頭髮的三年碼農。上篇文章,我們已經搭建了Go語言環境,可以戳這裡:手把手帶你進行Golang環境配置,本次我們來安排一下如何在win平臺上輸出都一個Go程序。
  • 2021選擇塔斯馬尼亞大學的7個理由!
    於是向學姐學長們搜集了大家為什麼選擇在塔大讀書的理由,分享給你做參考哦! 理由一 選擇塔大,更容易為將來自己在澳洲生活、融入社區做好準備! 理由二 絕佳的英語學習環境 塔斯馬尼亞相對其它澳洲大城市,中國留學生沒有那麼多,因此有更多的機會接觸當地人或其它國際留學生。