您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
C语言是由什么语言编写而成的?
语言,编译器,第一个C语言是由什么语言编写而成的?
发布时间:2020-12-06加入收藏来源:互联网点击:
C语言是由什么语言编写而成的?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
首先答案是c语言是用c语言编写。
语言自举性
一个语言能否自己编写自己实现自己编译,这叫自编译,自举性。目前能实现自举性的语言没有几个,而自举性也就成了一个语言能否真实强大的标志。
一般来说图灵完备的语言,编译型语言,虚拟机语言可以实现自举。而解释型语言基本上很难。
现代很多语言都没实现自举,Java(jvm),Javascript, python,ruby,lua,php,perl……一堆。这些语言编译器、解释器都是c语言。
一个语言能自举是他们社区和开发一直梦寐以求的事情,也是他们情怀和追求所在。有一个语言为了实现自举成功,花了近20年,前年圣诞节才正式推出了第一个正式版本。它就是perl6,perl的下一代语言。perl6支持过程、OO、函数式三种程模式,支持虚拟机的语言(自己的虚拟机和jvm)。为了做好perl6,社区搞了一个功能启示录,把要实现的功能好点子都录进去。后来一个日本人参考这个启示录自己实现了一个语言,这就有了ruby语言,但是ruby没有自举。
c语言的自举过程和交叉编译
我在以前的回答中,曾说过c语言的来历:
上世纪70年代,为了实现unix,教主Tomphson和Ritchie开发了B语言,但是b语言性能不行,编写也较繁琐,所以又在B语言的基础上开发出了现在的C语言。
第一个C语言编译器的原型是用B语言或者混合B和汇编语言编写的。采用部分实现功能,交叉编译方式实现。
先用B和汇编语言编写一个C语言的部分必须功能的编译器,再通过这个编译器,完成完整的C语言编译器。详细过程如下:
1、先编写一个只有C语言最基本功能编译器C0语言,用汇编语言编写出C0的编译器。
2、接着用C0实现比C0复杂,功能不完整的C语言子集C1语言,用C0编译出C1语言的编译器。
3、在C1-〉c2……如此循环直到Cn,Cn功能已经强大到可以实现C。
4、用Cn编译实现了第一个c语言编辑器,即C实现了自举。
回答于 2019-09-11 08:43:50
c程序需要编译器编译才能执行 这个编译器可以是用c语言写的,但编译器谁来编译呢 这是鸡和蛋的问题 ,所以,最早的c编译器肯定不是c写的了
回答于 2019-09-11 08:43:50
我不回答这个问题,只是纠正一下这个问题本身。这个问题应该这样问:“C语言编译器(compiler)是用什么语言来编程的?”
回答于 2019-09-11 08:43:50
用C语言写的代码通过C语言的编译器编译成EXE,最早版本的C语言的编译器是通过汇编语言写的编译器编译出来的,最早版本的汇编语言编译器是由机器语言写的编译器编译出来的。旧版本的C语言编译器可以用来编译出新版本的编译器程序。
回答于 2019-09-11 08:43:50
最早最早的c编译器(贝尔实验室阶段)是用汇编写的,之后的编译器一般都是用c/c++编写,并且用已有的旧版本编译器来编译新版本的源码。
回答于 2019-09-11 08:43:50
c编译器,c编译器现在也是c写的了。
回答于 2019-09-11 08:43:50
C编程语言是在20世纪70年代早期设计的,作为新兴Unix操作系统的系统实现语言。它源于无类型语言BCPL。c编译器最初期的版本,是在pdp-11机器上,用汇编语言编写的,用其编写人的名字缩写命名,为dmr,在github上可以查找legacy-cc,找到部分dmr的编译器的源代码。
最开始的c的代码,帖一部分在这里,纪念一下。
/* C compiler
Copyright 1972 Bell Telephone Laboratories, Inc.
*/
ossiz 250;
ospace() {}\t/* fake */
init(s, t)
char s[]; {
extern lookup, symbuf, namsiz;
char symbuf[], sp[];
上一篇:自家孩子骑摩托车带别家孩子出车祸,别家孩子有责任吗?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |