日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

程序員應(yīng)該先學(xué)哪種編程語言?

 長沙7喜 2016-11-15

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

大多數(shù)人學(xué)習(xí)編程的計(jì)劃開始于某一天的深夜谷歌搜索。

搜索的內(nèi)容通常類似于“學(xué)習(xí)__”(自行腦補(bǔ)空格)

但是他們是怎樣決定搜索哪種語言的呢?

“在硅谷他們總是對 Java 開玩笑。我想我應(yīng)該學(xué)習(xí) Java”

或者

Haskell?,F(xiàn)在是如此之熱。Haskell。

或者

Go 語言的地鼠 logo 真 tm 可愛。

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

然后我們剩下的人可能會(huì)搜索:

我應(yīng)該先學(xué)習(xí)哪種編程語言?

幾乎沒有問題會(huì)普遍到要用信息圖表來展示。

但下圖列舉了一堆這樣的問題:

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

圖片來源 (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è)編程語言。

因此,你要考慮以下因素:

  • 語言的就業(yè)市場

  • 語言的長期前景

  • 語言的學(xué)習(xí)難度

  • 你在學(xué)習(xí)期間能構(gòu)建什么樣的項(xiàng)目(并且與朋友分享,讓你保持動(dòng)力)

每年都會(huì)產(chǎn)生新的編程語言,和這些編程語言的新學(xué)術(shù)論文,以及新的網(wǎng)絡(luò)漫畫。

不信你看上個(gè)月的這篇佳作:

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

當(dāng)你選擇第一個(gè)編程語言時(shí),選項(xiàng)有很多。為了進(jìn)一步縮小選擇,這里是過去 12 年來最常見的,與學(xué)習(xí)編程有關(guān)的谷歌搜索:

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

Java 起起伏伏。

Python 逐漸上升為最受歡迎的選擇。

但是躲在下面是一個(gè)小火車頭,在過去幾年的流行度慢慢地上升。而這個(gè)小火車頭就是 JavaScript。

在談?wù)撨@些編程語言之前,我先澄清:

  • 我并不是要論證任何一種語言在客觀上比任何其他語言好

  • 我認(rèn)為開發(fā)者們最終不應(yīng)該只學(xué)習(xí)一種語言

  • 我要論證的是應(yīng)該先學(xué)好一門語言。你應(yīng)該已經(jīng)從標(biāo)題中顛倒的文字猜出來了,這門語言就是 JavaScript。

那就正式開始吧,首先我們來探索一下目前學(xué)校教授編程的方法。

計(jì)算機(jī)科學(xué) 101

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

大學(xué)一直是以計(jì)算機(jī)科學(xué)的名義來教授編程的,而計(jì)算機(jī)科學(xué)通常被看做是數(shù)學(xué)的延伸,或者是電氣工程學(xué)位的周邊學(xué)科。

當(dāng)然,你可能已經(jīng)聽說了:

“計(jì)算機(jī)科學(xué)教育遠(yuǎn)遠(yuǎn)不能像學(xué)習(xí)畫筆和顏料可以使人成為一個(gè)專業(yè)畫家那樣,使人成為一個(gè)專業(yè)的編程者。”- Eric S. Raymond

截止到 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)持保留這些課程。

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

大多數(shù)這些排行榜就跟10年前幾乎一模一樣。

但近幾年還是發(fā)生了一些變化,甚至在學(xué)術(shù)屆。

在 2014 年,Python 超過 Java 成為美國頂尖的計(jì)算機(jī)科學(xué)課程最流行的教學(xué)語言 。

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

并且另一改變也即將... 最終... 發(fā)生。

因?yàn)槿绻憧纯磸臉I(yè)人員實(shí)際使用的編程語言,你會(huì)發(fā)現(xiàn)它的畫面是醬嬸的:

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

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 以外的其他編程語言:

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

數(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ā)者很少。

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

數(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 比其他的編程語言增長的更快。

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

數(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í)難度

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

圖片來源: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)造了他目前著名的法則:

