2020 年 你 的 第一 门 编程 语言 应该 学 什么? ʇdıɹɔsɐʌɐɾ: ɹǝʍsuɐ

大多数 人 的 编程 之 旅 都是 从 搜索 引擎 开始 的。

例如 搜索 “XXX 语言 教程”。

但 要 怎么 决定 从哪 门 语言 开始 呢?

“硅谷 的 人 总是 开 Java 的 玩笑 , 我 想 应该 先 学 Java。”

或者 :

"Haskell! 现在 Haskell 这么 火!"

又 或者 :

"一定 要 学 Gå! 你 看 它 的 吉祥物 多么 可爱!"

或者 当 我们 不知所措 的 时候 , 只能 搜 :

"入门 学 什么 编程 语言 比较 好?"

人们 顾虑 的 问题 通常 就 那么 几个 , 下面 这张 信息 图 很好 地 回答 了 这些 疑惑 :

选择 第一 门 编程 语言 的 过程 十分 有趣 , 这就 好像 是 个人 的 信仰 选择 问题 一样。

也许 因为 你 像个 孩子 一样 喜欢 玩 橡皮 泥 , 稀里糊涂 都 打算 开始 学 y y y 我 还是 要 要 提醒 你 , 不要 草率 做 决定。

想要 真正 掌握 你 的 第一 门 编程 语言 , 你 需要 投入 成千 上百 小时 来 学习 实践。

所以 你 要 考虑 清楚 以下 这 几个 方面 :

  • 这 门 语言 的 岗位 需求 大 不大
  • 这 门 语言 有 没有 发展 前景
  • 语言 的 学习 难度
  • 在 学习 过程 中 你 能 运用 它 开发 什么 的 的 练 手 项目 (把 你 的 成果 分享 给 周围 的 朋友 才能 激励 你 坚持 学习 下去)

每年 都会 有 新 的 编程 语言 出现 , 以及 随着 而来 的 学术论文 亦 或者 是 搞笑 段子 :

第一 门 编程 语言 可选择 的 范围 很 广。 下面 这张 图 清晰 清晰 显示 了 过去 几年 中 几 门 语言 的 的 Google 搜索 热度 变化 :

Java 有 起 有 落 , 而 Python 逐渐 成为 了 最受欢迎 的 入门 语言。 除此之外 , 还有 最近 几年 逐步 火 的 的 JavaScript。

在 我 展开 讨论 之前 , 先 明确 几点 :

  • 我 并 不会 在 这里 争论 哪 门 语言 要比 哪 门 优越
  • 我 认同 一名 合格 的 程序员 最终 应该 掌握 不止 一 门 编程 语言
  • 我 想 说明 的 是 , 对于 刚 入门 的 初学者 来说 , 还是 应该 先 于 一 门 语言 的 的 学习。 而 这 门 语言 , 我 想 你 可能 早就 标题 中 中 发现 —— 就是 JavaScript

我们 先 来 聊聊 现在 学校 的 的 编程 教学 是 什么 情况。

计算机 基础 教学

一般 在 大学 教授 编程 的 的 都是 计算机 系 , 而 计算机 专业 一般 数学 电子 方面 的 内容 又 比较 多。 当然 你 可能 早就听 说过 :

计算机 科学 的 教育 无法 使 任何 人 成为 的 的 , 就 好像 学习 使用 刷子 和 颜料 无法 让 任何 人 成为 画家 — —— Eric S. Raymond (《大教堂 与 集市》 作者)

在 在 2020 年 的 今天 , 许多 大学 还 像 教 计算机 科学 一样 教 , 像 教 数学 一样 教 计算机 科学。

所以 许多 课程 中 编排 的 入门 语言 是 C 这样 底层 抽象 的 语言 , 或者 是 专门 针对 数学 的 MATLAB.

一些 专业 权威 的 机构 也 推出 了 他们 的 编程 语言 年度 排行榜 , 例如 TIOBE-indeks , 又 或者 是 下面 这个 来自 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 一 类 的 的 的 才 开始 全 栈 应用 S JS 构建 他们 的 的。

所以 就 造成 了 市场 上 JavaScript 开发 者 供不应求 的 状况 (数据 来自 Indeed.com)。

从 图 上 来看 , 每个 Java 岗位 大概 有 2.7 人 在 竞争 , IOS 和 PHP 也 平均 都有 2 人 以上 竞争。

