譯者:張?zhí)燔?/p>
原文:What Programming Language Should a Beginner Learn in 2016?
本文為極客學(xué)院Wiki組織翻譯,轉(zhuǎn)載請注明出處。
時(shí)間:2016.3.18
眾所周知,理工類的人才一直是很緊缺并且有不錯收入的。而且,從2007年到2012年,美國的在線招聘對軟件方面的工作的需求漲了31%,這幾乎是平均水平的3倍。美國勞工部的數(shù)據(jù)預(yù)計(jì),軟件開發(fā)的工作從2012年到2022年要繼續(xù)漲22%,軟件開發(fā)者的年收入中位數(shù)在2014年5月達(dá)到95,510美元。
如果你正考慮學(xué)習(xí)編程,各種編程語言的介紹可能讓你難以招架 — 到底應(yīng)該學(xué)哪門編程語言呢?希望這篇文章能從各種編程語言的收入,流行度,未來的前景方面給你一些啟發(fā)。
以下是一個(gè)有趣的問答,也許能幫助你選擇哪種語言是2016年適合你學(xué)習(xí)的語言。
在我們對比各種語言之前,首先讓我們來看一下包含了哪些語言。
動態(tài)語言通常被人們認(rèn)為更加適合初學(xué)者學(xué)習(xí),因?yàn)樗鼈兏佣鄻踊哺佑腥?。你可以很快地用相對少的代碼構(gòu)建一個(gè)應(yīng)用程序,在你希望用代碼實(shí)現(xiàn)某個(gè)你想要的功能時(shí),沒有太多的強(qiáng)制規(guī)則限制。
由于動態(tài)語言通常是很高級的語言,你只需要話很少的時(shí)間去掌握編程語言的細(xì)節(jié),從而讓更多的精力集中于學(xué)習(xí)編程概念上,由于初學(xué)者對于能讓學(xué)習(xí)成果立竿見影感到很有動力,這也是動態(tài)語言在初學(xué)者中很流行的另一個(gè)原因。

別和Java搞混淆了,JavaScript是一門主要在客戶端運(yùn)行的腳本語言,用來做前端開發(fā)的。Javascript兼容所有的瀏覽器,一般通過使用比如jQuery的庫和一些比如AngularJS,Ember.js,React等的前端框架來創(chuàng)建web應(yīng)用。
由于Node.js平臺的出現(xiàn),Javascript 現(xiàn)在也可以作為一門服務(wù)器端語言了,雖然Node.js相對來說比較新,但該社區(qū)正在獲得更多的關(guān)注。你也可以通過JavaScript的框架(比如:phonegap)來構(gòu)建混合的移動應(yīng)用,F(xiàn)acebook的React Native旨在讓開發(fā)者通過JavaScript開發(fā)本地語言的移動應(yīng)用。
然而,由于JavaScript的 untyped ,導(dǎo)致debug很困難,所以也被認(rèn)為是一門很難的語言。它也有一些有類型的語言版本,比如:微軟的TypeScript,或是React使用的JSX。

為了讓開發(fā)更加開心和高效地開發(fā)而設(shè)計(jì)的語言,Ruby因Ruby on Rails框架而流行,Ruby on Rails 是一個(gè)一站式的 Web 開發(fā)框架,為了開發(fā)者開發(fā)的便利而優(yōu)化。Ruby代碼閱讀起來更像是在讀英語,Rails的工具使得日常的開發(fā)任務(wù)更簡單(這些工具方便使用,無需繁瑣配置)。
Ruby 主要被用來做后端的開發(fā),一些很流行的網(wǎng)站比如 Airbnb,Shopify,Bloomberg,Hulu,Slideshare,和更多的網(wǎng)站開始用Ruby on Rails構(gòu)建后臺。

Python 是另一門被強(qiáng)烈推薦給初學(xué)者的編程語言,是美國大學(xué)里入門編程語言最流行的。開發(fā)者可以用它來編寫桌面端和服務(wù)器端的應(yīng)用,它也有用來數(shù)據(jù)挖掘的很好的工具。另外,Python在科學(xué)計(jì)算,數(shù)據(jù)分析,生物信息等學(xué)術(shù)領(lǐng)域也非常流行。
Google,Dropbox,Pinterest,Instagram,Reddit,BitTorrent,Civilization IV 和更多的公司已經(jīng)開始用Python構(gòu)建軟件了。

