下面這張表顯示了幾種主要編程語言在2017~2018年間就業(yè)情況的變化:
(數(shù)據(jù)來源:Indeed.com,可視化制圖:Coding Dojo)
盡管Java已經(jīng)有 20 多年的歷史,它依舊是就業(yè)需求最高的編程語言——雖然自 2017 年來,它的需求量有所下跌。長期以來,Java 一直是最受企業(yè)追捧的計算機語言,這可能是因為它強大的可移植性,可以在各種硬件和系統(tǒng)上運行。舉個栗子,所有的安卓應(yīng)用程序都基于 Java,而大部分《財富》500 強企業(yè)都用 Java 進行后端開發(fā)。
Python因其在 web 開發(fā)等方面的應(yīng)用,近年來已經(jīng)快速趕超了許多其他語言。如今, Python 在科學計算、數(shù)據(jù)挖掘和機器學習等熱門領(lǐng)域都有著廣泛的應(yīng)用,這也解釋了它快速增長的原因。
JavaScript排行第三。作為大多數(shù)開發(fā)人員和幾乎所有具有動態(tài)邏輯的網(wǎng)站不可或缺的組成部分,JavaScript 依然非常熱門。同時,類似 React 和 AngularJS 這樣的 JavaScript 前端框架也被廣泛用在物聯(lián)網(wǎng)(IoT)和移動設(shè)備集成領(lǐng)域,所以我們可以預(yù)見,在不遠的將來,JavaScript 還會榜上有名。
C++和C#這兩種語言比較類似,它們都是游戲開發(fā)、操作系統(tǒng)/應(yīng)用軟件方面的強力選手( C# 主要用于微軟的 .NET 平臺)。它們在 2018 年有所下降,但仍然很強勁。
PHP越來越受歡迎,它能為網(wǎng)頁添加普通 HTML 或 CSS 無法處理的 Web 功能,還能方便地操作 MySQL 數(shù)據(jù)庫。許多從業(yè)人員都開玩笑說“ PHP 是最好的語言” 。
最后,Perl還依舊寶刀未老,因為它能作為連接不同軟件、模塊的“膠水語言”而受到許多系統(tǒng)和網(wǎng)絡(luò)管理員的歡迎。
需要注意的一點是,上面這些最受歡迎的語言都是基礎(chǔ)編程語言。學好一門基礎(chǔ)語言,對于初學者來說是非常重要的,但有經(jīng)驗的程序員可能會需要學習一些更加“高級”的特定類型的編程語言。
基礎(chǔ)語言 vs 專業(yè)語言
上面這些最熱門的計算機編程語言常被人稱為基礎(chǔ)編程語言。它們誕生于計算機技術(shù)剛開始普及的時候,許多如今被視為基礎(chǔ)設(shè)施的計算機應(yīng)用程序和網(wǎng)絡(luò)架構(gòu),都是由這些語言構(gòu)成的。
然而,隨著科技的發(fā)展和程序員社區(qū)的興起,許多針對性強,專業(yè)程度高的語言逐漸活躍在各種新技術(shù)領(lǐng)域中。比如用于 AI 和機器學習領(lǐng)域的 Haskell,用于代替 Java 的 Scala,函數(shù)式語言 ML,用于人工智能和網(wǎng)頁編程的 Scheme 等數(shù)百種“專業(yè)語言”。
這些專業(yè)語言的學習曲線和先修技能對新手并不太友好。然而,如果你打算成為某個特定領(lǐng)域的專家,它們就將是你的無價之寶。比如在 AI 與機器學習方面,懂得 Haskell 將會給你帶來相當大的優(yōu)勢。
當你掌握了一種或多種基礎(chǔ)語言之后,你應(yīng)該就有余力能學習一些更新、更專業(yè)的編程語言。只要記住,學習一種新的語言幾乎總是會給你帶來一些新的好處,即使你用不上它,在學習的過程中,它也能幫助你從不同的角度來思考問題,對你的個人能力也是一種提高。
看完了上面這兩點分析,下面就給大家推薦三種不同階段程序員“必學必會”的語言(初學者,有點經(jīng)驗,高級專家),以及幾種額外的備選語言。
我是初學者,
我該選什么語言?
JavaScript是初學者首次學習編程語言的不錯選擇。就像上面提到過的,JavaScript 幾乎無處不在,你可以用它來開發(fā)各種不同的應(yīng)用程序。你每天使用的許多網(wǎng)站都依賴 JavaScript,包括 Gmail、Facebook 等許多網(wǎng)站在內(nèi)。
Java 可以用在 Web 應(yīng)用程序的前端開發(fā)(使用 AngularJS,Ember.js 和 React 等框架)和后端開發(fā)上(使用 Node.js 框架)。學習這些框架可能比單獨學習 JavaScript 本身花費更多時間,但有助于提高你的就業(yè)能力(和工資水平)。
JavaScript 有一個可能是最方便的特性,那就是它實際上已經(jīng)內(nèi)置在你的電腦瀏覽器中了,因此你無需安裝任何內(nèi)容即可開始試著編程,這也使得它非常容易上手。
你可能會發(fā)現(xiàn),它的基礎(chǔ)知識學起來很簡單,但千萬別小看它,因為它有很多高級的概念,需要你花上很多時間才能慢慢掌握。
如果你是初學者,希望以后成為一名專業(yè)的程序員,那么學習 JavaScript 會是個好主意。不過話又說回來,任何一種基礎(chǔ)語言也都會是一個不錯的選擇。在理想情況下,在整個職業(yè)生涯中,你肯定會學習多種不同的基礎(chǔ)語言。
初學者的其他選擇
一個不錯的選擇是Python語言。它相對容易,也更有趣,只有不多的幾條嚴格語法規(guī)則。事實上,它讀起來就像普通的英語,所以即使是純粹的初學者也能理解代碼。Python 被許多大公司采用,構(gòu)建類似 Instagram、YouTube 和 Spotify 的網(wǎng)站,因此它也有可能是你拿到頂級 IT 企業(yè)職位的敲門磚。
像 Python 一樣,Ruby也很容易讓初學者上手。在使用它的時候,你不必記住許多命令或語法規(guī)則。如今許多初創(chuàng)公司越來越多地使用 Ruby 的一個全棧框架—— Ruby on Rails,它也被用于構(gòu)建了 Airbnb、Groupon 等網(wǎng)站。
我有一點編程經(jīng)驗,
我該選什么語言?
當你有了一定的編程經(jīng)驗之后,你可以花點時間嘗試學習C 語言,(包括 C# 或者 C++)。
和 JavaScript 比起來,C 的難度明顯更大,但它很值得一學,因為許多其他的編程語言實際上是用 C 來實現(xiàn)的,比如 Python 最常用的解釋器就是 Cpython。這是因為 C 語言是一種更加“機器層面”的語言。所以,學習 C 語言的過程,你將會理解更多計算機是如何運行的知識,讓你今后學習其他語言的時候更容易理解。
在成為專業(yè)程序員之前,先學習用 C 語言編程,就像在成為醫(yī)生之前,得先理解基本解剖學一樣。如果你想成為一名真正的專家,你就必須了解計算機系統(tǒng)和軟件是如何協(xié)同工作的。學習 C 語言是一種富有啟發(fā)性的體驗,它將帶來許多有益的附加作用,讓你懂得如何編寫出更有效率的代碼。
C# 被廣泛用于 .NET 平臺上的企業(yè)級應(yīng)用開發(fā),它同時也是 Unity 3D 的主要語言,而 Unity 3D 非常流行的獨立游戲、VR游戲開發(fā)引擎。另一方面,C++ 通常被用于性能密集型桌面應(yīng)用程序(包括游戲)中。它也被微軟,甲骨文和 Adobe 等公司用于構(gòu)建許多大型軟件系統(tǒng)。
熟練程序員的其他選擇
Java是另一個不錯的選擇,因為它能很容易地跨平臺編程,跨平臺運行,是非常不錯的通用編程語言(而且,它也還是目前最熱門的編程語言之一)。
Java很常用于編寫app,所以如果你希望開發(fā)移動設(shè)備app,那你一定要學一學 Java。
給專業(yè)程序員的新挑戰(zhàn)
如果你已經(jīng)掌握了 Javascript、C#、C++、Java 和 Python 等基礎(chǔ)編程語言,那么你已經(jīng)準備好迎接新的挑戰(zhàn)了。從某種意義上說,這個挑戰(zhàn)應(yīng)該是Rust。
根據(jù) Stack Overflow 的調(diào)查結(jié)果顯示,截至 2018 年,Rust 已經(jīng)連續(xù)三年被程序員評為最受歡迎的編程語言。這是一種相對較新的語言,由 Mozilla 于 2010 年創(chuàng)建,并且不斷改進。
Rust 在性能和用途方面都是一種與 C 相當?shù)木幾g型語言。但與 C 不同,Rust 是內(nèi)存安全的:用 Rust 編寫的代碼中不會有空指針、緩沖區(qū)溢出或其他類型的內(nèi)存錯誤。在 Rust 中搞出這種錯誤是不可能的,因為任何錯誤都會在在編譯期間被捕獲——在任何代碼被真正運行之前。
這個特性使 Rust 很難被初學者所掌握,但有經(jīng)驗的程序員能體會到這種內(nèi)在的性能改進帶來的價值。自問世以來,它的用戶數(shù)量一直在穩(wěn)步增長。而可以預(yù)見的是,在接下來的幾年中 Rust 相關(guān)職位將會有很大的需求。根據(jù) Stack Overflow 的數(shù)據(jù),它是 2017 年薪酬第二高的編程技術(shù)崗位,在 2018 年的排名也躋身前六。
專業(yè)程序員的其他選擇
如果你已經(jīng)是一名老練的 Java 程序員,或許你應(yīng)該把Scala(名字來源于 Scalable Language,可擴展語言的縮寫)列入你該學習的下一個語言中。
Scala 是程序員試圖改進 Java 的許多嘗試之一,它基本上可以直接替代 Java——事實上,它被編譯之后就是在 Java 虛擬機上運行。這是一門需要花費精力學習的復(fù)雜語言,但這些付出最終會是值得的:Scala 在 Stack Overflow 的 2017 年和 2018 年調(diào)查中,都被評為最高薪的技術(shù)崗位。
與 Rust 一樣,Scala 在過去 5 年中一直在穩(wěn)步增長。包括 LinkedIn 和 Twitter 在內(nèi)的許多大公司已在代碼庫中使用 Scala。
結(jié)語
總而言之,你接下來要學習的編程語言,應(yīng)該和你當前的技能水平、未來的職業(yè)興趣或志向相吻合。
初學者應(yīng)該從相對易于學習的語言,比如 JavaScript、Python 或 Ruby 開始,先試試水,開始編寫自己的第一個應(yīng)用程序。
擁有更多經(jīng)驗的程序員,應(yīng)當明智地掌握一門基礎(chǔ)、通用的編程語言語言,如 C 或 Java,以更好地理解計算機系統(tǒng)和軟件的交互方式。這也將教你如何編寫出更有效率的代碼。
最后,專家級程序員可能希望學習 Rust 或 Scala 等語言,以對現(xiàn)有的基礎(chǔ)語言(如 C 和 Java)做出改進。這兩種高級語言已經(jīng)在經(jīng)驗豐富的程序員中非常受歡迎,并且隨著時間的推移,它們的重要性可能會繼續(xù)增長,因為在商業(yè)競爭中,企業(yè)總是會需要構(gòu)建更新、更高效的應(yīng)用程序。
聯(lián)系客服