想學程式,還在糾結 該從哪個程式語言 開始? 4大原因,強烈推薦你 JavaScript!

CMoney精選

CMoney精選

  • 2017-05-31 12:11
  • 更新:2019-11-13 15:17

想學程式,還在糾結 該從哪個程式語言 開始? 4大原因,強烈推薦你 JavaScript!

(圖/shutterstock)

 

圖片來源:Shutterstock

大數據文摘

編譯 | Aileen,yawei,彭晗,蔣寶尚,錢天培

 

大多數人學習程式設計的旅程

都是從深夜的一次度娘搜索開始的。

比如很多情況下會是搜索:

“學習__(某種程式設計語言)”

 

但是他們是如何決定

他們想要學習的語言種類的呢?

有些人這麼想,

“在矽谷,他們老用 Java打趣。

或許我也該去學學。”

或者是:

“Haskell現在這麼火熱,就 Haskell吧。”

還有一些人是這樣:

“給 GO 代言的那只地鼠萌萌噠,學 Go吧。”

 

 

至於剩下的那群人,可能會搜索以下內容:

“我應該先學習哪一門程式設計語言?”

這問題被問得太多了,

現在可都有專門的圖表供查詢答案了。

 

決定第一門程式語言

需考慮 4點因素

決定你所學的第一門程式設計語言

可能是一個有趣的過程----就像是玩

“你是金庸小說裡的哪個角色?”

 

但如果你只是因為小時候喜歡玩泥巴,

所以就去學Ruby的話,

我可得提醒你,這可不是個小決定。

(注:Ruby因其功能簡單

但應用靈活而常被比作橡皮泥)

 

你將會花數百個小時

來學習你的第一門程式設計語言

(而且這也只是入門所需罷了),

所以你需要慎重考慮以下幾點:

●這門語言的就業市場

●這門語言的長遠發展前景

●學習這門語言的難易程度

●你可以用這門語言開發什麼專案

(而且和你的朋友們分享,

以便你能保持足夠的學習動力)

 

每一年都會有新的程式設計語言湧現而出,

隨之而來的是關於這些新語言的學術論文,

以及網路漫畫。

一點也不誇張,

就來看看這幅上個月新出的漫畫吧,

畫的還不錯的:

 

當談到第一門程式設計語言該學什麼的時候,

這選項可多了去了。

將範圍縮小一點,這裡是過去 12年,

與學習程式設計相關的

最常見的谷哥搜索結果:

工程師必須先學好 JavaScript

再去學其他的語言!

Java的搜索頻率時高時低。

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

 

但是藏在這些下面的一個小不點兒,

在過去的幾年慢慢地在積累人氣。

它就是 JavaScript。

(作者把 JavaScript比作歐美兒童繪本

the Little Engine That Could中

努力向上的小火車。)

 

在我談論這些程式設計語言以前,

讓我先澄清一下:

●客觀來說我不認為任何一種語言會優於其他語言

●我贊成程式師應該學會多門程式設計語言

●我認為首先他們應該學好一種語言。

而且——你能從我標題猜到——

這種語言應該是 JavaScript。

讓我們先從學校如何教程式設計談起。

 

計算機科學入門

按照慣例,程式設計教學

通常被歸在電腦科學的範疇下。

而電腦科學則通常被看作是

數學的延伸或者是

與和電子工程學位元元的密不可分聯繫。

當然,你現在可能也聽過:

“電腦科學教育

不能讓任何人成為程式設計專家,

這就好比光學習畫筆和顏料

不能讓人成為畫家一樣。”

——Eric S. Raymond

 

截止到2016年,

很多大學仍然認為程式設計

就是電腦科學的一部分,

而電腦科學就是數學的一部分。

因此,很多入門性的程式設計課程

側重於低層次的抽象語言,比如C,

或者是側重於數學運算的語言,如MATLAB。

 

而電腦學院的老大們

也依然持之以恆地

根據年度程式設計語言排行榜

來選擇他們的教學語言,

比如 TIOBE Index,或者是這張 IEEE的:

 

 

超過半數工程師 使用

JavaScript 成為新興程式語言

大多數排行榜看起來

幾乎和十年前幾乎一模一樣。

 

但即使在學術界,

不同程式設計語言的地位

也已發生了翻天覆地的變化。

 

在 2014年,Python取代了 Java

成為在美國頂尖電腦科學專案裡

最為流行的教學語言。

 

而另一個變化也必將會發生。

因為如果你看看工業界實際使用的語言,

情況則大不相同:

超過半數的工程師使用 JavaScript。

JavaScript對 web的前端開發尤為重要,

並且對於相應的後端開發也越來越重要。

而且,它正迅速地擴展到遊戲開發和物聯網領域。

 

招聘啟事中提及 JavaScript的次數

也多於除了 Java外的其他語言:

我提倡 JavaScript 因為…

我們開設開源社區的

JavaScript課程也並非偶然。

在過去的兩年中,

