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

发布于 2024-08-05 17:05:47 字数 1455 浏览 3 评论 0 原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(12

姜生凉生 2024-08-12 17:05:48

早在 1970 年,我就帮助荷兰皇家海军开发了 Jovial 编译器。它的一大优点是它是用 Jovial 编写的,因此我们都必须成为非常好的 Jovial 专家。事实上,作为测试周期的一部分,我们将编译编译器的最新版本,并在其上运行所有测试集。如果通过,我们将发布第一个编译器。因此,每个版本都具有自行编译的能力,并且编译器可以通过所有测试。由于每个发现的错误总是添加到我们的自检测试集中,因此编译器的质量不断提高。当我们离开项目时,我们已经没有已知的错误了……这是我唯一一次发生过的事情。

Back in 1970, I helped develop a Jovial compiler for the Royal Dutch Navy. One of its big advantages was that it was written in Jovial, hence we all got to become pretty good Jovial experts. In fact, as part of the test cycle we would compile the compiler though the latest incarnation of itself and run all our test sets on that. If it passed we would release the first compiler. Thus each release had the capability of compiling itself and that compiler could pass all tests. As every found bug was always added to our self-checking test set the quality of the compiler improved and improved. By the time we left the project we had no known bugs...my once and only time that ever happened.

硪扪都還晓 2024-08-12 17:05:48

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

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

我通过深入研究 Jovial 编译器的源代码来了解编译器理论。啊……那些日子。

I programmed in Algol/Jovial back in the 70's for the military. I loved the language. You couldn't do recursion in Fortran and I often could make a program much easier by using the correct data structure and a little recursion.

After I had left that assignment, I found that the other developers on the project didn't want to maintain the Jovial code and tried to replicate what I had done in Fortran. It just didn't work and was much slower.

I learned about compiler theory by digging into the source code for the Jovial compiler. Ah... those were the days.

浅黛梨妆こ 2024-08-12 17:05:48

Algol 在 Elliott 4100 机器上得到了很好的应用,并在 60 年代末被 BP 研究中心广泛用于开发早期炼油工艺模拟。然而,当时输入/输出尚未明确定义(机器之间有所不同),并且在 BP,它很快被 Fortran IV 取代,因为用严格的 Fortran IV 编写的程序几乎可以在任何机器变体上运行 - IBM、Univac、Atlas 等。 , ETC。

Algol was well implemented on the Elliott 4100 machine and was used extensively to develop early refinery process simulations at BP Research center in the late 60s. However, at that time Input/output was not well defined (varied between machines) and at BP it was quickly overtaken by Fortran IV as programs written in strict Fortran IV would run on almost any machine variation - IBM, Univac, Atlas, etc., etc.

不奢求什么 2024-08-12 17:05:47

没有什么比回复 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 等)成本更高一些;

Nothing like responding to 2 year old threads. I program in ALGOL almost daily. I am a programmer on a Unisys ClearPath mainframe and the majority of the system code is written in ALGOL or variants. The Burroughs B5500 was really designed around the language so it is a pretty efficient language/compilation process. Granted, this version is ALGOL with some extensions like limited classes (structure blocks), etc.

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;

That code scans for ALPHA only tokens. It uses the OFFSET function which is a little more costly than using the residual count math yourself (i, starti, etc);

山色无中 2024-08-12 17:05:47

就重要应用而言,Algol58 似乎是最成功的。

来自维基百科:

JOVIAL 是“Jules Own”的缩写
国际版本
算法语言。”
《国际算法语言》
最初提议的名称是
ALGOL 58。它的开发目的是组成
电子产品软件
朱尔斯·施瓦茨 (Jules Schwartz) 的军用飞机
1959 年。

然后:

使用 JOVIAL 的著名系统包括
Milstar Communications
卫星
高级巡航
导弹
B-52B-1B,
B-2 轰炸机,C-130,
C-141C-17 运输
飞机
F-111
F-15F-16(阻止之前
50) 和 F-117 战斗机,
LANTIRNU-2 飞机,
E-3 哨兵 预警机飞机,
海军宙斯盾巡洋舰、陆军
多管火箭系统
(MLRS),陆军UH-60 黑色
直升机,F100
F117F119 喷气
发动机
NORAD 空气
防御与控制系统(休斯
HME-5118ME 系统)和 RL-10
火箭发动机。机载雷达
带有嵌入式 JOVIAL 软件的系统
包括APG-70APG-71
APG-73

