編者按:多核化和集群化是互聯(lián)網(wǎng)時代的典型特征,那語言需要哪些特性來應(yīng)對這些特征呢?多數(shù)語言在語法層面并不直接支持協(xié)程,而通過庫的方式支持的協(xié)程的功能也并不完整,比如僅僅提供協(xié)程的創(chuàng)建、銷毀與切換等能力。如果在這樣的協(xié)程中調(diào)用一個同步 IO操作,比如網(wǎng)絡(luò)通信、本地文件讀寫,都會阻塞其他的并發(fā)執(zhí)行協(xié)程,從而無法真正達(dá)到協(xié)程本身期望達(dá)到的目標(biāo),而Go語言的出現(xiàn)解決了這個問題。
以下是原文:
Go語言是谷歌推出的一種編程語言,可以在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性。Go語言專門針對多處理器系統(tǒng)應(yīng)用程序的編程進(jìn)行了優(yōu)化,使用Go編譯的程序可以媲美C或C++代碼的速度,而且更加安全、支持并行進(jìn)程。
Go語言在編程語言的家族中算是一個比較新的成員,彌補C語言的不足并且保持了C的極簡主義,因此在過去的幾年中它的發(fā)展卻十分迅速。目前在我的工作中Go語言也充當(dāng)著一個重要的角色!
到底Go語言對企業(yè)來說有什么好處?下面簡單介紹一下企業(yè)選擇Go語言的12個理由:
1. 一個完整的語言體系
Go語言已經(jīng)逐漸發(fā)展成一個完整的體系,不論是Go項目自身還是ta的社區(qū)都有了極大的發(fā)展。
2. C級性能
Go語言目前的性能已經(jīng)達(dá)到了C語言的程度。而且Go語言的性能要比其他企業(yè)級語言(如Java、Scala等)更強。隨著Go語言版本的更新,它將會變得愈來愈成熟。
"Go is like a better C, from the guys that didn’t bring you C++" ― Ikai Lan
3. 快速編譯
Go語言編譯速度很快,如此快速的編譯使它很容易作為腳本語言使用。因為谷歌設(shè)計Go語言就是為了解決谷歌自身的問題――數(shù)以萬計的代碼和CPU核心。我自己的也驗證過Go語言的編譯速度,幾乎是和語言同步進(jìn)行。
4. 跨平臺
Go語言可以在多個平臺上進(jìn)行編譯。Go語言設(shè)計支持主流的32位和64位的x86平臺,同時也支持32位的ARM架構(gòu),同時支持多種操作系統(tǒng),在企業(yè)中不需要針對系統(tǒng)環(huán)境做額外的部署。
5.測試調(diào)優(yōu)框架
這些基準(zhǔn)測試可以查看: my recent post about Golang benchmarking
6. 語言級并行
并發(fā)性是能夠同時執(zhí)行多個計算結(jié)果?,F(xiàn)在并發(fā)性已經(jīng)成為衡量一個語言的關(guān)鍵特性,Go語言就是基因里面支持的并發(fā),可以充分的利用多核,很容易的使用并發(fā)。
7. 代碼風(fēng)格 - gofmt
通過谷歌的頁面可以看見Go語言里面內(nèi)置了很多工具鏈,最好的應(yīng)該是gofmt工具,自動化格式化代碼,能夠讓團(tuán)隊review變得如此的簡單,代碼格式一模一樣,想不一樣都很困難
8.內(nèi)置文檔 - godoc
企業(yè)中API和程序的相互協(xié)作以及和第三方協(xié)作是非常重要的,Go語言可以建立一個代碼的內(nèi)置文檔-godoc,可以分享將資源在代碼中進(jìn)行分享。
9.自動垃圾回收
在C和c++程序員花費很多的時間和精力分配和釋放內(nèi)存,R語言則可以消除這種情況,確保程序員可以集中精力進(jìn)行更多的生產(chǎn)任務(wù)。當(dāng)然垃圾收集也有自身的問題,不過這些都是通過語言來實現(xiàn)的,不需要程序員進(jìn)行額外的工作。
10. 豐富的庫
一個豐富的庫對于任何一種語言都是非常重要的,可以通過 the list of packages in Go查看Go語言的庫,包括壓縮、加密、大量的數(shù)據(jù)結(jié)構(gòu)、SQL語句、JSON和XML解析、模板、網(wǎng)絡(luò)等等。
11. 有趣的語言,低門檻學(xué)習(xí)條件
有一些優(yōu)秀的程序員可以學(xué)習(xí)多種語言,他們是非常優(yōu)秀的。但是作為一個普通人,學(xué)習(xí)語言還是很痛苦的,但是Go語言有C的基因,學(xué)習(xí)門檻很低,但是表達(dá)能力很強大,幾乎支持大多數(shù)你在其他語言見過的特性:繼承、重載、對象等。
"After Go, programming in anything else seems as difficult as balancing the State of California’s budget." ― Charles Thompson
12. 經(jīng)過線上大規(guī)模考驗的成功案例
我研究越多,越讓我印象深刻。還有很多好處我沒有列出來,因為實在是太多了。通過一些具體的案例來展示一下吧。
"In retrospect, it was a great decision to choose Go as it's allowed us to build great products, to grow and scale, and attract grade A talent." ― Read Case Study
"We identified early on that Go had all the makings of a language that could supersede some of the places we would have traditionally turned to C and some of the places where we wanted to move away from Python." ― Read Case Study
"We process over 6 billion performance metrics a day and our goal is to keep our customers’ data safe forever." ― Read Case Study
"In summary, Go makes hacking fun again by doing away with intellectual masturbation and terrible, terrible tools. It compiles super fast and runs at native speeds. Any C expert can pick it up over the course of a few weeks and with its awesome data representation features I believe we could rewrite a product such asCyphertite in 25% as many lines of code." ― Read Case Study原文鏈接:12 Benefits of Golang For Enterprise Systems (編譯:劉亞瓊/審校:仲浩)