PHP是一門服務(wù)器端的腳本語言,由于易于其代碼掌握而通常被認(rèn)為是對初學(xué)者友好的語言,PHP入門并不難。大部分網(wǎng)站曾經(jīng)用過PHP構(gòu)建,因?yàn)楹艽蟪潭壬线@就是一門專門為Web開發(fā)設(shè)計(jì)的語言。
Facebook, Wikipedia, Yahoo!, Tumblr, WordPress等更多的網(wǎng)站曾用過PHP構(gòu)建。
用靜態(tài)的類型的語言構(gòu)建的軟件通常以更易擴(kuò)展,更穩(wěn)定也更加好維護(hù)而著稱。靜態(tài)語言通常在通過類型檢查而捕獲錯誤方面更嚴(yán)格,需要更多的代碼來構(gòu)建一個(gè)原型。游戲引擎,移動應(yīng)用和企業(yè)級的后臺一般都是用靜態(tài)的類型語言構(gòu)建的。

作為一門通用功能的語言,Java被用來構(gòu)建Android應(yīng)用,桌面應(yīng)用和游戲。Java也通常被用作服務(wù)器端的開發(fā)語言用來開發(fā)企業(yè)級的后臺-90%的世界500強(qiáng)企業(yè)使用Java。
而且,Hadoop 也是一個(gè)基于Java的很流行的存儲和處理大數(shù)據(jù)的框架,它也被Yahoo,F(xiàn)acebook,and Amazon這樣的企業(yè)用于Web服務(wù)。
C 通常被用于系統(tǒng)軟件的開發(fā),也是操作系統(tǒng)的通用語言。
C語言幾乎影響了所有我們介紹的編程語言,尤其是Objective-C和C++。所以如果你很了解C語言,你在學(xué)習(xí)其他語言時(shí)就不會有什么困難。由于使用C完成一個(gè)簡單任務(wù)需要更復(fù)雜的代碼,初學(xué)者也許會發(fā)現(xiàn)如果他們?nèi)绻袰作為入門語言,會很難保持學(xué)習(xí)的動力。然而C語言的有關(guān)知識會使一個(gè)程序員受益匪淺。

Objective-C 是在C語言上進(jìn)行了一層封裝,使得它變成靜態(tài),但同時(shí)也能用于動態(tài)類型。蘋果的Swift是一門設(shè)計(jì)成與Objective-C兼容的的靜態(tài)語言,但它的靜態(tài)類型使得他更不容易出錯。
受Python的啟發(fā),Swift是想成為編程新手易于掌握的語言,也是按照能修復(fù)一些Objective-C的問題的方向設(shè)計(jì)的。
C++是一門基于C的強(qiáng)大語言。它是設(shè)計(jì)用來編寫系統(tǒng)軟件的,但也用來編寫游戲或者是游戲引擎,桌面應(yīng)用,移動應(yīng)用和web應(yīng)用。C++非常強(qiáng)大和快速,所以以至于Facebook用它開發(fā)了一些高性能的,可靠的組件。
許多軟件的部分是用C++來構(gòu)建的,包括Adobe系統(tǒng),Amazon,Paypal,Chrome等等。想C一樣,C++通常被認(rèn)為是初學(xué)自學(xué)比較難的,所以如果你決定把C++作為你學(xué)習(xí)的第一門百年城語言,最好是通過在一些分享會上找個(gè)好的導(dǎo)師,或是找一個(gè)C++的編程老師教導(dǎo)一下。
C# 是被設(shè)計(jì)成在.NET框架在開發(fā)的一門語言,主要在微軟的Windows上運(yùn)行。
C# 被用來進(jìn)行web開發(fā),游戲開發(fā)和一些微軟通用的開發(fā)。盡管微軟在過去并不提倡跨平臺兼容,Xamarin一直致力于一個(gè)名為Mono開源項(xiàng)目,這個(gè)項(xiàng)目目的是把C#移植到其他平臺上和給Linux開發(fā)者提供更好的開發(fā)工具。你現(xiàn)在也可以通過Xamarin使用C#為iOS和Android構(gòu)建本地移動應(yīng)用。

