分类
新闻

2024年我应该先学哪个编程语言

本文探讨了编程初学者的共同经历,通常以一次关于学习哪种语言的谷歌搜索开始。文章强调了 JavaScript 作为首个编程语言的热门选择,原因在于其强劲的就业市场需求、易于学习和广泛的项目构建能力。尽管许多教育机构仍偏爱像 Java 和 C 这样的语言,但职场上主要使用 JavaScript,这使其成为新开发者的重要技能。最终,作者提倡深入学习一门语言,而 JavaScript 被推荐为起点。

大多数人学习编程的旅程始于一次深夜的谷歌搜索。

通常搜索的内容是“学习 ______”

但他们是如何决定搜索哪种语言的呢?

“他们总是在《硅谷》中开玩笑说 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 上的浏览器中构建的应用。你可以直接点击并在浏览器中使用它们:

康威的生命游戏

1970 年代风格的西蒙游戏

星球大战主题的维基百科搜索

一个类地牢探险游戏

先学好一门语言,然后再学第二门。

如果你不断地在不同的编程语言之间跳跃,你将难以取得进展。

为了超越基础知识,你需要先学好你的第一门语言。然后,第二门语言会变得容易得多。

从那里,你可以扩展,学习更多语言,成为一个更全面的开发者:

  • 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。

  1. JavaScript 提供了多个工具用于开发原生移动应用程序,例如 Angular Cordova 和 React Native
  2. 为了让您的移动应用程序真正实现有趣的功能,您可能需要一个合适的后端,这通常需要使用合适的网页开发框架来构建,比如 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 上关注我 ,我不会浪费您的时间。 ?

本文内容翻译自 原文

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注