万维读者网 > 信息时代 > 正文  
为什么有如此之多的编程语言
www.creaders.net | 2022-07-12 15:43:33  煎蛋网 | 0条评论 | 查看/发表评论
 

  早在 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


当前新闻共有0条评论 分享到:
评论前需要先 登录 或者 注册
全部评论  
暂无评论 上一页 下一页  
实用资讯
24小时新闻排行榜 更多>>
1 1张985高端相亲局照片曝光:有钱人的择偶观
2 “李克强 查河南” 数千人怒吼 楼阳生悬了
3 留习或弃习:中共老人帮的两难抉择
4 50年来首见!岸田突发签证给他 中国势必跳
5 震惊北京 台湾副总统突然访日

48小时新闻排行榜 更多>>
1 眼皮子底下 金融大鳄成功出逃 这位常委有
2 突发!惊传大规模随机扫射 已致15死3重伤
3 中俄外长会面的一张照片,惹得全网笑岔气
4 1张985高端相亲局照片曝光:有钱人的择偶观
5 “李克强 查河南” 数千人怒吼 楼阳生悬了
6 注意!驻美中领馆确认:入境中国10年签证停
7 美军最高将领一语戳破中共战力
8 留习或弃习:中共老人帮的两难抉择
9 上海女研究生厕所自杀:没有人愿被脐带栓一
10 安倍之死将是中共最大的恶梦
热门专题
一周博客排行 更多>>
1 周傥:陆昊的下一步怎么走 万维网友来
2 提前退休和永不退休 人参花
3 十亿中国人信息被盗卖,黑客神 解滨
4 戎小捷:也谈2018年的修宪—— 万维网友来
5 没有钱的平淡是不堪一击的/习 体育老师
6 习设下一计 马黑
7 愚夫:关于美国最高法院推翻罗 万维网友来
8 美帝国主义卡中国的脖子? 花蜜蜂
9 董狐:中共习政权一旦垮台,中 万维网友来
10 我冤枉川普了 马黑
一周博文回复排行榜 更多>>
1 提前退休和永不退休 人参花
2 我冤枉川普了 马黑
3 人的头脑很容易被欺骗的。 远方的孤独
4 想爬上倒塌的城墙———-北京 北极雪橇
5 AI学者教我学语言 treebird
6 楚地的屈原,深林,陪伴 老冬儿
7 没有钱的平淡是不堪一击的/习 体育老师
8 张文宏时代真的变了/新毒株攻 体育老师
9 中国的靖国神社 阿妞不牛
10 这么快,余秀华就哭了(余秀华 幸福剧团
关于本站 | 广告服务 | 联系我们 | 招聘信息 | 网站导航 | 隐私保护
Copyright (C) 1998-2022. CyberMedia Network/Creaders.NET. All Rights Reserved.