SQL,也叫結(jié)構(gòu)化查詢語言,是一種和數(shù)據(jù)庫交流的查詢語言。盡管SQL不能被用來構(gòu)建應(yīng)用,但它被用來管理應(yīng)用中的關(guān)系型數(shù)據(jù)管理系統(tǒng)的數(shù)據(jù)。
現(xiàn)在你對編程語言有了一點(diǎn)了解,也許還稍微有些難懂。但不是所有的編程語言都有同樣的需求和薪水。如果你學(xué)習(xí)編程的目標(biāo)是尋找工作機(jī)會,你是不會輕易因這中語言難學(xué)而被別人勸阻的,以下幾點(diǎn)也許能幫你搞清你應(yīng)該學(xué)習(xí)那種語言。
來自indeed.com的招聘廣告基于薪水的數(shù)據(jù),我們大概能把編程語言分為9個(gè)梯度:

基于這些結(jié)果,顯示出Swift能給你最多的收入,然而Java,Ruby,Python,C++也是不錯的選擇。另外,如果你考慮的是收入,那似乎JavaScript,C#,SQL和PHP不是理想的選擇...不是嗎?
平均工資會受到很多因素,比如的需求(工作的招聘有多少),比如供給(有多少開發(fā)者了解這門語言)和經(jīng)驗(yàn)(一個(gè)初級開發(fā)者比高級開發(fā)者掙的少)的影響。所以在我們得出結(jié)論之前多考慮這些因素不失為一個(gè)好主意。
你有多大可能用你知道的這門語言找到工作?一下是一些indeed.com提供的工作趨勢圖。

我們能從此圖看到Java,JavaScript和SQL開發(fā)者的需求量很高。JavaScript尤其在過去的幾年里有著明顯的增長,由于它在2010年的增長,如今已經(jīng)和Java并駕齊驅(qū)了。
關(guān)于C#開發(fā)者的招聘海報(bào)相對于其他語言還是很多的,對其他語言的開發(fā)者的需求似乎很接近。C++開發(fā)者會發(fā)現(xiàn)其相關(guān)需求有所下降。
但是,如果你的目標(biāo)是在一家創(chuàng)業(yè)公司工作,那么也許來自indeed.com的有關(guān)工作趨勢的數(shù)據(jù)并不能給你一個(gè)好的建議。AngelList是一個(gè)獲得關(guān)于工作信息更好的去處,那么讓我們來看一下AngelList發(fā)布的關(guān)于不同編程語言的軟件開發(fā)者的市場需求吧。

JavaScript再一次地成為需求最大的編程語言,但是相比于Java,C,C++,C#而言,創(chuàng)業(yè)公司似乎更加青睞Python和Ruby(on Rails)。
讓我們看一下Codementor提供的開發(fā)者所掌握的語言種類的數(shù)據(jù)吧:

當(dāng)然,這絕不是對實(shí)際市場的準(zhǔn)確描述,但這也能給你一個(gè)關(guān)于市場上具體情況的大概了解。我們可以發(fā)現(xiàn),雖然移動應(yīng)用開發(fā)已經(jīng)爆炸式增長了一段時(shí)間,但精通Objective-C的專家卻寥寥無幾。由于市場上缺乏好的Objective-C的開發(fā)者,他們的薪水也就自然水漲船高了。
另一方面,市場上的PHP開發(fā)者似乎有著一個(gè)健康的供應(yīng)數(shù)量,這就意味著雇主可以有更多的選擇,并且能在薪水方面有討價(jià)還價(jià)的余地,但我們也發(fā)現(xiàn)它并沒有如同Java,SQL或是JavaScript一樣的市場需求。因此PHP開發(fā)者掙的相對少一些。
JavaScript是一個(gè)特例。盡管供給最大,但它并不在收入最低的梯隊(duì)里,文章后面我們會對JavaScript進(jìn)一步觀察。
現(xiàn)在你已經(jīng)對每種語言的市場供需有了大概了解,讓我們基于招聘廣告薪水的有關(guān)信息,再來看看你的薪資潛力有多大。這個(gè)數(shù)據(jù)來自于 gooroo.io ,從中我們了解到一種語言的薪水高低是從該語言的單個(gè)招聘廣告的薪水演化而來。

