為什麼我不推薦 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 做為首選語言。
英文原文:Why I don't suggest JavaScript as a first programming language
via: 臘八粥
相關文章
- 我為什麼不再推薦RxJavaRxJava
- 為什麼我不再推薦Julia? - yuri
- 我為什麼推薦Nuxt3UX
- 我為什麼不推薦使用BeanUtils屬性轉換工具Bean
- Python為什麼會成為人工智慧開發的首選語言?Python人工智慧
- 何為程式語言?為什麼要學C語言?C語言
- react router為什麼推薦使用browserHistory而不推薦hashHistory?React
- 為什麼Spring官方不推薦使用 @Autowired?Spring
- 為什麼IDEA不推薦你使用@Autowired ?Idea
- .NET為什麼推薦它作為RabbitMQ訊息佇列的首選開發工具MQ佇列
- 為什麼不推薦大家去外包公司
- 程式語言這麼多,為什麼建議選擇Python?Python
- 什麼Jupyter?為什麼初學Python推薦選擇Jupyter?Python
- 我為什麼推薦Prettier來統一程式碼風格
- 為什麼我不推薦鮑勃叔叔的清晰架構這本書?架構
- 為什麼我不推薦去SAP培訓機構參加培訓?
- 為什麼選擇Rust作為物聯網的程式語言? - Ash MoosaRust
- 為什麼我推薦Nginx作為後端伺服器代理Nginx後端伺服器
- 【肥朝】看原始碼,我為什麼推薦IDEA?原始碼Idea
- 為什麼我推薦你使用 systemd timer 替代 cronjob?
- 為什麼有人不推薦使用spring官方推薦的@Transactional宣告式註解Spring
- 為什麼程式設計初學者會選擇 Python 作為入門語言?程式設計Python
- 為什麼推薦應屆畢業生學Python語言?Python基礎入門Python
- 為什麼會有這麼多的程式語言?
- 為什麼自制指令碼語言是程式語言的最高境界?指令碼
- 我為什麼要推薦《JavaScript 忍者祕籍(第2版)》JavaScript
- 為什麼IT入門推薦首選HTML5大前端?Web前端工程師到底好在哪?HTML前端Web工程師
- 什麼Jupyter框架?為什麼學Python推薦Jupyter?框架Python
- 嵌入式開發為什麼選擇C語言?C語言
- 為什麼機器學習會選擇Python語言?機器學習Python
- 為什麼選擇Java語言用作高頻交易?-JadJava
- 為什麼爬蟲語言選擇Python而不是Java?爬蟲PythonJava
- 為什麼不推薦在Spring Boot中使用@Value載入配置Spring Boot
- 【轉載】為什麼 MySQL 不推薦使用子查詢和 joinMySql
- [轉載] 為什麼 MySQL 不推薦使用子查詢和 joinMySql
- 作為一門程式語言 Python為什麼如此受歡迎Python
- 為什麼Julia語言這麼棒?
- 為什麼推薦Kestrel作為網路開發框架框架
- 為什麼大語言模型能將我們帶入AGI?模型