ALGOL曾用于“主流”编程吗?

时间:2009-09-23 00:23:18

标签: programming-languages algol

我知道ALGOL语言作为理论语言非常重要,并且根据维基百科也有各种各样的实现。

然而,目前尚不清楚的是,ALGOL(纯ALGOL,不是像Simula这样的衍生品)曾经以任何方式实际用于任何“真正的”编程吗?

“真实”,我的意思是用于除编程语言/ CS研究之外的几个大型项目,或者用于大量开发人员(例如,> 1000)。

就个人而言,我曾经做过的唯一的ALGOL编程就是纸上谈兵,因而是好奇心。

12 个答案:

答案 0 :(得分:10)

Algol58似乎是重要应用方面最成功的。

来自维基百科:

  

JOVIAL是“Jules Own”的首字母缩写   国际版   算法语言。“   “国际算法语言”   是最初提出的名称   ALGOL 58.它的发展是为了撰写   电子产品软件   朱尔斯施瓦茨的军用飞机   1959。

然后:

  

使用JOVIAL的着名系统包括   Milstar Communications SatelliteAdvanced Cruise MissileB-52B-1B,   B-2轰炸机,C-130,   C-141C-17 transport aircraftF-111,   F-15F-16(阻止之前   50)和F-117战斗机,   LANTIRNU-2飞机,   E-3 Sentry AWACS架飞机,   海军Aegis巡洋舰,陆军   多发射火箭系统   (MLRS),陆军UH-60 Black Hawk直升机,F100,   F117F119 jet engines NORAD播出   防御与控制系统(休斯   HME-5118ME系统)和RL-10   火箭发动机。空降radar   嵌入式JOVIAL软件的系统   包括APG-70APG-71   和APG-73

出于同样目的,在部分DRA中使用了

ALGOL 68。比照维基百科:

  