從這我們能發(fā)現(xiàn)那些會Ruby,C++或者Java的開發(fā)者似乎有著更高的起薪。Python和Ruby的薪水潛力似乎是最大的,這也就意味著優(yōu)秀的Ruby/Python開發(fā)者更加稀缺,需求量也更大。JavaScript在薪水潛力方面似乎經(jīng)歷了一個(gè)大下滑,在2015年4月的時(shí)候它高達(dá)188,168美元的年薪,但是現(xiàn)在只有大約124,000美元的年薪。然而JavaScript保持了一個(gè)特例,我們稍后會加以闡述。
僅僅比較把JavaScript開發(fā)人員掙的收入同其他編程語言做比較的這種行為其實(shí)好比管中窺豹。
如同我們在編程語言一覽眾提到過的,JavaScript是一個(gè)大類。許多框架被開發(fā)出來用于網(wǎng)站的前端開發(fā),所以你如果僅僅了解JavaScript和jQuery,你可能就比那些會開發(fā)JavaScript框架的開發(fā)者掙的少。
讓我們看看在美國不同的JavaScript框架的開發(fā)者的平均薪水情況吧(React和Backbone是庫,而非框架,Nodejs更像是一個(gè)開發(fā)環(huán)境);

平均工資現(xiàn)在看起來并不糟糕。特別是React,有著一個(gè)非常漂亮的數(shù)據(jù)。當(dāng)然這只是為你提供一個(gè)想法,indeed.com提供的數(shù)據(jù)可能略微不同,平均至少105,000美元。但你必須會JavaScript才能學(xué)習(xí)這些技術(shù),這也使得JavaScript成為一種收入不錯的技能。
讓我們看看有關(guān)這些框架的相應(yīng)的開發(fā)者的需求吧:

Node.js是做后端開發(fā)的,所以如果僅僅是對前端框架而言,你會發(fā)現(xiàn)AngularJS是需求最旺盛的贏家。因此,如果你想做前端開發(fā),你應(yīng)該學(xué)學(xué)AngularJS。
另一方面,React是一門相對新的技術(shù),發(fā)展勢頭很猛,早期和AngularJS分庭抗禮。它可能仍在以迅猛的勢頭發(fā)展,有可能以后會需求更廣,這是由于React的性能總體比AngularJS要好。
如果你對開發(fā)者的世界有一些了解,那么你很可能知道其他開發(fā)者對你的幫助是至關(guān)重要的,尤其是如果你打算自學(xué)編程。
如果你成為開發(fā)者社區(qū)的一員,這絕對會使你開發(fā)的過程更加順暢。
StackOverflow 是全世界開發(fā)者所使用的最大的能互相取得幫助的開發(fā)者社區(qū),所以我們自然會對于一門編程語言的流行度和體量做一個(gè)檢測,也會關(guān)注這門語言的社區(qū)能給開發(fā)者有多大的幫助。
基于StackOverflow上的關(guān)注者,我們能斷定一門語言的大體受歡迎程度:

我們已經(jīng)可以從職位需求趨勢中了解Java和JavaScript開發(fā)者的需求量最高,所以它們的關(guān)注者最多也不足為奇。JavaScript是StackOverflow上關(guān)注量最多的,已經(jīng)超過Java。
SQL,Ruby和Swift的關(guān)注著最少,很可能是因?yàn)镽uby主要是只能用于web開發(fā),而Swift是一門相對新的開發(fā)語言。
StackOverflow有一個(gè)不成文的規(guī)定,那就是你必須措辭“正確”地提問,否則人們就不會回答你的問題。牢記這條原則,讓我們看看每種語言的提問的回答率:

基于以上信息,盡管只有相對少的StackOverflow的用戶關(guān)注C,SQL和C++,但超過60%的相關(guān)問題也得到了答案。那些知情者可能會爭論說C和C++是很先進(jìn)的語言,從而問問題的用戶很可能是更有編程經(jīng)驗(yàn)的,也知道怎樣措辭提問。另一方面來說,SQL并不是用來構(gòu)建應(yīng)用的一門語言。
值得一提的是那些Python和Ruby的開發(fā)者在StackOverflow上得到了很多的支持。初學(xué)者一般都不太會正確地提問,如果之前提到的那樣,Python和Ruby的是初學(xué)者的最佳入門語言。然而,除了這兩門語言是相對流行的語言之外,他們大概都有接近30天內(nèi)60%的問題回答率。(Python的頭號問題回答者是Martijn Pieters,他也是一個(gè)很好的編程導(dǎo)師。)
另一方面,PHP作為一門被廣泛關(guān)注的語言,卻有著最低的問題回答率。這意味著很多人問有關(guān)PHP的問題,但能得到答案的人卻不多。
一旦你進(jìn)入開發(fā)者的行當(dāng),你將不可避免地發(fā)現(xiàn)到:最好是盡可能地在你的項(xiàng)目中使用已經(jīng)存在的解決方案。你一般從一些開源的項(xiàng)目中或者這些解決方法,GitHub是獲取這些開源項(xiàng)目的一種途徑。用戶可以給他們所喜歡的項(xiàng)目打分,越多的分?jǐn)?shù)意味著這個(gè)項(xiàng)目可能越有用。
因此,可以從GitHub存在的數(shù)據(jù)中我們也可以決定使用不同種類的語言來使得開發(fā)相對容易一些。我們也能對一門語言在一些新技術(shù)的改革方面的速度有個(gè)了解。不用大費(fèi)周章,這里既有一個(gè)相對簡單的圖表來展示GitHub上的流行項(xiàng)目;

