原文:2024年的我会是什么?
大多数人的编程之旅都是从搜索引擎开始的。
例如搜索“XXX语言教程”。
但是你怎样决定从哪种语言开始呢?
“硅谷的人总是嘲笑 Java。我想我应该先学习 Java。”
或者:
“!现在好热啊!”
或者:
“你一定要学围棋!你看它的吉祥物多可爱啊!”
或者当我们茫然无措的时候,我们只能搜索:
“对于初学者来说,学习什么编程语言比较好?”
人们通常只关心几个问题。下面的信息图很好地回答了这些问题:
选择你的第一种编程语言的过程非常有趣,它就像个人信仰的选择。
也许你只是像个孩子一样喜欢玩橡皮泥,并且不假思索地打算学习 Ruby。但我还是想提醒你,不要草率做决定。
要真正掌握你的第一门编程语言,你需要投入数百或数千小时的学习和练习。
因此你需要考虑以下几个方面:
每年都会出现新的编程语言,同时伴随学术论文或有趣的笑话:
第一门编程语言的选择范围很广,下面的图表可以很清楚的看出这几年几种语言学习的搜索热度变化:
Java 经历了起起伏伏,但逐渐成为最受欢迎的入门级语言。此外,近年来还有其他语言也逐渐流行起来。
在我开始讨论之前,让我先明确几点:
我们先来谈谈学校编程教学的现状。
计算机基础教学
编程课程通常在大学的计算机科学系教授,而计算机科学专业通常涉及数学和电子学的内容较多。当然,你可能之前听说过这个:
计算机科学教育并不能让任何人成为专业程序员,就像学习如何使用画笔和颜料并不能让任何人成为画家一样。——埃里克·S.(《大教堂和集市》的作者)
即使在 2020 年的今天,许多大学仍然把编程当做计算机科学来教授,把计算机科学当做数学来教授。
因此很多课程安排的入门语言都是C之类的低级抽象语言,或者是专门针对数学的语言。
一些专业权威的组织也推出了编程语言的年度排行榜,比如下面这个来自 IEEE 的榜单:
大多数榜单十年来基本保持不变。
但事实上并非如此,包括在学术界。
早在2014年它就超越Java,成为美国各大CS()院校最受欢迎的教学语言。
在实际的生产工作中,出现了与权威机构公布的完全不同的变化(数据来源于2019年对名开发者的调查):
超过一半的开发者都在使用它,它原本只用于前端应用开发,现在在后端也逐渐流行起来,甚至开始延伸到游戏开发、物联网等领域。
其在工作中的需求仅次于 Java(数据来自):
所以我们也围绕技术栈构建了我们的开源社区,过去五年来,有超过4万名学生通过学习找到了编程相关的工作。
但它真的适合你吗?值得你为它付出第一次吗?我们继续分析:
事实 1:职位要求
如果你只是为了好玩而学习编程,你可以忽略这一点。但如果你和大多数人一样,想通过掌握编程技能来找到工作,那么这一点对你来说非常重要。
正如我之前提到的,它是继 Java 之后最受欢迎的编程语言。
另一点: 已经存在了 20 多年,直到最近才有一些大公司开始使用全栈 JS 来构建他们的应用程序。
这导致了市场对开发人员的需求超过供应的情况(数据来自)。
从图中我们可以看出,每个Java职位大约有2.7人竞争,IOS和PHP平均有2人以上竞争。
经过测算,每个岗位只有0.7个,对于JS开发者来说,是一个卖方市场。
译者注:为了让这个更有说服力,特此补充一下国内编程语言就业情况(数据来源:2019年9月中国编程语言排行榜):
事实二:发展前景
平均而言,每个项目收到的拉取请求是其他语言的两倍多。其增长速度也比其他流行语言快得多。
整个生态系统也受益于、、、等大公司的投资。
例如,(的超集,提供更丰富的功能,并可编译为纯)拥有超过100个开源贡献者,其中大部分是微软和谷歌的员工。
而且这样的集团公司很少使用Java,因为Java的所有者经常以与Java开发相关的各种原因起诉其他公司。
事实3:学习困难
大多数程序员都会同意,高级脚本语言通常更容易学习。当然,这也包括 Ruby 和。
尽管许多大学课程都教授 Java 或 C++,但这些语言入门确实很困难。
事实 4:你可以做的练习项目
这是最大的优势,JS 可以在任何有浏览器的设备上运行,用 JS 你可以开发几乎任何应用程序,而且很容易在任何地方分享和发布。
正是因为它的普遍性,才使得联合创始人杰夫说出了他的经典定律:
任何能够用 编写的应用程序最终都将用 编写。
现实也在不断证明这一点,证据就在这儿。
Java 曾被认为是一种跨平台语言。但您可能知道,Java 的官方支持已于今年早些时候终止。
经常会遇到类似的问题:
我怎样才能将我编写的这款游戏发送给我的朋友?或者我可以在不安装任何应用程序的情况下在手机上运行它吗?—
相比较而言,JS 就方便多了,以下这些应用都是我们开源社区的同学提供的,大家只需要在浏览器中打开链接就可以开始玩了:
游戏
生命游戏
星球大战-
一个游戏
先集中精力学好一门语言,然后再学习其他语言。
如果您一直在不同语言之间徘徊,就很难取得任何真正的进步。
为了避免停留在入门阶段,你需要学好你的第一语言。之后你会发现学习其他语言非常容易。
到了那个阶段,你将逐渐成长为一名全面发展的开发人员,能够掌握多种语言:
但我们先学习一下它:)
我知道评论区会有很多人想跟我争论。虽然我知道这是不可能的,但我还是会试着说服你们:
Q1:运行速度是不是非常慢?
在很多实际应用场景中,它的运行速度与一些高性能语言一样快。
Node.js 比 Ruby 和 PHP 快几个数量级。
甚至接近C++、Java、Go的性能。
以下是更全面的编程语言“基准”:
Q2:它甚至不是一种静态语言!
和 Ruby 一样,它是一种动态语言,使用起来非常简单。例如,如果我想将一个变量设置为一个数组,我会先给它赋值,然后用一个函数来获取数组中元素的数量。
exampleArray = [1, 2] -> [1, 2] exampleArray.length -> 2
但是如果我不小心给它分配了一个字符串,代码也会运行而不会出错,但这不是我想要的结果:
exampleArray = "text" -> "text" exampleArray.length -> 4
这种错误在动态类型语言中非常常见,大多数开发人员都会编写检查和测试来避免它。
如果你必须学习一门静态语言,我还是建议你先学完它,然后开始学习它。
虽然有一定的学习难度,但一旦你掌握了窍门,一切就都顺利了。 — Alex öf
Q3:我想学习如何开发移动应用程序
那你就先学吧。
有一些很棒的工具可用于开发原生移动应用,例如 Node.js 和 。为了让你的移动应用真正像样,它至少必须有一个后端,你可以通过一些合适的 Web 开发框架轻松实现,例如 Node.js + .js
而移动开发的春天也因JS的火爆而带来。
调查中,接近一半的开发者岗位是Web开发,移动开发岗位仅占8%。
“为了某件事专门下载一个应用程序”的情况已经不再存在,大多数智能手机用户开始倾向于不下载新应用程序。
当然——人们仍在使用应用程序。其中大多数来自微信、支付宝和地图等大公司。市场对移动开发的需求也越来越小。
移动开发的未来难以预测。从很多方面来看,使用 开发、维护和部署移动应用程序都更加容易和简单。因此,各公司都喜欢并正在加大对开发更好工具的投资。
2016年,几乎所有的开发都和Web开发有关。一切都依赖于互联网这个大平台。而下一波将出现的设备——家庭智能、自动驾驶汽车等,也需要依赖互联网。
Q4:这难道不是你为了好玩只花了10天时间编写的语言吗?
有一个简短的历史。
人们也常常拿它开各种各样的玩笑。
人们也喜欢抱怨C++,但是无论有多少人抱怨,C++仍然非常成功。
译者注:这与“PHP 是世界上最好的语言”意思相同。
所以如果有人告诉你 JS 不好,请记住 C++ 之父的那句名言:
世界上只有两种编程语言:一种是天天被批评的语言,另一种是根本没人用的语言。——