成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go編程語言的真正優點是什么?

譯文
開發
為什么Docker和Kubernetes等項目的開發者會選擇 Go作為開發語言 ?Go 的特征優勢是什么,它與其他編程語言有什么不同,最適合構建什么樣的項目?

在其十多年的發展歷程中,Google 的Go 語言(又名Golang )已經從極客的好奇心發展成為一些重要云中心項目背后久經考驗的編程語言。

為什么DockerKubernetes等項目的開發者會選擇 Go作為開發語言 ?Go 的特征優勢是什么,它與其他編程語言有什么不同,最適合構建什么樣的項目?在本文中,我們將探討 Go 的功能集、最佳用例、語言的遺漏和限制,以及 Go 的發展方向。

Go 語言小而簡單

Go,或者通常所說的 Golang,是由谷歌員工開發的——主要是長期的 Unix 大師和谷歌杰出工程師 Rob Pike——但嚴格來說,它并不是一個“谷歌項目”。相反,Go 是作為一個社區主導的開源項目開發的,由領導層帶頭,他們對 Go 的使用方式和語言的發展方向有強烈的看法。

Go 意味著易于學習、易于使用并且易于其他開發人員閱讀。Go 沒有大量的功能集,尤其是與 C++ 等語言相比。Go 的語法讓人想起 C,這使得長期 C 開發人員學習起來相對容易。也就是說,Go 的許多特性,尤其是它的并發和函數式編程特性,都可以追溯到 Erlang 等語言。

作為一種用于構建和維護各種跨平臺企業應用程序的類 C 語言,Go 與 Java 有很多共同之處。作為一種能夠快速開發可能在任何地方運行的代碼的方法,您可以在 Go 和 Python 之間進行比較,盡管差異遠大于相似之處。

Go 語言適合每個人

Go 文檔將 Go 描述為“一種快速、靜態類型的編譯語言,感覺就像是一種動態類型的解釋語言。” 即使是大型 Go 程序也將在幾秒鐘內編譯。此外,Go 避免了 C 樣式包含文件和庫的大部分開銷。

Go 以多種方式使開發人員的生活變得輕松。

Go很方便

在滿足許多常見編程需求的能力方面,Go 與 Python 等腳本語言進行了比較。其中一些功能內置在語言本身中,例如用于并發和線程類行為的“goroutines”,而 Go 標準庫包中提供了其他功能,例如 Go 的 http 包。與 Python 一樣,Go 提供了自動內存管理功能,包括垃圾收集。

與 Python 等腳本語言不同,Go 代碼編譯為快速運行的本機二進制文件。與 C 或 C++ 不同的是,Go 的編譯速度非常快——足以讓使用 Go 感覺更像是使用腳本語言而不是編譯語言。此外,Go 構建系統沒有其他編譯語言那么復雜。構建和運行 Go 項目只需要幾個步驟和很少的簿記。

Go運行很快

Go 二進制文件的運行速度比 C 對應的要慢,但對于大多數應用程序來說,速度上的差異可以忽略不計。對于絕大多數工作而言,Go 的性能與 C 一樣好,并且通常比其他以開發速度著稱的語言(例如 JavaScript、Python 和 Ruby)快得多。

Go 是便攜式的

使用 Go 工具鏈創建的可執行文件可以獨立存在,沒有默認的外部依賴項。Go 工具鏈可用于各種操作系統和硬件平臺,并可用于跨平臺編譯二進制文件。

Go 是可互操作的

Go 在不犧牲對底層系統的訪問的情況下提供了上述所有功能。Go 程序可以與外部 C 庫對話或進行本地系統調用。例如,在 Docker 中,Go 與低級 Linux 函數、cgroup 和命名空間接口,以發揮容器的魔力。

Go 得到廣泛支持

Go 工具鏈可作為 Linux、MacOS 或 Windows 二進制文件或 Docker 容器免費提供。Go 默認包含在許多流行的 Linux 發行版中,例如 Red Hat Enterprise Linux 和 Fedora,這使得將 Go 源代碼部署到這些平臺變得更加容易。從 Microsoft Visual Studio Code 到 ActiveState 的 Komodo IDE,許多第三方開發環境對 Go 的支持也很強大。

