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