ALGOL 68 在 DRA 中用于相同目的。参见维基百科:

'''国防研究机构'''
(通常称为“DRA”)
英国国防部的执行机构
(MOD)从 1991 年 4 月到 1995 年 4 月。
当时 DRA 是英国最大的科学和
技术组织。

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

ICL 的 Algol68 过去/现在 S3 - 它是由英国公司 国际计算机有限公司 (ICL) 的 2900 系列 大型机。它是一种基于 ALGOL 68 的系统编程语言,但数据类型和运算符与 ALGOL 68 提供的数据类型和运算符一致2900 系列。它是操作系统 VME 的实现语言。

还有(至少)另外两种英国操作系统 - FlexCambridge_CAP_computer - 以 Algol68 变体编写。还有 1 个苏联操作系统:Эльбрус-1 (Elbrus-1),但我有尚未找到他们的任何源代码。 (如果有人可以找到并分发此源代码,请告诉我)

顺便说一句:我相信 VME 仍在生产中作为 Linux/Unixware 来宾 VM 运行。主要在英联邦海关/移民服务。

同样在同一时期,苏联也在使用 Algol68,参见历史链接。 Algol68 用于俄罗斯电话交换机。 Algol58被用于俄罗斯“Buran/Буран”航天飞机着陆系统。

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

如果您想实际试用 Algol68 和/或贡献您的代码,请查看 Rosettacode 的 ALGOL 68 存储库,然后作为一个课堂项目尝试“任务未实现”之一。

Algol58 seems to have been the most successful in terms of important applications.

From Wikipedia:

JOVIAL is an acronym for "Jules Own
Version of the International
Algorithmic Language." The
"International Algorithmic Language"
was a name originally proposed for
ALGOL 58. It was developed to compose
software for the electronics of
military aircraft by Jules Schwartz in
1959.

Then:

Notable systems using JOVIAL include
the Milstar Communications
Satellite
, Advanced Cruise
Missile
, B-52, B-1B,
B-2 bombers, C-130,
C-141, and C-17 transport
aircraft
, F-111,
F-15, F-16 (prior to Block
50), and F-117 fighter aircraft,
LANTIRN, U-2 aircraft,
E-3 Sentry AWACS aircraft,
Navy Aegis cruisers, Army
Multiple Launch Rocket System
(MLRS), Army UH-60 Black
Hawk
helicopters, F100,
F117, and F119 jet
engines
, the NORAD air
defense & control system (Hughes
HME-5118ME system) and RL-10
rocket engines. Airborne radar
systems with embedded JOVIAL software
include the APG-70, APG-71
and APG-73

ALGOL 68 was used in part of DRA for the same purpose. cf. Wikipedia:

The '''Defence Research Agency'''
(normally known as '''DRA'''), was an
executive agency of the UK Ministry of Defence
(MOD) from April 1991 until April 1995. At the
time the DRA was Britain's largest science and
technology organisation.

DRA's Algol68 compiler was finally open-sourced in April 1999 and is now available for linux for download from sourceforge. (However an interpreter for "Algol68g" is easier to use).

ICL's Algol68 was/is S3 - It was developed by the UK company International Computers Limited (ICL) for its 2900 Series mainframes. It is a system programming language based on ALGOL 68 but with data types and operators aligned to those offered by the 2900 Series. It was the implementation language of the operating system VME.

There are (at least) two other British operating systems - Flex and Cambridge_CAP_computer - written in Algol68 variants. And also 1 Soviet OS: Эльбрус-1 (Elbrus-1), but I have yet to find any of their source code. (If anyone can find and distribute to this source code please let me know)

BTW: I believe that VME is still running - in production - as a Linux/Unixware guest VM. Mostly at Commonwealth of Nations Custom/Immigration services.

Also over the same period the USSR was using Algol68, c.f. history link. Algol68 is used in Russian telephone exchanges. And Algol58 was used in the Russian "Buran/Буран" Space Shuttle landing system.

ALGOL68 was internationalized in 1968. I suspect there are other Algol projects in other countries. esp in German, in Dutch Japanese and Chinese but I have no details.

