本文是翻譯,版權歸原作者所有
對於軟體職業生涯,JavsScript不應該是首選
幾天前,我寫了一篇《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做為首選語言。
原文地址:http://www.itworld.com/career/399111/why-i-dont-suggest-javascript-first-programming-language
— END —