'''Defence Research Agency'''   (通常称为'''DRA''),是一个   UK Ministry of Defence的执行机构   (MOD)从1991年4月到1995年4月。在   DRA是英国最大的科学和时间   技术组织。

DRA的Algol68编译器最终于1999年4月开源,现在可从sourceforge用于download的linux。 (但是“Algol68g”的翻译更容易使用。)

ICL的Algol68是S3 - 它是由英国公司International Computers Limited(ICL)为其2900 Series大型机开发的。它是基于ALGOL 68的system programming language,但数据类型和运算符与2900系列提供的数据类型和运算符一致。它是操作系统VME的实现语言。

有(至少)两个其他英国操作系统 - FlexCambridge_CAP_computer - 用Algol68变体编写。还有1个苏联操作系统:Эльбрус-1 (Elbrus-1),但我还没有找到任何的源代码。 (如果有人能找到并分发到这个源代码,请告诉我)

BTW:我认为VME 仍然正在运行 - 在生产中 - 作为Linux / Unixware来宾VM。主要是Commonwealth of Nations海关/移民服务。

在同一时期,苏联正在使用Algol68,c.f。 history link。 Algol68用于俄罗斯电话交换机。 Algol58用于俄罗斯“Buran/Буран”航天飞机着陆系统。

ALGOL68于1968年国际化。我怀疑其他国家还有其他Algol项目。 esp用德语,荷兰语和日语,但我没有详细信息。

如果您想实际尝试Algol68和/或贡献您的代码,请查看Rosettacode的ALGOL 68 repository,然后作为课程项目尝试其中一个“Tasks not implemented”。

答案 1 :(得分:8)

没有什么比回应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等)要贵一点;

答案 2 :(得分:6)

和Tom一样,我几乎每天都在ALGOL中编程 - 而且我也在使用Unisys Clearpath。 ALGOL多年来一直是我偿还抵押贷款的主要来源,而不是我记得。

答案 3 :(得分:5)

当我开始编程时,Algol是唯一可用的编译器。是的,它是主流,直到我们得到Fortran编译器。

答案 4 :(得分:5)

为了跟进他们的答案,整个Burroughs“大型系统”系列(5000,5500,5700,6500,6700 ......)的设计非常适合运行Algol。操作系统,编译器和主要系统实用程序都是用Algol编写的;如果这不是“真正的”编程,那是什么?

准确地说,在产品系列的整个生命周期中,Burroughs将Algol扩展为一个名为ESPOL的超集。当Burroughs推出“小系统”系列(1700,1800,1900系列)时,他们定义了另一种类似Algol的语言,称为SDL(系统开发语言),其中编写了该系列的操作软件。出于安全原因,限制访问SDL。随后创建了一个SDL变体,其中删除了一些“priveleged”功能。生成的语言称为UPL(用户编程语言),可供客户使用。

我们中的一些人还记得使用“Algol-like language”这个短语来描述任何具有面向块的控制结构和变量作用域的编程语言。广为人知的类似Algol语言的例子包括PL / I,Pascal和(......等待......)C。

答案 5 :(得分:4)

Algol是Burroughs B5000的主要编程语言。

答案 6 :(得分:3)

然而,目前尚不清楚的是,Algol(纯Algol,不是像Simula这样的衍生品)曾经以任何方式实际用于任何“真正的”编程吗?

请避免使用术语“真实”编程。 “真实” - 而不是什么?想象力?

通过“真实”,我的意思是用于除编程语言/ CS研究之外的几个大型项目,或者由大量开发人员使用(例如,> 1000)。

是。它被用于一定数量的项目,其中有一定数量的开发人员。

只有,今天经常被误解的是这个;在那些日子里,计算机并不完全是家用商品。天啊,他们不是那个30年前,不那么孤单60 编程是在计算机中心完成的,这些计算机中心要么是政府所有权(军事,学术,各种机构),要么是私营企业(大公司)。编程并不是一种职业 - 工程师,数学家,科学家等人在纸上完成工作时曾经做过这样的事情......或者他们有专门的操作员为他们做过。在这个特定领域可能或可能没有科学背景的女性往往是“语言翻译”,缺乏更好的学期(以及我的英语不好)。

编程理论和研究刚刚开始......供应商很少(并且彼此之间自然不合作)......他们每个都使用自己的扩展,并且通常为一个编写的程序与另一个不兼容供应商的系统 没有一种“正确的方法”去做某件事......你已经拥有了那个和那个,并且你使用了你能想到的任何捕获物来解决你的问题。

但是,我已经走了。让我回到人数。这也适用于其他几种语言;例如,fortran和cobol。 人们说,“很少使用它”。这根本不是真的。真实的是,今天有一小部分人使用它,但是有更多的人习惯使用它。

正如我所说,那些日子里只有sci。和eng。社区曾经这样做过。与总人口相比,他们的人数相对较少。如今,每个人都使用计算机,但工程师,数学家等的绝对数量几乎相同。所以似乎没有人再使用这些语言......而实际上,对于某些专业语言(好吧,现在这适用于fortran和cobol,而不是algol),用户数量几乎是不变的。

就个人而言,我曾经做过的唯一的Algol编程是纸上谈兵,因此是好奇心。

我知道我没有回答你的问题,但只想清楚这一点。 Algol有点“我的时间”。

答案 7 :(得分:3)

我的第一次编程经历是1970年开始由Northern Natural Gas Company拥有的Burroughs B5500。我开始使用COBOL,但是当他们需要额外支持大型Oil&时,我转而使用ALGOL(实际上使用了两者)。 Gas Lease信息系统几乎全部用ALGOL编写。当时有两个编程部门,即业务系统和科学计算。科学计算部门在ALGOL和FORTRAN编程,而业务系统部门主要是COBOL,其中有一小部分是ALGOL。当我在那里时,Northern从B5500升级到B6500,B6700,B6900,B7800和B7900。我最终转到技术支持部门,开始制作和支持MCP补丁,以根据Northern的需求定制系统。这很有趣!

对问题的简短回答。是。 Northern有许多用ALGOL编写的应用程序系统。当然是Burrough的ALGOL版本(扩展ALGOL)。

答案 8 :(得分:2)

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的一位博士后在IBM Assembler中编写了一个反向编译器,在Algol中编写了Burroughs COBOL,用于迁移国营Gas&公司的所有计费应用程序。 Fuel Corporation从IBM 360s到Burroughs 6700s。

答案 9 :(得分:2)

早在1970年,我帮助为荷兰皇家海军开发了一个Jovial编译器。它的一大优点是它是用Jovial编写的,因此我们都成了很好的快活专家。事实上,作为测试周期的一部分,我们将编译编译器,尽管它自身的最新版本并运行我们所有的测试集。如果它通过,我们将释放第一个编译器。因此,每个版本都具有编译自身的能力,编译器可以通过所有测试。由于每个发现的bug总是被添加到我们的自检测试集中,编译器的质量得到了改进和改进。当我们离开项目时,我们没有已知的错误......我曾经和唯一一次发生过。

答案 10 :(得分:1)

我在Algol / Jovial为70年代的军队编程。我喜欢这门语言。您无法在Fortran中进行递归,我通常可以通过使用正确的数据结构和一点递归来使程序更容易。

在我离开该任务后,我发现项目中的其他开发人员不想维护Jovial代码并试图复制我在Fortran中所做的事情。它只是没有用,速度慢得多。

通过深入研究Jovial编译器的源代码,我学习了编译器理论。啊......那些日子。

答案 11 :(得分:0)

Algol在Elliott 4100机器上得到了很好的实施,并在60年代后期广泛用于BP研究中心的早期炼油工艺模拟。然而,当时输入/输出没有很好地定义(在机器之间变化)和BP很快被Fortran IV取代,因为严格的Fortran IV编写的程序几乎可以在任何机器变体上运行--IBM,Univac,Atlas等。等等。