{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

C语言本身是用什么语言写的?

snifessnifes 回答10 收藏1
问题描述:星球人的一个提问:“C语言本身用什么语言写的?”
收藏问题

10条回答

svtter

svtter

回答于2022-06-22 18:56

开始是汇编,之后就是用c自己写自己不断迭代

评论0 赞同0
  •  加载中...
Alex

Alex

回答于2022-06-22 18:56

既然你能提出这个级别的问题,说明你应该学过C。既然你能提出这个级别的问题,说明你没学过编译原理(或者全还给老师了[捂脸],容我不厚道一下下)。

你所谓的"C语言",准确来说,指的是能把C语言程序翻译成机器指令程序的"编译器"程序。

先用汇编写一个极小的原始编译器(AC),能编译最简单的C语法。然后用该原始编译器AC编译一个最简单的C编译器(CC1)。然后用CC1编译一个稍微复杂一点的C编译器(CC2)。最终,像滚雪球一样,C语言就把一个拥有完全编译功能的C编译器给编译出来了。

推荐资料:陈火旺老师的经典教材《编译原理》,开篇讲的就是这个问题。

评论0 赞同0
  •  加载中...
zhoutk

zhoutk

回答于2022-06-22 18:56

是用C语言编写的。

这里有一个概念,就是编程语言的自举。

自举(bootstrapping)字面理解就是自己能把自己给举起来,换做编程语言来讲就是,自己编译自己。也就是C语言能通过C语言自己编写自己的编译器。

完成自举通常需要3-4个步骤。

1、创建自举编译器环境。

2、编译自举编译器。

3、通过自举编译器编译完整的编译器。

4、通过第三步里面的完整的编译器编译完整的编译器。

第四步得到的编译器就是一个自举编译器。

那么问题来了,第2步中的编译器是什么语言写的呢,是这么来的呢?

这个就要了解编程语言是什么了,简单而言编程语言分为,机器语言(就是0101),汇编语言(可以理解为机器语言简单英文翻译),高级语言(这个就是我们通常接触到的编程语言了,细分的话,还有编译型的语言和解析型的语言等)。

参考 Dennis M. Ritchie 写的 The Development of the C Language:Chistory。

Ken Thomson 不满意 BCPL,于是设计了 B 语言,并且用 BCPL 为 B 语言写了一个编译器,然后从这个编译器开始自举写新的 B 语言编译器。

贝尔实验室的众人在 PDP-7 上用 B 语言写了各种各样的东西后又不满意 B 语言了,于是 1971 年 DMR 开始在新买的 PDP-11 上用 B 给 B 写扩展,称之为 new B(简称NB),new B和原来的B语言渐行渐远,于是就取了BCPL的第二个字母C当作new B的新名字,C语言就这么诞生了。

1973 年夏天他们用手头的编译器和语言给 PDP-11 重写了一个 Unix Kernel。C语言就这样和unix/linux结下不解之缘。

对了,BCPL也是一门能自举的语言,后来有些人也用汇编语言写了C语言的编译器,并且C语言的语法都是透明公开的,你可以用任何语言实现C语言的编译器。

所以答案就变成了,第一版C语言编译器是由B语言编写的。现在你可以用任何语言去实现C语言的编译器。

评论0 赞同0
  •  加载中...
琛h。

琛h。

回答于2022-06-22 18:56

C语言是用C写的。奇怪吗?先用汇编写个C0编译器,再用它写C编译器。

评论0 赞同0
  •  加载中...
quietin

quietin

回答于2022-06-22 18:56

最早的计算机语言是机器语言,直接面向计算机硬件。虽然指令不多,但实现特定任务需要编制复杂的程序。由于缺乏存储系统,程序存储于纸带上。随着存储介质的发展和程序模块化演变,计算机语言由低级向高级不断发展。尤其是视窗操作系统的出现,使得计算机对用户更加友好。

评论0 赞同0
  •  加载中...
岳光

岳光

回答于2022-06-22 18:56

编译器和链接器都是用ASM

评论0 赞同0
  •  加载中...
cgspine

cgspine

回答于2022-06-22 18:56

C语言本身是基于英语的。C语言的创始人丹尼斯里奇是美国人,哈佛大学毕业。

比如C语言里的数据定义:int出自于integer;比如结构语句:if... else... 等等。

评论0 赞同0
  •  加载中...
Eastboat

Eastboat

回答于2022-06-22 18:56

这个问题导致我有一个问题,汉语是什么语言创建的?

只能说c语言的运行原理是啥,通过什么能编译执行c语言的命令。所以感觉这个问题很奇怪

评论0 赞同0
  •  加载中...
cooxer

cooxer

回答于2022-06-22 18:56

语言就是一套语法规则,都是用文字写的,在美国是用英文写的,到了中国翻译成中文。语言的编译器才是用计算机语言编的。能将C语言源程序翻译成可执行代码的任何计算机语言,都可以用来编写C语言编译器。

评论0 赞同0
  •  加载中...
fai1017

fai1017

回答于2022-06-22 18:56

英文字母和汉语拼音。

评论0 赞同0
  •  加载中...

相关问题

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<