编译器的历史

编译器的历史

我发现有关编译器历史的资料并不是特别多,可以说是比较稀少,所以就写了这篇文章记录一下整理的资料。
编译器的历史说长也不长,说短也不短,七八十年左右的历史。

wikipedia

wikipedia-编译器

维基百科的编译器历史是比较简短的。

geeksforgeeks

https://geeksforgeeks.org/history-of-compiler/

geeksforgeeks的编译器历史要稍微详细一点。为了方便作笔记,我也把这个网址搞成了pdf来阅读。梳理一下,全文大概有这样的脉络(不完全是时间顺序):

1950s 第一个编译器的诞生——Fortran编译器,属于批处理编译器(batch-oriented compiler)

1960s1970s 优化编译器(optimizing compiler)和交互式编译器(interactive compiler)。

1980s
1990s 面向对象编程(object-oriented programming,OOP)兴起,促进了编译器的更新换代

自举编译器(Self-hosting compiler,bootstrapping compiler),编译器和编程语言创造技术发展

现代编译器,可分为即时编译器(just-in-time compiler,JIT compiler)和预先编译器(ahead-of-time compiler, AOT compiler).JIT和AOT可以看作是两种相对的编译策略。

在这篇文章中,几乎每一小节都提到了编译器升级的意义:

write more complex and efficient programs

medium

medium.com:history-of-compiler-design

medium的这篇文章列出了更多具体的历史事实,同时也有清晰的框架结构。

  • First Compiler
  • Self Hosting Compilers
  • High Level Languages for System Programming
  • Compiler Construction
  • Optimizing Compilers
  • Conclusion

First Compiler中,按照时间顺序列出了早期四个compiler:

  1. 第一个编译器,1951年,Grace Hopper的A-0 system
  2. 现代意义上的第一个自动代码和编译器,1952年,Alick Glennie为Mark 1 电脑编写的编译器。
  3. 第一个完整的编译器,1957年,由John Backus领导的FORTRAN团队编写的FORTRAN编译器
  4. 可在多体系结构运行的编译器,1960 年,COBOL语言编译器

在自举编译器Self Hosting Compilers中,作者举出了三个代表的作品:

  1. 1951年,Corrado Böhm 的博士论文,第一次定义了基于它自身语言的编译器
  2. 1958年,Harry Huskey发明世界上第一个自举编译器NELIAC(Navy Electronics Laboratory International ALGOL Compiler),用汇编语言作为bootstrap
  3. 1962年,Tim Hart和Mike Levin为Lisp编写的自举编译器,用Lisp解释器作为bootstrap

High Level Languages for System
Programming中,作者举了一些用于系统编程的高级语言和项目,它们推动了编译器真正普及:

  1. 1966年,由Martin Richards创造的BCPL (Basic Combined Programming Language) 。它最初是一个编译器的编写工具。
  2. 1970年,CMU团队编写的BLISS (Basic Language for Implementation of System Software)编译器
  3. IBM和多方合作的Multics (Multiplexed Information and Computing Service)分时操作系统项目

Compiler Construction编译器构造中,作者举出了两个方面的编译器结构:

  1. 单遍与多遍编译器(One-pass versus multi-pass compilers)Single Pass vs Two-Pass (Multi-Pass) Compilers - GeeksforGeeks
  2. 三阶段编译器结构(Three-stage compiler structure)image-20231105162037265

Optimizing Compilers中,作者列举两种了两种优化器:

  1. Peephole optimization
  2. Capex COBOL optimizer

其他资料

编译器的发展历史错综复杂,geeksforgeeks和medium的两篇文章大概都是编译器的类别或者说组成方面来组织的,而没有以明确的时间线来(这确实有可能办不到,因为事物总是循环式上升和波浪式前进的)。

还有一些其他的资料:

编译器的「五个十年」发展史 | 机器之心 (jiqizhixin.com)

https://link.springer.com/chapter/10.1007/978-1-4302-0698-9_1

https://en.wikipedia.org/wiki/History_of_compiler_construction


编译器的历史
http://thinkerhui.site/2023/11/05/编译器的历史/
作者
thinkerhui
发布于
2023年11月5日
许可协议