编译器的历史
编译器的历史
我发现有关编译器历史的资料并不是特别多,可以说是比较稀少,所以就写了这篇文章记录一下整理的资料。
编译器的历史说长也不长,说短也不短,七八十年左右的历史。
wikipedia
维基百科的编译器历史是比较简短的。
geeksforgeeks
https://geeksforgeeks.org/history-of-compiler/
geeksforgeeks的编译器历史要稍微详细一点。为了方便作笔记,我也把这个网址搞成了pdf来阅读。梳理一下,全文大概有这样的脉络(不完全是时间顺序):
1950s 第一个编译器的诞生——Fortran编译器,属于批处理编译器(batch-oriented compiler)
↓
1960s1970s 优化编译器(optimizing compiler)和交互式编译器(interactive compiler)。1990s 面向对象编程(object-oriented programming,OOP)兴起,促进了编译器的更新换代
↓
1980s
↓
自举编译器(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:
- 第一个编译器,1951年,Grace Hopper的A-0 system
- 现代意义上的第一个自动代码和编译器,1952年,Alick Glennie为Mark 1 电脑编写的编译器。
- 第一个完整的编译器,1957年,由John Backus领导的FORTRAN团队编写的FORTRAN编译器
- 可在多体系结构运行的编译器,1960 年,COBOL语言编译器
在自举编译器Self Hosting Compilers中,作者举出了三个代表的作品:
- 1951年,Corrado Böhm 的博士论文,第一次定义了基于它自身语言的编译器
- 1958年,Harry Huskey发明世界上第一个自举编译器NELIAC(Navy Electronics Laboratory International ALGOL Compiler),用汇编语言作为bootstrap
- 1962年,Tim Hart和Mike Levin为Lisp编写的自举编译器,用Lisp解释器作为bootstrap
在High Level Languages for System
Programming中,作者举了一些用于系统编程的高级语言和项目,它们推动了编译器真正普及:
- 1966年,由Martin Richards创造的BCPL (Basic Combined Programming Language) 。它最初是一个编译器的编写工具。
- 1970年,CMU团队编写的BLISS (Basic Language for Implementation of System Software)编译器
- IBM和多方合作的Multics (Multiplexed Information and Computing Service)分时操作系统项目
在Compiler Construction编译器构造中,作者举出了两个方面的编译器结构:
- 单遍与多遍编译器(One-pass versus multi-pass compilers)Single Pass vs Two-Pass (Multi-Pass) Compilers - GeeksforGeeks
- 三阶段编译器结构(Three-stage compiler structure)
在Optimizing Compilers中,作者列举两种了两种优化器:
- Peephole optimization
- 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