Go從1.0版本到現在(2015年)已經有三年多的時間,大的版本發佈了五個,根據Go語言的幾個版本,這裏總結一下它的演進。

語法變化:幾乎沒有增加什麼明顯的語法特性,變化主要圍繞:降低心智負擔、細節完善、工程化;

Go本身迭代的核心是實現優化,主要圍繞:性能、性能、性能!(重要的事情說三遍),性能的優化尤其體現在GC上,此外,還圍繞更多的平臺移植及更進一步的標準化,以強化社區約定。

Go和Java不一樣的地方在於,Go保留了比較大的靈活性的因素。我個人對Go語言未來有這樣的判斷:Go介於Java和很多靈活性的語言之間。Go的語言特性,三年雖然發佈了五個大版本,但其實沒有什麼語言的實質性變化,我見到有人噴Go時,認爲Go語言太不思進取了,也有人認爲Go社區對好的想法不思進取、不願意吸收。

我認爲其實不然,不止三年,哪怕是十年,Go語言的語法變化也別指望有大的改進,它基本上只會修補一些很小的地方,我覺得與其說是不思進取,不如說是它對如何寫好代碼這樣的需求理解的自信,這是其他語言遠不能企及的,也是我對Go最佩服的地方。

我爲什麼選Go?並不是因爲Go有多好,七牛是做雲服務的,雲服務特別依賴並行支持,而Go可能是這世界上對並行支持的先行者。

最早七牛用Go的時候,Go 1.0還未發佈,我當時對語法變化的判斷不是特別高,這自信有點類似C,C到現在已經十幾年了,但C到現在變過嗎?幾乎沒什麼改變,哪怕有C 99之類的,變化都很小。Go語言的想法和C很類似,我覺得很難預期 Go的語法特性變化很劇烈,但這恰恰是這個語言發展的魅力所在,因爲你不用擔心你寫的代碼三十年後會過時。從某種意義上講,這是一種自信,它已經知道這個世界未來就應該這個樣子。

Go語言的研究方向

大家都很關心Go語言未來會如何發展,我覺得三到五年內Go語言的主攻方向仍然是服務端開發,這不會有太大的變化。比如內建HTTP 2.0的支持(更多的支持會以獨立的開源庫的方式提供,未必直接包含在Go的發佈包);另外,儘管Go已經開始支持桌面端(Mobile)的開發,但這仍然是探索性和試驗性的,如果站在10年的維度上,Go語言會在桌面端(Mobile)大放異彩,佔據重要地位。

很有意思的是,全球對Go最感興趣的是中國,進一步來講其實是華人,爲什麼?因爲對Go感興趣排第二的是香港,第三是新加坡,這些地方都是華人聚集地,所以Go語言在中國發展或者在華人圈發展非常不錯,比在美國本土還牛很多(當然這僅僅是搜索,其實我是開玩笑的)。從開源項目的角度看,Go在國外發展的其實非常好,剛纔所講的語法特性,大家覺得發展好像很慢,但其實不然,因爲它在1.0的時候就把後面的所有做的事情都想好了,後面所要做的就是優化。

下面關於Go,有一些公開的預測:

第一個預測,我最早在2012年新浪微博裏提過,Go語言10年內一定會超過C和Java,變成排行榜第一的語言。今天大家可能會略相信,但在2012年的時候沒有多少人會相信,即使今天講出來,絕大部分人都會覺得太早,畢竟它還沒有排進前五。

第二個預測,Go語言將在兩年內製霸雲計算領域。

第三個預測,Go將統治下一個 10 年。(來自於Deferpanic創始人Lan Eyberg)。

接下來一個問題,非技術人怎麼看Go?第一是國外的投資人怎麼看Go,我覺得國外的投資人和中國投資人不一樣,他們挺技術範兒的,他們認爲"開源的Go語言將成爲最持久、最有廣泛影響力的開源系統之一"。另外,有商務開發人士認爲,"這個世界上好像幾乎所有新的、有趣的項目都是用 Go寫的"。

相關文章