而 通过 计算 , 每个 JavaScript 岗位 只有 0,7 , 这就 成了 属于 JS 开发 者 的 卖家 市场。

译者 注 : 为了 更具 说服力 , 特此 补充 的 的 编程 语言 岗位 情况 (数据 来源2019 年 9 月 中国 编程 语言 排行榜) :

事实 二 : 发展 前景

在 GitHub 上 , 平均 每个 JavaScript 的 项目 收到 的 pull-anmodninger 要比 其他 语言 多 两倍 以上。 增长 增长 速度 远超 别 别 流行 语言。

JavaScript 的 整个 生态 体系 也 因为 Google, Microsoft, Facebook, Netflix 这类 大 公司 的 投资 而 受益匪浅。

例如 TypeScript (一种 JavaScript 的 超 集 , 提供 更 丰富 特性 , 可 编译 为 普通 JS) 有着 超过 100 名 开源 贡献者 , 而 这 里面 都是 微软 和 和 谷 歌 的 员工。

而且 这类 集团公司 很少 有 使用 Java 的。 因为 Java 的 所有者 Oracle 经常 会 因为 各种 有关 Java 开发 的 原因 起诉 别的 公司。

事实 三 : 学习 难度

大多数 的 程序员 应该 都会 认同 , 的 的 脚本 语言 通常 比较 好学 ava JavaScript 当然 属于 此类 , , 包括 Ruby 和 Python.

即便 很多 大学 课程 的 的 都是 Java 或 C ++ , 这类 语言 也 真的 很难 上手。

事实 四 : 你 能 实践 的 练 手 项目

是 是 JavaScript 最大 的 优势 。JS 可以 运行 在 任何 有 浏览 器 的 设备 上。 你 几乎 可以 用 JS 开发 任何 应用 , 而且 很 方便 就能 分享 发布 到 任何 地方。

正是 由于 JavaScript 无处不 在 , Stack Overflow 的 联合 创始人 Jeff Atwood 才 说出 他 的 那句 经典 定律 :

任何 可以 用 JavaScript 写成 的 应用 , 最终 都会 使用 JavaScript 写成。

现实 也在 不断 的 佐证 , 证据 在 此。

Java 也曾 号称 是 跨 平台 语言 可 可 你 了解到 , acle acle acle acle App App App Java Applets 的 lets 了

Python 也 经常 会 遇到 的 的 问题 :

我 怎么 才能 把 我 写 的 这个 游戏 发给 我 的 朋友? 或者 能够 不 安装 什么 应用 在 在 手机 上 么 么 James - James Hague i pensionering af Python som undervisningssprog

相比之下 , JS 要 方便 很多。 下面 的 这些 应用 都 来自 我们 开源 的 的 学员 , 你 只 需要 在 浏览 器 里 打开 链接 就能 开始 玩啦 :

先 专注 学好 一 门 语言 , 再去 学 别的。

如果 你 总是 在 各个 语言 摇摆 不定 , 你 很难 取得 什么 实质上 的 进步。

为了 避免 在 入门 阶段 止步 不 前 , 你 需要 扎实 你 的 的 门 语言。 之后 再 学习 别 语言 你 你 就会 感觉到 异常 轻松。

等到 那个 阶段 , 你 就 可以 逐步 成长 为 一名 掌握 语言 的 的 全面 的 开发 者 啦 :

  • C 对于 你 理解 计算机 原理 特别 有 帮助 , 例如 内存 之 类 的。 在 高性能 计算 中 非常 有用。
  • C ++ 在 游戏 开发 中 运用 广泛
  • Python 在 科学研究 和 数据 分析 中 应用 广泛
  • 如果 你 想 在 大型 的 科技 公司 中 工作 , Java 就 非常 重要。

但 还是 先 学会 JavaScript 再说 吧 :)

我 知道 评论 里 会有 很多 人 要 和 我 吵 起来 虽然 我 知道 这 不可能 , 但 我 还是 要 试着 说服 你 一下 :

Q1 : JavaScript 运行 速度 不是 很 慢 么?

在 很多 实际 运用 场景 中 , JavaScript 和 一些 高性能 语言 运行 一样 快。

Node.js 要比 Python, Ruby, PHP 快 上好 几个 数量 级。