很明顯,JavaScript有著最新最亮的工具,即使你不考慮各種文檔,學(xué)習(xí)手冊和入門教程。JavaScript還是以極度的快速變化著稱的語言,它的框架變化率很高,一些新的技術(shù)會使開發(fā)者覺得很難跟上JavaScript不斷革新的步伐。另外,它也不是直接和像Ruby,Python,Java和PHP一樣的后端開發(fā)語言直接較量。正是如此,JavaScript會和其他語言有如此大的鴻溝也就不足為奇了。
Ruby和Objective-C在另一方面來說也有很多工具和資源來進(jìn)行開發(fā)。有趣的是,我們在StackOverflow的比較中發(fā)現(xiàn)這兩種語言都不如Java那么廣泛的受歡迎,但是開發(fā)者通常發(fā)現(xiàn)一些關(guān)于他們的開源項(xiàng)目很有用。如果你查看用各種語言寫的開源項(xiàng)目的話,這對于Objective-C來說尤為如此。

除此之外,大部分的用C/C++寫的開源項(xiàng)目不是僅僅為了C/C++項(xiàng)目本身用的,而是為開發(fā)提供了一種通用的工具(例如:適用范圍最廣的Python解釋器是CPython,這就是用C寫的)。之前的語言簡介里提到的C/C++大部分都用于系統(tǒng)應(yīng)用的開發(fā),所以那些GitHub上的開源項(xiàng)目是系統(tǒng)工具也就說得通了。另外,你還可以從開源項(xiàng)目中學(xué)到很多東西。
最后,PHP盡管是一門應(yīng)用廣泛的語言,但因在學(xué)習(xí)資源方面的缺乏而給它拖后腿了。至于說C#,微軟已經(jīng)在為它的開源服務(wù)而加大力度了,所以在不久的將來,我們很可能會在GitHub上看到C#更多的出現(xiàn)。
到底一門編程語言在未來將會導(dǎo)致多大的關(guān)系呢?首先,一門語言的未來很大程度上取決于它的社區(qū)的成長情況,因?yàn)樾迈r血液的注入率和吸收率是保持這門語言流行并且持續(xù)獲得資源的關(guān)鍵。因此,讓我們來看看人們對那些語言的學(xué)習(xí)最為關(guān)注:

