這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
編者按:多核化和叢集化是互連網時代的典型特徵,那語言需要哪些特性來應對這些特徵呢?多數語言在文法層面並不直接支援協程,而通過庫的方式支援的協程的功能也並不完整,比如僅僅提供協程的建立、銷毀與切換等能力。如果在這樣的協程中調用一個同步 IO操作,比如網路通訊、本地檔案讀寫,都會阻塞其他的並發執行協程,從而無法真正達到協程本身期望達到的目標,而Go語言的出現解決了這個問題。
以下是原文:
Go語言是Google推出的一種程式設計語言,可以在不損失應用程式效能的情況下降低代碼的複雜性。Go語言專門針對多處理器系統應用程式的編程進行了最佳化,使用Go編譯的程式可以媲美C或C++代碼的速度,而且更加安全、支援並行進程。
Go語言在程式設計語言的家族中算是一個比較新的成員,彌補C語言的不足並且保持了C的極簡主義,因此在過去的幾年中它的發展卻十分迅速。目前在我的工作中Go語言也充當著一個重要的角色!
到底Go語言對企業來說有什麼好處?下面簡單介紹一下企業選擇Go語言的12個理由:
1. 一個完整的語言體系
Go語言已經逐漸發展成一個完整的體系,不論是Go項目自身還是ta的社區都有了極大的發展。
2. C級效能
Go語言目前的效能已經達到了C語言的程度。而且Go語言的效能要比其他企業級語言(如Java、Scala等)更強。隨著Go語言版本的更新,它將會變得愈來愈成熟。
"Go is like a better C, from the guys that didn’t bring you C++" — Ikai Lan
3. 快速編譯
Go語言編譯速度很快,如此快速的編譯使它很容易作為指令碼語言使用。因為Google設計Go語言就是為瞭解決Google自身的問題——數以萬計的代碼和CPU核心。我自己的也驗證過Go語言的編譯速度,幾乎是和語言同步進行。
4. 跨平台
Go語言可以在多個平台上進行編譯。Go語言設計支援主流的32位和64位的x86平台,同時也支援32位的ARM架構,同時支援多種作業系統,在企業中不需要針對系統內容做額外的部署。
5.測試調優架構
這些基準測試可以查看: my recent post about Golang benchmarking
6. 語言級並行
並發性是能夠同時執行多個計算結果。現在並發性已經成為衡量一個語言的關鍵特性,Go語言就是基因裡面支援的並發,可以充分的利用多核,很容易的使用並發。
7. 代碼風格 - gofmt
通過Google的頁面可以看見Go語言裡面內建了很多工具鏈,最好的應該是gofmt工具,自動化格式化代碼,能夠讓團隊review變得如此的簡單,代碼格式一模一樣,想不一樣都很困難
8.內建文檔 - godoc
企業中API和程式的相互協作以及和第三方協作是非常重要的,Go語言可以建立一個代碼的內建文檔-godoc,可以分享將資源在代碼中進行分享。
9.自動記憶體回收
在C和c++程式員花費很多的時間和精力分配和釋放記憶體,R語言則可以消除這種情況,確保程式員可以集中精力進行更多的生產任務。當然垃圾收集也有自身的問題,不過這些都是通過語言來實現的,不需要程式員進行額外的工作。
10. 豐富的庫
一個豐富的庫對於任何一種語言都是非常重要的,可以通過 the list of packages in Go查看Go語言的庫,包括壓縮、加密、大量的資料結構、SQL語句、JSON和XML解析、模板、網路等等。
11. 有趣的語言,低門檻學習條件
有一些優秀的程式員可以學習多種語言,他們是非常優秀的。但是作為一個普通人,學習語言還是很痛苦的,但是Go語言有C的基因,學習門檻很低,但是表達能力很強大,幾乎支援大多數你在其他語言見過的特性:繼承、重載、對象等。
"After Go, programming in anything else seems as difficult as balancing the State of California’s budget." — Charles Thompson
12. 經過線上大規模考驗的成功案例
我研究越多,越讓我印象深刻。還有很多好處我沒有列出來,因為實在是太多了。通過一些具體的案例來展示一下吧。