大多数人的编程之旅都是从搜索引擎开始的。
例如搜索“XXX 语言教程”。
但要怎么决定从哪门语言开始呢?
“硅谷的人总是开 Java 的玩笑,我想应该先学 Java。”
或者:
"Haskell!现在 Haskell 这么火!"
又或者:
"一定要学 Go!你看它的吉祥物多么可爱!"
或者当我们不知所措的时候,只能搜:
"入门学什么编程语言比较好?"
人们顾虑的问题通常就那么几个,下面这张信息图很好地回答了这些疑惑:
Image credit
选择第一门编程语言的过程十分有趣,这就好像是个人的信仰选择问题一样。
也许因为你像个孩子一样喜欢玩橡皮泥,稀里糊涂都打算开始学 Ruby。我还是要提醒你,不要草率做决定。
想要真正掌握你的第一门编程语言,你需要投入成千上百小时来学习实践。
所以你要考虑清楚以下这几个方面:
这门语言的岗位需求大不大这门语言有没有发展前景语言的学习难度在学习过程中你能运用它开发什么样的练手项目(把你的成果分享给周围的朋友才能激励你坚持学习下去)每年都会有新的编程语言出现,以及随着而来的学术论文亦或者是搞笑段子:
第一门编程语言可选择的范围很广。下面这张图很清晰地显示了过去几年中几门语言学习的 Google 搜索热度变化:
Java 有起有落,而 Python 逐渐成为了最受欢迎的入门语言。除此之外,还有最近几年逐步火起来的 JavaScript。
在我展开讨论之前,先明确几点:
我并不会在这里争论哪门语言要比哪门优越我认同一名合格的程序员最终应该掌握不止一门编程语言我想说明的是,对于刚入门的初学者来说,还是应该先专注于一门语言的学习。而这门语言,我想你可能早就在标题中发现了——就是 JavaScript我们先来聊聊现在学校里的编程教学是什么情况。
计算机基础教学一般在大学教授编程课程的都是计算机系,而计算机专业一般数学和电子方面的内容又比较多。当然你可能早就听说过:
计算机科学的教育无法使任何人成为专业的程序员,就好像学习怎么使用刷子和颜料无法让任何人成为画家一样—— Eric S. Raymond(《大教堂与集市》作者)即使在 2020 年的今天,许多大学还像教计算机科学一样教编程,像教数学一样教计算机科学。
所以许多课程中编排的入门语言是 C 这样底层抽象的语言,或者是专门针对数学的 MATLAB.
一些专业权威的机构也推出了他们的编程语言年度排行榜,例如 TIOBE Index,又或者是下面这个来自 IEEE的榜单:
大多数这类榜单 10 年来都没有什么变化。
但事实上不是这样的,包括在学术界。
早在 2014 年,Python 就超过了 Java,成为了最受美国各大 CS(Computer Science)机构欢迎的教学语言。
而在实际上的生产工作中,也发生了和权威机构发布的完全不一样的变化(数据来自 87,354 名开发者参与的 Stack Overflow 2019 年度调查):
多一半的开发者都在使用 JavaScript。它最早只在前端开发应用,现在也逐步在后端流行开来。甚至开始延伸到游戏开发和物联网领域。
工作岗位上对 JavaScript 的需求也仅次于 Java(数据来自 Indeed.com):
所以我们也围绕 JavaScript 技术栈建立了我们的开源社区。在过去的五年里,有超过 40,000 名学员通过在 freeCodeCamp 学习找到了编程相关的工作。
不过 JavaScript 真的也适合你么?它值得你为之献出第一次么?我们来继续分析:
事实一:岗位需求如果你只是为了好奇好玩而学编程的话,可以忽略这一点。但如果你和大多数人一样,想通过掌握编程技能找到工作的话,这点对你就非常重要了。
像我之前提到的,JavaScript 是除 Java 之外需求量最大的编程语言。
另外还有一点:JavaScript 已经发展了 20 多年,而直到最近,一些诸如 Netflix, Walmart 和 PayPal 一类的大公司才开始全栈应用 JS 构建他们的应用。
所以就造成了市场上 JavaScript 开发者供不应求的状况(数据来自 Indeed.com)。
从图上来看,每个 Java 岗位大概有 2.7 人在竞争,IOS 和 PHP 也平均都有 2 人以上竞争。
而通过计算,每个 JavaScript 岗位只有 0.7,这就成了属于 JS 开发者的卖家市场。
译者注:为了更具说服力,特此补充国内的编程语言岗位情况(数据来源 2019 年 9 月中国编程语言排行榜):
事实二:发展前景在 GitHub 上,平均每个 JavaScript 的项目收到的 pull requests 要比其他语言多两倍以上。其增长速度也远超别的流行语言。
JavaScript 的整个生态体系也因为 Google, Microsoft, Facebook, Netflix 这类大公司的投资而受益匪浅。
例如 TypeScript(一种 JavaScript 的超集,提供更丰富特性,可编译为普通 JS)有着超过 100 名开源贡献者,而这里面大多数都是微软和谷歌的员工。
而且这类集团公司很少有使用 Java 的。因为 Java 的所有者 Oracle 经常会因为各种有关 Java 开发的原因起诉别的公司。
事实三:学习难度大多数的程序员应该都会认同,高级的脚本语言通常比较好学。JavaScript 当然属于此类,也包括 Ruby 和 Python.
即便很多大学课程教授的都是 Java 或 C++,这类语言也真的很难上手。
事实四:你能实践的练手项目这是 JavaScript 最大的优势。JS 可以运行在任何有浏览器的设备上。你几乎可以用 JS 开发任何应用,而且很方便就能分享发布到任何地方。
正是由于 JavaScript 无处不在,Stack Overflow 的联合创始人 Jeff Atwood 才说出他的那句经典定律:
任何可以用 JavaScript 写成的应用,最终都会使用 JavaScript 写成。现实也在不断的佐证,证据在此。
Java 也曾号称是跨平台语言。可也许你了解到,Oracle 官方在今年早些时候终止了Java Applets 的支持。
Python 也经常会遇到类似的问题:
我怎么才能把我写的这个游戏发给我的朋友?或者能够不安装什么应用就在手机上运行么? — James Hague in Retiring Python as a Teaching Language相比之下,JS 要方便很多。下面的这些应用都来自我们开源社区的学员,你只需要在浏览器里打开