標籤:

「Go語言編程」5,go和node.js的對比

以下內容轉自csdn,原作者為qizhiqq。為便於理解,有部分刪改。

拋開具體的使用場景,討論哪種工具更好用是沒有意義的。工具好不好用,關鍵看做什麼。殺雞用牛刀,牛刀就不是好工具。

我喜歡用go語言,因其簡單,性能調憂無硬傷,沒有性能天花板。go語言的缺陷,在於開始這幾年類庫少,開發不夠敏捷。但隨著程序員的輪子越造越多,這一情況也會得到改善。

我也不排斥使用其它語言,事實上我經常修改別人的php、python、perl源碼,臨時為已所用。但在自己的項目中,我總還是喜歡統一用go語言。

在web開發中,我會考慮使用nodejs,它天生具有敏捷易用的特點,加上npm,做一個小項目,很快便能看到效果。一些新項目,不妨使用nodejs快速創建,待需求驗證之後,用戶量上來之後,再用go語言重構關鍵模塊。

以下為正文——

Go

知名 nodeJS 框架 Express 的作者 TJ Holowaychuk 在 Twitter 發推並鏈接了自己的一篇文章,宣布棄 nodeJS 投 Go。

他給出的理由是:Go 語言和 Rust、Julia 等都是眾多的下一代語言之一,雖然不能說它是最好的語言,但已足夠成熟和穩健,用 Go 語言開發的系統性能更好,更容易維護,錯誤處理等方面也更出色。

Golang的誕生有著很強的目的性,所以根基顯得非常的沉穩,語言未來針對高性能,高並發的優化也更得心應手。更主要Golang可以切實的解決實際問題,並在內存與CPU使用上大幅優於node。為此,針對有大量請求的服務端,Golang是個不錯的選擇。

從大型工程的角度來說,go 是完爆 Node 的。性能,內存開銷,靜態類型,對非同步的處理,異常的處理,可調試性,系統穩定度,工具鏈的成熟度,等等,都是 go 佔優。

Go的目標是希望提升現有編程語言對程序庫等依賴性(dependency)的管理,這些軟體元素會被應用程序反覆調用。由於存在並行編程模式,因此這一語言也被設計用來解決多處理器的任務。使用Go編譯的程序可以媲美C或C++代碼的速度,而且更加安全、支持並行進程。

NodeJs

Node 在依賴處理方面更好,npm 對依賴版本的管理 (go 的依賴不能指定版本,還需要藉助非官方的工具)非常優秀,另外 Node 社區的活躍度要比 go 好。

Node 在做網站這方面,尤其是需要直接面向用戶的 http 伺服器這方面,有一個天然的優勢,那就是前後端的語言統一。一方面可以減少切換語言的腦力成本,提高開發者的效率,另一方面可以實現前後端共享模板,從而實現首屏伺服器渲染,局部更新瀏覽器渲染的架構,提高首屏的載入速度。

如果你做的網站後台就是個簡單的 CRUD 應用,或者是做產品原型,或者你同時還想兼顧前端,Node 會是更好的選擇;但如果你的後台很複雜,需要區分各種服務,搞數據分析,分散式集群等等,那絕對是選 go。

推薦閱讀:

node相比傳統服務端技術棧差在哪裡?
Process.nextTick 和 setImmediate 的區別?
Node.js 適合用來做 web 開發嗎?
使用markdown製作的html幻燈片有哪些?
手機遊戲伺服器端用node.js 還是用go,fibjs之類等比較好?

TAG:Go語言 | Nodejs |