選擇Go語言的12個理由
多核化和叢集化是網際網路時代的典型特徵,那語言需要哪些特性來應對這些特徵呢?多數語言在語法層面並不直接支援協程,而通過庫的方式支援的協程的功能也並不完整,比如僅僅提供協程的建立、銷燬與切換等能力。如果在這樣的協程中呼叫一個同步 IO操作,比如網路通訊、本地檔案讀寫,都會阻塞其他的併發執行協程,從而無法真正達到協程本身期望達到的目標,而Go語言的出現解決了這個問題。
以下是原文:
Go語言是谷歌推出的一種程式語言,可以在不損失應用程式效能的情況下降低程式碼的複雜性。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語言編譯速度很快,如此快速的編譯使它很容易作為指令碼語言使用。因為谷歌設計Go語言就是為了解決谷歌自身的問題——數以萬計的程式碼和CPU核心。我自己的也驗證過Go語言的編譯速度,幾乎是和語言同步進行。
4. 跨平臺
Go語言可以在多個平臺上進行編譯。Go語言設計支援主流的32位和64位的x86平臺,同時也支援32位的ARM架構,同時支援多種作業系統,在企業中不需要針對系統環境做額外的部署。
5.測試調優框架
這些基準測試可以檢視: my recent post about Golang benchmarking
6. 語言級並行
併發性是能夠同時執行多個計算結果。現在併發性已經成為衡量一個語言的關鍵特性,Go語言就是基因裡面支援的併發,可以充分的利用多核,很容易的使用併發。
7. 程式碼風格 - gofmt
通過谷歌的頁面可以看見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. 經過線上大規模考驗的成功案例
我研究越多,越讓我印象深刻。還有很多好處我沒有列出來,因為實在是太多了。通過一些具體的案例來展示一下吧。
iron.io
"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
bitly.com
"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
torbit.com
"We process over 6 billion performance metrics a day and our goal is to keep our customers’ data safe forever." — Read Case Study
conformal.com
"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
相關文章
- Java和Go語言二選一,選擇哪門語言好?JavaGo
- go語言面試選擇題11道(4)go語言深入學習Go面試
- 選擇Nodejs的N個理由NodeJS
- Go語言面試題分享:選擇題10道(3)go語言學習Go面試題
- Go語言面試題分享:選擇題11道(2)go語言開發Go面試題
- Go語言面試題分享:選擇題10道(1)go語言學習Go面試題
- 從Go、Swift出發:語言的選擇需謹慎GoSwift
- 我們選擇java的理由Java
- 一個Go語言程式設計的好選題Go程式設計
- 學習程式設計,python和GO語言應該選擇哪一個?程式設計PythonGo
- IT培訓分享:選擇哪個程式語言好?
- C語言-選擇結構C語言
- 選擇或者放棄MySQL的理由MySql
- 給《Laravel 中文文件》新增一個語言選擇選單Laravel
- 探究:初學者程式語言的選擇
- 論語言選擇的關鍵 (轉)
- go語言的31個坑Go
- C+、Java、Python選擇哪個程式語言?JavaPython
- 選擇一門程式語言,任何一門語言
- 選擇跟程式設計師約會的10個理由程式設計師
- 選擇HHDESK的理由二【檔案共享】
- 如何選擇大資料的程式語言大資料
- 如何選擇適合自己的程式語言
- 程式語言的異同及選擇 (轉)
- Go 語言 12 條最佳實踐Go
- 【譯】13 個你應該選擇/考慮使用 Flutter 的理由Flutter
- 闡述選擇遊戲設計師職業的5個理由遊戲設計師
- 選擇商業庫而不是開源庫的 8 個理由
- 釋出八年,越來越完善的Go語言你會選擇嗎?Go
- go的選擇UIGoUI
- 比原鏈CTO James | Go語言成為區塊鏈主流開發語言的四點理由Go區塊鏈
- C語言排序 冒泡 選擇 快排C語言排序
- 新程式語言選擇需謹慎
- 選擇Apache Pulsar而不是Kafka的理由 - KafkaesqueApacheKafka
- 如何選擇你的第一門程式語言
- web開發語言的選擇:PHP or JAVA薦WebPHPJava
- UC瀏覽器開發語言的選擇瀏覽器
- 《快學 Go 語言》第 12 課 —— 通道Go