? 使用golang已經(jīng)一年半了,我之前是在華為做C++的,后來離職的時候因為C++水平很菜,找的工作都不滿意,而且我也對C++很不滿意,所以被golang的宣傳的種種特性吸引到了,就找了一份golang的工作,到目前為止薪資很滿意,工作很開心,對未來也有所期待,不在害怕失業(yè),遇上傻逼也有了說不得能力。
聊聊我對golang的看法
說實話我對網(wǎng)上那些 所謂的“21世紀的C語言”,“大道至簡” 這種說法很反感,不過話說回來讓我用最精煉的詞語總結,我的答案 是 簡單,其實根上面兩個詞語表達的是同一個意思。
優(yōu)點1:開發(fā)效率高,在能滿足需求性能需求的情況下,開發(fā)效率的追求其實是第一位的,畢竟公司歸根節(jié)點還是為了賺錢,況且現(xiàn)在國內(nèi)IT業(yè)的人力成本也有點高的嚇人,與C++比就不談了完勝,與java相比,如果大家都有第三方庫可用的情況下golang開發(fā)效率要高于java,況且現(xiàn)在一般的app開發(fā),golang庫也是很齊全的,與python比開發(fā)效率我覺得差距不大,python需要更少的代碼行數(shù),但是有過開發(fā)經(jīng)驗的人都知道,開發(fā)過程中經(jīng)常需要讀別人代碼的,而且時間長了自己的代碼也要讀,而且像我這種還很喜歡修改之前的代碼,所以算上這部分其實python作為動態(tài)語言開發(fā)效率上就沒有優(yōu)勢了。
優(yōu)點2:運行效率高, 其實運行效率高是個相對的事情,為什么我說這個是golang的優(yōu)點呢,因為一直以來一門語言將開發(fā)效率作為標簽的時候,通常意味著運行效率低,不過golang打破了這個傳統(tǒng),可以跟python,php等腳本語言比開發(fā)效率,跟 java 比運行效率,當然了跟C++是肯定沒辦法比的。實例:滴滴賬號系統(tǒng)用PHP寫用了45臺實例,golang重寫6臺機器就夠了,想想這是多么大的成本差距啊,這可不是簡簡單單 45-6 的差距,運維45臺機器 和 6臺機器的成本可是不一樣的,如果是 450 和 60 就更大了。
優(yōu)點3:簡單,學習簡單,用起來也簡單,c++,java的那一套面向?qū)ο蟊粧仐壛耍褪呛唵蔚慕M合,簡單接口編程,當然他是多范式編程。這個其實極大的降低了開發(fā)者的心智負擔,寫C++的人心里總覺得寫得不夠有效率,寫java的人總覺得不夠面向?qū)ο?,不用上設計模式不夠高大上。簡單體現(xiàn)在方方面面,比如代碼都是自動排版,大家都統(tǒng)一格式,我在華為的時候如何學習排版格式的規(guī)范還學習了很久,而且就算有規(guī)范,總有人不按照規(guī)范做,這種隱形成本很大的。
golang缺點
語法層面我認為主要有兩個比較大的缺點
1.不支持泛型,這個問題在開發(fā)者中間其實也鬧聽很久了,golang官方現(xiàn)在給我的感覺就是想支持泛型,不過鑒于golang的歷史架構等問題,還不太好改,也不知道以后會不會支持,以什么樣的方式支持
2.變量定義的時候不需要聲明類型,雖然可以聲明類型,但是大多數(shù)人都不聲明,我也不聲明,但是我還是覺得強制必須聲明比較好,因為比較好讀代碼,不然總是要跳進去函數(shù)看一下
3.變量在前,類型在后,這個真的惡心,不知道為為啥在這個問題上跟所有人唱反調(diào),很困擾我
庫的缺乏
golang做web開發(fā)的高質(zhì)量庫數(shù)量足夠,但是很多別的庫還是跟java沒是沒法比的,比如我現(xiàn)在正在做區(qū)塊鏈的網(wǎng)絡層,需要用到gossip協(xié)議,就沒找到高質(zhì)量的庫,以后從業(yè)者多了這個肯定能改善
人的稀缺
如果組建一個大點的golang團隊,想找到都是有golang經(jīng)驗的人還是比較難的,不過如果有意愿學習其實還是很簡單的。
以上就是我的淺薄理解,歡迎探討