|
早在 1990 年代,我的一位朋友曾问我为什么有如此之多的编程语言。 “为什么没有一种大家都会用、公认最好的编程语言?”他精通计算机,但不是开发人员,至少不是全职开发人员。我回答说,编程语言通常是为某些任务或工作负载而设计的,从这个意义上说,大多数语言在它们使什么成为可能方面的差异较小,而在它们使什么变得容易方面差异很大。最后一句是我记得别人说过的一句话。这听起来很聪明也很恰当,但事实是我真的不知道为什么会有这么多编程语言。这个问题一直萦绕在我的脑海中。
几年前,我有机会参观了位于加利福尼亚州山景城的计算机历史博物馆。那是一个了不起的地方,在众多展品中,有一幅覆盖整面墙壁的、关于编程语言演变的图表。这张图是如此之大,以至于任何曾经在任何东西中写过“Hello World”的人都有一种将鼻子贴在墙上并逐段搜索以尝试找到他们最喜欢的语言的冲动。我当然也做了。
在今天,有很多东西被认为是理所当然的。在早期,则一切都是昂贵且有限的:存储、内存和处理能力。人们不得不逆风走上坡路,然后通宵熬夜来获得计算机时间。在那段时间更轻松的事是,编程语言的命名空间是空白的,而1950年代和1960年代可以精确地为其所做的事情命名:FORTRAN(公式翻译器)、COBOL(通用面向业务的语言) )、BASIC(初学者通用符号指令代码)、ALGOL(算法语言)、LISP(列表处理器)。大多数人可能没有听说过 SNOBOL (String Oriented and Symbolic Language, 1962),但是不需要费劲猜就可以确定它存在的目的。
如果在那段时间更充分地理解了面向对象的编程概念,那么我们可能会使用“OBJOL”之类的东西进行编码——一种明确命名的面向对象语言,至少从那个时代的命名模式来看是这样。
PL/I (1964) 的大胆之处值得一提和钦佩,它的目标是成为“一种好的编程语言”。这个名字说明了一切:编程语言 1。应该不需要 2、3 或 4。虽然 PL/I 成为计算机编程的高地人的计划没有像设计者预期的那样实施,但他们提出了一个关键线索:为什么有这么多语言?早在 1960 年代初,人们就已经想到了这个问题。
此时此刻
Scala (2003)、Go (2009)、Rust (2010)、Kotlin (2011) 和 Swift (2014) 只是 2000年后创建的语言的几个例子。还有更多。在当今的技术环境中,似乎这些基本语言……满足任何平台上的所有低级、高级、功能、过程、对象、单线程、多线程、编译或脚本需求。 鉴于此,为什么仍在创建新语言? 我看到的最大主题是控制。
90年代是 Visual Basic 和 Visual C++的时代,它们都源自计算机历史博物馆语言图上的旧节点。 Visual Basic 流行于为 Windows 桌面平台构建前端应用程序,但缺乏许多高级语言功能(例如,数据结构、线程)。 Visual C++ 处于光谱的另一端——开发人员几乎可以做任何事情,但问题是 C++ 很复杂。可以这么说,存在一个“中间语言”的机会。然后 Java 在 1996 年爆发。Java 是一种功能齐全的面向对象语言,没有 C++ 的锋利边缘,这一事实令人信服,我至今记得在 Microsoft 的 Visual J++ 刚问世时,每个人都加入了 Java 派对。
Java 的主要设计重点之一是平台可移植性。不幸的是,至少就非微软平台而言,这并不是微软的目标之一,这使得 Sun Microsystems(当时 Java 背后的公司)和微软陷入了冲突,导致 1997 年开始的诉讼。这种关系最终导致微软发布了另一种名为 C# (2002) 的语言,它看起来很像 Java,但实际上并非如此。 C# 填补了 Microsoft 开发堆栈中的“中间”位置,并且与 Java 不同,Microsoft 可以控制它。
这并不是唯一的Java诉讼。甲骨文于 2010 年起诉谷歌在 Android 移动平台中使用 Java,因为甲骨文在收购 Sun Microsystems 后成为 Java 语言的所有者。这是一场长达十年的法律斗争,最终于 2021 年打到美国最高法院。
总体设计控制
维护和发展现有系统具有挑战性。软件增长的悖论是,系统的广泛采用会导致更多的使用,这可能会导致更大的成功,然后是更大的采用。但随着采用和使用的增加,它可能导致系统变得更难改变,尤其是在大方面,因为这样的改变有破坏向后兼容性的风险。管理不是不可能,只是很难。
管理编程语言的增长可以说是最困难的案例之一。编程语言用户是开发人员,优秀的开发人员不仅有生产力,而且有一种创造性地使用语言特性的方式,并非所有这些特性都是作者所希望的。如果需要找到边缘情况,开发人员就会找到它们,尤其是在大规模上。
Go (2009) 是一个有趣的例子,说明想要做的越来越多。其创建的一个驱动因素是需要能够在 Google 的容器化云环境中高效且可预测地部署的东西。另一个驱动因素是对一种强大的语言的渴望,特别是在网络和并发方面,但在语言特性方面不太强大,因为作者显然也是出于对 C++ 复杂性的“共同厌恶”。假设,谷歌可以通过为谷歌已经在使用的现有语言构建一个新的编译器和运行引擎来回应第一个驱动因素。虽然这不是一项简单的任务,但谷歌有很多聪明人,所以这是有可能的。但是要改变开发人员正在做的事情——以及做的方式——需要改变编程语言的语法和功能,而这些类型的改变很难——特别是当开发人员被告知某些事情不再被允许或必须被允许时。有时,为手头的用例创建新的东西会更容易,然后重新开始。再次开始。最终另一个节点被添加到计算机历史博物馆的墙壁大小的计算机语言图表中。
在2003,go的前身,google搞出了名为Go!的语言,这表明语言命名空间变得越来越小。尽管容易混淆,为什么Google仍使用了该名称?我不知道。
当前新闻共有0条评论 | 分享到: |
|
||||||||||
评论前需要先 登录 或者 注册 哦 |
24小时新闻排行榜 | 更多>> |
1 | 中国疯传一则消息!越来越多渠道证实 |
2 | 韩国空难很可能指向一个可怕的结论 |
3 | 提振民心,习近平迫不及待宣布好消息 |
4 | 这就是普习的百年变局?俄震撼机密文件被曝 |
5 | 外媒:习近平变脸,中国已成全球公敌 |
48小时新闻排行榜 | 更多>> |
1 | 中南海怂了 赶在年底突然宣布… |
2 | 中国疯传一则消息!越来越多渠道证实 |
3 | 中国曝光全球首架六代战机 马斯克这样评论 |
4 | 马斯克重大信号突袭 |
5 | 异常高调 胡春华或将接任这个要职 |
6 | 温家宝亲笔信释放敏感政治信号 |
7 | 公务员大幅降薪 “铁饭碗”难保 |
8 | 当下中国气氛何等肃杀!网传温家宝回信 |
9 | 郎平一家五口美国聚餐 老公罕露面帅气逼人 |
10 | 不顾莫斯科警告 以军投下“炸弹之王” |
一周博客排行 | 更多>> |
1 | 孤勇者!真理往往掌握在少數人 | Winston Sm |
2 | 中国有私有产权吗? | 施化 |
3 | 美国与俄罗斯两位重量级政治思 | 高伐林 |
4 | 每当看到这种场面,就觉得出国 | 旅泉 |
5 | 多年前对江习王体制观察 | 胡亥 |
6 | 陈辉上将不可能是胡锦涛人马 | 胡亥 |
7 | 一地鸡毛/中央最新决定/你知道 | 体育老师 |
8 | 人不可貌相 | 云儿云儿 |
9 | 全聚德烤鸭倒闭了,全国高校思 | 体育老师 |
10 | 一条阴险恶毒的栽赃排华谣言 | 溪边树下 |
一周博文回复排行榜 | 更多>> |
1 | 中国有私有产权吗? | 施化 |
2 | 川普MAGA目标宏远脚踏实地.若 | 木秀于林 |
3 | 台奸是否已经泛滥 | 右撇子 |
4 | 台湾最佳防御 - 非军事化 | 山货郎 |
5 | 吉米卡特盖棺论定 | 施化 |
6 | 解禁"抖音",将成为 | must |
7 | 天之大棋 | 特有理 |
8 | 中美友谊故事征文 | Shanechen |
9 | 中国人群体性的十个恶习 | 汪翔 |
10 | AI谈川普第一行政令与执政的首 | 漁舟舟 |