大家好,今天小编关注到一个比较有意思的话题,就是关于c语言能写啥的问题,于是小编就整理了2个相关介绍c语言能写啥的解答,让我们一起看看吧。
C语言是用什么编出的?
一个语言能否自己编写自己实现自己编译,这叫自编译,自举性。目前能实现自举性的语言没有几个,而自举性也就成了一个语言能否真实强大的标志。
一般来说图灵完备的语言,编译型语言,虚拟机语言可以实现自举。而解释型语言基本上很难。
现代很多语言都没实现自举,Java(jvm),Javascript, python,ruby,lua,php,perl……一堆。这些语言编译器、解释器都是c语言。
一个语言能自举是他们社区和开发一直梦寐以求的事情,也是他们情怀和追求所在。有一个语言为了实现自举成功,花了近20年,前年圣诞节才正式推出了第一个正式版本。它就是perl6,perl的下一代语言。perl6支持过程、OO、函数式三种程模式,支持虚拟机的语言(自己的虚拟机和jvm)。为了做好perl6,社区搞了一个功能启示录,把要实现的功能好点子都录进去。后来一个日本人参考这个启示录自己实现了一个语言,这就有了ruby语言,但是ruby没有自举。
我在以前的回答中,曾说过c语言的来历:
上世纪70年代,为了实现unix,教主Tomphson和Ritchie开发了B语言,但是b语言性能不行,编写也较繁琐,所以又在B语言的基础上开发出了现在的C语言。
首先,C语言不是由什么语言写的。好比问:中文用什么语言写的?用什么语言讲的?C语言是int a=6;而不是mov ax,bx(汇编语言)。C语言可以用计算机写,也可以用手写,写在纸上。
你要问的应该是C编译器用什么写的。假若我猜对了,以下回答是你需要的。假若我猜错了,也看一看吧。C编译器用来把int a=6生成机器代码,当然还有链接器,把机器代码链接成可执行文件。
C编译器说到底也是一个EXE文件,或者再加上其他的dll啊之类的。假设这里有一个C编译器A.exe。
可以A.exe写一个A出来。写好C源码,用A.exe编译出另外一个A.EXE,功能可以做得一样。这种行为看起来很无聊,这里我们不探究这种行为有无意义,但这样做是可行的。还可以用A.EXE写出A2.0.exe,或A3.0.exe,A3.11exe,A3.1.1.exe,写出进化版的C编译器。还可以用Java写A.EXE,用C++写A.EXE。甚至用汇编写A.EXE。
第一个A.EXE怎么来?当然是用汇编语言写的。第一个汇编器哪里来?用机器代码写。
小结。C语言是int=2;这些东西,而用来写C代码的东西叫开发环境,例如VC6,命令行界面的gcc等。int=2是人为制订的规则,可以用笔写在纸上。而开发环境就需要用C或者另一种语言写出来。
C语言有一特性:自生长。先用汇编语言编写一个很小的编译器核,就具有了编译基本C源程序的能力。以后就用这个小C语言开发库函数等扩展部分。因此可以说,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 语言居多),由于数量众多这里就不列举了。
语言是规范,是没有用什么语言写出来的概念的。你问的应该是语言的编译器是用什么写的。c编译器有很多,这些编译器根据发布时期不同,所用语言也有差异,早期用汇编,c成熟了用c语言自己,理论上任何语言都可以来做c编译器的。
C语言本身是用什么语言写的?
是用C语言编写的。
这里有一个概念,就是编程语言的自举。
自举(bootstrapping)字面理解就是自己能把自己给举起来,换做编程语言来讲就是,自己编译自己。也就是C语言能通过C语言自己编写自己的编译器。
完成自举通常需要3-4个步骤。
1、创建自举编译器环境。
2、编译自举编译器。
3、通过自举编译器编译完整的编译器。
4、通过第三步里面的完整的编译器编译完整的编译器。
第四步得到的编译器就是一个自举编译器。
那么问题来了,第2步中的编译器是什么语言写的呢,是这么来的呢?
最早的计算机语言是机器语言,直接面向计算机硬件。虽然指令不多,但实现特定任务需要编制复杂的程序。由于缺乏存储系统,程序存储于纸带上。随着存储介质的发展和程序模块化演变,计算机语言由低级向高级不断发展。尤其是视窗操作系统的出现,使得计算机对用户更加友好。
既然你能提出这个级别的问题,说明你应该学过C。既然你能提出这个级别的问题,说明你没学过编译原理(或者全还给老师了[捂脸],容我不厚道一下下)。
你所谓的"C语言",准确来说,指的是能把C语言程序翻译成机器指令程序的"编译器"程序。
先用汇编写一个极小的原始编译器(AC),能编译最简单的C语法。然后用该原始编译器AC编译一个最简单的C编译器(CC1)。然后用CC1编译一个稍微复杂一点的C编译器(CC2)。最终,像滚雪球一样,C语言就把一个拥有完全编译功能的C编译器给编译出来了。
推荐资料:陈火旺老师的经典教材《编译原理》,开篇讲的就是这个问题。
C语言本身是一门语言而已啊,语言是用什么写的,这个问题有点抽象啊[捂脸][捂脸]
可能你说的是编译器吧,编译C语言的编译器是用什么语言编写的,可能你想问这个吧。
既然你对C有了解,那么你应该知道C其实是一门高级语言,那肯定还有低级语言,比如汇编语言。
这里有个概念叫自举,就是用汇编写一个C精简版编译器,然后用这个编译器配合C语言再编写出更牛逼的C编译器,虽然有点绕,但是能理解就行。
至于现在C编译器可以用很多更高级语言来做了,比如用C++来做。
到此,以上就是小编对于c语言能写啥的问题就介绍到这了,希望介绍关于c语言能写啥的2点解答对大家有用。