我知道ALGOL语言作为一种理论语言非常重要,并且根据 Wikipedia,它也有多种实现方式。
然而,不清楚的是,ALGOL(纯 ALGOL,而不是像 Simula 这样的衍生产品)是否曾以任何方式实际用于任何“真实”编程?
“真实”是指用于除编程语言/CS 研究之外的几个大型项目,或者被大量开发人员(例如,> 1000)。
就个人而言,我曾经做过的唯一 ALGOL 编程是在纸上进行的,因此是好奇心。
我知道ALGOL语言作为一种理论语言非常重要,并且根据 Wikipedia,它也有多种实现方式。
然而,不清楚的是,ALGOL(纯 ALGOL,而不是像 Simula 这样的衍生产品)是否曾以任何方式实际用于任何“真实”编程?
“真实”是指用于除编程语言/CS 研究之外的几个大型项目,或者被大量开发人员(例如,> 1000)。
就个人而言,我曾经做过的唯一 ALGOL 编程是在纸上进行的,因此是好奇心。
就重要应用而言,Algol58 似乎是最成功的。
来自维基百科:
JOVIAL是“Jules Own Version of the International Algorithmic Language”的首字母缩写词。“国际算法语言”最初是为 ALGOL 58 提出的名称。它是由 Jules Schwartz 于 1959 年开发的,用于编写军用飞机电子设备的软件。
然后:
使用 JOVIAL 的著名系统包括Milstar 通信卫星、高级巡航导弹、B-52、B-1B、 B-2轰炸机、C-130、 C-141和C-17 运输机、F-111、 F-15、F-16(Block 50 之前)和F-117战斗机、 LANTIRN、U-2飞机、 E-3 Sentry AWACS飞机、海军宙斯盾巡洋舰、陆军多管火箭发射系统 ( MLRS )、陆军UH-60 黑鹰直升机、F100、 F117和F119 喷气发动机、NORAD防空和控制系统(休斯 HME-5118ME 系统)和RL-10 火箭发动机。 带有嵌入式 JOVIAL 软件的机载雷达系统包括APG-70、APG-71 和APG-73
ALGOL 68用于 DRA 的一部分用于相同目的。参看。维基百科:
'''国防研究局'''(通常称为'''DRA''')是英国国防部 (MOD)的执行机构,从 1991 年 4 月到 1995 年 4 月。当时 DRA 是英国的最大的科学技术组织。
DRA 的 Algol68 编译器终于在 1999 年 4 月开源,现在可以从 sourceforge下载linux。(但是“ Algol68g ”的解释器更容易使用)。
ICL 的 Algol68 曾经/现在是S3 - 它是由英国公司International Computers Limited (ICL) 为其2900 系列大型机开发的。它是一种基于 ALGOL 68的系统编程语言,但其数据类型和运算符与 2900 系列提供的一致。它是操作系统VME的实现语言。
还有(至少)另外两个英国操作系统——Flex和Cambridge_CAP_computer——用 Algol68 变体编写。还有 1 个苏联操作系统:Эльбрус-1 (Elbrus-1),但我还没有找到他们的任何源代码。(如果有人可以找到并分发到此源代码,请告诉我)
顺便说一句:我相信 VME仍在运行 - 在生产中 - 作为 Linux/Unixware 来宾 VM。主要在英联邦海关/移民服务。
同样在同一时期,苏联正在使用 Algol68,参见历史链接。Algol68 用于俄罗斯电话交换机。而Algol58被用于俄罗斯“暴风雪/Буран ”航天飞机着陆系统。
ALGOL68 于 1968 年国际化。我怀疑其他国家还有其他 Algol 项目。尤其是德语,荷兰语,日语和中文,但我没有详细信息。
如果您想实际试用 Algol68 和/或贡献您的代码,请查看 Rosettacode 的ALGOL 68 存储库,然后作为课程项目尝试“未实现的任务”之一。
没有什么比回应 2 岁的主题更重要的了。我几乎每天都在 ALGOL 中编程。我是 Unisys ClearPath 大型机的程序员,大部分系统代码都是用 ALGOL 或变体编写的。Burroughs B5500 确实是围绕语言设计的,因此它是一个非常有效的语言/编译过程。当然,这个版本是带有一些扩展的 ALGOL,比如有限的类(结构块)等。
i := 80;
while i > 0 do
begin
scan ptrRay:ptrRay for i:i until in ALPHA;
scan ptrEnd:ptrRay for i:i while in ALPHA;
if i > 0 then
begin
replace nextToken by ptrRay for (offset(ptrEnd) - offset(ptrRay));
end;
end;
该代码仅扫描 ALPHA 令牌。它使用 OFFSET 函数,这比自己使用残差计数数学(i、starti 等)要贵一些;
和 Tom 一样,我几乎每天都在 ALGOL 中编程——而且我也在 Unisys Clearpath 上。多年来,ALGOL 一直是我偿还抵押贷款的主要来源,这超出了我的记忆。
当我开始编程时,Algol 是唯一可用的编译器。是的,在我们得到 Fortran 编译器之前它是主流。
为了跟进 themis 的回答,整个 Burroughs“大型系统”系列(5000、5500、5700、6500、6700 ......)确实旨在很好地运行 Algol。操作系统、编译器和主要的系统实用程序都是用 Algol 编写的;如果那不是“真正的”编程,那是什么?
准确地说,在产品系列的整个生命周期中,Burroughs 将 Algol 扩展为一个名为 ESPOL 的超集。当 Burroughs 推出“小型系统”系列(1700、1800、1900 系列)时,他们定义了另一种类似 Algol 的语言,称为 SDL(系统开发语言),其中编写了该系列的操作软件。出于安全原因,对 SDL 的访问受到限制。随后创建了一个 SDL 的变体,其中删除了一些“特权”功能。由此产生的语言称为 UPL(用户编程语言)可供客户使用。
我们中的一些人还记得当“类 Algol 语言”这个短语被用来描述任何具有面向块的控制结构和变量作用域的编程语言时。广为人知的类 Algol 语言示例包括 PL/I、Pascal 和 (...wait for it...) C。
Algol 是Burroughs B5000的主要编程语言。
然而,不清楚的是,Algol(纯 Algol,而不是像 Simula 这样的衍生产品)是否真的以任何方式用于任何“真正的”编程?
请避免使用“真正的”编程一词。“真实”——与什么相反?富有想象力?
“真实”是指用于除编程语言/CS 研究之外的几个大型项目,或者被大量开发人员(例如,> 1000)。
是的。它用于一定数量的项目,这些项目与一定数量的开发人员合作。
只是,今天经常被误解的是这个;在那些日子里,计算机并不完全是家用商品。见鬼,他们不是 30 年前那样,更不用说 60
年了。编程是在政府所有(军事、学术、各种机构)或私营企业(大公司)的计算机中心完成的。编程不是一种职业——它是工程师、数学家、科学家等在纸上完成工作时经常做的事情……或者他们有专门的操作员为他们做这件事。通常是女性,她们可能或可能没有该特定领域的科学背景——她们是“语言翻译”,缺乏更好的术语(以及我糟糕的英语)。
编程理论和研究才刚刚起步……供应商很少(而且彼此之间自然不合作)……他们每个人都使用自己的扩展,并且通常为一个供应商编写的程序不能很好地与另一个供应商的系统配合使用。
没有“正确的方法”来做某事……你有那个那个,你用你能想到的任何方法来解决你的问题。
但是,我已经走神了。让我回到人数。这也适用于其他几种语言;例如,fortran 和 cobol。人们说,“很少有人使用它”。这根本不是真的。真实的是,今天只有一小部分人使用它,但过去使用它的人比例更大。
正如我所说,那时只有 sci。和英。社区曾经这样做过。与总人口相比,他们的人数相对较少。如今,每个人都使用计算机,但工程师、数学家等的绝对数量几乎相同。所以似乎没有人再使用这些语言了......而实际上,对于某些专业语言(嗯,现在这适用于 fortran 和 cobol,而不是 algol),用户数量几乎是恒定的。
就个人而言,我做过的唯一的 Algol 编程是在纸上进行的,因此是好奇心。
我知道我没有回答你的问题,只是想澄清一下。Algol 有点“在我的时代之前”。
我的第一次编程经验是在 1970 年开始在 Northern Natural Gas Company 拥有的 Burroughs B5500 上。我从 COBOL 开始,但当他们需要对编写的大型石油和天然气租赁信息系统提供额外支持时切换到 ALGOL(实际上两者都使用)几乎完全在 ALGOL 中。当时有两个编程部门,业务系统和科学计算。科学计算部门使用 ALGOL 和 FORTRAN 进行编程,而业务系统部门主要使用 COBOL 和少量 ALGOL。当我在那里时,Northern 从 B5500 推进到 B6500、B6700、B6900、B7800 和 B7900。我最终转到技术支持部门,开始制作和支持 MCP 补丁,以根据 Northern 的需要定制系统。那很有趣!
对问题的简短回答。是的。Northern 有许多用 ALGOL 编写的应用系统。当然是 Burrough 的 ALGOL 版本(扩展 ALGOL)。
Burroughs B5500 Extended Algol 在 60 年代后期被我的大学(澳大利亚莫纳什大学)大量用于天体物理学、语言学和统计学的研究。它还用于帮助支付计算机中心账单的商业应用程序。
在我写这篇文章时,我正在塔斯马尼亚的 retro-b5500 团队的最新版本 Burroughs B5500 仿真器中运行 Algol 程序。模拟器完全在浏览器中运行,忠实地模拟处理器、磁盘、磁带、读卡器、行式打印机、卡片打孔器和数据通信设备!
您可以在http://retro-b5500.blogspot.com/和http://code.google.com/p/retro-b5500阅读有关该项目的信息,并且您可以为可以说是有史以来最好的 Algol 机器编写 Algol 程序(除了它的继任者 B6700。)
Monash 的一位博士后在 Algol 中编写了一个从 IBM Assembler 到 Burroughs COBOL 的反向编译器,用于将国营 Gas & Fuel Corporation 的所有计费应用程序从 IBM 360s 迁移到 Burroughs 6700s。
早在 1970 年,我帮助荷兰皇家海军开发了一个 Jovial 编译器。它的一大优势是它是用 Jovial 编写的,因此我们都必须成为非常优秀的 Jovial 专家。事实上,作为测试周期的一部分,我们将编译编译器,尽管它是它自己的最新版本,并在其上运行我们所有的测试集。如果它通过了,我们将发布第一个编译器。因此,每个版本都具有自行编译的能力,并且该编译器可以通过所有测试。由于每个发现的错误总是添加到我们的自检测试集中,因此编译器的质量得到了改进和改进。到我们离开项目时,我们还没有任何已知的错误……这是我唯一一次发生的事情。
早在 70 年代,我就在 Algol/Jovial 中为军队编程。我喜欢这种语言。你不能在 Fortran 中进行递归,而我通常可以通过使用正确的数据结构和一点递归来使程序更容易。
在我完成任务后,我发现项目中的其他开发人员不想维护 Jovial 代码,并试图复制我在 Fortran 中所做的事情。它只是没有用,而且速度慢得多。
通过深入研究 Jovial 编译器的源代码,我了解了编译器理论。啊……那是那段日子。
Algol 在 Elliott 4100 机器上得到了很好的实施,并在 60 年代后期在 BP 研究中心广泛用于开发早期炼油工艺模拟。然而,当时输入/输出没有很好地定义(在机器之间变化),并且在 BP,它很快被 Fortran IV 取代,因为用严格的 Fortran IV 编写的程序几乎可以在任何机器变体上运行——IBM、Univac、Atlas 等。 , ETC。