大多数人学习编程的旅程始于一次深夜的谷歌搜索。
通常搜索的内容是“学习 ______”
但他们是如何决定搜索哪种语言的呢?
“他们总是在《硅谷》中开玩笑说 Java。我想我应该学这个。”
或者:
“Haskell。现在真是太火了。Haskell。”
或者:
“那个 Go 小浣熊真是可爱得让人受不了。”
然后就是我们其他人。
我们可能会搜索类似“我应该先学哪个编程语言?”
很少有问题会被问得如此频繁,以至于能够得到完整的信息图呈现。但这就是其中之一:
决定你的第一门编程语言可以是一个有趣的过程——有点像那些“你是哪位昆廷·塔伦蒂诺角色?”的个性测验。
但在你因为儿时喜欢玩橡皮泥而急着去学 Ruby 之前,让我提醒你:这里的风险相当高。
你需要花费数百小时的练习,才能在第一门编程语言上达到勉强合格的水平。
因此,你应该考虑以下几个因素:
- 该语言的就业市场
- 该语言的长期前景
- 该语言的学习难易程度
- 在学习过程中你可以构建哪些项目(并与朋友分享以保持动力)
每年都有新的编程语言出现,伴随而来的是新的学术论文和网络漫画。
说真的。看看上个月的这一宝藏:
在选择第一门编程语言时,选项绝对不缺。为了缩小范围,以下是过去12年与学习编程相关的最常见谷歌搜索:
Java经历了波动。
Python逐渐成为最受欢迎的选择。
但在这些语言之下,有一款“小火车”在过去几年中缓慢上升,那就是 JavaScript。
在我讨论这些编程语言之前,让我先澄清几点:
- 我并不是在争论任何一种语言在客观上优于其他语言
- 我同意开发者最终应该学习不止一种语言
- 我认为首先应该深入学习一门语言。正如你可能从我标题中的倒置文本中猜到的那样,这门语言应该是 JavaScript。
让我们先来看看目前学校是如何教授编程的。
计算机科学 101
大学传统上在计算机科学的框架下教授编程,而计算机科学本身通常被视为数学的延伸,或与电气工程学位相结合。
当然,正如你现在可能已经听说的:
“计算机科学教育不能让任何人成为专家程序员,就像学习画笔和颜料不能让任何人成为专家画家。”——埃里克·S·雷蒙德
许多大学仍然将编程视为计算机科学,而计算机科学又被视为数学。
因此,许多入门编程课程专注于低抽象层次的语言,如 C,或数学为中心的语言,如 MATLAB。
而系主任们通常保持既定路线,指向年度编程语言排行榜,如TIOBE 指数,或这个来自IEEE的排行榜:
这些排行榜中的大多数与十年前几乎没有变化。
但变化确实发生了。即使在学术界。
在2014年,Python 超越了 Java,成为美国顶尖计算机科学项目中最受欢迎的教学语言。
然而,另一个变化终将……最终……发生。
因为如果你观察一下实际被劳动力使用的语言,呈现出的图景截然不同:
JavaScript 无疑是 49,397 名参与 Stack Overflow 调查的开发者中最受欢迎的语言。
超过一半的开发者使用 JavaScript。它对前端网页开发至关重要,且在后端开发中也变得越来越相关。同时,它还迅速扩展到游戏开发和物联网等领域。
招聘信息中提到 JavaScript 的次数也超过了除 Java 以外的任何编程语言:
数据来自全球最大的招聘信息聚合网站 [Indeed.com]
我们围绕 JavaScript 构建开源社区的课程并非偶然。在过去两年中,超过 5,000 人通过 Free Code Camp 找到了他们的第一份开发者工作。
我并不是因为教 JavaScript 而推荐它。我教 JavaScript 是因为它是获得第一份开发者工作的最可靠途径。
但 JavaScript 适合你吗?它值得成为你的第一门编程语言吗?让我们探讨一下之前提到的几个因素。
因素 #1:就业市场
如果你学习编程纯粹出于智力好奇,可以跳过这一因素。但如果你——和绝大多数学习编程的人一样——希望利用这项技能找到工作,这就是一个重要的考虑因素。
正如我之前提到的,Java 在招聘信息中提及的次数超过任何其他编程语言。JavaScript 紧随其后。
但关于 JavaScript,有一点要注意:尽管它已经存在了 20 年,但它直到最近才成为像 Netflix、沃尔玛和 PayPal 这样的大公司会围绕其构建完整应用程序的工具。
因此,很多公司正在招聘 JavaScript 开发者,但市场上并没有那么多相关人才。
数据来自 [Indeed.com]
每个开放的 Java 职位竞争者有 2.7 名 Java 开发者。PHP 和 iOS 职位的竞争同样激烈。
但在每个开放的 JavaScript 职位中,仅有 0.6 名 JavaScript 开发者。这对具备 JavaScript 技能的开发者来说,确实是一个卖方市场。
因素 #2:长期前景
平均而言,JavaScript 项目收到的拉取请求是平均 Java、Python 或 Ruby 项目的两倍。而且,JavaScript 的增长速度超过了任何其他流行语言。
最广泛使用的编程语言在 GitHub 项目中,这是整体语言受欢迎程度的良好指标
JavaScript 的生态系统还受益于来自 Google、Microsoft、Facebook 和 Netflix 等公司的大量资金和工程人才的投资。
例如,TypeScript(JavaScript 的一种静态类型超集)有超过 100 名开源贡献者,其中许多人是受雇于 Microsoft 和 Google 的员工。
这种跨公司合作在 Java 中更难找到。Oracle——通过收购 Sun Microsystems 实际上拥有 Java——经常起诉那些试图扩展它的公司。
因素 #3:学习难度
这是对 [XKCD 漫画] 的讽刺
大多数程序员会同意,高级脚本语言相对容易学习。JavaScript 就属于这一类,还有 Python 和 Ruby。
尽管大学仍然将 Java 和 C++ 等语言作为第一语言进行教学,但它们的学习难度要高得多。
因素 #4:你可以用它构建的项目
这就是 JavaScript 真正闪耀的地方。JavaScript 可以在任何拥有浏览器的设备上运行,直接在浏览器中。你可以用 JavaScript 构建几乎任何东西,并随时分享。
由于 JavaScript 的普及,Stack Overflow 的联合创始人 Jeff Atwood 提出了他那条著名的法则:
“任何可以用 JavaScript 编写的应用,最终都会用 JavaScript 编写。”
而且随着 时间的推移,Atwood 的法则依然成立。
Java 曾经也承诺可以在任何地方运行。你可能还记得 Java Applets。Oracle 今年早些时候正式宣布淘汰它们。
Python 也面临着类似的问题:
“我怎么才能把我做的这个游戏给我的朋友?更好的是,有没有办法让我把它放在手机上,这样我可以在学校给孩子们展示,而不需要他们安装?嗯。” — James Hague 在 将 Python 作为教学语言退役
相比之下,这里有一些我们的开源社区成员在 CodePen 上的浏览器中构建的应用。你可以直接点击并在浏览器中使用它们:
星球大战主题的维基百科搜索
先学好一门语言,然后再学第二门。
如果你不断地在不同的编程语言之间跳跃,你将难以取得进展。
为了超越基础知识,你需要先学好你的第一门语言。然后,第二门语言会变得容易得多。
从那里,你可以扩展,学习更多语言,成为一个更全面的开发者:
- C 是了解计算机在内存管理方面如何工作的绝佳方式,并且在高性能计算中非常有用。
- C++ 在游戏开发中表现出色。
- Python 非常适合科学和统计。
- 如果你想在大型科技公司工作,Java 是重要的选择。
但首先学好 JavaScript。
好吧,现在我将尝试做一件不可能的事——预见评论区的反对意见。
反对意见 #1:但 JavaScript 不慢吗?
对于大多数实际应用来说,JavaScript 的速度与高性能语言相当。
JavaScript (Node.js) 比 Python、Ruby 和 PHP 快了几个数量级。
它的速度也几乎与 C++、Java 和 Go 等高性能语言相当。
以下是最近一次全面的跨语言基准测试结果:
反对意见 #2:但 JavaScript 不是静态类型的
与 Python 和 Ruby 一样,JavaScript 是动态类型的,这很方便。但这也可能导致问题。在这里,我希望 exampleArray
是一个数组。我设置了它的值,然后检查它的长度——也就是它包含的元素数量。
exampleArray = [1, 2]
-> [1, 2]
exampleArray.length
-> 2
但后来我不小心将其赋值为一个字符串。
exampleArray = “text”
-> “text”
exampleArray.length
-> 4
在动态类型语言中,这类错误时常发生。大多数开发者只是采取检查措施以防止这些错误,并相应地编写测试。
如果你绝对需要在第一门编程语言中使用静态类型,那么我仍然建议你先学习 JavaScript。然后你可以很快掌握 TypeScript。
“TypeScript 有一个学习曲线,但如果你已经知道 JavaScript,学习起来会非常顺利。” — Alex Ewerlöf 论 TypeScript
反对意见 #3:但我真的想做一个移动应用
我仍然建议先学习 JavaScript。
- JavaScript 提供了多个工具用于开发原生移动应用程序,例如 Angular Cordova 和 React Native。
- 为了让您的移动应用程序真正实现有趣的功能,您可能需要一个合适的后端,这通常需要使用合适的网页开发框架来构建,比如 Node.js + Express.js。
此外,值得指出的是,移动应用开发的最佳时期可能已经过去。
首先,尽管人们广泛使用移动应用程序,但几乎一半的开发者职位都是网页开发。与此相比,涉及移动应用开发的职位仅占 8%。
根据 2023 年 Stack Overflow 调查的数据显示,开发者的职业分布。这项调查共收到了 76,872 份开发者的反馈,因此具有相当的代表性。
“有应用程序可以解决这个问题”的宏伟愿景并没有实现。相反,大多数智能手机用户已经停止下载新应用。
当然——他们仍然在使用应用程序。主要是 Facebook、Google Maps 和少数其他应用。因此,移动应用开发者的需求主要集中在少数大型雇主身上。
对于这些移动开发职位的前景,预测起来颇为艰难。开发、维护和分发移动应用的许多方面,使用 JavaScript 会更为轻松。因此,像 Facebook 和 Google 这样的公司正在大力投资于使用 JavaScript 构建更好的工具。
几乎所有的开发都是网页开发。所有的一切都与那个庞大的平台“网络”息息相关。而您将在家中与之交谈的下一个设备,以及接送您孩子的汽车——它们也将通过网络连接在一起。
这就意味着 JavaScript。
异议 #4:JavaScript 不仅仅是一个在10天内写出来的玩具语言吗?
JavaScript 有着独特的历史。
您无疑会听到人们开玩笑取笑它。
人们也喜欢攻击 C++。与 JavaScript 一样,C++ 也在这种反对声中取得了成功,现在几乎无处不在。
因此,如果有人因此而嘲笑您学习 JavaScript 而不是每周的“精英语言”,只需记住 C++ 创始人的名言:
“编程语言只有两种:人们总是抱怨的和没人用的。” — Bjarne Stroustrup
我只写关于编程和技术的内容。如果您 在 Twitter 上关注我 ,我不会浪费您的时间。 ?
本文内容翻译自 原文。