Go語言與其它程式語言的對比

2020-07-16 10:05:09
近年來,Go語言在國內的知名度越來越高,使用量也在爆發式增長,那麼和其他的程式語言相比Go語言到底有哪些優勢和不足呢?本節我們就來聊聊。

Go語言的設計初衷

2007 年,受夠了 C++ 煎熬的 Google 首席軟體工程師 Rob Pike 糾集 Robert Griesemer 和 Ken Thompson 兩位牛人,決定創造一種新語言來取代 C++。

根據 Google 當時內部的一些實際情況,比如大部分工程師使用的都是C語言,所以新設計的語言最好跟C語言類似,而且要簡單易學。另外,因為已經有二十年左右的時間沒有出現新的程式語言了,所以新設計的語言一定要足夠現代化(例如內建 GC),因此才出現了現在的Go語言。

在Go語言問世後,很多人將它稱為 21 世紀的C語言,因為Go語言不僅擁有C語言的簡潔和效能,還擁有媲美直譯語言的開發效率以及近乎於完美的編譯速度,同時還很好的提供了 21 世紀網際網路環境下伺服器端開發的各種實用特性。

Go語言的優勢

Go語言借鑒了很多程式語言的優點,並運用到了自身當中。下面我們來看看與其他主流語言相比,Go語言具有的優勢。

1) 學習成本低,因為Go語言語法相對簡單,同時包含了許多類似C語言的語法,所以Go語言學起來非常容易,開發人員可以很輕鬆的開發出高效能的應用。在國內大家都追求效率,講究一個“快”字,這也是Go語言在國內比較流行的原因之一。

2) Go語言的編譯速度快,而且執行效率高。相對於 Java 和 C++ 而言,Go語言在編譯速度方面佔據着絕對的優勢,同時Go語言還擁有著接近C語言的執行效率和媲美直譯語言的開發速度。

3) Go語言的標準庫非常豐富,主要包括網際網路應用、系統程式設計和網路程式設計等方面。Go語言的標準庫中包含了絕大多數的常用庫,雖然有些庫並不是很好用,但隨著Go語言的不斷發展,相信這些問題最終都會被解決掉。

4) Go語言從語言層面實現了並行程式設計,並且使用起來比絕大多數程式語言要簡潔,在當今這個多核心的時代,並行程式設計的意義不言而喻,這也是Go語言最大的亮點之一。

Go語言的劣勢

下面,我們來客觀地看一下目前Go語言需要加強或改進的地方。

1) Go語言中的包管理並不完美。為 Go 新增某個依賴時僅僅只是將依賴項的原始碼庫拷貝到 GOPATH 中,但是使用什麼版本呢?如果不同專案需要不同版本的依賴項怎麼辦呢?沒辦法。Go語言中版本的概念基本上等於不存在。相比之下 Python、NodeJS(npm)和 Ruby 都有相對維護良好的包管理系統。

2) Go語言不支援泛型,對於大多數靜態型別語言(如 C++、Java 等)來說都是支援泛型的,這無疑會使得從 Java 或 C++ 語言轉向Go語言的開發者感到不爽。

3) Go語言第三方庫的數量還遠遠不及其他幾門主流語言(比如 Java、Python、Ruby 等)。不過與Go語言的年紀相比,用它實現的第三方庫已經相當多了,並且它們的數量在持續地飛速增長中。

4) 另外,Go語言網路資源比較匱乏,雖然網上也有不少關於Go語言的貼文,但是有價值的並不多,針對某個問題搜尋到的答案往往都是些重複的內容,這點很讓人上火。

總之,沒有十全十美的程式語言,雖然Go語言還有一些瑕疵,但從整體來看,它已經是一門非常優秀的通用程式語言了。