為什麼 Go 語言能在中國這麼火?

碼洞發表於2018-12-18

為什麼 Go 語言能在中國這麼火?

作者:靈劍 清華大學 電子工程系 

個人主頁:github.com/hubo1016

對大多數公司來說Golang的主要優勢是和C++比有GC,和Java比更簡潔,和Python比更快,這就在一個不錯的位置上了,沒有明顯的短板。以大部分程式設計師的水平而言,Golang的缺點還還沒有到能對他們產生困擾的程度,他們自己給自己造成的麻煩比語言給他們帶來的麻煩多得多。

有的公司和程式設計師是被舊的語言逼瘋了,C++老是記憶體洩漏或者crash,Java老是變成一大坨,Python老是重構火葬場,就覺得,我換個新語言,這些問題肯定都能解決了。而且往往換完發現的確有很大改善。

但我不得不潑一盆冷水:沒用的,真的沒用。

垃圾程式碼的產生永遠是因為垃圾程式設計師,而不是垃圾語言。語言可以很垃圾,但歸根結底,垃圾語言只是阻礙你寫出好程式碼,而自由奔放地寫出垃圾程式碼的鍋必須全部扣在程式設計師的頭上。

真的把Golang用好的程式設計師不多,大部分人寫什麼語言都是差不多的,並不會深入思考Golang的語言模型與其他語言有什麼區別,goroutine、channel怎麼用才更合理這些問題,以前用執行緒池,就搞個goroutine池;以前用佇列,就去找個佇列庫。還有的乾脆全域性變數滿天飛,goroutine結果全收集到全域性變數裡,加個大鎖。這樣的程式碼會有效率嗎?會好維護嗎?會簡潔嗎?

的確,在你剛剛換到這門語言的時候,你會發現之前你之前程式碼的那些問題全都沒有了,感覺前途一片光明。遺憾的是,這是因為你僅僅才開始寫了幾個模組,還沒有進入維護期。如果你保持著之前的水準,那些往日的惡習會讓你的程式碼再次劣化,讓往日的問題再度暴露出來。然後你會想,原來Golang也有這麼多的毛病啊,也許我應該重新換成Java?然後再重複一遍這個歷史。

不深入去鑽研軟體工程的規律和技術,不深入去學習一門語言的獨有特色,理解語言的設計哲學,建立語言的一套使用方法論,僅僅妄想透過換一門新語言就解決問題,這是一條死路。

許多忙著轉Golang的程式設計師給我的感覺都是太浮躁,這樣的狀態很容易生產出新一批通往火葬場的垃圾程式碼,只要走著瞧罷了。反過來,如果借這個機會去深入學習如何寫出優秀的Golang程式碼,不失為職業生涯的一個重大轉機,很快我們也能知道這麼做了的人有哪些的。

同學們,你們又怎麼看呢?

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561269/viewspace-2285637/,如需轉載,請註明出處,否則將追究法律責任。

相關文章