为什么会有这么多编程语言?


为什么会有这么多编程语言?

在编程语言如此丰富的今天,相信许多开发者都有过上面的疑问。不过早在 1960 年代初,人们就已经提出了这个问题。

《ACM通讯》期刊近日发表了题为《Why Are There So Many Programming Languages?》的文章,作者在文中指出了一个重要原因:公司基于商业利益的诉求,希望控制编程语言,所以会发明由自己主导的语言。

1990 年代中期,Visual Basic 和 Visual C++ 是微软主力开发和维护的编程语言。这两种语言都是从已有的编程语言衍生而来,Visual Basic 的优势是为 Windows 桌面平台构建前端应用程序,但它缺乏许多高级语言功能(如数据结构、线程)。Visual C++ 虽然几乎可以处理所有问题,但它十分复杂。然后,Java 在 1996 年问世了,Java 是全功能的面向对象的编程语言,不像 C++ 那么复杂。

Java 的核心功能之一是平台可移植性,但这不是微软希望看到的,因此 Java 背后的公司 Sun Microsystems 与微软产生了冲突,并且从 1997 年开始发起诉讼。双方紧张的关系最终导致微软在 2002 年发布了一门名为 C# 的编程语言,它看起来很像 Java,但事实上并不是。当然两者最重要的不同点在于,C# 是微软可以在自家 Windows 平台上控制的编程语言。

除了公司对于控制和财富的诉求,编程语言之所以如此多与当时的技术环境和水平密切相关。现在许多看起来理所当然的事情在过去并非如此,早期计算机的存储、内存和处理能力都是有限而昂贵的。人们不得不费尽周折,只为到计算机实验室,通宵熬夜以获得计算机使用时间。

在那个时代,编程语言通常是为某些任务或工作而设计的,编程语言的命名也更简单——因为命名空间尚未被开发。在 1950 年代和 1960 年代,最初的程序可以“奢侈地”用其所作的事情精确命名:FORTRAN(公式翻译器)、COBOL(面向商业的通用语言)、BASIC(初学者通用符号指令代码)、ALGOL(算法语言)、LISP(列表处理器)。大多数人可能没有听说过 SNOBOL(面向字符串和符号语言,1962),但是通过名字稍微猜测就可以知道它的用途。如果那个时代对面向对象的编程概念有更多了解,相信会有人使用“OBJOL”之类的名字命名——明确命名为面向对象语言,至少按照那时的命名模式会是这样。

到了现在,更多的编程语言在许多方面都像是重新造轮子——它们许多都是满足下面属性的多种组合:

  • License
    • 开源;商业
  • 平台
    • 操作系统、硬件支持
  • 语言范式
    • 面向过程、函数式、面向对象等
  • 类型系统
    • 动态、静态等
  • 并发
    • 单线程、多线程
  • 内存管理
    • 垃圾回收(自动或手动)
  • 执行
    • 解释、编译到虚拟机、原生编译等
  • ……

相關推薦

2023-09-20

有 应用开发框架,虽然没有芯片、操作系统、数据库、编程语言这些重要。但是最终呈现在用户面前的,总是有软件部分。而软件系统开发,一般都需要应用开发框架,它是软件系统的基础性部件之一。 很多很多软件系统都

2023-09-22

冠军团队也有 25 人加入了华为各个部门。我想问,华为为什么觉得支持竞赛对业务发展这么重要,或者是必须要做的事情呢? 任正非:俄罗斯是一个伟大的国家。叶卡捷琳娜引进了西方的绘画、音乐、哲学……,同一个时代,

2022-02-22

量这两个许可证,就是另一码事了。 阮一峰老师在《为什么 GPL 是更好的开源许可证?》一文中作了逻辑阐述: 当程序员放弃代码的版权,或者选择 BSD 许可证,他可能认为自己做出了世界上最无私的行为。很大程度上,事

2023-09-22

个 LTS 版本会遵守六年的规律,但之后发布的新版本则只会有两年周期。 对此,Corbet 解释称,主要原因在于缺乏使用和缺乏支持;“维持这么久确实没有意义,因为人们已经不再使用它们了”。还有一个很大的问题是,Linux 代

2024-01-03

未来一年,可能会有更多公司将其开源许可证变更为商业许可证、出现新一轮的监管浪潮以及 GenAI 的持续发展。 开源世界在 2023 年伊始就充满了不确定性,科技界大面积裁员、经济动荡不安。生成式 AI 在过去的一年里取得

2022-12-08

了”。他认为,这对 Twitter 意味着: 短期内,可能不会有太多开源工作计划。对于 Twitter 来说,变回仅仅作为开源的消费者而不做出任何有意义的贡献是相对容易的;反正很多公司都是这么做的,他们可以像以前一样继续使

2023-09-26

器中心,我可以判断是否还可以放更多的服务器。这就是为什么我问你们是否真的去过那些设施。如果你们没有去过,那你们说的就是胡说八道。” SpaceX 和 Tesla 的成功是因为马斯克不懈地推动他的团队更加敏捷、有创造力,

2023-11-09

性价比。 我相信,如果龙芯性价比达到一定水平,肯定会有越来越多的品牌整机使用。同时,要做第三套生态,一定要重构产业链。 感谢你的建议,我最近多次讲的“点面结合”中的“点”与你的第三点建议是一致的。 &nbs

2023-10-08

具备全球第二级别的生态规模)。更多内容详见:《中国这么多 Java 开发者,应该诞生出生态级应用开发框架》 有什么特点? 启动快 5 ~ 10 倍。 (更快) qps 高 2~ 3 倍。 (更高) 运行时内存节省 1/3 ~ 1/2。 

2023-03-04

我们发现,除了基础的工作负载和运维需求之外,用户还会有诸如多集群高可用、资源共享、资源回收等应用管理策略的需求,而看似非常碎片化和复杂的各类应用交付场景,其背后确实存在一个非常本质的模型,那就是“工作

2023-09-08

为了让你为开源项目贡献时,有一些好的出发点。 你为什么要为开源项目贡献? 当你开始向开源项目做贡献时,反思一下为什么要做这些贡献。你的回答很有可能就是“我太无聊了,想找点有工作量的事情消磨时间”,这

2023-07-21

大的事情,但实证证据是与证明人会死一样有力。这就是为什么你需要投身于你深感兴趣的事情。兴趣能驱使你比单纯的勤奋工作更努力。 最强大的三种动力是好奇心、喜悦和希望做出令人印象深刻的事情。有时它们会交汇,

2023-04-02

后封装工具,最后写成功能。本来简简单单的事情,非得这么复杂,极大的浪费了我们工(mo)作(yu)的时间!差评!赶上了服务商涨价或者发现了更便宜的服务商想换一个的时候,发现这烦人的东西还得再来一遍,浪费这么

2022-11-14

软件行业分析公司 RedMonk 发布了 2022 年 6 月(第三季度)编程语言排行榜。 RedMonk 编程语言排行榜通过追踪编程语言在 GitHub 和 Stack Overflow 上的代码使用情况与讨论数量,统计分析后进行排序,其旨在深入了解潜在的语言采用