2019年最值得學習的編程語言TOP5
選擇何種編程語言似乎無關(guān)緊要,因為大多數(shù)流行語言基于相同的基本概念,對于未經(jīng)訓(xùn)練的人來說,大多數(shù)語言看起來都是一樣的,都能得到大致相同的結(jié)果。但從開發(fā)人員的角度來看,編程語言不僅是一種工具,選擇正確的編程語言將影響一個人的職業(yè)生涯,經(jīng)濟前景和未來的幸福。本文將推薦五種當下和未來一段時間最值得學習五種編程語言,并逐一介紹它們的特點和優(yōu)點,以及面試中需要注意的要點。
對于初學者來說,選擇編程語言是一件非常糾結(jié)耗神的事情,你需要結(jié)合自身需求找到平衡點,同時還要留意一門語言的長期前景。對于21世紀初的Web開發(fā)人員來說,PHP和Ruby on Rails看起來是推動職業(yè)發(fā)展的最佳語言。但是今天,市場條件已經(jīng)發(fā)生了變化,PHP和Ruby不屬于我們接下來的討論范圍。
本文我們將推薦2019年最值得學習的編碼語言。對于每種語言,我們都會簡要概述用途和長期前景。對于每種語言的市場份額和采用率,我們的主要依據(jù)是Stack Overflow的2018年開發(fā)者調(diào)查報告。此外,我們將推薦范圍限制在命令式語言,不包括聲明性語言,如HTML,CSS和SQL,它們在Stack Overflow的調(diào)查中占據(jù)第二,第三和第四位,以及shell腳本語言,如Bash。
第1名:JavaScript
根據(jù)Stack Overflow的2018年開發(fā)者調(diào)查,71.5%的專業(yè)開發(fā)人員將JavaScript評為最受歡迎的編程語言。這比2015年提高了很多,當時只有54.4%的開發(fā)人員將JavaScript列為最受歡迎的技術(shù)。
JavaScript火速流行的原因之一是JavaScript無處不在。在客戶端,您可以使用前端JavaScript框架(如Angular,React和Vue)來構(gòu)建基于瀏覽器的Web應(yīng)用程序。在瀏覽器之外,Node.js允許您使用與編寫客戶端代碼相同的語言編寫后端應(yīng)用程序。使用Node,您可以編寫Web服務(wù),管理物聯(lián)網(wǎng)(IoT)以及機器學習實驗。JavaScript領(lǐng)跑其他語言的一個關(guān)鍵原因是在整個軟件行業(yè)的廣泛支持 – 包括來自谷歌,F(xiàn)acebook,微軟和亞馬遜的鼎力支持。此外,JavaScript的學習資源也異常豐富,學習者還可以找到各種各樣的付費或免費課程、網(wǎng)站、書籍、視頻和博客,涵蓋該JavaScript相關(guān)的幾乎所有主題。
在大部分時間里,JavaScript被看作是編程語言的“丑小鴨”,雖然它從未成為美麗的天鵝,但就像童話故事一樣,JavaScript社區(qū)已經(jīng)齊心協(xié)力將其從基于瀏覽器的腳本語言打造成現(xiàn)代的多功能語言。隨著時間的推移,許多JavaScript的粗糙面已經(jīng)被打磨平整,但有些仍然存在。
值得注意的是,關(guān)于JavaScript,許多未來的雇主將在編程面試中根據(jù)他們對JavaScript更加模糊的功能的知識對潛在候選人進行評估。常見的編碼面試問題涉及變量范圍,閉包,回調(diào)和條件運算符。任何尋找JavaScript相關(guān)工作的應(yīng)聘者都應(yīng)該為這類問題做好準備。我們還建議您提前深入了解您感興趣的公司,研究他們的開發(fā)堆棧,并在相關(guān)的現(xiàn)代框架(例如React,Angular或Vue)上展示您的技能。
第二名:Python
根據(jù)Stack Overflow調(diào)查,Python受37.9%的專業(yè)開發(fā)人員歡迎。我們的評估基于Python快速增長的采用率,在過去五年中,Python比其他任何語言的發(fā)展速度都快。Python已經(jīng)變得如此有影響力,“ 經(jīng)濟學人”雜志甚至為Python撰寫了專題深度報道。
Python受歡迎的部分原因是它擺脫了其他語言的惱人慣例,例如使用分號來表示語句的結(jié)束。這可以解釋為什么Python正在取代Java作為計算機科學教學的主要語言 – 不僅在大學,高中和小學課程中也開始納入Python教學內(nèi)容。Python在學術(shù)界已經(jīng)根深蒂固,是機器學習和數(shù)據(jù)科學最流行的通用編程語言。事實上,Python目前在這些領(lǐng)域占據(jù)主導(dǎo)地位,最近業(yè)界提出了將Python與數(shù)據(jù)科學語言R進行合并。
Python與其他編碼語言有相似之處但又有著明顯不同。Python開發(fā)崗位的面試中,往往要求應(yīng)聘者闡述對Python如何實現(xiàn)公共語言功能的理解,例如數(shù)據(jù)類型、模塊化、函數(shù)和類等。面試官還可能會問如何使用Python作為腳本,面向?qū)ο蠡蚝瘮?shù)式編程語言,或者是否了解Python特定的數(shù)據(jù)類型和功能,例如元組、列表推導(dǎo)、字典和裝飾器(decorators)。
第三名:Java
排在第三位的是Java,根據(jù)Stack Overflow 2018年的調(diào)查,45.5%的專業(yè)開發(fā)人員青睞Java。
Java保持持久吸引力的一個重要原因是Java虛擬機(JVM)。JVM使得在不同的硬件平臺和設(shè)備上運行每種語言成為可能。Java還能處理讓開發(fā)人員感到頭疼的,數(shù)據(jù)類型和內(nèi)存管理相關(guān)的許多任務(wù)。簡化應(yīng)用程序開發(fā)并在不同操作系統(tǒng)中部署應(yīng)用的能力使Java成為大型組織的首選語言。這意味著,Java可以讓你在一家大公司找到穩(wěn)定的工作。Java的另一個重要用途是編寫原生Android應(yīng)用程序。Android市場份額在智能手機操作系統(tǒng)一股獨大,這也是許多開發(fā)人員學習Java的主要動機之一。
近年來,已經(jīng)為JVM創(chuàng)建或移植了許多流行語言,并廣泛使用Java生態(tài)系統(tǒng)。這些語言在特定環(huán)境中很流行,包括Scala,Closure和Kotlin。Kotlin有許多有趣的用途,包括編寫Android應(yīng)用程序和使用Corda框架創(chuàng)建智能合約。
在尋找Java開發(fā)工作時,理解語言的范圍非常重要。編程訪談會包含任何可想到的與Java相關(guān)的主題。對于企業(yè)開發(fā)工作,您可能需要證明您對Java基礎(chǔ)結(jié)構(gòu)的理解,常見的問題與JDK,JRE和JVM有關(guān)。Android開發(fā)人員將被問及與Android相關(guān)的問題,包括SDK版本管理,intents,設(shè)備模擬和應(yīng)用程序部署過程。即使您應(yīng)聘一家運行Java以外的特定JVM語言的公司,那么Java經(jīng)驗也可以成為一種優(yōu)勢。
第四名:C#
Stack Overflow 2018年調(diào)查開發(fā)者中,35.5%是微軟C#的粉絲。不僅Python和Java排名高于C#,Bash腳本語言在開發(fā)人員中的得票率也達到了40.4%,許多開發(fā)人員對微軟的所有事情都表示反感。
在今天的市場中,Java仍然比C#更好,但從長遠來看,C#未嘗不能逆襲。Java的功能更新已開始放緩,而微軟卻一直在積極增加新的特性和功能,這也是微軟擺脫對Windows操作系統(tǒng)的依賴的諸多努力的一部分,其他還包括購買Xamarin及其跨平臺開發(fā)環(huán)境,發(fā)布多平臺.NET Core,以及持續(xù)投資Azure。C#在微軟的新戰(zhàn)略中扮演著重要角色,微軟也努力確保C#同時使用微軟技術(shù)和開放行業(yè)標準。
與Java一樣,C#語言的生態(tài)系統(tǒng)也很龐大。與Java一樣,大多數(shù)C#編程面試都包含與C#基礎(chǔ)架構(gòu)相關(guān)的問題,包括 .Net框架和公共語言運行時(CLR)。值得注意的是,CLR還托管其他語言,例如F#和VB.net。如果您準備面試使用C#之外其他CLR語言的公司,C#經(jīng)驗依然會為你加分。
第五名:C / C ++
雖然C和C ++是具有不同編程模型的兩門相對獨立的語言,但它們之間的聯(lián)系也非常緊密,本文將一起討論它們。
對于通用和專用任務(wù),例如應(yīng)用程序開發(fā),用戶界面,移動應(yīng)用程序和機器學習,C已被Stackoverflow列表中的其他語言取代。但是,在嵌入式系統(tǒng)和構(gòu)建操作系統(tǒng)方面,C仍然擁有自己的一席之地,Linux就是最好的證明。Linux是有史以來最流行的操作系統(tǒng),從最大的大型機到Android設(shè)備都能看到Linux的影子。Linux的關(guān)鍵部分是Linux內(nèi)核,Linux內(nèi)核是用C語言編寫的。C的另一個常見用途是編寫其他編程語言,本推薦清單中排名第二的Python。
C ++是一個更現(xiàn)代,面向?qū)ο蟮腃語言版本.C ++是用于偏重性能的應(yīng)用程序的開發(fā)語言。例如,許多公司,特別是金融部門的公司,在其后端系統(tǒng)中使用C++。C ++既可以被用于無聊的應(yīng)用,也出現(xiàn)在一些最令人興奮的技術(shù)領(lǐng)域。由于其高效率的聲譽,C ++也是圖形密集型應(yīng)用程序的首選語言,包括游戲開發(fā),圖形引擎,虛擬和增強現(xiàn)實。
在尋找C或C ++的工作時,一些面試官會提出可能同時適用于這兩種語言的問題,例如編程相關(guān)的數(shù)據(jù)類型,運算符,循環(huán),條件語句,指針和內(nèi)存管理方面的面試問題。您可能還會被要求定義和解釋鏈接列表,以及編寫實現(xiàn)和管理鏈接列表的簡短程序。由于C ++是面向?qū)ο蟮恼Z言,因此面試官很有可能會詢問類似對象,類,方法,屬性等的支持的相關(guān)問題。
榮譽獎
我們列表中的五個選項都是通用語言。以下是其他幾種語言,它們要么更專業(yè),要么服務(wù)于較小的垂直市場。
一種受到大量關(guān)注的語言是Apple的Swift。Swift旨在成為Apple新的通用語言,旨在取代Objective-C。Swift可用于編寫iOS和Mac桌面應(yīng)用程序,并由Apple在開源許可下發(fā)布,希望它成為服務(wù)器語言。不幸的是,這種希望尚未實現(xiàn)。
在Web開發(fā)領(lǐng)域,PHP仍然非常受歡迎。盡管PHP存在局限性和被替代的可能性,PHP仍然被許多大型網(wǎng)站使用,例如Facebook和維基百科。Facebook甚至創(chuàng)建了自己的PHP方言,名為Hack。PHP也是許多大型開源平臺使用的語言,例如WordPress和MediaWiki。這些平臺有廣泛大量的應(yīng)用,而PHP被用于為它們創(chuàng)建插件。Facebook仍然致力于PHP,甚至還創(chuàng)建了自己的現(xiàn)代化版本的Hack語言。然后是Ruby,一種現(xiàn)代的,設(shè)計更好的PHP的替代品。Ruby在Ruby on Rails的 Web開發(fā)框架得到廣泛部署,并擁有龐大而活躍的支持社區(qū)。
對于高度專業(yè)化的用途,例如系統(tǒng)編程,Google的Go和Mozilla的Rust看起來前景不錯。兩種語言都旨在構(gòu)建高度并發(fā)的系統(tǒng)。在函數(shù)式編程領(lǐng)域,Elixir是Erlang的現(xiàn)代替代品,Clojure是一種在JVM上運行的現(xiàn)代化的Lisp,而F#是一種在.NET運行時中運行,并具有許多主流功能的函數(shù)式語言。最后,如果您對快速增長的智能合約和基于以太坊的加密貨幣領(lǐng)域感興趣,您應(yīng)該好好了解一下Solidity。
結(jié)論:選擇正確的語言
在我們推薦的五種語言中,您如何選擇適合您的語言?根據(jù)當前趨勢,具有最廣泛應(yīng)用的最佳通用語言是JavaScript。您可以在大多數(shù)設(shè)備上運行它,并使用它來構(gòu)建客戶端,服務(wù)器和無服務(wù)器應(yīng)用程序。在過去的十年中,JavaScript已經(jīng)被不斷迭代改造,現(xiàn)在與C#和Lisp等現(xiàn)代語言有很多共同之處。是的,JavaScript仍然有一些粗糙的地方,但已經(jīng)大大改善。
對于開發(fā)人員來說,Python可能是跨職業(yè)生涯的最佳選擇。正如我們所指出的,Python已成為用于研究和教育的首選語言,同時也是機器學習,人工智能和數(shù)據(jù)科學相關(guān)領(lǐng)域的主導(dǎo)語言。在開發(fā)用戶界面時,JavaScript相比Python具有明顯的優(yōu)勢,但隨著時間的推移,這種優(yōu)勢可能變得不那么重要。對于初學者來說,Web Assembly標準使得開發(fā)者可以使用任何高級語言來編寫瀏覽器應(yīng)用程序。此外,如果基于語音的用戶界面得到大眾認可,圖形用戶界面將變得不那么重要。而且Python是開發(fā)亞馬遜Echo語音助手應(yīng)用的編程語言,因此在語音用戶界面領(lǐng)域,Python已經(jīng)占據(jù)了先機。
在企業(yè)領(lǐng)域,您需要在Java和C#之間進行選擇。這兩種語言在語法,功能和基礎(chǔ)結(jié)構(gòu)方面都非常相似,您可以根據(jù)個人偏好,工作需要或擲硬幣來選擇它們。正如我們所指出的,Java存在的時間C#更長,更受歡迎,并且有更多的職位機會。但另一方面,微軟對C#的積極推動有望使其成為真正的跨平臺解決方案,因此長期看C#有可能是更值得下注。Java仍然是Android的語言,但Microsoft的Xamarin允許您使用C#編寫Android,iOS和Mac應(yīng)用程序。但值得注意的是,C#在創(chuàng)業(yè)社區(qū)中聲名狼藉,在硅谷非常不受歡迎。在這些圈子中,C#開發(fā)人員通常被視為二等公民。
同樣要特別注意的是,在申請Java / C#企業(yè)計算職位時,面試官關(guān)注的重點往往是你創(chuàng)建后端應(yīng)用程序的能力,而不是你使用何種語言。因此編寫解決方案時,您最好使用慣用語言,這樣可以在解決實際問題的同時展示你對語言功能的理解。
最后,C和C ++都算是通用語言,但在實踐中,它們主要用于特定領(lǐng)域。對于C,主要面向的是系統(tǒng)和嵌入式編程; 對于C ++,主要面向高性能,資源密集型應(yīng)用程序,如實時圖形處理。
最重要的一點是,在進行編碼面試時,請確保對面試語言的來龍去脈多做了解。開發(fā)面試是應(yīng)聘最難的一個環(huán)節(jié),如果你對一門語言的優(yōu)勢、局限性和應(yīng)用了然于胸,將會讓面試變得更加容易。