甚至 已经 接近 了 C ++, Java, Go 的 性能。

下面 是 一个 比较 全面 的 编程 语言 “跑 分 评测” :

Q2 : JavaScript 连 静态 语言 都不 是!

和 Python / Ruby , , JavaScript 属于 动态 语言 , 使用 起来 也 很。 举 个 例子 , 假如 我 想把 变量 Eksempel Array 设为 数组 , 我 会 先给 它 赋值 然后 然后 通过 通过 通过 来 获取 数组 中 中 元素 的 数量。

exampleArray = [1, 2] -> [1, 2] exampleArray.length -> 2 

但 假如 我 不 小心 赋值 给 了 它 一个 字符串 代码 照样 运行 不会 报错 , 可 并不是 我 想要 的 结果 :

exampleArray = "text" -> "text" exampleArray.length -> 4 

这一 类 错误 在 动态 的 的 语言 中 经常 会 遇到。 的 的 开发 者 都会 专门 写 一些 检查 和 测试 来 避免 此类 错误 的 发生。

如果 你 非要 学 一 门 静态 的 话 , 我 依旧 推荐 你 学习 JavaScript , 之后 再 开始 学习 TypeScript。

TypeScript 是 有 学习 的 的 , 但 在 掌握 了 JavaScript 之后 , 你 的 学习 会 很 顺利 。— Alex Ewerlöf på TypeScript

Q3 : 我 想要 学 的 是 怎么 开发 移动 App

那 你 也 还 应该 学 学 JavaScript 呀 ~

  1. JavaScript 有 一些 很棒 的 工具 可以 开发 原 生 的 移动 应用 , 例如 Angular Cordova 和 React Native.
  2. 为了 让 你 的 移动 App 真的 像模像样 , 它 至少 得 有 个 , 你 用 一些 合适 的 开发 框架 可以 很 轻松 地 实现 , 例如 Node.js + Express.js

而且 移动 开发 的 春天 也 正是 JS 的 流行 带来 的。

在 Stack Overflow 的 调查 中 , , 的 开发 者 的 岗位 都是 Web 都是 , 移动 开发 岗 只占 了 8%。

“为 某 事 专门 下 一个 App” 的 境况 也 已 不再 , 大多数 的 智能 手机 用户 开始 趋于 不 下载 新 的 App 了。

当然 —— 人们 还在 用 着 App。 绝大多数 都是 大厂 的 微 信 、 支付 宝 一 类 (原文 : : Mest Facebook, Google Maps og en håndfuld andre)。 市场 : 移动 对 的 也 越来越 小。

移动 开发 的 前景 也 难以 预期。 而且 在 许多 方面 , 使用 来 来 使用 开发 维护 和 部署 移动 应用 要 更加 轻松 简单。 所以 像 Facebook 和 Google 这样 的 公司 在 研发 更好 的 的 JavaScript 工具 上 投入 的 的 越来越 多。

在 2016 年 , 几乎 的 的 开发 都 和 Web 开发 有关。 所有 的 事情 都 依附 着 互联网 这个 大 平台。 而且 下一波 将 要 的 设备 —— 家庭 智能 、 自动 驾驶 汽车 等 也 都 需要 依附于 网络。

Q4 : JavaScript 不是 一个 只 花 10 天 写着 玩 的 语言 么?

JavaScript 有 一段 简史。

人们 也 经常 会 拿 JavaScript 开 各种各样 的 玩笑。

同样 人们 也 喜欢 吐槽 C ++ , 可 不管 有 多少 人 吐槽 , C ++ 依然 很 成功。

译者 注 : 这就 和 “PHP 是 全世界 最好 的 语言” 是 一个 道理。

所以 如果 再 有人 在 你 面前 S JS 怎么 怎么 不好 的 话 , 请 记住 C ++ 之 父 的 那句 名言 :

世界 上 只有 两种 编程 语言 : 一种 是 天天 人 喷 的 , 另 一种 是 没 人 用 的 。— Bjarne Stroustrup

译者 : 有 任何 问题 或者 建议 意见 请 在 评论 区 参与 讨论 , 我 准备 好 了;)

原文 链接 //www.freecodecamp.org/news/what-programming-language-should-i-learn-first-19a33b0a467d/ , 作者 : Quincy Larson