大多數(shù)人學(xué)習(xí)編程的計(jì)劃開始于某一天的深夜谷歌搜索。 搜索的內(nèi)容通常類似于“學(xué)習(xí)__”(自行腦補(bǔ)空格) 但是他們是怎樣決定搜索哪種語言的呢?
或者
或者
然后我們剩下的人可能會(huì)搜索:
幾乎沒有問題會(huì)普遍到要用信息圖表來展示。 但下圖列舉了一堆這樣的問題: 圖片來源 (http:///startcoding) 決定你的第一個(gè)編程語言是一個(gè)有趣的過程,有點(diǎn)像 “你屬于昆汀·塔倫蒂諾的哪個(gè)角色?”的人格測驗(yàn)。 但是,在你以小孩玩泥巴的心態(tài)跑去學(xué)習(xí) Ruby 之前,給你提個(gè)醒:這個(gè)賭注相當(dāng)高。 它可能會(huì)耗費(fèi)你上百個(gè)小時(shí)去練習(xí),但你遠(yuǎn)遠(yuǎn)不會(huì)勝任你第一個(gè)編程語言。 因此,你要考慮以下因素:
每年都會(huì)產(chǎn)生新的編程語言,和這些編程語言的新學(xué)術(shù)論文,以及新的網(wǎng)絡(luò)漫畫。 不信你看上個(gè)月的這篇佳作: 當(dāng)你選擇第一個(gè)編程語言時(shí),選項(xiàng)有很多。為了進(jìn)一步縮小選擇,這里是過去 12 年來最常見的,與學(xué)習(xí)編程有關(guān)的谷歌搜索: Java 起起伏伏。 Python 逐漸上升為最受歡迎的選擇。 但是躲在下面是一個(gè)小火車頭,在過去幾年的流行度慢慢地上升。而這個(gè)小火車頭就是 JavaScript。 在談?wù)撨@些編程語言之前,我先澄清:
那就正式開始吧,首先我們來探索一下目前學(xué)校教授編程的方法。 計(jì)算機(jī)科學(xué) 101 大學(xué)一直是以計(jì)算機(jī)科學(xué)的名義來教授編程的,而計(jì)算機(jī)科學(xué)通常被看做是數(shù)學(xué)的延伸,或者是電氣工程學(xué)位的周邊學(xué)科。 當(dāng)然,你可能已經(jīng)聽說了:
截止到 2016 年,很多大學(xué)仍然把編程當(dāng)成計(jì)算機(jī)科學(xué),把計(jì)算機(jī)科學(xué)當(dāng)成數(shù)學(xué)。 結(jié)果是許多入門級的編程課程專注于低層次的抽象語言,如 C,或聚焦于數(shù)學(xué)編程的語言,如 MATLAB。 而系主任通常會(huì)指著編程語言的年度排行榜,如 TIOBE指數(shù),或者來源于 IEEE 的結(jié)果(如下圖),堅(jiān)持保留這些課程。 大多數(shù)這些排行榜就跟10年前幾乎一模一樣。 但近幾年還是發(fā)生了一些變化,甚至在學(xué)術(shù)屆。 在 2014 年,Python 超過 Java 成為美國頂尖的計(jì)算機(jī)科學(xué)課程最流行的教學(xué)語言 。 并且另一改變也即將... 最終... 發(fā)生。 因?yàn)槿绻憧纯磸臉I(yè)人員實(shí)際使用的編程語言,你會(huì)發(fā)現(xiàn)它的畫面是醬嬸的: JavaScript 是目前最受歡迎的語言,Stack Overflow 在 2016 年的調(diào)查顯示,調(diào)查的回應(yīng)者中有 49,397 的開發(fā)者使用 JavaScript。 超過一半的開發(fā)者使用 JavaScript。 它對前端 web 開發(fā)非常重要,而且在后端開發(fā)中的使用程度也日益增長。在游戲開發(fā)和物聯(lián)網(wǎng)等領(lǐng)域的使用也迅速擴(kuò)張。 JavaScript 在招聘信息中被提到的次數(shù)也超過了除 Java 以外的其他編程語言: 數(shù)據(jù)來源于世界上最大的招聘信息收集者,Indeed.com 我們建立關(guān)于 JavaScript 課程的開源社區(qū)(Free Code Camp)絕非偶然。在過去的兩年里,超過 5,000 個(gè)人使用 Free Code Camp 找到他們的第一份工作。 我并不是因?yàn)榻?JavaScript 才宣傳它。我教 JavaScript 是因?yàn)?JavaScript 是開發(fā)者找到第一份工作的最佳之路。 但是 JavaScript 適合你么?它值得成為你第一個(gè)編程語言么?讓我們來探究一下前面提到的因素。 因素 #1:就業(yè)市場 如果你學(xué)習(xí)編程純粹出于求知欲,那么請?zhí)^這個(gè)因素。但是如果你像大多數(shù)學(xué)習(xí)編程的人一樣,想利用這個(gè)技能找到一份工作,那么這是一個(gè)重要的考慮因素。 就像我之前提到的,Java 在招聘公告上提到的次數(shù)超過其他編程語言。JavaScript 緊隨其后,排名第二。 但關(guān)于 JavaScript 的一個(gè)事實(shí)是:盡管 JavaScript 已經(jīng)存在了 20 多年,它只在最近幾年才被當(dāng)作真正的工具,如 Netflix,Walmart,和 PayPal 等公司愿意用 JavaScript 構(gòu)建整個(gè)應(yīng)用程序。 因此,很多公司開始雇傭 JavaScript 開發(fā)者,但是在就業(yè)市場中這樣的開發(fā)者很少。 數(shù)據(jù)來源:Indeed.com 對每一個(gè)公開的 Java 職位,有 2.7 個(gè) Java 開發(fā)者競爭。PHP 和 iOS 就業(yè)競爭同樣激烈。 但是對于每一個(gè)公開的 JavaScript 職位,僅有 0.6 個(gè) JavaScript 開發(fā)者。對于具有 JavaScript 技能的開發(fā)者來說,這是一個(gè)賣方市場。 因素 #2: 長期遠(yuǎn)景 平均一個(gè) JavaScript 項(xiàng)目收到的 pull request 是 Java,Python,或 Ruby 項(xiàng)目的兩倍。而在這一點(diǎn)上,JavaScript 比其他的編程語言增長的更快。 數(shù)據(jù)來源:GitHub 2016 10月的調(diào)查情況 JavaScript 的生態(tài)系統(tǒng)也得益于公司的大量投資資金和工程人才,如谷歌,微軟,臉譜,和 Netflix 公司。 例如:TypeScript(一種 JavaScript 的靜態(tài)類型的超集)已經(jīng)有超過 100 個(gè)開源貢獻(xiàn)者,他們中很多人是微軟和谷歌的員工。 很難在 Java 上發(fā)現(xiàn)這種公司間的合作。通過收購 Sun Microsystems 擁有 Java 的 Oracle 公司經(jīng)常起訴試圖擴(kuò)展 Java 的公司。 因素 #3: 學(xué)習(xí)難度 圖片來源:XKCD 的滑稽漫畫。 大多數(shù)程序員都會(huì)同意高級腳本語言相對易學(xué)。JavaScript就屬于這一類,就像 Python,Ruby。 盡管大學(xué)仍然把 Java,C++ 作為第一類語言用來教學(xué),但它們顯然學(xué)習(xí)難度更高。 因素 #4: 你可以使用學(xué)習(xí)的語言創(chuàng)建的工程 這才是 JavaScript 的最大亮點(diǎn)。JavaScript 能運(yùn)行在任何一個(gè)有瀏覽器的設(shè)備上,就需要一個(gè)瀏覽器?;旧夏憧梢杂?JavaScript 構(gòu)建任何東西,并能隨時(shí)隨地分享。 由于 JavaScript 的普及,Stack Overflow 的創(chuàng)始人 Jeff Atwood 創(chuàng)造了他目前著名的法則:
而且隨著時(shí)間的發(fā)展,Atwood 法則越來越有說服力。 Java曾經(jīng)一樣承諾過在任何地方運(yùn)行。你也許記得 Java Applets。Oracle 已經(jīng)在今年早些時(shí)候正式地停掉了它們。 Python 也遭受了同樣的問題:
相比之下,這里有構(gòu)建在瀏覽器里的應(yīng)用程序,它們由開源社區(qū)的成員在 CodePen 上創(chuàng)建。您在瀏覽器中就能點(diǎn)擊并且使用這些應(yīng)用程序: 1970 年代風(fēng)格的 Simon game Conway’s Game of Life Star Wars-themed Wikipedia Search A roguelike dungeon crawler game 先學(xué)好一門語言。再學(xué)習(xí)第二個(gè)語言 如果你不停地從一種語言跳到另外一種語言,你不會(huì)走的太遠(yuǎn)。 為了打破這種限制,你需要學(xué)好第一個(gè)語言。這樣你的第二種語言會(huì)更加容易。 接下來,你就能學(xué)習(xí)更多語言,從而接觸更多方面的知識,成為一個(gè)更全面的開發(fā)者:
但是首先你得學(xué)習(xí) JavaScript。 Ok,現(xiàn)在我要去嘗試那些不可能?——?我要試著預(yù)料評論部分的可能出現(xiàn)的異議。 異議 #1: 但是 JavaScript 不是很慢么? 在大多數(shù)實(shí)踐意義上,JavaScript 是和其他高性能語言一樣快的語言。 在數(shù)量級上,JavaScript (Node.js) 比起 Python,Ruby,PHP 不知道快到哪里去了。 而且它幾乎與高性能語言如 C++,java,Go 一樣快。 這里有最近最全面的綜合的跨語言平臺(tái)的基準(zhǔn)值: 異議 #2: 但是 JavaScript 不是靜態(tài)類型 跟 Python,Ruby 一樣,JavaScript 是動(dòng)態(tài)類型的語言,這樣會(huì)很方便。但你可能會(huì)陷入困境。在這里我想把 exampleArray = [1, 2]-> [1, 2]exampleArray.length-> 2 但是隨后我不小心把它指定為字符串。 exampleArray = “text”-> “text”exampleArray.length-> 4 這些錯(cuò)誤會(huì)在動(dòng)態(tài)類型語言中的一直存在。大多數(shù)開發(fā)人員只是通過檢查到位,以防止這些錯(cuò)誤,并且相應(yīng)地編寫測試。 如果你一定要在第一個(gè)編程語言中包含靜態(tài)類型,那么我仍然推薦優(yōu)先學(xué)習(xí) JavaScript。合影你就可以很快地學(xué)會(huì) TypeScript。
異議 #3: 但我真的想做一個(gè)移動(dòng) app 但是我仍然建議優(yōu)先學(xué)習(xí) JavaScript。
而且,值得指出的是,移動(dòng)應(yīng)用開發(fā)的最好的日子可能即將到來。 對于初學(xué)者,開發(fā)者中幾乎一半的工作是 web 開發(fā),和使用移動(dòng) app 的人們一樣多。相比之下,只有 8% 的工作涉及移動(dòng)應(yīng)用程序開發(fā)。 49,525 人的職業(yè),統(tǒng)計(jì)數(shù)據(jù)基于 2016 Stack Overflow 的調(diào)查響應(yīng)人數(shù)。 “只有一個(gè)應(yīng)用程序”的宏偉愿景并沒有通過。相反,大部分智能手機(jī)的擁有者已經(jīng)停止下載新的 app。 當(dāng)然,他們?nèi)匀皇褂?App。通常是臉譜,谷歌地圖,還有其他的。大部分對移動(dòng) app 開發(fā)者的需求集中在一些大的雇主。 那些移動(dòng)開發(fā)工作的前景很難預(yù)測。多方面的發(fā)展,維護(hù)和部署移動(dòng)應(yīng)用程序使用 JavaScript 更容易。這樣的公司如臉譜和谷歌都在大力投資使用 JavaScript 開發(fā)更好的工具。 截至 2016,幾乎所有的開發(fā)都是 Web 開發(fā)。每一個(gè)接觸的大平臺(tái)都是“網(wǎng)絡(luò)”。在下一個(gè)設(shè)備的浪潮中,你會(huì)在家里交談時(shí),汽車可以接孩子放學(xué) -?網(wǎng)絡(luò)將會(huì)把他們鏈接在一起。 而這就是 JavaScript 的意義。 異議 #4: 難道 JavaScript 不是只花了 10 天寫出來的玩具語言么? JavaScript 有一段詭異的歷史。 毫無疑問,這是人們以 JavaScript 開玩笑的代價(jià)。 同樣,人們對 C++ 既愛又恨。盡管存在這種恨,但就像 JavaScript 一樣,C++ 成功了,而且現(xiàn)在到處都在使用它。 所以,如果有人因?yàn)槟阍趯W(xué)習(xí) JavaScript 而不是“本周精英語言”而嘲笑你,你只需要記住創(chuàng)造 C++ 的那個(gè)人一句名言:
|
|