
文章插圖
2007 年 9 月 21 日 , Robert Griesemer , Rob Pike 和 Ken Thompson 在一塊白板上勾勒了一個新語言 , 并在幾天內(nèi)定下了計劃和目標(biāo) , 作為一個自由時間的項目進(jìn)行;2008 年年中 , 這個項目得到 Google 的全力支持 , 成為了一個全職項目;2009 年 11 月 , Go 語言正式開源 [1] , 并于三年后發(fā)布 1.0 版本 。發(fā)布 12 年至今 , 已有上百萬開發(fā)者成為“gopher” , 已經(jīng)遠(yuǎn)超設(shè)計者最初的預(yù)期 。
# 源起 #Go 語言的開發(fā)團(tuán)隊可以說是高人云集:Ken Thompson 創(chuàng)造了 B 語言(C 語言前身) , 是 Unix 和 Plan9 操作系統(tǒng)的創(chuàng)立者之一 , 和 Dennis Ritchie 一起獲得了 1983 年的圖靈獎;Rob Pike 是 Unix 小組成員 , 也是 Limbo 語言和 UTF-8 編碼的主要設(shè)計者;Robert Griesemer 曾參與制作 Google 的 JavaScript 引擎 V8、Java 的 HotSpot 虛擬機(jī)和領(lǐng)域特定語言 Sawzall [2](Sawzall 最早被 Google 用于處理大批量日志 , 后來基本被 Go 取代[3]) 。
Go 語言的三位創(chuàng)始人在 Google I/O 2012 – Meet the Go Team
隨著 Go 的發(fā)展 , 出現(xiàn)了一些聲音稱 Go 語言沒什么技術(shù)優(yōu)勢 , 而 Rob Pike 對此的態(tài)度是“你們是對的” , Go 語言本身 “并不有趣” , 其設(shè)計初衷不是為了推動編程語言設(shè)計的進(jìn)步 , 是為改善軟件工程的工作環(huán)境而生 [4] 。
當(dāng)時 Google 面臨著軟件大規(guī)模增長的問題 , 開發(fā)方式變得緩慢而笨拙 。規(guī)?;诟鞣N維度上均存在 , 比如多核并行、生產(chǎn)需求和依賴關(guān)系等 , 導(dǎo)致硬件和軟件都非常大 , 很多軟件的代碼多達(dá)百萬行(大部分使用 C++、Java 或 Python) 。Go 語言的誕生解決了大規(guī)模的軟件開發(fā)中一些核心痛點 , 比如開發(fā)緩慢、不受控制的依賴關(guān)系、代碼理解困難和重復(fù)造輪子等 。[5]
官網(wǎng)描述 Go 語言可用于構(gòu)建“簡單、可靠、高效的大規(guī)模軟件” , JetBrains 2021 年的最新調(diào)研報告顯示 , 程序員們在工作中使用 Go 語言的比例達(dá)到了 61%(Rust 語言用于工作的比例僅 16%) [6] 。
使用 Go 的場景
可見 Go 確實不是一門“有趣”的編程語言 , 而更看重工程實踐中的實用性 , Go 語言設(shè)計中的方方面面都在體現(xiàn)這一點 。
# 演進(jìn) #版本更新歷史 [7][8]:
2012 年 3 月 , 語言第一個正式版本 Go 1.0 發(fā)布 , 同時還有一份兼容性說明文檔說明未來版本會確保向后兼容性 。2013 年 5 月 , Go 1.1 發(fā)布 , 這個版本的編譯器、垃圾回收機(jī)制、goroutine 調(diào)度器性能均有增強(qiáng) 。2014 年 12 月 , Go 1.4 發(fā)布 , 堆棧大小減少了 10~30%;Android 官方支持包隨版本一起發(fā)布;同時 Go 項目從 Google Code 遷移到了 Github 。2015 年 8 月 , Go 編譯器實現(xiàn)自舉 , 完全移除了 C 語言;重新設(shè)計了垃圾回收器 , 支持并發(fā) , 垃圾回收延遲顯著降低 , 此后版本對垃圾回收器有更進(jìn)一步的優(yōu)化 。2018 年 8 月 , Go 1.11 版本引入了 Go 模塊功能 , 以響應(yīng)在當(dāng)年語言調(diào)研中反饋的模塊管理問題;增加了實驗性的 WebAssembly 支持 。2019 年 9 月 , Go 1.13 版本中 , 改進(jìn)了 sync 包 Pool 組件的資源被垃圾回收器清除的機(jī)制;重寫了逃逸分析邏輯 。2020 年 8 月 , Go 鏈接器得到了實質(zhì)性的提高 , 減少了30% 的內(nèi)存資源占用 , 提高了代碼的可維護(hù)性 。2021 年 2 月 , Go 1.16 支持了 macOS ARM64;同時默認(rèn)使用 Go 模塊功能(同樣來自調(diào)研報告反饋的情況) 。2021 年 8 月 , Go 1.17 發(fā)布 , 增加了對 Windows ARM64 的支持;語言有三個小的增強(qiáng)(unsage 包的兩個新函數(shù)和語言類轉(zhuǎn)換規(guī)則的擴(kuò)展) 。Go 語言并沒有特別激進(jìn)的新特性 , 而是從早期的編程語言中繼承了很多內(nèi)容 , 并做了有效的組合 [9] 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 什么人適合學(xué)漢語言文學(xué)
- 中國古典舞4個動態(tài)語言“中性化”
- 網(wǎng)絡(luò)語言中的外來詞
- 程序員編程培訓(xùn):程序員應(yīng)該學(xué)習(xí)的5種編程語言
- 描寫大自然的句子 鮮活別致,常讀讀,告別干巴巴的語言!80句描寫大自然的比喻句。
- 利用狐貍精變化的美女去迷人 nxgx100%video美國
- 政務(wù)信息怎么寫
- 朝鮮和韓國語言一樣嗎
- 語言訓(xùn)練課程視頻 語言訓(xùn)練
- 有關(guān)保齡球的語言
