C++適合本地程序的開發(fā)。Go語言適合網(wǎng)絡(luò)程序和本地程序的開發(fā)。Go的優(yōu)點:垃圾回收,語意明確,格式統(tǒng)一。?Go的缺點:效率目前沒有C++高,但對于桌面程序而言,效率問題不大,因為硬件已經(jīng)很快了。c++過于復(fù)雜了,加入很多炫技的內(nèi)容。這些內(nèi)容脫離了事情的本質(zhì)。
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)海寧免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
最明顯的就是所謂的面向?qū)ο?。基于面向?qū)ο蟮墓こ倘绻銐虼蟮那闆r下,會帶來很大的耦合度,如果再加上內(nèi)存管理,多線程等等。項目后期基本上沒辦法維護和增加功能。
關(guān)于c++的語言復(fù)雜性,你可以問知乎上的任何一位高手。沒一個敢說自己精通c++。你也可以去看一下所有的c++編繹器,沒有任何一個敢說自己完全實現(xiàn)了c++的標準。不同的編繹器之間實現(xiàn)細節(jié)又不同。所以功能再強大沒有實用性,就失去了意義,只會制造更多的問題。
go語言之所以能成為我國最火的語言,是因為編寫服務(wù)端高并發(fā)程序的優(yōu)勢。我大中華區(qū)但凡pv,日活高點的網(wǎng)站,應(yīng)用,誰沒點這個需求。這個領(lǐng)域中最優(yōu)的幾個:golang,erlang,rust。日常生活中人類社交是當今社會上的必然性,人們也伴隨著科技時代的發(fā)展,智能電子產(chǎn)品的使用中也必然少不了語言輸入,文字的編輯,語言轉(zhuǎn)換的便利都均可來源于go語音輸入法。
國內(nèi)大學本科教育,哪個學校不以c/c++為入門教學語言。都十幾年了,譚浩強還在大賣。語法相近的語言總是學習和使用成本最低的。這一點非常重要。coursera上有一門程序設(shè)計語言理論課上,開篇就闡述了這一點的重要性。假設(shè)go的入門成本是一個月,erlang的入門成本是2個月,那么整個程序員群體在學習后者的付出成本就很可觀了。
google由于眾所周知的原因,在國內(nèi)程序員中不一般的地位。golang有個好背景。
go語言之前一直都沒有接受待見,如今廣大的群眾開始接待,因為騰訊服務(wù)器段代碼編譯是支持go語言的
go語言會成為主流也是一個問題,
多慮了,沒有競爭來關(guān)系。
雖然go成為源了世界上最并發(fā)的語言,這并不妨礙php成為世界上最好的語言,
也不妨礙java成為世界上最有模式的語言,
更不會妨礙c++成為21天就能學會了的語言。為什么Go語言如此不受待見
其實并沒有不受待見,用的人還是很多的,解決一些特定領(lǐng)域的問題也很方便。
每種語言的流行程度主要取決于這個語言最著名的killerapp的流行程度,C有Linux,Go有Docker。
之前寫過了Grpc服務(wù)開發(fā)和接口測試初探【Java】,中間耽擱了一些時間,Go版本的gRPC測試開發(fā)實踐才有時間學習使用。其中也是由于自己Go語言不夠熟悉導(dǎo)致的。之前有段時間想暫時放棄Go語言的學習,導(dǎo)致了Go的生疏,原因是從Groovy到Java性能。
回歸正題,Go語言版本的gRPC實踐相對Java來說是比較簡單的,但是總體的工具鏈是比較復(fù)雜的,可能是因為Go生態(tài)目前相比Java還是比較匱乏吧。下面我先簡述一下大致的步驟:
以上步驟親自操作可能會遇到一些小問題,我本人搜到的教程什么的也是亂七八糟,踩了一些坑。我沒有整理出一個親自實踐之后的可行的教程,原因有二:
Go語言的gRPC的 proto 編寫跟Java大致一致,只有一個報名的參數(shù)不太一樣。下面是我的 Hello.proto 內(nèi)容:
這里主要 go_package 網(wǎng)上搜到的配置方式有些不一樣,我沒有全都嘗試,大家在搜索的資料時候,盡量先看看 syntax 這個參數(shù)的值,以及文章教程寫作的時間,如果距離現(xiàn)在太久了,我建議直接關(guān)掉。搜索引擎有過濾功能,可以過濾掉過時的教程。
這里Go語言gRPC的一點優(yōu)勢,就是在一個項目中即可實現(xiàn),Java需要先弄一個SDK這樣。Go語言的gRPC的代碼可以通過生成代碼命令中的參數(shù)實現(xiàn)指定路徑。我是放在了和 proto 文件的同級目錄。
服務(wù)端代碼也是比較格式化的內(nèi)容,如下:
其中 pb.RegisterHelloServiceServer(s, Ser{}) 如果報錯,請檢查自己安裝的工具 protoc-gen-go 或者 protoc-gen-gofast 版本,一般提取報錯 message 搜索也能得到解決辦法。
下面是客戶端的代碼,由于學藝不精,其中大部分參數(shù)的含義目前我也不是很清楚,特別是基于 stream 的請求響應(yīng)的方式使用。后面我先把Java的學完,再回過頭來看Go的,按照這個順序?qū)W習和分享。
服務(wù)端輸出:
忘記打日志了。沒有輸出
客戶端輸出:
Go語言的gRPC測試開發(fā)實踐已經(jīng)完事兒,大概率上我不會在工作中使用Go作為主力gRPC測試語言,后面測試實踐內(nèi)容還是會以Java為主。
有。
每個程序員都會遇到的中年危機,但go語言還是一門比較年輕的編程語言。
相比基礎(chǔ)庫完整的java,go語言很多網(wǎng)絡(luò)庫、協(xié)議庫都沒有,早期需要做很多打地基的工作。