不久前,StackOverflow發(fā)布了2022年度開(kāi)發(fā)者調(diào)查報(bào)告。在這份覆蓋了180個(gè)國(guó)家 / 地區(qū)的73000多名開(kāi)發(fā)人員的報(bào)告中,在編程語(yǔ)言領(lǐng)域,出現(xiàn)了一些很有意思的數(shù)據(jù)。
首先,在最常用的編程語(yǔ)言中,JavaScript再次占據(jù)主導(dǎo)地位。Python屈居第四,SQL則僅次于第二名的HTML /CSS。而TypeScript則將Java擠出了前五。
最常用的編程語(yǔ)言排行榜前十截圖@StackOverflow
再者,在最受開(kāi)發(fā)者喜愛(ài)的編程語(yǔ)言調(diào)查中,Rust仍舊蟬聯(lián)最受歡迎的語(yǔ)言。Elixir則從2021年的第四位躍升至第二位,而TypeScript從去年的第三位滑落到第四位。
最受開(kāi)發(fā)者喜愛(ài)的編程語(yǔ)言排行榜前十@StackOverflow
然后,在薪資相關(guān)的統(tǒng)計(jì)中,Clojure仍然是已知最高收入的語(yǔ)言。另外相較去年,收入增幅較多的語(yǔ)言COBOL、Couchbase 、Flow和IBM Cloud/Watson。
編程語(yǔ)言的薪資排行榜前十@StackOverflow
其中以COBOL的提升最多,年薪中位數(shù)從52340美元躍升至75592美元。雖然在所有語(yǔ)言的排行中不算頂尖,但44%的漲幅確實(shí)驚人。
COBOL算得上是一門(mén)古董級(jí)的語(yǔ)言,年輕一點(diǎn)的朋友可能都沒(méi)見(jiàn)過(guò)。事實(shí)上,會(huì)這門(mén)語(yǔ)言的程序員確實(shí)很少,而且基本屬于程序員群體中的“高齡”之列。為何在近年來(lái)又開(kāi)始有了“奇貨可居”之兆呢?
程序員越老越值錢(qián)的語(yǔ)言
COBOL于20世紀(jì)60年代面世,主要應(yīng)用于財(cái)會(huì)工作、統(tǒng)計(jì)報(bào)表、計(jì)劃編制、情報(bào)檢索、人事管理等數(shù)據(jù)管理和商業(yè)數(shù)據(jù)處理領(lǐng)域。因此,COBOL在銀行、金融、會(huì)計(jì)等行業(yè)都有廣泛應(yīng)用。
基于這門(mén)語(yǔ)言的開(kāi)發(fā)時(shí)間較早,且功能強(qiáng)大穩(wěn)定,在各種編程語(yǔ)言興起的當(dāng)下也沒(méi)有退出歷史舞臺(tái)。根據(jù)路透社2017年的調(diào)查發(fā)現(xiàn),全球目前仍有2200億行COBOL代碼,占據(jù)活躍代碼的80%,大約95%的ATM交易處理用的都是COBOL語(yǔ)言。
另外,COBOL還有一大特點(diǎn),那就是語(yǔ)法與英文很接近,換言之,敲代碼猶如寫(xiě)作文。固然很多人覺(jué)得這樣簡(jiǎn)單易懂,但對(duì)程序員來(lái)說(shuō)就很不友好了。
COBOL編程@互聯(lián)網(wǎng)
特別是對(duì)于學(xué)著Java、C語(yǔ)言長(zhǎng)大的程序員來(lái)說(shuō),COBOL實(shí)在過(guò)于艱澀了。如今,無(wú)論是在課本還是在常用的編程語(yǔ)言排行榜中,COBOL基本已經(jīng)難覓蹤跡,學(xué)習(xí)COBOL的人自然也越來(lái)越少。
在相關(guān)機(jī)構(gòu)的調(diào)查中,精通COBOL語(yǔ)言的程序員年齡普遍在50歲以上。隨著老一輩程序員退休,很多機(jī)構(gòu)會(huì)發(fā)現(xiàn)已經(jīng)招不到人了。
COBOL開(kāi)發(fā)人員的年齡分布@Computerworld
兩年前疫情爆發(fā)時(shí),美國(guó)失業(yè)人數(shù)暴增,申請(qǐng)失業(yè)補(bǔ)助的人蜂擁而至。新澤西州長(zhǎng)在電視直播中召喚Cobol程序員,因?yàn)樵撝菡幚硎I(yè)登記的系統(tǒng)是四十多年前使用的Cobol編寫(xiě)的,急需維護(hù)。但因?yàn)閷?shí)在找不到人,只能公開(kāi)喊話,請(qǐng)求COBOL開(kāi)發(fā)人員支援。
當(dāng)然此前也有很多人考慮過(guò)重寫(xiě)系統(tǒng),用更現(xiàn)代化、更便于維護(hù)的編程語(yǔ)言替代COBOL。2012年,澳洲聯(lián)邦銀行就請(qǐng)了兩家公司幫忙重新編寫(xiě)平臺(tái),結(jié)果耗時(shí)5年,花費(fèi)7.5億美金,才最終把7500萬(wàn)行COBOL代碼轉(zhuǎn)換過(guò)來(lái)。由此可見(jiàn),對(duì)大部分公司來(lái)說(shuō),重寫(xiě)系統(tǒng)的代價(jià)令人望而生畏。而且從某種程度上說(shuō),只要大型機(jī)存在,COBOL就不會(huì)消失。
僅就美國(guó)而言,在其政府和金融系統(tǒng)中,COBOL語(yǔ)言分量“極重”,但翻新成本又難以承受,這也導(dǎo)致了對(duì)COBOL開(kāi)發(fā)人員的需求上升。就這門(mén)語(yǔ)言來(lái)說(shuō),程序員時(shí)常處于稀缺狀態(tài),年齡越大,經(jīng)驗(yàn)越豐富,其薪酬也越高。此次在StackOverflow的調(diào)查報(bào)告中COBOL的薪資漲幅也證明了這一點(diǎn)。
不過(guò)StackOverflow的調(diào)查人群多數(shù)是美國(guó)和印度裔的程序員,中國(guó)的情況又如何呢?
“錢(qián)”景向好的那些語(yǔ)言
在COBOL相關(guān)新聞的報(bào)道下面,有中國(guó)網(wǎng)友笑言:“中國(guó)程序員35歲以后就不干了,根本等不到退休后……”但也有人認(rèn)為不能以偏概全,對(duì)于不在互聯(lián)網(wǎng)行業(yè)的程序員來(lái)說(shuō),干到50歲的職業(yè)發(fā)展空間也是有的。
那么,在中國(guó)的國(guó)情下,一些快要“入土”的語(yǔ)言可能像COBOL一樣“起死回生”嗎?語(yǔ)言真的會(huì)和薪資直接掛鉤嗎?當(dāng)前,哪些語(yǔ)言的“錢(qián)”景比較好?51CTO技術(shù)社群中,來(lái)自各行各業(yè)的程序員們也圍繞這些議題展開(kāi)了討論。
1、一些快要“入土”的語(yǔ)言,諸如Delphi之流可能像COBOL一樣“起死回生”嗎?
對(duì)此,大多數(shù)人持否定態(tài)度。首先,物以稀為貴,不排除某些語(yǔ)言因?yàn)槔溟T(mén)或者小眾而薪資很高;然后,COBOL的所謂“起死回生”更多是基于時(shí)代遺留的“紅利”,被選擇只是它當(dāng)時(shí)恰好被用來(lái)做了很多系統(tǒng),而更新的成本又過(guò)于高昂;最后,語(yǔ)言和應(yīng)用場(chǎng)景關(guān)聯(lián)較大,一些“過(guò)時(shí)”的語(yǔ)言要再次火起來(lái)需要有更適應(yīng)的場(chǎng)景出現(xiàn)。
2、從長(zhǎng)期職業(yè)發(fā)展來(lái)看,選擇哪門(mén)語(yǔ)言,真的會(huì)和薪資直接掛鉤嗎?
認(rèn)為“語(yǔ)言和薪資掛鉤”的一派認(rèn)為,從目前的市場(chǎng)需求來(lái)看,有的崗位待遇普遍就高,對(duì)應(yīng)的語(yǔ)言薪資自然就高。比如,目前云原生很火,Go語(yǔ)言就相應(yīng)地水漲船高。
認(rèn)為“語(yǔ)言和薪資關(guān)聯(lián)不大”的一派認(rèn)為,從長(zhǎng)遠(yuǎn)發(fā)展來(lái)看,學(xué)哪門(mén)語(yǔ)言不重要,做什么、在哪里做很重要。比如,即使是同一崗位,身處傳統(tǒng)行業(yè)還是風(fēng)口行業(yè),收入肯定有差別。
不過(guò)在更多人看來(lái),應(yīng)該辯證看待。
第一,每種語(yǔ)言的誕生都是為了解決特定領(lǐng)域的需求,都有其優(yōu)缺點(diǎn)。沒(méi)有一種語(yǔ)言能解決所有問(wèn)題。所以,選擇什么語(yǔ)言和業(yè)務(wù)場(chǎng)景相關(guān)、和公司的技術(shù)棧相關(guān)。
第二,在短期內(nèi)來(lái)看,選擇的語(yǔ)言和薪資是有關(guān)聯(lián)的。畢竟每門(mén)語(yǔ)言的學(xué)習(xí)曲線不同,入門(mén)的時(shí)候選擇當(dāng)下比較火的、相對(duì)簡(jiǎn)單的語(yǔ)言無(wú)可厚非。但要真正站住腳,還是要變成多面手,讓自己更適應(yīng)業(yè)務(wù)。
第三,語(yǔ)言和薪資的關(guān)系主要還是受應(yīng)用領(lǐng)域的影響。比如,機(jī)器學(xué)習(xí)的發(fā)展帶火了Python。對(duì)于某個(gè)領(lǐng)域的求職,精通特定的編程語(yǔ)言確實(shí)有增益。
第四,就長(zhǎng)期職業(yè)發(fā)展而言,薪資和語(yǔ)言并沒(méi)有直接關(guān)聯(lián)關(guān)系。當(dāng)資歷達(dá)到一定高度,例如資深架構(gòu)師,顯然就不能單純從編程語(yǔ)言來(lái)看,而要從更多角度來(lái)衡量。
3、當(dāng)前,哪些語(yǔ)言的“錢(qián)”景比較好?
討論中出現(xiàn)比較多的三種語(yǔ)言分別是Java、Go、Solidity。
Java
理由:應(yīng)用范圍廣,且進(jìn)入高級(jí)水平門(mén)檻高;上限雖不好說(shuō),但無(wú)論在大城市還是小城市都能找到工作。但有一點(diǎn)也需考量,正因?yàn)樾枨蠖啵訨ava人數(shù)也多,競(jìng)爭(zhēng)壓力較大。
Go
理由:背靠谷歌好乘涼,后勁更足;云服務(wù)的發(fā)展會(huì)為Go帶來(lái)更多的使用者;前景相對(duì)廣闊,目前已經(jīng)有很多中大廠在招Go的開(kāi)發(fā)人員,薪資待遇比一般公司更有競(jìng)爭(zhēng)力。
Solidity
理由:隨著Web3應(yīng)用的發(fā)展,掌握Solidity會(huì)占據(jù)一定先發(fā)優(yōu)勢(shì)。而且從發(fā)布的崗位薪資來(lái)看,和Web3掛鉤的技術(shù)崗位薪資比其他的語(yǔ)言薪資普遍略勝一籌。
影響前途的遠(yuǎn)不止語(yǔ)言
固然編程語(yǔ)言的選擇和崗位薪資、職業(yè)發(fā)展路徑有一定的關(guān)聯(lián),但更多人還是認(rèn)為,學(xué)習(xí)語(yǔ)言不能太功利。語(yǔ)言的重要性不言而喻,但要想前途光明,提升發(fā)展上限,掌握一門(mén)語(yǔ)言遠(yuǎn)遠(yuǎn)不夠。
要明確語(yǔ)言的工具屬性。語(yǔ)言是武器,思維是內(nèi)功。磨利武器,煉好內(nèi)功才是王道。
【陳先生. ?】編程語(yǔ)言只是一種工具,為了方便人與機(jī)器之間的溝通。更重要的還是編程思想,怎么做才會(huì)更好更便捷地達(dá)到目的。
【Signx】從長(zhǎng)遠(yuǎn)來(lái)看,語(yǔ)言都是工具,思維才是王道,比如遇到邏輯分叉就知道用判斷,遇到重復(fù)的事情知道用循環(huán),這跟語(yǔ)言沒(méi)關(guān)系。從短期看,需要一門(mén)語(yǔ)言來(lái)進(jìn)行編程思維的鍛煉,真正的高手玩的是內(nèi)功心法,而不是執(zhí)著于哪一件兵器。
編程語(yǔ)言的學(xué)習(xí)過(guò)程中,可以往“一專(zhuān)多能”的方向發(fā)展,但關(guān)鍵是要鍛煉自身的思維體系,在專(zhuān)精基礎(chǔ)上再追求“一通百通”。
【sifone】我覺(jué)得學(xué)語(yǔ)言既要看前/錢(qián)景,又不能太功利,大部分時(shí)候?qū)φZ(yǔ)言的學(xué)習(xí),也是啟發(fā)個(gè)人思維的過(guò)程。另外,靜態(tài)語(yǔ)言、動(dòng)態(tài)語(yǔ)言,每樣至少學(xué)一門(mén)吧,這樣會(huì)對(duì)編程有更好的理解。
【??臨城謙??】語(yǔ)言與語(yǔ)言之間的區(qū)別還是很大的,數(shù)據(jù)結(jié)構(gòu)之間的差別也很大。只有你在某一門(mén)編程語(yǔ)言(技術(shù))中進(jìn)行了深耕并充分理解之后,才可能觸類(lèi)旁通。別一個(gè)語(yǔ)言都沒(méi)精通就去學(xué)另一種語(yǔ)言,這完全就是耽誤時(shí)間。
參考鏈接:
https://news.mydrivers.com/1/852/852426.htm
https://survey.stackoverflow.co/2022/
https://blog.csdn.net/Fristm/article/details/125654054