C编译器的历史是什么?


23

当我们说“ Dennis Ritchie开发了C语言”时,是否表示他已经创建了一个编译器(使用“已经”开发的其他语言)来编译用C语言编写的源代码?如果是,他用来编写第一个C编译器的语言是什么?我知道编译器是一个程序,我们可以使用当前可用的C编译器为C语言创建另一个编译器。那是对的吗?

Answers:


23

维基

Ritchie最出名的是C编程语言的创建者和Unix操作系统的关键开发者,并且是有关C的权威著作的合著者。

也来自Wiki

Dennis Ritchie编写的第一个C编译器使用了递归下降解析器,结合了有关PDP-11的特定知识,并依靠可选的特定于机器的优化器来改进其生成的汇编语言代码。

他还用汇编语言编写了第一个C编译器。

此页由钟实验室回答您的大多数问题。


第一个链接断开。
Mahmoud Hossam,

IIRC,C是基于一种称为B的早期语言,而Unix是基于一种称为Multics的早期操作系统。很明显,这些都是用来引导开发的,但是据我所读,这是一个错误的猜测。Unix的早期开发是在汇编程序中进行的,例如直到C接手为止。
Steve314

2
IIRC B是BCPL的简化版本,它是早期的系统编程语言。我认为很多早期的Unix工作都是用B来描述的,但是我不确定是否有真正的Unix编译器(可能是在其他程序上运行的交叉编译器)。
TMN

哎呀 。。用汇编语言编写编译器。
compman 2011年

6
@compman在某些时候,有人必须在汇编中编写编译器-您还如何在HLL中引导到编译器?
理查德·加兹登

9

查看此历史课程:http : //www.livinginternet.com/i/iw_unix_c.htm

当PDP-11计算机到达贝尔实验室时,丹尼斯·里奇(Dennis Ritchie)在B的基础上创建了一种名为C的新语言,该语言继承了汤普森(Thompson)的简洁语法风格,并具有高级功能和编程操作所需的详细功能的强大组合系统。Unix的大多数组件最终都用C重写,并于1973年最终成为内核本身。

同样,这可能很有趣:http : //cm.bell-labs.com/cm/cs/who/dmr/chist.html


1
AFAIK,“建立在”上,如在“基于设计的设计”中那样,而不是在“使用时进行编译”中
vartec

8

丹尼斯·里奇(Dennis Ritchie)使用了引导程序。引导程序是一个简单的想法,您可以在组装时开发初始的简单编译器,然后使用该简单编译器编译以目标语言(的子集)编写的完全成熟的编译器。这是Ritchie早期创建last1120c编译器的方式。



2

C旨在允许将Unix移植到其他平台,而不必重写新平台的所有汇编代码。

因此,俗称“ C是便携式汇编器”。这反映出C在抽象级别上有意非常接近CPU(大约在1970年左右),这也是大多数嵌入式软件都是用某种C编写的原因。

因此,C与Unix紧密相连,Unix人士根据早期工作编写了第一个C编译器,以完成所需的工作。

请注意,Kernigan和Richie在C方面写了一本很棒的书,这可能是最有影响力的计算机语言参考书之一,因为它是如此简洁明了,以至于大多数读者可以从中学习指针和递归等高级主题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.