超過 5000人通過 Free Code Camp

得到他們第一份工程師工作。

 

我提倡 JavaScript並不是因為我在教它。

我教授 JavaScript是因為

這是獲得第一份工程師工作

最可靠的途徑。

 

但是 JavaScript適合你嗎?

它是否值得成為你的第一個程式設計語言?

讓我們再來探討我之前提到的那些因素吧。

 

 

因素一:就業市場

如果你學習程式設計

純粹是出於求知的好奇心,

那麼你可以跳過這個因素。

但是如果你像大多數學習程式設計的人一樣,

想要用這項技能去找工作,

這會是一份十分重要的考量。

 

正如我前面提到的,在招聘啟事中,

Java是被提及最多的程式設計語言。

JavaScript則緊隨其後位列第二。

 

但是 JavaScript的情況是這樣的:

儘管它存在了將近 20年,

也只是最近才成為一個

正式的程式設計工具。

現今像 Netflix,Walmart和 PayPal這樣的公司

已經在用 JavaScript編寫他們所有的應用程式了。

 

因此,大量的公司

正在招聘 JavaScript開發人員,

但是在就業市場上

並沒有這麼多會 JavaScript的程式師。

每一個 Java崗位

平均有 2.7個 Java開發者競爭。

PHP和 iOS的競爭也是同等激烈。

 

但是對於每一個 JavaScript崗位,

平均只有 0.6個JavaScript開發者來競爭。

對於具備 JavaScript的開發者來說他們十分搶手。

 

因素二:長遠發展前景

平均每個 JavaScript項目的 Pull requests是

每個Java,Python或者是 Ruby項目的兩倍。

除此之外,JavaScript的增長速度

比其他流行語言都快。

(譯者注:Github的使用者

在對專案作出修改後

需要通過 pull requests來讓其他合作人審核。)

 

JavaScript良好的發展環境還受益於

來自 Google,Microsoft, Facebook, and Netflix等

公司大量的投資資金和天賦異稟的工程人才。

 

例如,TypeScript

(一個靜態類型的JavaScript的超集合)

有超過100個開源貢獻者,

他們中很多都是微軟和谷哥的員工,

並拿著工資的 。

 

對於 Java來說,

這種類型的公司間的合作就很少有了。

甲骨文(通過對 Sun Microsystems的兼併獲得了Java業務)

經常對那些試圖擴展它的公司提出起訴。

(譯者注;甲骨文公司,

全稱甲骨文股份有限公司,

是全球最大的企業級軟體公司,

總部位於美國加利福尼亞州的紅木灘)

 

因素三:學習難易程度

大多數程式師都同意

高級指令碼語言相對容易學習。

JavaScript以及 Python和 Ruby都屬於這個類別。

 

儘管在大學,

學生學到的第一門程式設計語言

仍然是像 Java和 C ++這樣的語言,

但這幾門語言可難學多了 。

 

 

因素四:你可以用它構建哪些項目

這是 JavaScript真正牛逼的地方。

JavaScript可以在任何具有流覽器的設備上運行

(設備的流覽器是運行 JavaScript的平臺)。

你可以使用 JavaScript構建任何東西,

並在任何地方分享它。

因為 JavaScript的廣泛應用,

Stack Overflow的聯合創始人

阿特伍德提出了著名的阿特伍德定律:

“任何可以用 JavaScript來寫的應用,

最終都將用 JavaScript來寫。”

 

每過一個月,

阿特伍德定律的地位就更加穩固。

Java曾經承諾:

它在任何地方都能運行。

你可能還記得 Java Applet。

甲骨文在今年早些時候正式宣佈了放棄 Java Applet。

Python也遇到了同樣的問題:

“我怎麼把我編寫的遊戲分享給我的朋友?

更好的是,有沒有一種方式,

能讓我將這種遊戲安裝在我的手機上,

以至於我可以在學校通過手機向孩子們展示,

而孩子們沒有必要安裝它。“ –

在放棄用 Python作為教學語言後, 

James Hague如是說。

 

與之成對比的是,

我們開源社區的成員

在 Codepen的流覽器中編寫了一些 app。

您可以點擊並直接在流覽器中使用這些 app:

http://s.codepen.io/adambeagle/debug/qOamaz

http://s.codepen.io/safx/debug/Ewcym

http://s.codepen.io/duttakapil/debug/BKGjOa

http://s.codepen.io/Megabyteceer/debug/qbXJMQ

 

 

先學好一門程式設計語言,

然後再學習第二門語言。

如果你不停地從一種語言跳到另一種語言,

你最終將什麼都學不好。

想要擺脫菜鳥階段,

你就需要熟練掌握你的第一門語言,

然後你學習第二門語言的時候就會變得很輕鬆。

 

再之後,你可以擴大你的知識範圍,

並通過學習大量的語言

成為一個更全面的開發人員

 

• 學習C語言

能説明你瞭解電腦記憶體管理方式,

