為什么我不推薦 JavsScript 為首選編程語言

jopen 10年前發布 | 8K 次閱讀 JavsScript

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

  幾天前,我寫了一篇《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 做為首選語言。

來自: 臘八粥
                    <span id="shareA4" class="fl">                          </span>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!