If you want to actually tryout Algol68 and/or contribute your code, check out Rosettacode's ALGOL 68 repository, then as a class project try one of the "Tasks not implemented".

北城孤痞 2024-08-12 17:05:47

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

Like Tom, I program in ALGOL almost daily - and I'm also on a Unisys Clearpath. ALGOL has been the primary source of my mortgage repayments for more years than I care to remember.

没企图 2024-08-12 17:05:47

当我开始编程时,Algol 是唯一可用的编译器。是的,在我们有了 Fortran 编译器之前,它一直是主流。

When I started programming, Algol was the only compiler available. Yes, it was mainstream till we got a Fortran compiler.

离鸿 2024-08-12 17:05:47

为了跟进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 和(……等等……)C。

To follow up on themis' answer, the entire Burroughs "large system" family (5000, 5500, 5700, 6500, 6700...) was really designed to run Algol well. The operating system, compilers, and major system utilities were written in Algol; if that's not "real" programming, what is?

To be precise, over the life of the product family Burroughs extended Algol into a superset called ESPOL. When Burroughs brought out the "small systems" family (1700, 1800, 1900 series), they defined another Algol-like language called SDL (Systems Development Language) in which the operating software of that line was written. Access to SDL was restricted for security reasons. A variant of SDL was subsequently created with a few of the "priveleged" features removed. The resulting language, called UPL (User Programming Language), was available for customer use.

Some of us still remember when the phrase "Algol-like language" was used to describe any programming language with block-oriented control structures and variable scoping. Widely-known examples of Algol-like languages included PL/I, Pascal, and (...wait for it...) C.

◇流星雨 2024-08-12 17:05:47

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

Algol was the major programming language for the Burroughs B5000.

长梦不多时 2024-08-12 17:05:47

但是,不清楚的是,Algol(纯 Algol,不是它的任何衍生物,如 Simula)是否曾经以任何方式实际用于任何“真正的”编程?

请避免术语“真正的”编程。 “真实”——相对于什么?富有想象力?

我所说的“真实”,是指用于编程语言/计算机科学研究之外的几个大型项目,或者由大量开发人员(例如,> 1000 名)使用。

是的。它被用于一定数量的项目,这些项目由一定数量的开发人员负责。

只是,今天经常被误解的是:在那个时代,电脑还算不上是一种家庭用品。天啊,30 年前他们还不是那样,更不用说 60 年前了。
编程是在政府所有(军事、学术、各种机构)或私营企业(大公司)的计算机中心进行的。编程不是一种职业——它是工程师、数学家、科学家等在纸上完成工作时所做的事情……或者他们有专门的操作员为他们做这件事。通常,女性,可能有也可能没有该特定领域的科学背景 - 她们是“语言翻译家”,缺乏更好的术语(以及我的英语不好)。

编程理论和研究才刚刚起步……供应商很少(并且自然而然地彼此不合作)……每个供应商都使用自己的扩展,并且通常为一个供应商编写的程序不能很好地与其他供应商的系统配合使用。
没有“正确的方法”来做某事......你有那个那个,并且你使用了任何你能想到的方法来解决你的问题。

可是,我却走偏了。让我回到人数。这也适用于其他几种语言;例如,Fortran 和 Cobol。
人们说,“很少有人使用它”。这根本不是真的。事实是,今天只有一小部分人使用它,但过去有更大比例的人使用它。

正如我所说,那时候只有科学。和工程师。社区曾经这样做过。与总人口相比,他们的数量相对较少。如今,每个人都使用计算机,但工程师、数学家等的绝对数量几乎相同。因此,似乎没有人再使用这些语言了……而实际上,对于某些专用语言(嗯,现在 fortran 和 cobol 比 algol 更是如此),用户数量几乎是恒定的。

就我个人而言,我做过的唯一一次 Algol 编程是在纸上进行的,因此我很好奇。

我知道我没有回答你的问题,但只是想澄清这一点。 Algol 有点“超前于我的时代”。

However, what's unclear is, was Algol (pure Algol, not any of its derivatives like Simula) ever actually used for any "real" programming in any way?

Please, avoid the term "real" programming. "Real" - as opposed to what ? Imaginative ?

By "real", I mean used for several good-sized projects other than programming language/CS research, or by a significant number of developers (say, > 1000).

Yes. It was used for a certain number of projects on which worked a certain number of developers.

