为什么会有这么多编程语言?在编程语言如此丰富的今天,相信很多开发者都有过以上疑问。但自1960年代初以来,人们一直在问这个问题。《ACM 通讯》杂志最近发表了一篇文章,题目是《Why Are There So Many Programming Languages?》。在文章中,作者指出了一个重要原因:基于商业利益的诉求,公司希望控制编程语言,因此会发明一种由自己主导的语言。在20世纪90年代中期,VisualBasic和VisualC++是微软开发和维护的主要编程语言。两种语言都源于现有的编程语言,VisualBasic的优势在于为Windows桌面平台构建前端应用程序,但它缺乏许多高级语言的特性(如数据结构、线程)。虽然VisualC++几乎可以处理任何事情,但它很复杂。然后在1996年出现了Java,这是一种功能齐全的面向对象的编程语言,它不像C++那样复杂。Java的核心特性之一是平台可移植性,但这不是微软想要的,因此Java背后的公司SunMicrosystems与微软发生冲突并于1997年开始诉讼。双方之间的紧张关系最终导致微软在2017年发布了一种名为C#的编程语言。2002年,它看起来很像Java,但实际上并非如此。当然,两者最重要的区别在于,C#是微软在自家Windows平台上可以驾驭的编程语言。之所以有这么多的编程语言,除了公司对控制权和财富的诉求外与当时的技术环境和水平密切相关。许多现在认为理所当然的事情在过去都不是真的,而且早期的计算机存储、内存和处理能力有限且昂贵。人们不得不竭尽全力才能到达计算机实验室并通宵熬夜以获得计算机时间。在那个时代,编程语言通常是为特定的任务或工作而设计的,编程语言的命名也比较简单——因为命名空间还没有被开发出来。在1950年代和1960年代,第一个程序“奢侈”地以它们所做的事情命名:FORTRAN(公式翻译器)、COBOL(商业通用语言)、BASIC(初学者通用符号指令代码)、ALGOL(算法语言),LISP(列表处理器)。大多数人可能没有听说过SNOBOL(OrientedtoStringsandSymbolicLanguages,1962年),但根据名称稍加猜测就可以知道它的用途。如果那个时代对面向对象的编程概念了解得更多一些,我相信有人会用“OBJOL”这样的名字——明确地命名为一种面向对象的语言,至少按照当时的命名模式是这样的。到现在为止,更多的编程语言在很多方面都像是在重新发明轮子——很多都满足以下属性的各种组合:许可证开源;商业平台操作系统、硬件支持语言范式面向过程、函数式、面向对象等类型系统动态、静态等并发单线程、多线程内存管理垃圾收集(自动或手动)执行解释、编译为虚拟机器,本机编译等...
