選擇何種編程語(yǔ)言似乎無(wú)關(guān)緊要婿滓,因?yàn)榇蠖鄶?shù)流行語(yǔ)言基于相同的基本概念啼辣,對(duì)于未經(jīng)訓(xùn)練的人來(lái)說(shuō),大多數(shù)語(yǔ)言看起來(lái)都是一樣的裙戏,都能得到大致相同的結(jié)果乘凸。但從開發(fā)人員的角度來(lái)看,編程語(yǔ)言不僅是一種工具累榜,選擇正確的編程語(yǔ)言將影響一個(gè)人的職業(yè)生涯营勤,經(jīng)濟(jì)前景和未來(lái)的幸福。本文將推薦五種當(dāng)下和未來(lái)一段時(shí)間最值得學(xué)習(xí)五種編程語(yǔ)言壹罚,并逐一介紹它們的特點(diǎn)和優(yōu)點(diǎn)葛作,以及面試中需要注意的要點(diǎn)。
對(duì)于初學(xué)者來(lái)說(shuō)猖凛,選擇編程語(yǔ)言是一件非常糾結(jié)耗神的事情赂蠢,你需要結(jié)合自身需求找到平衡點(diǎn),同時(shí)還要留意一門語(yǔ)言的長(zhǎng)期前景形病。對(duì)于21世紀(jì)初的Web開發(fā)人員來(lái)說(shuō)客年,PHP和Ruby on Rails看起來(lái)是推動(dòng)職業(yè)發(fā)展的最佳語(yǔ)言。但是今天漠吻,市場(chǎng)條件已經(jīng)發(fā)生了變化量瓜,PHP和Ruby不屬于我們接下來(lái)的討論范圍。
本文我們將推薦2019年最值得學(xué)習(xí)的編碼語(yǔ)言途乃。對(duì)于每種語(yǔ)言绍傲,我們都會(huì)簡(jiǎn)要概述用途和長(zhǎng)期前景。對(duì)于每種語(yǔ)言的市場(chǎng)份額和采用率,我們的主要依據(jù)是 Stack Overflow的2018年開發(fā)者調(diào)查報(bào)告 烫饼。 此外猎塞,我們將推薦范圍限制在 命令式語(yǔ)言 ,不包括聲明性語(yǔ)言杠纵,如HTML荠耽,CSS和SQL,它們?cè)赟tack Overflow的調(diào)查中占據(jù)第二比藻,第三和第四位铝量,以及shell腳本語(yǔ)言,如Bash银亲。
第1名:JavaScript
根據(jù) Stack Overflow的2018年開發(fā)者調(diào)查 慢叨,71.5%的專業(yè)開發(fā)人員將 JavaScript 評(píng)為最受歡迎的編程語(yǔ)言。這比 2015年 提高 了很多务蝠,當(dāng)時(shí)只有54.4%的開發(fā)人員將JavaScript列為最受歡迎的技術(shù)拍谐。
<canvas width="75" height="75" style="display: inline-block;"></canvas>
JavaScript火速流行的原因之一是JavaScript無(wú)處不在。在客戶端馏段,您可以使用前端JavaScript框架(如 Angular 轩拨, React 和 Vue) 來(lái)構(gòu)建基于瀏覽器的Web應(yīng)用程序。在瀏覽器之外毅弧, Node.js 允許您使用與編寫客戶端代碼相同的語(yǔ)言編寫后端應(yīng)用程序气嫁。使用Node当窗,您可以編寫Web服務(wù)够坐,管理物聯(lián)網(wǎng)(IoT)以及機(jī)器學(xué)習(xí)實(shí)驗(yàn)。JavaScript領(lǐng)跑其他語(yǔ)言的一個(gè)關(guān)鍵原因是在整個(gè)軟件行業(yè)的廣泛支持 – 包括來(lái)自谷歌崖面,F(xiàn)acebook元咙,微軟和亞馬遜的鼎力支持。此外巫员,JavaScript的學(xué)習(xí)資源也異常豐富庶香, 學(xué)習(xí)者還可以找到各種各樣的付費(fèi)或免費(fèi)課程、網(wǎng)站简识、書籍赶掖、視頻和博客,涵蓋該JavaScript相關(guān)的幾乎所有主題七扰。
在大部分時(shí)間里奢赂,JavaScript被看作是編程語(yǔ)言的“丑小鴨”,雖然它從未成為美麗的天鵝颈走,但就像童話故事一樣膳灶,JavaScript社區(qū)已經(jīng)齊心協(xié)力將其從基于瀏覽器的腳本語(yǔ)言打造成現(xiàn)代的多功能語(yǔ)言。隨著時(shí)間的推移,許多JavaScript的粗糙面已經(jīng)被打磨平整轧钓,但有些仍然存在序厉。
值得注意的是,關(guān)于JavaScript毕箍,許多未來(lái)的雇主將在編程面試中根據(jù)他們對(duì)JavaScript更加模糊的功能的知識(shí)對(duì)潛在候選人進(jìn)行評(píng)估弛房。常見的編碼面試問(wèn)題涉及變量范圍,閉包而柑,回調(diào)和條件運(yùn)算符庭再。任何尋找JavaScript相關(guān)工作的應(yīng)聘者都應(yīng)該為這類問(wèn)題做好準(zhǔn)備。我們還建議您提前深入了解您感興趣的公司牺堰,研究他們的開發(fā)堆棧拄轻,并在相關(guān)的現(xiàn)代框架(例如React,Angular或Vue)上展示您的技能伟葫。
第二名:Python
根據(jù)Stack Overflow調(diào)查恨搓,Python受37.9%的專業(yè)開發(fā)人員歡迎。我們的評(píng)估基于Python 快速增長(zhǎng)的采用率筏养, 在過(guò)去五年中斧抱,Python比其他任何語(yǔ)言的發(fā)展速度都快。Python已經(jīng)變得如此有影響力渐溶, *“ **經(jīng)濟(jì)學(xué)人” *雜志甚至為Python撰寫了 專題深度報(bào)道辉浦。
Python受歡迎的部分原因是它擺脫了其他語(yǔ)言的惱人慣例,例如使用分號(hào)來(lái)表示語(yǔ)句的結(jié)束茎辐。這可以解釋為什么Python正在取代Java作為計(jì)算機(jī)科學(xué)教學(xué)的主要語(yǔ)言 – 不僅在大學(xué)宪郊,高中和小學(xué)課程中也開始納入Python教學(xué)內(nèi)容。Python在學(xué)術(shù)界已經(jīng)根深蒂固拖陆,是機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)最流行的通用編程語(yǔ)言弛槐。事實(shí)上,Python目前在這些領(lǐng)域占據(jù)主導(dǎo)地位依啰,最近業(yè)界提出了將Python與數(shù)據(jù)科學(xué)語(yǔ)言R進(jìn)行 合并 乎串。
Python與其他編碼語(yǔ)言有相似之處但又有著明顯不同。Python開發(fā)崗位的面試中速警,往往要求應(yīng)聘者闡述對(duì)Python如何實(shí)現(xiàn)公共語(yǔ)言功能的理解叹誉,例如數(shù)據(jù)類型、模塊化闷旧、函數(shù)和類等长豁。面試官還可能會(huì)問(wèn)如何使用Python作為腳本,面向?qū)ο蠡蚝瘮?shù)式編程語(yǔ)言鸠匀,或者是否了解Python特定的數(shù)據(jù)類型和功能蕉斜,例如元組、列表推導(dǎo)、字典和裝飾器(decorators)宅此。
第三名:Java
排在第三位的是 Java 机错,根據(jù)Stack Overflow 2018年的調(diào)查,45.5%的專業(yè)開發(fā)人員青睞Java父腕。
<canvas width="75" height="75" style="display: inline-block;"></canvas>
Java保持持久吸引力的一個(gè)重要原因是 Java虛擬機(jī)(JVM) 弱匪。JVM使得在不同的硬件平臺(tái)和設(shè)備上運(yùn)行每種語(yǔ)言成為可能。Java還能處理讓開發(fā)人員感到頭疼的璧亮,數(shù)據(jù)類型和內(nèi)存管理相關(guān)的許多任務(wù)萧诫。簡(jiǎn)化應(yīng)用程序開發(fā)并在不同操作系統(tǒng)中部署應(yīng)用的能力使Java成為大型組織的首選語(yǔ)言。這意味著枝嘶,Java可以讓你在一家大公司找到穩(wěn)定的工作帘饶。Java的另一個(gè)重要用途是編寫原生Android應(yīng)用程序。 Android市場(chǎng)份額 在 智能手機(jī)操作系統(tǒng)一股獨(dú)大群扶,這也是許多開發(fā)人員學(xué)習(xí)Java的主要?jiǎng)訖C(jī)之一及刻。
近年來(lái),已經(jīng)為JVM創(chuàng)建或移植了許多流行語(yǔ)言竞阐,并廣泛使用Java生態(tài)系統(tǒng)缴饭。這些語(yǔ)言在特定環(huán)境中很流行,包括Scala骆莹,Closure和Kotlin颗搂。Kotlin有許多有趣的用途,包括編寫 Android應(yīng)用程序 和使用 Corda 框架創(chuàng)建智能合約幕垦。
在尋找Java開發(fā)工作時(shí)丢氢,理解語(yǔ)言的范圍非常重要。編程訪談會(huì)包含任何可想到的與Java相關(guān)的主題智嚷。對(duì)于企業(yè)開發(fā)工作卖丸,您可能需要證明您對(duì)Java基礎(chǔ)結(jié)構(gòu)的理解纺且,常見的問(wèn)題與 JDK盏道,JRE和JVM 有關(guān)。Android開發(fā)人員將被問(wèn)及與Android相關(guān)的問(wèn)題载碌,包括SDK版本管理猜嘱,intents,設(shè)備模擬和應(yīng)用程序部署過(guò)程嫁艇。即使您應(yīng)聘一家運(yùn)行Java以外的特定JVM語(yǔ)言的公司朗伶,那么Java經(jīng)驗(yàn)也可以成為一種優(yōu)勢(shì)。
第四名:C#
Stack Overflow 2018年調(diào)查開發(fā)者中步咪,35.5%是 微軟C#的 粉絲论皆。不僅Python和Java排名高于C#, Bash 腳本語(yǔ)言在開發(fā)人員中的得票率也達(dá)到了40.4%,許多開發(fā)人員對(duì)微軟的所有事情都表示反感点晴。
<canvas width="75" height="75" style="display: inline-block;"></canvas>
在今天的市場(chǎng)中感凤,Java仍然比C#更好,但從長(zhǎng)遠(yuǎn)來(lái)看粒督,C#未嘗不能逆襲陪竿。 Java的功能更新已開始放緩,而微軟卻一直在積極增加新的特性和功能屠橄,這也是微軟擺脫對(duì)Windows操作系統(tǒng)的依賴的諸多努力的一部分族跛,其他還包括購(gòu)買 Xamarin 及其跨平臺(tái)開發(fā)環(huán)境,發(fā)布多平臺(tái) .NET Core 锐墙, 以及持續(xù)投資 Azure 礁哄。 C#在微軟的新戰(zhàn)略中扮演著重要角色 ,微軟也努力確保C#同時(shí)使用微軟技術(shù)和開放行業(yè)標(biāo)準(zhǔn)溪北。
與Java一樣姐仅,C#語(yǔ)言的生態(tài)系統(tǒng)也很龐大。與Java一樣刻盐,大多數(shù)C#編程面試都包含與CL透啵基礎(chǔ)架構(gòu)相關(guān)的問(wèn)題,包括 .Net框架 和 公共語(yǔ)言運(yùn)行時(shí)(CLR) 敦锌。值得注意的是馒疹,CLR還托管其他語(yǔ)言,例如F#和VB.net乙墙。如果您準(zhǔn)備面試使用C#之外其他CLR語(yǔ)言的公司颖变,C#經(jīng)驗(yàn)依然會(huì)為你加分。
第五名:C / C ++
雖然 C 和 C ++ 是具有不同編程模型的兩門相對(duì)獨(dú)立的語(yǔ)言听想,但它們之間的聯(lián)系也非常緊密腥刹,本文將一起討論它們。
對(duì)于通用和專用任務(wù)汉买,例如應(yīng)用程序開發(fā)衔峰,用戶界面,移動(dòng)應(yīng)用程序和機(jī)器學(xué)習(xí)蛙粘,C已被Stackoverflow列表中的其他語(yǔ)言取代垫卤。但是,在嵌入式系統(tǒng)和構(gòu)建操作系統(tǒng)方面出牧,C仍然擁有自己的一席之地穴肘,Linux就是最好的證明。Linux是有史以來(lái)最流行的操作系統(tǒng)舔痕,從最大的大型機(jī)到Android設(shè)備都能看到Linux的影子评抚。Linux的關(guān)鍵部分是Linux內(nèi)核豹缀,Linux內(nèi)核是用C語(yǔ)言編寫的。C的另一個(gè)常見用途是編寫其他編程語(yǔ)言慨代,本推薦清單中排名第二的Python耿眉。
<canvas width="75" height="75" style="display: inline-block;"></canvas>
C ++是一個(gè)更現(xiàn)代,面向?qū)ο蟮腃語(yǔ)言版本.C ++是用于偏重性能的應(yīng)用程序的開發(fā)語(yǔ)言鱼响。例如鸣剪,許多公司,特別是金融部門的公司丈积,在其后端系統(tǒng)中使用C++筐骇。C ++既可以被用于無(wú)聊的應(yīng)用,也出現(xiàn)在一些最令人興奮的技術(shù)領(lǐng)域江滨。由于其高效率的聲譽(yù)铛纬,C ++也是圖形密集型應(yīng)用程序的首選語(yǔ)言,包括游戲開發(fā)唬滑,圖形引擎告唆,虛擬和增強(qiáng)現(xiàn)實(shí)。
在尋找C或C ++的工作時(shí)晶密,一些面試官會(huì)提出可能同時(shí)適用于這兩種語(yǔ)言的問(wèn)題擒悬,例如編程相關(guān)的數(shù)據(jù)類型,運(yùn)算符稻艰,循環(huán)懂牧,條件語(yǔ)句,指針和內(nèi)存管理方面的面試問(wèn)題尊勿。您可能還會(huì)被要求定義和解釋鏈接列表僧凤,以及編寫實(shí)現(xiàn)和管理鏈接列表的簡(jiǎn)短程序。由于C ++是面向?qū)ο蟮恼Z(yǔ)言元扔,因此面試官很有可能會(huì)詢問(wèn)類似對(duì)象躯保,類,方法澎语,屬性等的支持的相關(guān)問(wèn)題途事。
榮譽(yù)獎(jiǎng)
我們列表中的五個(gè)選項(xiàng)都是通用語(yǔ)言。以下是其他幾種語(yǔ)言咏连,它們要么更專業(yè)盯孙,要么服務(wù)于較小的垂直市場(chǎng)。
一種受到大量關(guān)注的語(yǔ)言是Apple的 Swift 祟滴。Swift旨在成為Apple新的通用語(yǔ)言,旨在取代Objective-C歌溉。Swift可用于編寫iOS和Mac桌面應(yīng)用程序垄懂,并由Apple在開源許可下發(fā)布骑晶,希望它成為服務(wù)器語(yǔ)言。不幸的是草慧,這種希望尚未實(shí)現(xiàn)桶蛔。
在Web開發(fā)領(lǐng)域, PHP 仍然非常受歡迎漫谷。盡管PHP存在局限性和被替代的可能性仔雷,PHP仍然被許多大型網(wǎng)站使用,例如Facebook和維基百科舔示。Facebook甚至創(chuàng)建了自己的PHP方言碟婆,名為Hack。PHP也是許多大型開源平臺(tái)使用的語(yǔ)言惕稻,例如 WordPress 和 MediaWiki 竖共。這些平臺(tái)有廣泛大量的應(yīng)用,而PHP被用于為它們創(chuàng)建插件俺祠。Facebook仍然致力于PHP公给,甚至還創(chuàng)建了自己的現(xiàn)代化版本的 Hack 語(yǔ)言。然后是 Ruby 蜘渣,一種現(xiàn)代的淌铐,設(shè)計(jì)更好的PHP的替代品。Ruby在 Ruby on Rails的 Web開發(fā)框架得到廣泛部署蔫缸,并擁有龐大而活躍的支持社區(qū)匣沼。
對(duì)于高度專業(yè)化的用途,例如系統(tǒng)編程捂龄, Google的Go 和 Mozilla的Rust 看起來(lái)前景不錯(cuò)释涛。兩種語(yǔ)言都旨在構(gòu)建高度并發(fā)的系統(tǒng)。在函數(shù)式編程領(lǐng)域倦沧, Elixir 是 Erlang 的現(xiàn)代替代品唇撬, Clojure是一種在JVM上運(yùn)行的現(xiàn)代化的Lisp,而 F# 是一種在.NET運(yùn)行時(shí)中運(yùn)行展融,并具有許多主流功能的函數(shù)式語(yǔ)言窖认。最后,如果您對(duì)快速增長(zhǎng)的智能合約和 基于以太坊的 加密貨幣領(lǐng)域感興趣告希,您應(yīng)該好好了解一下 Solidity 扑浸。
結(jié)論:選擇正確的語(yǔ)言
在我們推薦的五種語(yǔ)言中,您如何選擇適合您的語(yǔ)言燕偶?根據(jù)當(dāng)前趨勢(shì)喝噪,具有最廣泛應(yīng)用的最佳通用語(yǔ)言是JavaScript。您可以在大多數(shù)設(shè)備上運(yùn)行它指么,并使用它來(lái)構(gòu)建客戶端酝惧,服務(wù)器和無(wú)服務(wù)器應(yīng)用程序榴鼎。在過(guò)去的十年中,JavaScript已經(jīng)被不斷迭代改造晚唇,現(xiàn)在與C#和Lisp等現(xiàn)代語(yǔ)言有很多共同之處巫财。是的,JavaScript仍然有一些粗糙的地方哩陕,但已經(jīng)大大改善平项。
對(duì)于開發(fā)人員來(lái)說(shuō),Python可能是跨職業(yè)生涯的最佳選擇悍及。正如我們所指出的闽瓢,Python已成為用于研究和教育的首選語(yǔ)言,同時(shí)也是機(jī)器學(xué)習(xí)并鸵,人工智能和數(shù)據(jù)科學(xué)相關(guān)領(lǐng)域的主導(dǎo)語(yǔ)言鸳粉。在開發(fā)用戶界面時(shí),JavaScript相比Python具有明顯的優(yōu)勢(shì)园担,但隨著時(shí)間的推移届谈,這種優(yōu)勢(shì)可能變得不那么重要。對(duì)于初學(xué)者來(lái)說(shuō)弯汰,Web Assembly標(biāo)準(zhǔn)使得開發(fā)者可以使用任何高級(jí)語(yǔ)言來(lái)編寫瀏覽器應(yīng)用程序艰山。此外, 如果基于語(yǔ)音的用戶界面得到大眾認(rèn)可咏闪,圖形用戶界面將變得不那么重要曙搬。而且Python是開發(fā)亞馬遜Echo語(yǔ)音助手應(yīng)用的編程語(yǔ)言,因此在語(yǔ)音用戶界面領(lǐng)域鸽嫂,Python已經(jīng)占據(jù)了先機(jī)纵装。
在企業(yè)領(lǐng)域,您需要在Java和C#之間進(jìn)行選擇据某。這兩種語(yǔ)言在語(yǔ)法橡娄,功能和基礎(chǔ)結(jié)構(gòu)方面都非常相似,您可以根據(jù)個(gè)人偏好癣籽,工作需要或擲硬幣來(lái)選擇它們挽唉。正如我們所指出的,Java存在的時(shí)間C#更長(zhǎng)筷狼,更受歡迎瓶籽,并且有更多的職位機(jī)會(huì)。但另一方面埂材,微軟對(duì)C#的積極推動(dòng)有望使其成為真正的跨平臺(tái)解決方案塑顺,因此長(zhǎng)期看C#有可能是更值得下注。Java仍然是Android的語(yǔ)言楞遏,但Microsoft的Xamarin允許您使用C#編寫Android茬暇,iOS和Mac應(yīng)用程序首昔。但值得注意的是寡喝,C#在創(chuàng)業(yè)社區(qū)中聲名狼藉糙俗,在硅谷非常不受歡迎。在這些圈子中预鬓,C#開發(fā)人員通常被視為二等公民巧骚。
同樣要特別注意的是,在申請(qǐng)Java / C#企業(yè)計(jì)算職位時(shí)格二,面試官關(guān)注的重點(diǎn)往往是你創(chuàng)建后端應(yīng)用程序的能力劈彪,而不是你使用何種語(yǔ)言。因此編寫解決方案時(shí)顶猜,您最好使用慣用語(yǔ)言沧奴,這樣可以 **在 **解決實(shí)際問(wèn)題的 同時(shí) 展示你對(duì)語(yǔ)言功能的理解。
最后长窄,C和C ++都算是通用語(yǔ)言滔吠,但在實(shí)踐中,它們主要用于特定領(lǐng)域挠日。對(duì)于C疮绷,主要面向的是系統(tǒng)和嵌入式編程; 對(duì)于C ++,主要面向高性能嚣潜,資源密集型應(yīng)用程序冬骚,如實(shí)時(shí)圖形處理。
最重要的一點(diǎn)是懂算,在進(jìn)行編碼面試時(shí)只冻,請(qǐng)確保對(duì)面試語(yǔ)言的來(lái)龍去脈多做了解。 開發(fā)面試 是應(yīng)聘最難的一個(gè)環(huán)節(jié)计技,如果你對(duì)一門語(yǔ)言的優(yōu)勢(shì)喜德、局限性和應(yīng)用了然于胸,將會(huì)讓面試變得更加容易酸役。