1972年,贝尔实验室的丹尼斯·里奇(Dennis Ritch)和肯·汤普逊(Ken Thompson)在开发UNIX操作系统时设计了C语言。然而,C语言不完全是里 奇突发奇想而来,他是在B语言(汤普逊发明)的基础上进行设计。至于 B 语言的起源,那是另一个故事。C 语言设计的初衷是将其作为程序员使用的 一种编程工具,因此,其主要目标是成为有用的语言。
B语言是一种无数据类型语言,所有的数据都和机器字相对应,并且程序员可以直接通过内存地址操作内存。B语言最初在美国DEC公司的PDP-7和PDP-11小型机的早期Unix版本和Honeywell机器的GCOS系统上实现。
C语言是用什么编写的?
众所周知,C语言想要被执行,首先必须进行编译,将C语言编译成可由计算机执行的二进制机器语言。完成此过程,我们必须借助编译器,也就是专门编译C语言的编译器,那么C语言的编译器又是由什么语言写的?还是由C语言?那么C语言编译器又需要谁来编译呢?从此陷入了俄罗斯套娃的情节。
首先我们必须明确,任何语言想要被机器执行,必须先翻译成机器语言。但汇编语言过于复杂,我们引入了汇编语言,作为机器语言的注记符,但汇编语言并不是机器语言,我们必须有一个汇编语言的编译器,来编译汇编语言,那么这个汇编语言的编译器就必须是由机器语言所写的,用来翻译所有汇编语言。那么在上层,我们就可以开发更高级的语言,如Pascal语言,而这个语言的编译器是由汇编语言所写的。那么我们就可以以此为基础,设计更高级的语言,如C语言,其一些基本内容的编译器可以由Pascal来写形成C0,那么之后我们可以使用C0来编写更高级C1语言的编译器,实现C1语言的编译,层层嵌套,最终都能翻译成机器语言。