似乎Python, JavaScript, C#和 Swift的受關(guān)注度增長最為迅速。基于現(xiàn)階段我們了解的趨勢,我們可以得出以下結(jié)論:
毋庸置疑,JavaScript的關(guān)注度即將增長,尤其是現(xiàn)在它也可以用來開發(fā)后臺,甚至能用來構(gòu)建本地語言的移動應(yīng)用(通過使用React Native)。JavaScript將持續(xù)地獲得更多的開發(fā)工具,并且以相當(dāng)快的速度升級著,所以你可以料想到它將在仍然會極度的重要。
創(chuàng)業(yè)公司喜愛Ruby on Rails。許多著名的網(wǎng)站比如:Airbnb, Twitch, Hulu等,都用Rails構(gòu)建網(wǎng)站,這也意味著他們需要Ruby的開發(fā)者。另外,既然覺得使用Rails開發(fā)很有趣并且它也很容易學(xué)會,Rails將會繼續(xù)在編程新人中很流行。
那就意味著Node.js的崛起必然會對Ruby on Rails的流行度有一個(gè)沖擊-Node.js已經(jīng)在GitHub上超越Rails了。當(dāng)然這也不是Node.js超越Rails絕對的跡象,我們應(yīng)該注意到前些年Rails也超越了Python的最大的后端開發(fā)的web框架:Django,GitHub上Rails比Django的評分更高。
甚而有之,一種新的“同態(tài)”應(yīng)用軟件的趨勢很可能會影響到Rails的普及,這種趨勢提倡改善web應(yīng)用的性能。同態(tài)應(yīng)用需要在Node.js的平臺上運(yùn)行-這就是要使用同樣在前端使用的JavaScript語言。這樣只需要通曉一門語言(JavaScript)的要求可能會使一些想學(xué)Ruby的新人轉(zhuǎn)而學(xué)JavaScript。Google的Go語言也是另一門后端的開發(fā)語言,它也正在得到越來越多的關(guān)注。
然而,既然Rails能持續(xù)獲得更新,它仍將保持關(guān)注度,尤其是因?yàn)樗幸粋€(gè)忠實(shí)的社區(qū)提供海量且有用的開發(fā)工具來使得開發(fā)變得更容易。因此,拋開受歡迎成都不談,Ruby也將在未來一段時(shí)間內(nèi)榜上有名。
Python在學(xué)院派學(xué)者和數(shù)據(jù)科學(xué)家中很流行,如同之前提到的,許多學(xué)校向初學(xué)者推薦Python。這意味著Python將持續(xù)穩(wěn)定增長并且保持相關(guān)度。然而Python的進(jìn)化速度并不快,也沒有JavaScript那樣的爆炸性的需求增長,所以它講持續(xù)的穩(wěn)健自己的地位,尤其是在數(shù)據(jù)科學(xué)家們的高要求之下。
這些年后端開發(fā)的趨勢已經(jīng)從PHP轉(zhuǎn)到別的語言上了,但是如今80%的線上網(wǎng)站仍然是用PHP構(gòu)建的-它畢竟是一門專為web開發(fā)設(shè)計(jì)的語言。
然而,如果你用Google搜索初學(xué)者應(yīng)該學(xué)哪門語言,你也許會發(fā)現(xiàn)那些開發(fā)者一般不推薦你學(xué)習(xí)PHP。事實(shí)上,許多開發(fā)者顯然很討厭PHP。