Go 語言在哪里工作得最好

沒有一種語言適合所有工作,但有些語言比其他語言適合更多的工作。

Go 最適合開發以下應用程序類型。

云原生開發

Go 的并發和網絡特性以及高度的可移植性使其非常適合構建云原生應用程序。事實上,Go 曾被用于構建云原生計算的多個基石,包括DockerKubernetesIstio

分布式網絡服務

網絡應用程序的生死取決于并發,而 Go 的原生并發特性——主要是goroutine通道——非常適合這種工作。因此,許多 Go 項目用于網絡、分布式功能和云服務:APIWeb 服務器Web 應用程序的最小框架等。

實用程序和獨立工具

Go 程序編譯成具有最少外部依賴的二進制文件。這使得它們非常適合創建實用程序和其他工具,因為它們可以快速啟動并且可以很容易地打包以便重新分發。一個示例是 稱為 Teleport 的訪問服務器(用于 SSH 等)。Teleport 可以通過從源代碼編譯或下載預構建的二進制文件快速輕松地部署在服務器上。

Go 語言限制

Go 的自以為是的功能集既受到贊揚也受到批評。Go 的設計傾向于小而易于理解,故意省略了某些功能。結果是某些在其他語言中很常見的功能在 Go 中根本不可用——這是故意的。

一個長期存在的抱怨是缺乏通用函數,它允許函數接受許多不同類型的變量。多年來,Go 的開發團隊一直反對在語言中添加泛型,理由是他們想要一種語法和一組行為來補充 Go 的其余部分。但從 2022 年初發布的 Go 1.18 開始,該語言現在包含泛型語法。要吸取的教訓是,Go 很少添加主要功能,而且只有經過深思熟慮,才能更好地保持跨版本的廣泛兼容性。

Go 的另一個潛在缺點是生成的二進制文件的大小。Go 二進制文件默認是靜態編譯的,這意味著運行時所需的一切都包含在二進制映像中。這種方法簡化了構建和部署過程,但代價是簡單的“你好,世界!” 在 64 位 Windows 上重約 1.5MB。Go 團隊一直在 努力在 每個后續版本中減小這些二進制文件的大小。也可以 通過壓縮刪除 Go 的調試信息來縮小 Go 二進制文件。最后一個選項對于獨立的分布式應用程序可能比對于云或網絡服務更有效,如果服務出現故障,則擁有調試信息很有用。

Go 的另一個被吹捧的特性,自動內存管理,可以被視為一個缺點,因為垃圾收集需要一定量的處理開銷。按照設計,Go 不提供手動內存管理,Go 中的垃圾收集因無法很好地處理企業應用程序中出現的各種內存負載而受到批評。

也就是說,每個新版本的 Go 似乎都改進了內存管理功能。例如,Go 1.8顯著縮短了垃圾收集的延遲時間。Go 開發人員確實有能力在 C 擴展中使用手動內存分配,或者通過 第三方手動內存管理庫,但大多數 Go 開發人員更喜歡本地解決方案來解決這些問題。

圍繞為 Go 應用程序(例如桌面應用程序中的那些)構建豐富的 GUI 的軟件文化仍然是分散的。

大多數 Go 應用程序都是命令行工具或網絡服務。也就是說,各種項目正在努力為 Go 應用程序帶來豐富的 GUI。GTKGTK3 框架有綁定 。另一個項目旨在提供 平臺原生 UI,盡管這些依賴于 C 綁定并且不是用純 Go 編寫的。而Windows用戶可以試試 walk。但是在這個領域還沒有出現明確的贏家或安全的長期賭注,一些項目,比如谷歌試圖建立一個 跨平臺的 GUI 庫,已經被擱置了。此外,由于 Go 在設計上是獨立于平臺的,因此這些都不太可能成為標準包集的一部分。

盡管 Go 可以與本機系統函數通信,但它并不是為創建低級系統組件而設計的,例如內核或設備驅動程序或嵌入式系統。畢竟,Go 應用程序的 Go 運行時和垃圾收集器依賴于底層操作系統。(對此類工作的尖端語言感興趣的開發人員可能會研究Rust 語言。)

Go語言的局限