Only, what is usually misinterpreted often today is this; in those days computers weren't exactly a household commodity. Hell, they weren't that 30 years ago, less alone 60.
Programming was done in computer centres which were either in goverment ownership (military, academic, institutes of various kinds) or in private enterprises (large companies). And programming wasn't a profession - it was something which engineers, mathematicians, scientiscs and the like used to do when their work was done on paper ... or they had specialized operators which did it for them. Often women, who may or may have not had a scientific background in that particular field - they were "language translators", in lack of a better term (and my bad english).

Programming theories and research was at its beginnings ... vendors being few (and naturally uncooperative to each other) ... each of them used their own extensions, and often programs written for one didn't work well with the other vendor's systems.
There wasn't a "right way" to do something ... you had that and that, and you used whatever catch you could figure to work around your problem.

But, I've wandered off. Let me get back to the number of people. This also goes for several other languages; fortran and cobol, for example.
People say, "very few use it". That's simply not true. What is true is that a small percentage of people uses it today, but a larger percent of people used to use it.

As I said, in those days only the sci. and eng. community used to do it. And their number was relatively small, compared to the total population. Nowadays, everybody uses computers, but the absolute number of engineers, mathematicians and the like, is pretty much the same. So it seems that nobody uses those languages anymore ... while in reality, for certain specialized languages (well, nowadays this goes for fortran and cobol, more than algol) the number of users is pretty much constant.

Personally, the only Algol programming I have ever done was on paper, thus the curiosity.

I know I didn't answer your question, but just wanted to clear this. Algol was a little "beofre my time".

紫﹏色ふ单纯 2024-08-12 17:05:47

我的第一次编程经历是从 1970 年开始在 Northern Natural Gas Company 拥有的 Burroughs B5500 上进行的。我开始使用 COBOL,但当他们需要为大型石油和天然气公司提供额外支持时,我转向了 ALGOL(实际上两者都使用)。天然气租赁信息系统几乎完全用 ALGOL 编写。当时有两个编程部门:商业系统和科学计算。科学计算部门使用 ALGOL 和 FORTRAN 进行编程,而业务系统部门则主要使用 COBOL 和少量 ALGOL。当我在那里时,北方从 B5500 升级到 B6500、B6700、B6900、B7800 和 B7900。我最终调到技术支持部门,开始制作和支持 MCP 补丁,以便根据 Northern 的需求定制系统。太有趣了!

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

My first programming experience was on a Burroughs B5500 owned by Northern Natural Gas Company starting in 1970. I started out in COBOL but switched to ALGOL (actually used both) when they needed additional support for a large Oil & Gas Lease Information system that was written almost entirely in ALGOL. At the time there were two programming departments, Business Systems and Scientific Computing. The Scientific Computing department programmed in ALGOL and FORTRAN while the Business Systems department was mostly COBOL with a smattering of ALGOL. Northern advanced from the B5500 to B6500, B6700, B6900, B7800, and B7900 while I was there. I eventually transferred to the Technical Support department and got into making and supporting MCP patches to customize the system for Northern's needs. That was fun!

Short answer to the question. Yes. Northern had a number of application systems written in ALGOL. Of course it was Burrough's version of ALGOL (extended ALGOL).

强者自强 2024-08-12 17:05:47

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 的反向编译器,用于迁移国营银行的所有计费应用程序燃气及Fuel Corporation 从 IBM 360 到 Burroughs 6700。

Burroughs B5500 Extended Algol was used heavily for research in astrophysics, linguistics, and statistics at my university (Monash University, Australia) in the late 60s. It was also used in commercial applications that helped pay the bills for the computer center.

As I write this I am running Algol programs in the latest release of the Burroughs B5500 emulator from the team at retro-b5500 in Tasmania. The emulator runs entirely in the browser and faithfully models the processors, disks, tapes, card readers, line printers, card punches and datacom gear!

You can read about the project at http://retro-b5500.blogspot.com/ and http://code.google.com/p/retro-b5500 and you can write Algol programs for arguably the finest Algol machine ever made (except perhaps its successor the B6700.)

One of the postdocs from Monash wrote a reverse compiler from IBM Assembler to Burroughs COBOL in Algol, which was used to migrate all the billing applications at the state-run Gas & Fuel Corporation from IBM 360s to Burroughs 6700s.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文