先说结论:C语言由B语言编写,B语言是由A语言编写 A→B→C
好了,不开玩笑了
既然你能提出这个级别的问题,说明你应该学过C。既然你能提出这个级别的问题,说明你没学过编译原理(或者全还给老师了,容我不厚道一下下)。
你所谓的"C语言",准确来说,指的是能把C语言程序翻译成机器指令程序的"编译器"程序。
先用汇编写一个极小的原始编译器(AC),能编译最简单的C语法。然后用该原始编译器AC编译一个最简单的C编译器(CC1)。然后用CC1编译一个稍微复杂一点的C编译器(CC2)。最终,像滚雪球一样,C语言就把一个拥有完全编译功能的C编译器给编译出来了。
经典教材《编译原理》,开篇讲的就是这个问题。
本人新建一个技术交流圈子,群主是10年老技术人员,某上市公司的技术负责人,群里面每天会给群友解答疑问,招聘内推,点击即可加入圈子
技术交流群,群友每天分享干货,答疑解惑
最早的高级计算机语言是,ALGOL 58、后来进化为ALGOL 60。分别被创造于1958年和1960年,这门语言暂且被称为A语言,尽管当时的人不这么叫,现在的人还是习惯了。
1963年,由剑桥和伦敦大学合作改进的CPL语言出现,当时并没有把它命名为C语言、也不是B语言。鉴于是对A语言的改进,暂且叫做A+语言吧。这门语言更接近硬件一些,但是使用不那么容易,很多事情还是难以实现。
1967年,这时候B语言(BCPL)来了,这也是第一个有了小括弧,大括号的语言。由剑桥大学的马丁·理察德简化CPL语言而来。
19世纪60年代末的时候,正在上班的Ken Thompson,想自己着手开发一个电子游戏,苦于没有操作系统,于是在1970年Ken用B语言写了一个造作系统叫做UNIX。1971年,贝尔实验室的D.M.Ritchie加入Ken的兴趣团队,一块完善了UNIX。
1972年,闲来无事的D.M.Ritchie觉得很无聊,在一个闲情雅致的下午,D.M.Ritchie决定对B语言进行改造。于是产生了C语言。C语言并不是为了和A、B语言排队而命名,而是取自BCPL语言的第二个字母。C语言一诞生,便迫不及待的用C语言重写了UNIX系统。