Go 的未來發展將更多地轉向其開發者群體的需求,Go 的思想者會改變語言以更好地適應這些受眾,而不是通過頑固的榜樣來引領。一個典型的例子是泛型,在對最好的方法進行了深思熟慮之后,最終將其添加到語言中。

2021 年 Go 開發者調查發現 ,Go 用戶總體上對該語言提供的功能感到滿意,但也提到了很大的改進空間。Go 用戶希望改進的主要領域是依賴管理(Go 中的一個持續挑戰)、診斷錯誤和可靠性,而內存、CPU 使用率、二進制大小和構建時間等問題的排名要低得多。

大多數語言都傾向于一組核心用例。在圍棋出現的十年里,它的利基市場已經變成了網絡服務,它可能會繼續擴大其占有率。總的來說,該語言引用的主要用例是創建 API 或 RPC 服務 (49%),其次是數據處理 (10%)、Web 服務 (10%) 和 CLI 應用程序 (8%)。

Go 語言越來越受歡迎的另一個標志是有多少開發人員在評估后選擇了它。在考慮使用 Go 進行項目的受訪者中,75% 的人選擇了該語言。在沒有選擇 Go 的人中,Rust (25%)、Python (17%) 和 Java (12%) 是首選。這些語言中的每一種都已經或正在尋找其他利基:Rust 用于安全和快速的系統編程用于原型設計、自動化和粘合代碼的 Python ;和用于長期企業應用程序的Java 。

Go 的速度和開發簡單性將在多大程度上將其帶入其他用例,或者 Go 將在多大程度上滲透到企業開發中,還有待觀察。但是 Go 作為主要編程語言的未來已經得到保證——當然在云中,Go 的速度和簡單性簡化了可長期維護的可擴展基礎設施的開發。

原文標題:??What’s the Go programming language really good for???

責任編輯:黃顯東
相關推薦

2021-11-09 23:15:20

編程語言本質

2010-03-19 18:00:43

Java編程語言

2010-04-19 16:42:14

OraclePL

2020-08-02 19:55:46

Python編程語言技術

2012-05-16 13:11:28

編程語言開發語言Java

2015-06-09 15:28:14

編程能力編程

2022-08-26 09:51:49

索引簽名編程語言

2010-03-11 14:13:20

Python編程

2010-03-10 16:52:00

Python 編程語言

2019-02-11 08:32:22

編程語言Go

2010-03-24 14:55:19

Python編程語言

2020-11-05 09:47:48

云計算IT技術

2014-12-08 09:47:48

Go

2023-11-06 13:32:38

Go編程

2009-12-10 10:33:09

Go語言

2023-07-06 10:45:03

CIO領導力

2010-08-04 09:13:36

Hyper-V快照

2021-01-04 08:00:00

開發Kubernetes人工智能

2023-05-24 09:31:51

CGo

2021-07-23 10:11:33

物聯網IOT
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久99 | 欧美综合在线视频 | 大学生a级毛片免费视频 | 日韩精品视频一区二区三区 | 欧美一级欧美一级在线播放 | 亚洲天堂成人在线视频 | 99精品欧美一区二区蜜桃免费 | 四虎影院在线播放 | 成人在线h | 97精品视频在线观看 | 国产欧美精品一区二区色综合朱莉 | 国产不卡一区在线观看 | 春色av | 亚洲www| 成人免费视频网站在线看 | 国产一区高清 | 亚洲福利一区二区 | 久草中文网 | 成人黄色av网址 | 91久久久精品国产一区二区蜜臀 | 日本高清不卡视频 | 国产激情一区二区三区 | 中文字幕亚洲视频 | www精品美女久久久tv | 精品乱码一区二区 | 美女视频一区 | 亚洲毛片在线观看 | 丝袜 亚洲 欧美 日韩 综合 | 日韩a | 精品国产青草久久久久96 | 日韩欧美在线观看视频 | 男人的天堂久久 | 欧美αv| 国产精品色婷婷久久58 | 中文字幕在线看第二 | 自拍视频一区二区三区 | 国产 亚洲 网红 主播 | 日本一区二区高清不卡 | 每日在线更新av | 爱爱免费视频 | 女同久久另类99精品国产 |