為什麼 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 為什麼那麼多人要學習go語言?go語言有什麼特點?Go
- 為什麼Julia語言這麼棒?
- 為什麼很多公司都轉型go語言開發?Go語言能做什麼Go
- 什麼是Go語言?Go語言有什麼特點?Go
- 為什麼 Python 這麼火Python
- 六星教育:Python為什麼這麼火?未來它將會被什麼語言取代?Python
- 為什麼會有這麼多程式語言
- Spring Boot 為什麼這麼火?Spring Boot
- 為什麼HTML5這麼火?HTML
- 大資料解讀:《口袋妖怪go》為什麼這麼火?大資料Go
- 沒想到吧!Google 排名第一的程式語言,為什麼會這麼火?Go
- python有什麼特性?為什麼這麼火?Python
- go語言能做什麼Go
- 為什麼要學習Go語言呢?Go
- 為什麼 Go 語言 struct 要使用 tagsGoStruct
- 我們為什麼要使用GO語言?Go
- Google 大佬們為什麼要開發 Go 這門新語言?Go
- 為什麼我們需要一門新語言——Go語言Go
- Python能幹什麼?為什麼會這麼火?Python
- 為什麼會有這麼多的程式語言?
- ippswap dapp為什麼這麼火?APP
- Python這麼火,它與其他程式語言有什麼區別?Python
- 為什麼Go語言設計受到歡迎?Go
- 為什麼每個人都討厭GO語言?Go
- Go語言適合做什麼 ?Go
- Go語言GOPATH是什麼Go
- Web3.0是什麼,為什麼MetaVerse這麼火?WebMetaverse
- 為什麼這麼多人學不會C語言呢?C語言
- Python為什麼會這麼火呢?原因是什麼?Python
- “Go語言”有什麼用途?有什麼優勢?Go
- go與其他語言有什麼區別?學習go語言怎麼樣Go
- 為什麼事件驅動伺服器這麼火事件伺服器
- 為什麼Python這麼火,就業前景如何?Python就業
- 什麼是python?python為何這麼火?Python
- Python為什麼這麼火?學習python有什麼用?Python
- 為什麼 Go 語言沒有三元運算子Go
- Go 為什麼不在語言層面支援 map 併發?Go
- 為什麼我最喜歡的程式語言是 GoGo