热门回答:
首先答案是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实现了自举。
其他观点:
C语言标准文档是 pdf 格式的。你可以在这里下载 http://open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf 至于是什么编写的。因为很多文档编辑器都可以导出 pdf。这个还真不好猜测。。。
如果你说的是 C 语言编译器是什么编写的。当今三大主流 C 语言编译器都是使用 C++ 语言编写的。
1. 首先是Windows平台的 cl(全称叫 Microsoft (R) C/C++ 优化编译器)。该编译器是闭源的。但是从它的可执行文件的导入符号可以看出它是用 C++ 语言编写的。并极有可能就是用自身编译的。
2. 然后是在Linux平台广泛使用的 gcc。gcc 编译器(平台)最初是用 C 语言编写的。但是在 2012 年 8 月。gcc 宣布全面迁移至 C++ 语言。所以现在都是使用 C++ 语言编写了。
3. 最后是在BSD系(包括苹果系统)使用的 clang 编译器。它属于 LLVM 编译器平台。从诞生第一天起就是使用 C++ 语言编写的。
其他还有很多小众编译器。多数是使用 C 或 C++ 语言编写(C 语言居多)。由于数量众多这里就不列举了。
可以看到 cl 的引用了 C++ 语言编写的函数
其他观点:
C语言有一特性:自生长。先用汇编语言编写一个很小的编译器核。就具有了编译基本C源程序的能力。以后就用这个小C语言开发库函数等扩展部分。因此可以说。C语言的核是汇编语言开发的。而大部分代码是用C语言自我开发的。
您还感兴趣的文章推荐
- 为什么喜欢的总是害自己最深的?背后有何规律?
- 在北京月入14k,这种情况下要不要离职呢?
- 在当前社会背景下,学生学历低会导致爹不疼娘不爱且家庭成员不和睦吗?
- 刚刚离职的我现在还能从事哪些工作呢?
- 为何无人治理满大街逆行的送餐骑手?背后原因大揭秘
以上就是由互联网推广工程师 桔子生活网 整理编辑的,如果觉得有帮助欢迎收藏转发~
本文地址:https://www.wangchuang8.com/207415.html,转载请说明来源于:桔子生活网
声明:本站部分文章来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系进行处理。分享目的仅供大家学习与参考,不代表本站立场。
评论(2)
语言,编译器,都是,汇编语言,功能,第一个,是在,虚拟机,平台,实现了
没想到大家都对C语言是用什么编出的?感兴趣,不过这这篇解答确实也是太好了
首先答案是c语言是用c语言编写。语言自举性一个语言能否自己编写自己实现自己编译。这叫自编译。自举性。目前能实现自举性的