為什麼我不推薦 JavsScript 為首選程式語言

labazhou發表於2014-01-13

  幾天前,我寫了一篇《what programming language you should learn first for a career in programming》的文章,引來了很多的爭論(Google+ 上有很多沒有讀文章就提交的)。

  我的推薦語言佇列中的主要因素是我不認為 JavaScript 是競爭者。我之前沒有詳細說明這一點,但是許多人很快就提出:A)JavaScript 是明智的選擇;B)我的疏忽導致。這篇文章我會詳細寫一下,對於那些想把軟體開發做為職業生涯的人,我通常不會首選 JavaScript。然後,我再接受你們的評價。

  這不是好的起點

  JavaScript 狂熱分子經常提到,它上手最快,馬上就可以開始程式設計生涯。他們還提到了只用 notepad 就能開始程式設計,不需要一個編譯器,還觸碰可被語言(或任意 web 瀏覽器)支援的全域性物件。最後,他們還會討論語言本身簡單的特點使得初學者進步很快。所有這些觀點我 100% 同意。

  假如你想成為一名賽車手,XYZ 團隊正在尋找一名新車手。搞到一輛自行車去參加自行車比賽,要比弄到一輛賽車跟著賽道上得車輪容易得多。自行車成本低,學習曲線非常平滑,你很快就能成為 熟手。假如你參加了 5 年的自行車比賽,並且比較擅長了。現在你去應聘 XYZ 團隊的賽車手崗位,他們會僱傭賽車經驗少的人,而不是隻有自行車比賽經驗的你,因為起點越好,他們在賽車上成長得也就越快。

  如果我想僱傭一名軟體開發者,當應聘者說他了解 JavaScript,有 5 年的 JavaScript 開發經驗,這對本次面試將不是一個好的開端。這種應聘者缺乏開發一整套軟體解決方案所需要的基礎,他們的成長時間將比有2-3 年C,C++,Java,C#,Python,Ruby,PHP 經驗的開發者長很多。

  如果我要僱傭一名 web 開發者,JavaScript 的傢伙將更有吸引力。你也應該僅僅加入一個自行車比賽團隊。

  注意到我是在討論軟體開發、軟體工程,端到端系統程式設計,不只是 web 開發,這是非常重要的【這裡有人會引用 Node.js 來反駁】。是的,Node.js,我知道。但是一個有經驗的軟體專家知道一些語言,而不必深入某一種語言的每個細節。你用鐵錘最終可以砍斷一棵樹,但是使 用電鋸是明智的。

  JavaScript 的物件導向程式設計是糟糕的例子

  我承認 JavaScript 可以被認為是一種面嚮物件語言,只是我不認為這是好的例子。特別是你第一次接觸的時候,你在 JavaScript 裡的物件導向程式設計方式和其他語言相差太多。這本身不是壞事,我只是認為你第一次最好學習更通用的 OOP 方式,便於將來更加容易地學習一些基於C(或其他語言)的語言。

  我認為理解類和繼承也是重要的【有人會說到 CoffeeScript,是的,我知道】。然後當你開始用 JavaScript 開發的時候,你會、你一定會看到 JavaScript 的構造器、基於原型的繼承是如何被算作 OOP 的。我也碰巧想到強型別變數對於軟體開發比較重要。

  結論:每個人“知道”JavaScript

  考慮到那些主張 JavaScript 做為第一門首選程式語言的最初言論,雖然是對的,它們也是業餘“coder”大軍的看法。在這一點上,JavaScript 是最好的首選語言。如果你想簡單涉足程式設計行列,如果你想鼓搗 wordpress 部落格,或把程式設計做為業餘愛好,我完全推薦 JavaScript。這不是說 JavaScript 容易掌握,真正掌握 JavaScript 的人沒有多少,那些掌握的人具有從其他語言得來經驗的、很深的程式設計背景;但是有很多人認為他們是一個開發者,因為他們已經開始用 JavaScript 寫東西了。你不想成為這樣的人的。

  如果你想把軟體開發做為職業生涯,那麼有很多路可走。有很多好的語言適合起步,結論或許在大學得到了印證(據我瞭解,還沒有電腦科學系以 JavaScript 做為首選語言)。綜上所述,我反對那些想成為專業程式設計師的人把 JavaScript 做為首選語言。

  英文原文:Why I don't suggest JavaScript as a first programming language

  via: 臘八粥

相關文章