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寫的"。