PHP社區(qū)正試圖用新的關(guān)于“怎樣正確地使用新的開發(fā)工具編寫PHP程序的教程”來擺脫它的壞名聲,但是總體來說PHP的未來似乎相對停滯不前,至少在2015年的美國是這樣。希望PHP7能使它的社區(qū)重新煥發(fā)活力,即使眾所周知這個(gè)社區(qū)相對分散。
Android 使得Java在流行語言中有了大爆發(fā),大多是企業(yè)因Java的穩(wěn)定和擴(kuò)展性而對它鐘愛有加。
隨著Spark(用Scala語言)和Cassandra(支持其他語言)處理大數(shù)據(jù)的框架的崛起,將很難說Hadoop作為最流行的大數(shù)據(jù)系統(tǒng)還能統(tǒng)治多久了,但是根據(jù)企業(yè)出來的數(shù)據(jù)大小,Hadoop并不會消亡。同樣的情況也適合Java,由于Java有一些極佳的后臺開發(fā)工具并且Java更多的為企業(yè)開發(fā)著想。
因此,Java在未來幾年將繼續(xù)作為最流行的編程語言而堅(jiān)挺下去。
由于蘋果發(fā)布的Swift和Objective-C僅僅只服務(wù)于蘋果的產(chǎn)品,我們不能期望Objective-C在未來能堅(jiān)持多久。然而只要你繼續(xù)使用蘋果的產(chǎn)品,Swift就必然將在來未來流行。
然而,這也不意味著你在2016年就不應(yīng)該學(xué)習(xí)Objective-C,由于大部分的iOS的開源項(xiàng)目都仍是用Objective-C編寫的。所以總體上來看,使用一些你不了解的東西并不是一個(gè)明智的選擇,如果你會了Swift,那么學(xué)習(xí)Objective-C并不是難事,反之亦然。
C相對與其他編程語言來說是一門相對低級的編程語言,但既然它是操作系統(tǒng)的構(gòu)建語言,它就依然會存在下去,因?yàn)樵S多開發(fā)工具仍然是用C寫的,Linux也是用C寫的。
SQL 幾乎是所有的數(shù)據(jù)庫管理員都了解的語言。一段時(shí)間里,SQL似乎在例如MongoDB和Redis這種NoSQL服務(wù)興起的時(shí)候被遺忘了,隨著大數(shù)據(jù)計(jì)算平臺如Hadoop,Spark和Cassandra的non-SQL的使用,許多人叫囂著說SQL語言將要滅亡了。
很明顯并不是這樣。其實(shí),即使NoSQL仍然需要重新定位自己為“不僅僅是SQL”。
隨著大數(shù)據(jù)的興起,管理大數(shù)據(jù)的難度也陡然上升,SQL比以往更加炙手可熱了(你已經(jīng)了解了工作機(jī)會的趨勢)。Google最近也升級了它的BigQuery服務(wù),使得它每秒每張表能處理高達(dá)100,000行的記錄,BigQuery用的就是SQL。Spark自從1.3版本后也有了Spark的SQL模塊。
總而言之,SQL又活躍起來了,這是因?yàn)樾枰盟鼇砉芾矶谴鎯Υ髷?shù)據(jù)。因此,雖然不是說SQL在哪都會用到,但是說SQL在相當(dāng)長的一段時(shí)間內(nèi)會榜上有名也不足為過。
C++仍然被認(rèn)為是在性能和能力范圍方面最出色的編程語言(即使是相對與Rust來說),C++很可能在一些對性能要求很高的領(lǐng)域(比如:游戲引擎)仍然流行。一個(gè)先今主要的標(biāo)準(zhǔn)(C++14)被認(rèn)為將在2017年發(fā)布,所以它仍是一門在進(jìn)化的語言。
在未來,Rust也許將會在系統(tǒng)編程的某些領(lǐng)域取代C++,由于Rust旨在相對于C++能夠編寫出更少缺陷的軟件。如果你是一個(gè)高級的開發(fā)者,現(xiàn)在也許是一個(gè)學(xué)習(xí)Rust的好時(shí)機(jī)。
由于微軟平臺的限制和不開源,這沒有給C#幫助,但是Mono幾乎解決了這些問題(盡管Mono有一些性能問題,最近的更新已經(jīng)解決了這些問題)。
C#的開發(fā)者似乎很喜歡 C# 這門語言,所以它有著很強(qiáng)的社區(qū)支持。更別說C#是Unity 3D的主要開發(fā)語言了,Unity 3D是一個(gè)相當(dāng)火爆的游戲引擎,它可以兼容iOShe Linux等系統(tǒng)。Unity3D作為一個(gè)獨(dú)立游戲引擎的崛起使得C#的未來更加光明,Unity3D也能用來開發(fā)虛擬現(xiàn)實(shí)的應(yīng)用。由于虛擬現(xiàn)實(shí)是很有前景的,所以C#一定會有一個(gè)相當(dāng)好的未來。
值得一提的是,C#在一些比如美國,英國的國家,做企業(yè)級開發(fā)也很流行。很明顯微軟將會是C#保持活力并且使它在.NET平臺上存活,微軟已經(jīng)大膽地開源了這個(gè)項(xiàng)目,使得開發(fā)者能更容易地了解和利用這個(gè)平臺。
到底編程初學(xué)者應(yīng)該學(xué)哪門語言呢?很顯然,如果你希望做web開發(fā),你就不可避免地要學(xué)習(xí)JavaScript,無論你是否喜歡它。如果你希望做web的后臺開發(fā),你還必須學(xué)習(xí)一些SQL語言。
進(jìn)一步說,如果你想從一些網(wǎng)站上爬蟲數(shù)據(jù)或者你對數(shù)據(jù)科學(xué)比較感興趣,Python可能是一個(gè)不錯的選擇。如果你想為企業(yè)開發(fā)工作,那么Java是一個(gè)好的去處。如果你對構(gòu)建產(chǎn)品不是那么感興趣,而對工作機(jī)會更加青睞,也許SQL是你不錯的開始(尤其是如果你很喜歡數(shù)學(xué)的話);
總而言之,2016年應(yīng)該學(xué)哪門語言將最終取決于你具體想干什么。
如果你想學(xué)習(xí)怎樣編程,并且能確定你已經(jīng)掌握了有關(guān)學(xué)習(xí)資料的話??梢躁P(guān)注Udemy的#1編程課程,該課程有一對一的專門老師教導(dǎo)。點(diǎn)擊了解更多一對一編程教學(xué)來發(fā)現(xiàn)更多信息吧!