我們首先應該學習哪種語言
大多數人學習編程的計劃開始于某一天的深夜谷歌搜索。
通常就像學習 " __ "
但是他們決定用哪種語言搜索呢?
“他們總是對Java在硅谷上開玩笑。我想我應該學習Java”
或者
Haskell。現在是如此之熱。Haskell。
或者
這些該死的地鼠是如此的可愛。
然后是我們這些人,我們可能會尋找一些東西像 我應該優先學習哪種編程語言? 通常會問他們一些問題來來獲取他們整個圖表的態度。但這是其中之一:
圖片來源決定你第一個編程語言可能是一個有趣的過程 - 一種像那些其中的一個“昆汀·塔倫蒂諾性格是你?”人格測驗。 但是就像你作為一個孩子喜歡玩玩具一樣跑去學習Ruby之前,讓我提醒你:這個賭注是相當高的。 它可能會耗費你上百個小時去練習,但你遠遠不會勝任你第一個編程語言。 因此,你需要考慮以下因素
-
語言的就業市場
-
語言的長期遠景
-
語言是多么容易的學習
-
當你在學習的時候你可以建立什么樣的學習計劃(和朋友分享,讓你可以保持動力)
每年都會有新的編程語言,和這些編程語言的新學術論文,以及新的web漫畫。 嚴格地,從上個月找到這篇佳作:
當你選擇第一個編程語言時,這里有很多選擇。為了進一步縮小選擇,這里是過去12年來最常見的,與學習編程有關的谷歌搜索:
Java 有它的起起伏伏。 Python 逐漸上升為最受歡迎的選擇。 但是隱藏這些的下面是勇敢的小火車頭,在過去幾年的流行度慢慢地上升。而這個引擎就是JavaScript。 在談論這些編程語言之前,讓我澄清:
- 我并不是爭辯任何一種語言客觀地比任何其他語言好
- 我認為開發者們應該最總不僅僅學習一種語言
- 我認為他們首先應該學好一門語言。正如你可以在我的標題中顛倒的文本看到,這個語言就是JavaScript。
讓我們放下手頭上的事情去探索目前編程在學校中是如何被教授的。
計算機科學 101
大選是在計算機科學的保護傘下,傳統地教授編程的,而這種方式通常被看做是數學學科的延伸,或者搭配了一個電氣工程學位。
當然,現在你可能聽到是的是:
“計算機科學教育遠遠不能像學習畫筆和顏料可以使人成為一個專業畫家那樣,使人成為一個專業的編程者。”- Eric S. Raymond
截止2016年,很多大學仍然像對待計算機科學一樣對編程,以及對待計算科學就像數學。
結果是許多入門級的編程課程專注于低層次的抽象語言,如C,或數學編程聚焦于如MATLAB。
而系主任通常會指著編程語言的排行榜,如 TIOBE指數 ,或者來源于IEEE ,堅持保留這些課程。
大多數這些排行榜就像它們與10年前一樣幾乎是相同的。
但是,變化確實發生了。甚至在學術上。 在2014年,Python 超過Java 成為美國頂尖的計算機科學課程的最受歡迎的教學語言
而另一改變也即將... 最終... 發生。 因為如果你看看工作人員實際使用的編程語言,你會發現它描繪了一個與眾不同的畫面:
JavaScript是迄今為止最受歡迎的語言,開發者達49,397,這些開發者回應了2016 Stack Overflow 的調查。 超過一半的開發者使用JavaScript. JavaScript的招聘工作提到的次數超過其他編程語言,除了Java:
數據來源于世界上最大的招聘信息收集者, Indeed.com
我們建立關于JavaScript課程的 開源社區 ,這不是偶然的。在過去的兩年里,超過5,000個人使用開源社區找到他們的第一份工作。
因為我教JavaScript,所以我不宣傳它。因為JavaScript是開發者找到第一份工作的必由之路,所以我教JavaScript。
但是JavaScript適合你么?它值得成為你第一個編程語言么?讓我們來探索這些我之前提到的因素。
因素 #1:就業市場
如果你學習編程純粹出于求知欲,那么略過這個因素。但是如果你( 像大多數人學習編程 )想利用這個技能找到一個工作,這是一個重要的考慮因素。
就像我之前提到的,Java在招聘公告上提到的次數操作其他編程語言。JavaScript比較接近Java,排名第二。
但這些是關于JavaScript的部分:盡管JavaScript已經存在了20多年了,它僅僅最近才成為一些公司重視的工具,如Netflix,Walmart,和PayPal愿意建立整個應用程序。
因此,很多公司開始雇傭JavaScript開發者,但是在就業市場中這樣的開發者很少。
數據來源于 Indeed.com
對于每一個公開的的java職位,有2.7個java開發者競爭。PHP和iOS就業競爭同樣激烈。
但是對于每一個公開的JavaScript職位,僅僅有0.6個JavaScript開發者。招聘市場對于那些具有JavaScript技能的開發者需求很大。
因素 #2: 長期遠景
平均一個JavaScript項目收到是Java,Python,或Ruby項目兩倍的pull請求。而在這一點上,JavaScript比其他的編程語言增長的更快。
JavaScript的生態系統也得益于公司的大量投資資金和工程人才,如谷歌,微軟,臉譜,和Netflix公司。
例如:TypeScript(JavaScript靜態變量的超集)已經有超過100個開源貢獻者,他們中大部分人是微軟和谷歌雇傭來去工作的。
很難用Java找到這種公司間的合作。Oracle- 長訴 通過收購Sun Microsystems,合法擁有Java-公司試圖進一步在Java上擴展。
因素 #3: 難學
This is a parody of an XKCD comic . 這是一個模仿 XKCD漫畫 。
大多數程序員都會同意,高級別的腳本語言是比較容易學習的。JavaScript和Python,Ruby就屬于這一類。 盡管大學仍然在教像Java,C++作為第一類語言,但它們仍然被認為很難學。
因素 #4: 你可以使用JavaSCript創建你的工程
這就是JavaScript的真實寫照。JavaScript運行在任何一個有瀏覽器的設備上,就是一個瀏覽器。你可以使用JavaScript基本上建立任何東西,并隨時隨地分享。 由于JavaScript的普及,Stack Overflow的創始人Jeff Atwood創造了他目前著名的法律: 任何可以使用JavaScript編寫的應用,最終都會使用JavaScript編寫。 而且 隨著時間的發展 ,Atwood的法律會變得更加的強大。 Java曾經一樣承諾過在任何地方運行。你也許記得 Java Applets 。Oracle今年早些時候官方地停掉它們。 Python遭受同樣的這么多問題:
我如何才能給我的朋友這個游戲呢?更好的是,是否有一種方法可以讓我把這個放在我的手機上,這樣我可以顯示給在學校的孩子們,而不需要他們安裝嗎?嗯. - James Hague在沒落的 Python的作為教學語言](Retiring Python as a Teaching Language 。 相比之下,這里有一些應用程序,開源社區的成員在CodePen建立他們的瀏覽器。您可以使用這些并在瀏覽器中點擊:
20世紀70年代Simon類型的游戲 1970s style Simon game
Star Wars-themed Wikipedia Search
A roguelike dungeon crawler game
學好一門語言。然后學習第二個語言
如果你不停地從一種語言跳到另外一種語言, 你不會走的太遠 。
為了超越基礎,你需要學好第一個語言。然后,你的第二種語言會更加容易。 從那里,你可以分出來的,并通過學習多種語言成為一個更全面的開發者:
- C是一個極好的方式來學習計算機如何實際在內存管理方面的工作,并在高性能計算方面是非常有用的
- C++因為游戲開發而偉大。
- Python在科學和統計方面是令人敬畏的。
- 如果你想工作在大的科技公司,java是重要的。 但是首先學習JavaScript。
Ok,現在我要去嘗試那些不可能 - 我將要試圖和提前從評論部分的異議開始。
異議 #1: 但是JavaScript不是很慢么?
JavaScript是 - 為了最大地實用的目的 -和其他高性能語言一樣快。 在數量級上,JavaScript (Node.js) 是比Python,Ruby,PHP快。 它也幾乎與高性能的語言如C++,java,Go一樣快。 這里是最近最全面的綜合的跨語言平臺的調查結果:
異議 #2: 但是JavaScript不是靜態類型
像Python,Ruby,JavaScript是動態類型的語言,這樣會很方便。但你可能會陷入困境。在這里我想把 examplearray 認為數組。設置它的值,然后檢查其長度 - 含義是它包含元素的數目。
exampleArray = [1, 2] -> [1, 2] exampleArray.length -> 2
但是我可以隨機指定它為一字符串。
exampleArray = “text” -> “text” exampleArray.length -> 4
這些類型的錯誤會在動態類型語言中的一直存在。大多數開發人員只是通過檢查到位,以防止這些錯誤,并編寫相應地測試。 如果你非常想在你的第一次編程語言是靜態類型,那么我仍然推薦優先學習JavaScript。然后,你就可以很快地學會TypeScript。
“Typescript有一個學習路線,但是如果已經了解JavaScript,那么學習TypeScript將會很容易。” - Alex Ewerl?f在TypeScript寫到 。
異議 #3: 但我真的想做一個移動app
但是我仍然建議優先學習JavaScript。
-
JavaScript具有開發本地移動應用app功能的工具,如 Angular Cordova 和 React Native 。
-
為了讓你的移動應用程序實實在在做任何有趣的東西,它可能會需要一個適當的后端,需建立一個合適的Web開發框架,像Node.js + express.js。
而且,值得指出的是,移動應用開發的最好的日子可能即將到來。
對于初學者,開發者中幾乎一半的工作是web開發,和人們使用移動app一樣多。相比之下,只有8%的工作涉及移動應用程序開發。
根據 2016 Stack Overflow 響應的調查,參與的開發者有49,525人。
“只有一個應用程序”的宏偉愿景并沒有通過。相反,大部分智能手機的擁有者已經 停止下載新的app 。
當然-他們仍然使用App。通常是臉譜,谷歌地圖,還有其他的。同樣地,大部分的移動app開發需求集中在一些大的雇主。
那些移動開發工作的前景很難預測。多方面的發展,維護和部署使得移動應用程序更容易使用JavaScript。這樣的公司如臉譜和谷歌都在大力投資使用JavaScript開發更好的工具。
截至2016,幾乎所有的開發都是Web開發。每一個接觸的大平臺都是“網絡”。在下一個設備的浪潮中,你會在家里交談時,汽車可以接孩子放學 - 網絡將會把他們鏈接在一起。
而這就是JavaScript的意義。
異議 #4: 難道JavaScript不是只用10天的玩具語言么?
JavaScript有一個 怪異模式的歷史 。
毫無疑問,你會聽到人們以javascript開玩笑的代價。
同樣,人們對C++既愛又恨。盡管存在這種恨,但像JavaScript,C++已經成功了,而且現在很多地方都一樣。
所以,如果有人給你不是本周精英語言,而是學習困難的JavaScript,僅僅記住創造C++的那個人一句著名的話:
“只有兩種編程語言:一個是那些總是婊子使用的,一個是那些沒有人使用的。” - — Bjarne Stroustrup
來自:http://www.zcfy.cc/article/what-programming-language-should-you-learn-first-1602.html