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