任何可以用 JavaScript 編寫的應(yīng)用,最終都會(huì)使用 JavaScript 編寫。

而且隨著時(shí)間的發(fā)展,Atwood 法則越來越有說服力。

Java曾經(jīng)一樣承諾過在任何地方運(yùn)行。你也許記得 Java Applets。Oracle 已經(jīng)在今年早些時(shí)候正式地停掉了它們。

Python 也遭受了同樣的問題:

“我如何才能給我的朋友這個(gè)游戲呢?更好的是,是否有一種方法可以讓我把這個(gè)放在我的手機(jī)上,這樣我可以給學(xué)校的孩子們展示,而不需要他們安裝呢?唔…”——James Hague 在 《讓 Python 退休成為教學(xué)語言》中寫到。

相比之下,這里有構(gòu)建在瀏覽器里的應(yīng)用程序,它們由開源社區(qū)的成員在 CodePen 上創(chuàng)建。您在瀏覽器中就能點(diǎn)擊并且使用這些應(yīng)用程序:

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

1970 年代風(fēng)格的 Simon game

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

Conway’s Game of Life

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

Star Wars-themed Wikipedia Search

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

A roguelike dungeon crawler game

先學(xué)好一門語言。再學(xué)習(xí)第二個(gè)語言

如果你不停地從一種語言跳到另外一種語言,你不會(huì)走的太遠(yuǎn)。

為了打破這種限制,你需要學(xué)好第一個(gè)語言。這樣你的第二種語言會(huì)更加容易。

接下來,你就能學(xué)習(xí)更多語言,從而接觸更多方面的知識,成為一個(gè)更全面的開發(fā)者:

  • C 是學(xué)習(xí)計(jì)算機(jī)實(shí)際管理內(nèi)存方式的絕佳語言,并在高性能計(jì)算方面極為有用。

  • C++ 因?yàn)橛螒蜷_發(fā)而偉大。

  • Python 在科學(xué)和統(tǒng)計(jì)方面棒呆了。

  • 如果你想在大型科技公司工作,Java 很重要。

但是首先你得學(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)值:

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

異議 #2: 但是 JavaScript 不是靜態(tài)類型

跟 Python,Ruby 一樣,JavaScript 是動(dòng)態(tài)類型的語言,這樣會(huì)很方便。但你可能會(huì)陷入困境。在這里我想把examplearray認(rèn)為數(shù)組。設(shè)置它的值,然后檢查其長度?-?含義是它包含元素的數(shù)目。

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。

“Typescript 有一個(gè)學(xué)習(xí)曲線,但是如果你已經(jīng)了解 JavaScript,那么 TypeScript 的學(xué)習(xí)曲線會(huì)非常平滑?!?—— Alex Ewerl?f 在 TypeScript 寫到。

異議 #3: 但我真的想做一個(gè)移動(dòng) app

但是我仍然建議優(yōu)先學(xué)習(xí) JavaScript。

  1. JavaScript 具有開發(fā)本地移動(dòng)應(yīng)用 app 功能的工具,如 Angular Cordova和 React Native。

  2. 為了讓你的移動(dòng)應(yīng)用程序?qū)崒?shí)在在做任何有趣的東西,它可能會(huì)需要一個(gè)適當(dāng)?shù)暮蠖?,需建立一個(gè)合適的 Web 開發(fā)框架,像 Node.js + express.js。

而且,值得指出的是,移動(dòng)應(yīng)用開發(fā)的最好的日子可能即將到來。

對于初學(xué)者,開發(fā)者中幾乎一半的工作是 web 開發(fā),和使用移動(dòng) app 的人們一樣多。相比之下,只有 8% 的工作涉及移動(dòng)應(yīng)用程序開發(fā)。

程序員應(yīng)該先學(xué)哪種編程語言?——答案不是PHP

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è)人一句名言:

“只有兩種編程語言:一種是被人罵的,一種是沒人用的。” —?Bjarne Stroustrup

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多