一图看懂编程语言迁移模式:终点站是Python、Go、JS


一图看懂编程语言迁移模式:终点站是Python、Go、JS

文章插图
 有着20年编程经验的资深程序员 , 以自己多年来的经历 , 总结出程序员的编程语言切换规律 , 做了一个主流编程语言的进阶流程图 , 展示不同编程语言之间的承接关系、程序员选择编程语言的方向和路径 。
铁打的程序员 , 流水的编程语言 。时代在发展 , 编程语言也与时俱进 , 不断有新的、更好或者更时髦的语言出现 , 程序员也会或主动、或被动去学习一门新的、”更好“的编程语言 。
Tailscale_io联合创始人Avery Pennarun , 一位有着20年编程经验的资深程序员 , 以自己多年来的经历 , 总结出程序员的编程语言切换规律 , 做了一个主流编程语言的进阶流程图 , 展示不同编程语言之间的承接关系、程序员选择编程语言的方向和路径 。
Avery这个人 , 很像是小说、人物报道里的典型程序员 , 有点偏执 , 喜欢搞怪 。曾经做过7年的Debian开发 , 或许这段经历能够说明一些问题 。因为Avery资历深涉猎广 , 我们也能够从这篇文章中 , 了解到编程语言发展过程的一些有趣的历史传承 。
一图看懂编程语言迁移模式:终点站是Python、Go、JS

文章插图
我们看到 , 图中总共有4条主线 , 分别是:
  1. 低级语言 , 即汇编和C那一支
  2. 商用或者教学用语言 , 即BASIC那一支
  3. 专为数学和科学开发的语言 , 即R那一支
  4. 脚本、胶水语言 , 即Shell那一支
或许有人会说这张图里缺少了html、css、Haskell和Lisp , 这不重要 , 因为Avery并没打算展开去讲它们 。
Avery提到 , 最初的时候 , 4类语言有一个比较明确的边界 。低阶语言编程的程序员使用C , 汇编或者Turbo Pascal , 商用大型程序员使用VB(当然那个时候的“大型” , 和现在的“大型”完全不在一个量级) , 数值计算人员使用Fortran , R或MATLAB , 胶水编程使用Shell或Perl 。
程序员不会用Perl来写操作系统 , 也不会用VB写大数相乘 。现代语言则模糊了相互之间的边界 , 很多R写的程序 , 也可以用Python实现 。语言之间的转换主要在于挑选不同的风格 。
低级编程语言
先来看看传说中的汇编 。用汇编写程序是相当困难的 , 但即使在人工智能蓬勃发展的今天 , 某些场景下汇编仍然是不可替代的最佳编程语言 , 而且 , 所有编译语言的代码都会被转成汇编或者机器语言 。
一图看懂编程语言迁移模式:终点站是Python、Go、JS

文章插图
从汇编开始出现了3个分支 , 在风格上有明显的差异 , 不过我们先看C这一支 。Pascal特点是有"begin...end";而C是用{} 。花括号的风格影响了后世很多语言 , 虽然讨厌花括号的程序员群体也不在少数 。
而且C有一种魔力 , 一旦你开始使用就很容易形成一种习惯 , 不管最终的效率高低 , 你总会想用C去实现一切 。而且C也是为数不多的能合理实现所有上述四类编程问题的语言之一 , 而且速度也还可以 。
一图看懂编程语言迁移模式:终点站是Python、Go、JS

文章插图
C再往下 , 是C++和Python 2 。C++虽然名字看起来好像是C的进阶 , 然而风格却大不相同 。Avery吐槽”用C++是因为很多做商用大型程序开发的程序员别无选择“ 。
一图看懂编程语言迁移模式:终点站是Python、Go、JS

文章插图
而胶水编程就好办多了 , 直接上手Python 2 。虽然Python很慢 , 同时代的Perl也有不少簇拥 。但作为一名C语言选手 , Avery认为Perl的语法风格只能用怪诞来形容 。相比之下 , 更接近C的Python显然是更好的选择 。
一图看懂编程语言迁移模式:终点站是Python、Go、JS

文章插图
不需要花费太多精力就能很快适应Python的语法;在Python里调用C函数的成本比JAVA以及其他语言低多了!唯一的缺点就是慢 , 但你可以调用C模块来缓解啊 。
后来Java出现了 , 大批C和C++程序员迅速投入Java怀抱 , 以至于很长一段时间Java都霸占着编程语言No 1的位子 。


推荐阅读