六星云課堂:Java、C/C++、Python等開發(fā)語言,在不同領(lǐng)域里到底有什么差別?

對(duì)于Go、Java、C/C++、Python等開發(fā)語言,在不同領(lǐng)域里到底有什么差別呢!

Java、Python、Go、C/C++這幾門語言,主要的應(yīng)用也都在后端開發(fā)這里,雖然后端開發(fā)是一個(gè)比較明確的方向,但是在后端開發(fā)里,也依然可以有很多細(xì)分的領(lǐng)域,不同領(lǐng)域常使用的語言也依然有很大的差別。

Web后臺(tái)
最常見的,也是大學(xué)時(shí)期常做的后端開發(fā)的工作,大部分都是Web開發(fā),也即是面向數(shù)據(jù)庫增刪改查,編寫接口的業(yè)務(wù)邏輯,向上承接前端(Web、安卓、iOS、H5等)的請(qǐng)求,完成數(shù)據(jù)組裝并返回,兼顧性能的考慮,加入緩存層、分庫分表等設(shè)計(jì)。
在Web后臺(tái),Java、Python都是常使用的語言,其中尤以Java見長(zhǎng),這與Java的生態(tài)相關(guān),Java以及Web生態(tài)的Spring Boot、MyBatis等,已經(jīng)成為中小企業(yè)Web開發(fā)必不可少的技術(shù)棧,在企業(yè)招聘崗位當(dāng)中,對(duì)Java這一類的技術(shù)要求也是最多的。
其次是Python,雖然Python有豐富的Web框架支持:Flask、Tornado、Django等等,但做小網(wǎng)站還行,用Python做大型項(xiàng)目的不多,早年P(guān)ython Web技術(shù)的經(jīng)典案件——知乎,因?yàn)樾阅埽恍┖诵牡姆?wù),也已經(jīng)改成Go。Python的Web多見于一些訪問量不大的網(wǎng)站,比如一些運(yùn)營(yíng)平臺(tái)、活動(dòng)平臺(tái)等。
微服務(wù)
微服務(wù)是近幾年火起來的概念,隨著云技術(shù)的不斷成熟,現(xiàn)在都提倡把大服務(wù)拆成微服務(wù),通過服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)來完成調(diào)用鏈關(guān)系,兼顧云的動(dòng)態(tài)伸縮來實(shí)現(xiàn)無狀態(tài)服務(wù)的擴(kuò)容縮容,也已經(jīng)是比較成熟的技術(shù)了。
在微服務(wù)里面,Java也是用得比較多的,Spring Cloud已經(jīng)為微服務(wù)環(huán)境提供了非常多的功能齊全的工具,上手便捷,開箱即用;但由于JVM進(jìn)程本身的消耗,在一些使用微服務(wù)架構(gòu)里面的關(guān)鍵模塊,為了減少資源的使用和調(diào)度的成本,依然會(huì)使用C/C++來實(shí)現(xiàn),通過通用協(xié)議對(duì)外提供服務(wù)。
微服務(wù)在這里提及,和Web后臺(tái)這些不完全是并列的關(guān)系,微服務(wù)是架構(gòu),本身是不含邏輯的,Web后臺(tái)也可以通過微服務(wù)架構(gòu)來實(shí)現(xiàn),因而在這需要強(qiáng)調(diào)下,這里主要是針對(duì)微服務(wù)生態(tài)提到Java Spring Cloud,Java提供了比較完備的微服務(wù)生態(tài)。
中間件
中間件是一個(gè)比較大的概念,在這里把與業(yè)務(wù)無關(guān)的服務(wù)統(tǒng)一視為中間件服務(wù),常見的比如消息中間件。
中間件的開發(fā)工作在大廠也都被認(rèn)為是后臺(tái)開發(fā);對(duì)于中間件,Java也是最常見的語言,Go語言也比較常見;其實(shí)中間件的存在主要依托于生態(tài)環(huán)境,一個(gè)開發(fā)的生態(tài)環(huán)境只有足夠的復(fù)雜,也才需要中間件的存在,所以這也解釋了為什么Java、Go才是最常見的語言。
存儲(chǔ)服務(wù)
存儲(chǔ)服務(wù),如數(shù)據(jù)庫、文件系統(tǒng)、kv存儲(chǔ)等,主要是使用C/C++。
因?yàn)榇鎯?chǔ)服務(wù)和操作系統(tǒng)、硬件設(shè)備是強(qiáng)相關(guān)的,所以這項(xiàng)工作也只有C/C++容易勝任;在存儲(chǔ)服務(wù)的實(shí)現(xiàn)過程,大量的系統(tǒng)調(diào)用、系統(tǒng)參數(shù)調(diào)優(yōu),在實(shí)際開發(fā)的時(shí)候還需要看相關(guān)的內(nèi)核源碼,所以天然C/C++是最適合的;當(dāng)然了,也有使用Go語言的也有一些,這主要是在開發(fā)效率和性能之間做的取舍。
云基礎(chǔ)設(shè)施
云基礎(chǔ)設(shè)施到今天基本是Go的天下了,依托kubernetes,今天非常多的云基礎(chǔ)設(shè)施使用的都是Go語言,在資源調(diào)度、資源隔離等方面,Go都有非常成熟的使用。要說資源調(diào)度,本來Go語言就沒多少年,現(xiàn)在的云基礎(chǔ)設(shè)施為什么會(huì)成為Go的天下?
在早年Google Big Table論文大行其道的時(shí)代,Hadoop、Yarn是進(jìn)行大數(shù)據(jù)平臺(tái)資源管理調(diào)度的核心,不過那個(gè)時(shí)候也只有大數(shù)據(jù)平臺(tái)平臺(tái)需要這么多的資源,那時(shí)候的容器都是交給yarn托管的;后來docker技術(shù)出現(xiàn)、成熟,再到容器編排、kubernetes,Go語言也成功奪位,成為云基礎(chǔ)設(shè)施里面最常使用的語言。所以,今天我們看到的騰訊云、阿里云這么豐富封裝對(duì)外的產(chǎn)品,在它們的背后,都一定有Go語言與其相關(guān)的服務(wù)在支撐著。
工具平臺(tái)
工具平臺(tái)多指測(cè)試、運(yùn)維等的平臺(tái),在實(shí)際場(chǎng)景中也有著非常核心的作用,對(duì)于這種工具平臺(tái),不要求很高的性能,但是一般會(huì)有很多臨時(shí)性的需求,整體的規(guī)劃也更模糊一些,對(duì)于這種場(chǎng)景,Python這種短平快的語言就很排得上用場(chǎng),所以Python多見于這些工具平臺(tái)的實(shí)現(xiàn)里面。
最后,關(guān)于編程語言,除了語言本身的生態(tài),團(tuán)隊(duì)的技術(shù)棧也是影響你選擇語言的重要原因,在有選擇的情況下,還是需要根據(jù)大的生態(tài)做出更好的選擇,對(duì)的語言做對(duì)的事情,事半功倍。
以上就是本次分享的全部?jī)?nèi)容,想學(xué)習(xí)更多C++技巧,歡迎持續(xù)關(guān)注六星云課堂!