【问题标题】:What was ALGOL compiler originally programmed in?ALGOL 编译器最初是用什么编写的?
【发布时间】:2016-07-09 22:19:16
【问题描述】:

我环顾四周,发现很少有关于创建 ALGOL 58 编译器的信息。编译器的创建是否类似于 FORTRAN,因为他们使用物理卡来创建它?

【问题讨论】:

  • 没有选择的卡片。它几乎肯定是用汇编程序编写的,至少足以引导它。
  • 此页面pl.attitu.de/zuse/technik/algol.html 显示的是纸带阅读器,而不是 Hollerith 卡。 Z22 上的英文维基百科条目说打孔卡,但我认为这是翻译错误(德语页面说 Lochstreifen,而不是 Lochkarte。)
  • 我的猜测是它是用机器代码编写的,因为(1)每台机器都有自己的实现,由不同的人编写,(2)在当时用其他编译语言引导一种语言会非常昂贵,和 (3) 我在某处看到了一些 pre-algol60 的扫描(可能是 58,可能是 W,可能还有另一个?)。

标签: compiler-construction history algol


【解决方案1】:

当然他们使用实体卡,因为它在当时最实用。 要么你打卡(我自己做过),要么你设置开关(效率更低......) 也使用了纸带,但打孔卡片的乐趣在于你可以打很多;提前,以防您忘记了一个并且打孔机被占用了... 但这与它是用什么语言编写的没有太大关系。 我几乎可以肯定这是组装。

【讨论】:

    【解决方案2】:

    我不确定问题的上下文。不同的制造商提供了不同的 Algol 方言。

    我对 Algol 60 的体验首先是使用 English Electric KDF9,它有两个不同但兼容的 Algol 编译器。首先,用于程序开发的 Whetstone 编译器/控制器系统具有出色的诊断功能,但运行速度相当慢。其次,English Electric 编译器编译速度慢得多,但生成的代码运行速度快。我相信这两个编译器都是用机器码编写的。

    1970 年,我加入了 Burroughs Machines Ltd,并与 B6500 及其后续产品一起工作。它的 Algol 编译器是用 Algol 编写的,它是用来编译自己的!这是我们必须机器编码的最接近的东西!支持软件的大部分组成部分都是用 Algol 编写的。例如。所有其他语言编译器! (基础、PL/I、Cobol、Fortran)

    如果你反对这里存在先有鸡还是先有蛋的问题,你是完全正确的。

    在 B6500 的硬件运行之前,有一个 B6500 仿真器在 B5500 上运行。 B6500 的 Algol 编译器因此可以用 B5500 Algol 编写,生成的代码在 B6500 仿真器中运行。从 B5500 Algol 语言到 B6500 版本的变化并没有那么大,尽管机器代码有很大不同。因此,将编译器的源代码从 B5500 更改为 B6500 并不是一件大事。

    如果您要坚持回答有关 B5500 Algol 编译器是如何产生的问题,恐怕我没有答案!那是在我的时代之前。

    【讨论】:

    • 对于 Whetstone Algol 60 we have the author's book to tell us everything。顺便说一句,另一个编译器是 Kidsgrove Algol。它们都是由 English Electric、Whetstone 和 Kidsgrove 提供的,是编译器作者工作的办公室所在地。
    【解决方案3】:

    “Algol 58 编译器”的措辞暗示只有一个,但事实并非如此; there were quite a few,对已发布的 IAL 报告有不同程度的忠实度。

    对于 Don Knuth 的 Burroughs 205 编译器,we can look at the listings

    【讨论】:

      【解决方案4】:

      跟进另一个戴夫的回答,在http://ed-thelen.org/comp-hist/B5000-AlgolRWaychoff.html 有详细说明为 B205 编写的 Algol 编译器

      为了说明这一点,这里有一段关于 Donald Knuth 的帐户的摘录。 “6 月,我们被介绍给这位高大的大学生,他的名字总是用小写字母签名。他是唐克努特。他与 Brad MacKenzie 签订了合同,编写了一个 205 Algol 58 编译器,该编译器将是 220 Algol 58 编译器的子集,由 Jack Merner 和 Joel Erdwin 编写。

      don 声称自己可以在三个半月的暑假期间自己编写编译器和语言手册。他说他愿意花5000美元。我们的 Fortran 编译器需要读卡器、打卡器。行式打印机和自动浮点。唐说他不需要读卡器或打卡器,但他需要一个磁带单元和纸带。我问杰拉德·古约德,如果布拉德只花三个半月的时间,他怎么会被骗付给这个大学生 5000 美元来写一些必须是垃圾的东西。杰拉德低声回答我。他说:“我们认为他已经写好了。他可能是在凯斯研究所计算机中心工作的业余时间写的。”我仍然对这个答案并不完全满意,因为我是一名大学毕业生,她的第一份工作是每月 325 美元,而我刚刚换了工作,每月赚 525 美元。除此之外,人类编写编译器需要 25 个人年:而不是 3 个半人月。我以为布拉德已经失去了理智。”

      【讨论】:

        猜你喜欢
        • 2010-12-13
        • 1970-01-01
        • 2011-03-20
        • 2010-10-08
        • 1970-01-01
        • 2021-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多