而且C語言在高性能計算中非常有用

• C ++非常適合遊戲開發。

• Python適合用於理科和統計學 。

• 如果你想在大型科技公司工作,

Java是很重要的。

但是,你還是要先學習 JavaScript!

 

好的,現在我要來挑戰不可能了!

——我將會回答一些來自評論區

或是我預計大家會有的反對意見。

 

反對一:JavaScript

難道不是運行地很慢嗎?

從實用角度講,JavaScript與高性能語言一樣快。

它也幾乎和C ++,Java和 Go等高性能語言一樣快。

以下是新出爐的最全面程式設計語言速度比對的結果:

 

反對二:但JavaScript不是靜態類型的

像 Python和 Ruby一樣,

JavaScript是動態類型化的,這是很方便,

但你也很容易碰上麻煩。

這裡我想讓exampleArray成為一個陣列。

我給它賦值,然後檢查它的長度 –

也就是它包含的元素的數量。

 

exampleArray = [1, 2]

-> [1, 2]

exampleArray.length

-> 2

 

但是,之後我不小心將它設置成了一個字串。

exampleArray = “text”

-> “text”

exampleArray.length

-> 4

 

這些類型的錯誤

總是在動態類型語言中發生。

大多數工程師會及時檢查防止這些錯誤,

並為可能的錯誤寫相應的測試。

 

如果你在學第一門程式設計語言的時候

就想使用靜態類型,

那麼我仍然建議你先學習 JavaScript。

然後你就可以快速地掌握 TypeScript。

 

 “Typescript學起來是不簡單的,

但如果你已經會用 JavaScript了,

那就容易多了。”

– AlexEwerlöf就學習 TypeScript如是說

 

 

反對3:但我真的想做一個手機app

我仍然建議先學習JavaScript。

JavaScript提供了一些

用於專門製作手機 app的工具,

例如Angular Cordova和React Native。

 

為了編出真正有趣的 app,

你可能需要用到一個適當的後端,

而這就需要用到一個適合的 Web開發框架,

如Node.js + Express.js。

 

此外,值得指出的是,

手機 app開發的黃金時期已經到頭了。

 

首先,雖然人們用著手機 app,

但所有開發人員工作中有近一半是 Web開發。

相比之下,

手機app開發的工作只有少的可憐的 8% 。

 

App市場已經停滯

多數用戶已停止下載新app!

做什麼事都有會一個應用程式來幫你”

的宏偉願景一直沒有實現。

事與願違,

現在大多數智慧手機用戶已停止下載新app了。

 

當然 - 他們仍然使用 app。

但這些 app主要是 Facebook,

Google地圖和其他少數幾個。

因此,對手機 app開發者的大部分需求

集中在少數大型雇主身上。

 

這些移動開發工作的前景難以預測。

而使用 JavaScript可以更輕鬆地開發,

維護以及推廣手機 app 。

因此,像 Facebook和 Google這樣的公司

正大量投資使用

JavaScript開發 app的更好的工具。

 

截至 2016年,

幾乎所有的開發都是 web開發。

一切都涉及到 web這個大平臺。

在下一輪科技浪潮中即將出現的家用裝備,

以及從學校接你孩子回家的新型汽車,

都將被網路連接在一起 。

這意味著我們需要 JavaScript。

 

反對#4:JavaScript 不是 10天

就被寫好的小玩意兒嗎?

JavaScript有一個離奇的歷史。

你無疑會聽到人們開 JavaScript的玩笑,

說這門語言來的太廉價了。

(譯者注:JavaScript是在 10天內被開發出來的。)

好吧。很多人都喜歡找 C ++的碴。

像 JavaScript一樣,即使被人討厭,

C ++也已經成功了,

而且 它的應用幾乎無處不在。

所以,如果有人曾經責難你

怎麼學了 JavaScript

而不是某一門本周精選程式設計語言,

只要記住創建 C ++那傢夥的名言:

“世界上只有兩類程式設計語言:

人們抱怨的和壓根沒人用的。”

—— Bjarne Stroustrup

 

本文由 大數據文摘 授權轉載, 原文 於此

未經授權,請勿轉載侵權!

(責任編輯:CMoney編輯 / Alodia)

 

菁英軟體工程師戰鬥營

熱烈招生中!

想學程式、成為工程師

卻怕自己沒基礎、學不好嗎?

這裡有史上最專業的魔鬼訓練課程,

讓你有機會 朝夢想前進

全程免費、不用基礎從頭開始、培養就業競爭力!

填寫報名表,將有專人與您聯絡

名額有限>>馬上報名

詳細活動介紹>>點我查看!

有問題歡迎私訊粉專:從0開始學程式!

 

 

CMoney精選

CMoney精選

CMoney 自出版社、各大報章雜誌精選好文 網路上的各家觀點,通通網羅呈現 !

CMoney 自出版社、各大報章雜誌精選好文 網路上的各家觀點,通通網羅呈現 !