CPU|计算机编程语言为何层出不穷?化解开发者痛点才是关键

CPU|计算机编程语言为何层出不穷?化解开发者痛点才是关键

文章图片

CPU|计算机编程语言为何层出不穷?化解开发者痛点才是关键

在 7 月上旬的一篇 CACM 博客文章中 , Doug Meil 谈论了《为何有这么多编程语言?》这个话题 。 而在 1990 年代 , 曾有一位精通计算机、但并非身为全职开发者的朋友向他提问“为何没有一种好用的编程语言?”当时他的回答是 , 编程语言同行为特定的人物或工作语言而设计 。
(来自:BLOG@CACM)
从这个意义上说 , 大多数语言的区别 , 并不在于它们使什么成为可能、而更多地表现在它们使什么变得容易 。
几年前 , Doug Meil 有机会参观了位于加州山景城的计算机历史博物馆 。 有趣的是 , 在众多展品中 , 有一幅关于编程语言演变的超大号壁纸图标 。
这张图是如此之大 , 想必任何编写过“Hello World”语句人们 , 都可以在上面找到对应的编程语言 。
在本能的趋势下 , 人们会忍不住沿着时间的正序方向去查看 。 但若回头望 , 你又会领略到不同的视角 。
这张图表显示了已经发明的数千种编程语言里的大约 150 种 , 其中一些较为通用、另一些则是为特定类型的应用程序而设计 。
图表上的箭头 , 显示了较新诞生的语言如何受到了老语言的影响 。 不过就算复杂如此图 , 它也只能算是更大范围里的一个样本 。

(图 via Coding Across America)
软件世界里的新语言依然层出不穷 , 但很少有全新的语言冒出来 。 回顾早期 , 计算机的资源内存、存储和处理能力都相当昂贵且有限 。
为此 , 人们不得不逆风上坡 , 甚至经常需要通宵熬夜来争取计算机的使用时间 。 而 1950-1960 年代初始的命名空间 , 可以精确地处wwwwwwwwwwwwwww理底层事务 。
时至今日 , 年轻开发者们已鲜有涉足 FORTRAN(公式翻译)、COBOL(通用商业导向语言)、BASIC(初学者通用符号指令代码)、ALGOL(算法语言)、LISP(List Processor) 。
不过就算大多数人可能根本没有听说过描述字符串处理算法的 SNOBOL 语言(1962)或 OBJOL , 但只要充分理解了面向对象的编程理念 , 就不难推测它可以用来干什么 —— 至少年代的命名模式就是如此 。
1964 年的 PL/I , 致力于成为一种更好用的编程语言 。 虽然它没有如设计者预期那样发展 , 但早在 1960 年代初 , 人们就已经提出过“为何有这么多编程语言”的疑问 。
时间快速翻到千禧年后 , 我们陆续迎来了 Scala(2003)、Go(2009)、Rust(2010)、Kotlin(2011)和 Swift(2014) 。

当下的技术环境 , 似乎所有这些基本语言的属性 , 都被重组到了特定的解决方案中 。

【CPU|计算机编程语言为何层出不穷?化解开发者痛点才是关键】
其能够满足任何平台上的所有低级 / 高级功能、过程 / 对象、单线程 / 多线程、编译 / 脚本需求 。
在此情况下 , 继续创造新语言的最大因素 , 反而是出于控制的考量 。
1990 年代中期 , 微软主要提供了 Visual Basic 和 Visual C++ 开发语言 , 两者都源于计算机历史博物馆壁纸上的旧节点 。

VB 流行于为 Windows 桌面平台构建前端应用程序 , 但缺乏许多高级语言功能 —— 比如数据结构和线程 。
VC++ 处于光谱的另一端 ——开发者几乎可以做到任何事情 , 但难点在于语言本身太过复杂 。
正因如此 , 一些人看到了打造一款“中间语言”的机会 , 于是 Java 在 1996 年迎来了爆发 。