我們真的需要Go語言嗎?

葉魚


看你怎麼看。

如果是實用角度我覺得意義不大。至少我看了一遍語法。本質就是把很多想法加入到語法層。channel就是mq,然後slice就是減少數組的複製,goroutine其實netty也是類似的事情,好像nodjs也是差不多的理念。唯一覺得沒有加入reactor。但是go的理念就是小,加入不見得有多大的意義。

你要說實驗性質的話,我覺得還是有意義的。因為以後服務器必然是微服務的時代。這類都在語法層面的東西,一來性能強。二來不用引用一堆庫。其實還是不錯的嘗試。

做技術嗎,好奇心很重要。不要太功利。就像是我學GO的主要原因,還是為了在aws裡面的lambda來用。


大象亂彈


對於大多數企業而言,他們早期的Web應用程序在構建時並未考慮到可伸縮性和易用性。隨著業務的增長,這些應用程序越來越難以處理更頻繁的請求和更重的負載,例如寫Java的朋友們會覺得代碼量太大太難寫,而像寫Python這種動態語言到業務多了之後會發現動態類型是一種災難。

所以Google工程師在2007年開發了一種名為Golang(簡稱Go)的語言來解決這些問題。它易於部署,強大的併發性和簡單的語法使Go語言成為編譯快速、可擴展的應用程序並與您的業務一起協同進步的一門編程語言。

我認為是這樣子的,隨著時代發展,我們是需要一門運行速度又快、代碼又穩健、又容易編寫的編程語言,雖然Go不是最符合的,但至少目前發展潛力還不錯。有用過就知道Go實際上現在已經屬於挺成熟的一門語言,至少擁有以下優點:

編譯語言

Go是一種編譯語言。編譯語言以其執行速度而聞名,因為它們被直接轉換為機器級代碼,可以直接由計算機讀取,而不是每次運行應用程序時都被解釋,如JavaScript。因此,當您完成源代碼的編寫時,它會通過編譯器運行,該編譯器會將源代碼轉換為可執行文件,該文件可以分發到另一臺計算機上運行該程序。

編譯器

除了作為一種編譯語言的快速之外,Go編譯器還具有其他優勢,例如能夠檢查錯誤,更易於部署以及能夠優化代碼以提高效率。

錯誤檢查

Go編譯器的錯誤檢查能夠檢測未使用的變量,缺少的包或運行和錯誤輸入或無效操作所必需的導入。

編譯器會在程序的生成過程中發現這些錯誤。因此Go甚至可以在運行程序之前讓您瞭解什麼有效,什麼無效和錯誤的,從而節省了開發過程中的時間,而無需搜索錯誤。

垃圾收集

垃圾回收或自動內存管理是Go語言的一項關鍵功能。Go擅長對內存分配進行大量控制,並且在最新版本的垃圾收集器中大大降低了延遲,平均延遲低於1毫秒。Go的垃圾收集器通過與程序併發運行並使用三色標記和清除算法來實現此目的。

可擴展性

由於Go是由Google構建的,因此在設計時考慮了可伸縮性。隨著應用程序的增長,它們需要同時處理許多較小的子任務,在應用程序中同時運行任務稱為併發。Go具有許多旨在處理併發性的內置功能,尤其是goroutine和通道。

Goroutines是能夠與其他函數同時運行的函數。通道允許不同的goroutine相互通信,以確定如何最好地完成任務。

簡單

這是最明顯的優點!Go很簡單易懂,可以使用很小的語言規範文檔,Go努力做到易於閱讀和編寫。Go官方網站還包括一個教程,可通過在瀏覽器中鍵入和練習代碼來開始使用該語言。


大魔王Hacker


go 很有可能沒機會像c++一樣在各個領域被用的那麼廣泛。其快速開發的理念,簡易的部署(幾乎沒有外部依賴)極大的解放了為解決如同C++一樣的痛苦過程。go 誕生之初的首要目標之一也是解放c++項目的複雜構建過程,因為根據絕大多數經驗,c++項目很多時間浪費在瞭解決構建(和相關)問題上。因此go以腳本面孔,原生的姿態進入服務器(企業)市場,得到了極大的歡迎,而Google似乎也打算將go打造成更適合為其GCP開發應用。其生來開放的姿態,的確贏得了不少粉絲。

縱觀語言本身的適用範圍以及諸多歷史原因,go在其他諸多領域並沒有做得更好,也根本沒有太大的可能性與c/c++進行更深入比較。尤其是在移動開發方面,谷歌似乎從一開始就有意要避免將go大規模使用於移動開發。到目前為止,go的移動開發始終是實驗性的(社區有過不少自發的嘗試,包括遊戲開發)。但仔細研究會發現,go在開發移動環境甚至是IoT等應用沒有太多優勢。很多人喜歡用它,更多的是因為他極大地減輕了開發的外部複雜度。開發者可以更多地專注於自身程序的設計,並得益於其快速構建應用的產出效率。因此可謂最佳企業端開發語言!

總結一句,go與其他語言(尤其是c/c++)沒有太多可比性,他們誕生於不同的市場定位,為解決不同的問題而設計。有沒有必要使用,完全取決於項目需要。


勿與君子鬥名


其實我都“羞於”問自己這個問題:我們需要xx技術嗎?我們需要xx語言嗎?

就好像我們已經站在了巨人的肩膀上,可以在那裡吆五喝六了。其實我們自己做了什麼呢?我們真的沒做什麼,我們只是一群功利主義的菜鳥而已。

國外有句話我非常的不認可,這句話一直在坊間盛傳,那就是:不要重複發明輪子。這句話毒害了多少中國的工程師、程序員?每當我們遇見某種需求,我們首先會考慮——這個東西從技術上是A+B+C+D。然後再近一步,A,B,C,D都有網上的開源方案。

然而事實上,基於開源方案我們做出來的是(A-)+(B-)+(C-)+(D-)。也就是說,很多東西都變味了,我們有美好的理想(需求),但是我們不得不去將就技術。

我們中國人最擅長的就是一個字——改。這是我們化腐朽為神奇的第一源動力。我們可以把A-改成A+,A*,A#...但是對不起,我們永遠也無法把它變成A,這其中也許就是缺少了那麼一點東西,它由兩個字來表示,就是:本質。或者說:真理。

這就是為什麼國外編程語言百花齊放,有那麼多的人熱衷於重複造輪子,雖然造輪子用了那麼多的“重複勞動”,但這件事並不重要。重要的是,他們在不斷接近輪子背後的那個——本質或真理。

所以我也在時時刻刻以此來鞭策一下自己——稍微的發明一點點東西吧,即便是那東西在牛人看來,真的像屎一樣,但是這也算是我們這幫不入流的菜逼程序員為了盡人事而付出的一丁點兒的努力。

僅此而已。


信息扭曲力場


二十年目睹之技術圈怪現象之一:有那麼一群人在那麼一段時間內喜歡把某個技術吹上天。


程序猿創業筆記


golang解決了我在用cpp時候的多個痛點,所以我用go。

第一cpp的庫,和跨平臺是比較噁心的。

第二,線程不能隨便開銷,要用線程池。而協程就自由多了


小菜狗多多


語法簡單,性能高,併發高,部署簡單。生態再豐富些,真的不錯,拿web開發來說,做java,php等開發者,很輕鬆就可以切換到go。


分享到:


相關文章: