分類
新聞

2024 年我應該先學習哪種程式語言

這篇內容探討了初學者在程式設計領域的共同旅程,通常是從一次 Google 搜尋開始,尋找應該學習哪種語言。它突顯了 JavaScript 作為首選程式語言,原因在於其強勁的就業市場需求、學習簡單以及在專案建設中的多樣性。文章強調,儘管許多教育機構仍偏愛 Java 和 C 等語言,但職場上主要使用的仍是 JavaScript,使其成為新開發者的重要技能。最終,作者提倡深入學習一種語言,而 JavaScript 則是推薦的起步點。

大多數人學習程式設計的旅程始於一次深夜的 Google 搜尋。

通常會是類似「學習______」的搜尋。

但他們是如何決定搜尋哪種語言的呢?

「他們總是開玩笑說 Java 在《矽谷》裡。我想我應該學那個。」

或者:

「Haskell。現在超火的 Haskell。」

或者:

「那隻 Go 的小海狸實在是太可愛了。」

然後是其他的人。

我們可能會搜尋類似「我應該先學哪種程式語言?」的問題。

很少有問題會如此普遍,以至於出現完整的資訊圖表。但這就是其中之一:

決定你的第一種程式語言可以是一個有趣的過程——有點像那種「你是哪個昆汀·塔倫蒂諾角色?」的個性測驗。

但在你因為小時候喜歡玩橡皮泥而跑去學 Ruby 之前,讓我提醒你:風險可不小。

要成為對你的第一種程式語言有一定能力,需花費數百小時的練習。

所以你應該考慮以下幾個因素:

  • 該語言的就業市場情況
  • 該語言的長期前景
  • 學習該語言的難易程度
  • 在學習過程中可以構建的專案(並與朋友分享,以保持動力)

每年都有新的程式語言問世,隨之而來的還有新的學術論文和網絡漫畫。

說真的,看看上個月這個珍品:

在選擇第一種程式語言時,選擇的選項不在少數。為了縮小範圍,這裡是過去 12 年與學習程式設計相關的最常見 Google 搜尋:

Java 的受歡迎程度起伏不定。

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

但在這些語言之下,還有一種逐漸提升受歡迎程度的小引擎,那就是 JavaScript。

在談論這些程式語言之前,讓我澄清一下:

  • 我並不認為任何一種語言在客觀上優於其他語言
  • 我同意開發者最終應該學習多於一種語言
  • 我認為他們首先應該學好一種語言。而——正如你從我標題中的顛倒文字可以猜到的——這種語言應該是 JavaScript。

讓我們從探索目前學校如何教授程式設計開始。

計算機科學 101

大學傳統上將程式設計納入計算機科學的範疇,而計算機科學本身常被視為數學的延伸,或與電子工程學位的關聯。

當然,正如你現在可能已經聽過的:

「計算機科學教育無法使任何人成為專家程式設計師,就像學習畫筆和顏料無法使任何人成為專業畫家。」——艾瑞克·S·雷蒙德

許多大學仍然將程式設計視為計算機科學,而計算機科學則視為數學。

因此,許多入門的程式設計課程集中在像 C 這樣的低抽象語言,或像 MATLAB 這樣以數學為重點的語言。

而系主任通常會遵循這一方向,指向年度程式語言排行榜,如TIOBE 指數,或這個來自IEEE的排行榜:

這些排行榜大多數看起來幾乎與十年前完全相同。

但變化確實會發生。即使在學術界。

在 2014 年,Python 超越了 Java,成為美國頂尖計算機科學課程中最受歡迎的教學語言。

然而,另一個變化終究會……最終……發生。

因為如果你看看實際上由工作人員使用的語言,所呈現的畫面截然不同:

根據 Stack Overflow 的調查,JavaScript 是 49,397 名開發者中最受歡迎的語言。

超過一半的開發者使用 JavaScript。它對前端網站開發至關重要,並且在後端開發中也越來越相關。而且它正在迅速擴展到遊戲開發和物聯網等領域。

招聘廣告中提到 JavaScript 的頻率超過了除了 Java 以外的任何編程語言:

數據來自全球最大的招聘廣告聚合平台 [Indeed.com]

我們圍繞 JavaScript 建立開源社區課程並非偶然。在過去兩年中,超過 5,000 人通過 Free Code Camp 獲得了他們的第一份開發者工作。

我並不是因為教 JavaScript 而推崇它。我教 JavaScript 是因為這是獲得第一份開發者工作的最可靠途徑。

但 JavaScript 適合你嗎?它值得成為你的第一種編程語言嗎?讓我們來探討之前提到的那些因素。

因素 #1:就業市場

如果你學習編程純粹是出於智力好奇,隨意跳過這個因素。但如果你——像大多數學習編程的人一樣——想利用這項技能找工作,那這是一個重要的考量。

如我之前提到的,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 項目的兩倍。而且,JavaScript 的增長速度超過了任何其他流行語言。

最廣泛使用的 GitHub 項目編程語言,這是一個整體語言受歡迎程度的良好指標

JavaScript 的生態系統也受益於 Google、Microsoft、Facebook 和 Netflix 等公司在資金和工程人才方面的重金投資。

例如,TypeScript(JavaScript 的靜態類型超集)擁有超過 100 名開源貢獻者,其中許多人是 Microsoft 和 Google 的員工,並在為此獲得報酬。

這種跨公司合作在 Java 中比較難找。Oracle——通過收購 Sun Microsystems 實際上擁有 Java——經常起訴那些試圖擴展 Java 的公司。

因素 #3:學習難度

這是對一個 [XKCD 漫畫] 的諷刺

大多數程序員會同意高級腳本語言相對容易學習。JavaScript 就屬於這一類,與 Python 和 Ruby 一樣。

儘管大學仍然將 Java 和 C++ 作為第一語言教授,但它們學習起來要困難得多。

因素 #4:你可以用它構建的項目

這是 JavaScript 真正閃光的地方。JavaScript 可以在任何有瀏覽器的設備上運行,並且就在瀏覽器中。你幾乎可以用 JavaScript 構建任何東西,並隨處分享。

由於 JavaScript 的普及,Stack Overflow 的聯合創始人 Jeff Atwood 創造了他那著名的法則:

「任何可以用 JavaScript 編寫的應用程式,最終都會用 JavaScript 編寫。」

而且,隨著每個月的推移,Atwood 的法則依然堅挺。

Java 也曾承諾能在任何地方運行。你或許還記得Java Applets。Oracle 今年早些時候正式宣告其終結。

Python 面臨著類似的問題:

「我該如何把這個我做的遊戲給我的朋友呢?更好的是,有沒有辦法能讓我把它放到手機上,以便我能在學校向孩子們展示,而不需要他們安裝?嗯。」—— James Hague 在將 Python 作為教學語言退役

相對而言,這裡有一些我們開源社區成員在 CodePen 上用瀏覽器構建的應用程式。你可以直接點擊並在瀏覽器中使用這些:

康威的生命遊戲

1970年代風格的西蒙遊戲

星際大戰主題的維基百科搜尋

一款 Roguelike 地城探險遊戲

先學好一種語言,再學第二種。

如果你不斷地從一種語言跳到另一種語言,你將無法走得太遠。

要想超越基礎,你需要把第一種語言學好。然後學習第二種語言將會容易得多。

從這裡開始,你可以擴展自己,通過學習多種語言成為一名更全面的開發者:

  • C 是了解計算機如何在內存管理方面實際運作的好方法,並且在高性能計算中非常有用
  • C++ 非常適合遊戲開發。
  • Python 在科學和統計方面表現出色。
  • 如果你想在大型科技公司工作,Java 是重要的。

但首先學習 JavaScript。

好吧,現在我將嘗試做不可能的事情——我將試著預測評論區的反對意見。

反對意見 #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,那麼學習的過程將會非常順利。」—— Alex Ewerlöf 談 TypeScript

反對意見 #3:但我真的想製作一個移動應用程式

我仍然建議你先學習 JavaScript。

  1. JavaScript 擁有多種工具來製作原生移動應用程式,例如 Angular CordovaReact Native
  2. 為了讓您的移動應用程式實際上能做些有趣的事情,它可能需要一個合適的後端,而您會希望使用合適的網頁開發框架來構建,例如 Node.js + Express.js。

此外,值得指出的是,移動應用程式開發的最佳時代可能已經過去。

首先,儘管人們使用移動應用程式的頻率很高,但幾乎一半的開發者工作仍然是網頁開發。相比之下,涉及移動應用程式開發的工作僅占 8%。

根據 2023 年 Stack Overflow 調查的職業開發者統計。這個問題的回應來自 76,872 名參與調查的開發者,因此相當具代表性。

那句「有應用程式可以解決這個問題」的宏大願景並未實現。相反,大多數智能手機擁有者已經 停止下載新應用程式

當然,他們仍然使用應用程式。主要是 Facebook、Google Maps 和少數幾個其他應用程式。因此,對移動應用程式開發者的需求主要集中在幾個大型雇主身上。

對於這些移動開發工作的前景,難以預測。開發、維護和分發移動應用程式的許多方面在使用 JavaScript 時都更為簡單。因此像 Facebook 和 Google 這樣的公司正在大量投資於使用 JavaScript 建造這些應用的更好工具。

幾乎所有的開發都是網頁開發。所有事物都與這個名為「網路」的大平台息息相關。而您將在家中與之對話的下一波設備,以及接送您孩子的車輛,也都將通過網路連接在一起。

而這意味著 JavaScript。

反對意見 #4:JavaScript 難道不是一種在 10 天內寫成的玩具語言嗎?

JavaScript 的 歷史相當曲折

您無疑會聽到人們對它開玩笑。

其實人們也喜歡抱怨 C++。而且與 JavaScript 一樣,C++ 在這種批評中仍然成功,現在它幾乎無處不在。

所以如果有人因為您學習 JavaScript 而給您難堪,而不是去學習當周的精英語言,只需記住創造 C++ 的那位人士的名言:

「只有兩種編程語言:人們總是抱怨的和沒有人使用的。」 — Bjarne Stroustrup

我只寫關於編程和技術的內容。如果您 在 Twitter 上關注我 我不會浪費您的時間。 ?

本文內容翻譯自 原始文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *