c 语言翻译,c语言翻译器在线

kodinid 14 0

大家好,今天小编关注到一个比较意思的话题,就是关于c 语言翻译的问题,于是小编就整理了2个相关介绍c 语言翻译的解答,让我们一起看看吧。

  1. C语言、汇编语言、机器指令、CPU之间是怎么联系起来的?
  2. 量子计算机如果普及了,那么C语言还有用吗?

C语言、汇编语言机器指令、CPU之间是怎么联系起来的?

CPU中包含无数微型cmos开关单元,由无数0或1的电信号控制输出0和1的信号,这就是机器语言。c语言转换汇编语言,再转换成机器指令控制开关,开关输出的机器语言经逻辑运算后控制各声光设备,输出结果

机器语言 也就是我们看到的二进制指令,二进制指令在电路代表高电平低电平。它是可以在CPU中直接进行运算的。而汇编语言是属于低级语言。他需要通过汇编器连接器将汇编代码转换为二进制机器语言。这个转换过程,我们称之为。同理,c语言也有它的编译器。编译器会将c语言代码编译成二进制机器语言。举个很形象的例子。我们和外国人打交道,有时候我们的语言水平可能他们正常沟通是有问题的,但是呢,如果中间有一个翻译人员,就可以通过翻译人员的翻译进行沟通。而这个翻译人员就相当于编程语言中的编译器。我们就相当于编程语言。这个外国人就相当于CPU。

c 语言翻译,c语言翻译器在线-第1张图片-安济编程网
图片来源网络,侵删)

CPU的全称是中央处理单元,是计算机进行运算的核心,根据使用技术不同,CPU又分为X86,X64,ARM、DSP、单片机等不同的体系结构。在每种CPU上都有一套特定的指令集,这就是人们常说的机器指令,直接使用机器指令编写程序就是机器语言程序

理论上来说,是可以通过机器语言直接编写任何程序的(早期都是直接使用机器语言编程,那时程序相对比较简单),并且编写的程序可以直接运行,但是使用机器语言编程对程序员要求极高,代码无法移植且不便于人直接阅读,于是人们发明了一组符号,用来表示这些机器指令,这就是汇编语言。汇编语言编写的程序计算机无法直接运行,需要一个叫做汇编器的程序转换为机器语言才可以在特定机器上运行。

而C语言是比汇编语言更高级的语言,使用C语言编写的程序也是无法在计算机上直接运行的,它需要编译器将C语言代码转换为机器语言,这个过程又分为几个子步骤,见下图

c 语言翻译,c语言翻译器在线-第2张图片-安济编程网
(图片来源网络,侵删)

为了使题主的问题更加完善,在这里补充两个概念,链接器与反汇编。

在大型程序中,往往会将任务分解为许多不同的子任务,每个子任务对应一个源文件,在C语言中就是多个C文件,编译器将每个C文件编译成一个目标文件(一般Windows中是obj文件,Linux中是

.o

文件),这些目标文件也是机器指令,但是缺少一些必要的信息,无法直接运行,需要链接器将这些文件链接起来,再加上一些库文件与可执行文件头信息,成为一个可执行文件(Windows是PE格式,Linux是ELF格式)。

通常,在查看一个二进制文件时(目标文件或者可行性文件),不会直接显示机器指令,而是以汇编语言显示,这是因为此过程中有一个反汇编程序,将机器指令转换为汇编语言,它的功能刚好与汇编过程相反。

c 语言翻译,c语言翻译器在线-第3张图片-安济编程网
(图片来源网络,侵删)

CPU的核心是运算器。

数字电路教材中,讲过加法器,数据器,译码器,D触发器,移位寄存器。这些就是运算器的构成。

cpu只认识机器码,指令和数据都用机器码序列存储。pc指针指向的当前代码就是下一步要执行的指令。

1 用机器码编程,就是初始程序设计方法

2 机器指令不好记,改用助记符如add类似的符号,好理解多了,这就出现汇编语言和汇编器。

3 还可以更接近数学描述,出现了中级语言b和c语言,有了编译器,有了面向过程的结构化程序设计方法。

4 处理[_a***_]和人机界面需要,进化出了一大批高级语言,有了面向对象方法。

5 人工智能的进步,有了初步面向问题方法,自然语言编程目前还很幼稚。

现在是4G,第四代语言时代。

***如你设计一个数字电路,包括一个加法器和一个乘法器。

你希望根据需要,有时对输入数据做加法,有时对输入做乘法,该怎样做呢?最早的计算机,是靠手工连线的,与其说是计算机,不如说是巨型面包板。直到冯洛伊曼的edvac***把存储器引入计算机。

***设加法器和乘法器都具有使能端,两个使能端为01,就是加法器工作,是10,就是乘法器工作。

然后为了让电路根据要求的顺序做加法和乘法,你把一系列01、10存储起来,当你要做加法,加法,乘法,加法时,存储的就是01011001。你增加了一个时序电路,每次读出两个位,把高低电平加在两个使能端上,替代你的手工接线。01和10这两个数码能控制电路的行为,起名叫机器码。

然而这样二进制的东西并不好记忆。于是你给01起了个名字,叫add,10起名叫mul。你的这组运算就记为add,add,mul,add。

add,mul这种助记符,就叫代码,具体说是汇编代码;你会找一个悲催的助手,帮你把代码替换成01,10这种机械码。当然总有一些助手认为这个活动太没有人生价值,于是不甘心当花瓶的女助手葛丽丝·霍普(Grace Murray Hopper)设计了将代码翻译成机器码的代码,这个活儿以后就由机器来做,编译器出现了。

因此所谓cpu认识代码,是一种拟人化的修辞,偏文艺了。cpu只是一种根据高低电平输入,产生特定的高低电平输出的机器。代码不过是助记符。

后来你觉得add,add,add,add,add这类写法太烦,于是发明了五连加,7连乘之类的写法——高级语言代码诞生了。葛丽丝·霍普搞了cobol,约翰·巴科斯(John Warner Backus)搞了FORTRAN等等。

但是相对来说第一批的高级语言写起来比较烦,比如FORTRAN语言,子程序用function开头,用end结束。相信用过python的人都会觉得FORTRAN太学究气息了。

所以后来丹尼斯·里奇(Dennis Ritchie )在开发unix系统的同时,顺便设计了语法简单的c语言。main()可比function main()end简便多了。

量子计算机如果普及了,那么C语言还有用吗?

一个事物存在就有他存在的理由和作用。C语言可能会无用,但C语言对于初学计算机的人来说,学习一下还是很有用的:

第一:计算机言语可以让我们有一个计算机的思维,也可以把这种语言的思维用到我们的工作中。

第二:C语言作为最经典的语言,我们学了并不多,可以从中学到很我语言的精髓,是学习其他语言的基础,也是量子计算机命令的基础。

可以说,C语言是一门基础语言,是初学者必经之路,所以从以上两个角度说,C语言还是有用的。

语言和计算机有什么关系呢?如果计算机不能完成人的任务,就不是计算机。语言只是一个人机交互工具,没有关系的事。原来的计算机是顺序执行的,一个语句一个功能。以后计算机体系不同了,语句执行也必须具有可知结果,否则这个体系是不能用的。还是那句话,与语言没有关系,只取决于计算机的执行方式。

量子编程做的是量子运算,而非逻辑运算,无法使用C语言。那么有了量子编程以后还有必要用C语言吗?请听我慢慢道来。

量子计算机为什么快

爱因斯坦说:“上帝不会仍骰子。”可量子就像一枚在空中旋转的骰子,同时具有多种状态,直到骰子落地,才能确定它的状态。量子相互关联,单个量子的状态很难确定,但在量子的共同作用下物质表现出稳定的特性。量子计算机把多个逻辑组合叠加到量子比特中,并按照量子相干量子纠缠等原理进行量子运算,获得确定的结果。相比依次进行逻辑运算的传统计算机,量子计算机实现了大规模并行运算因而运算速度大为提高。

量子编程的语言

微软,IBM,谷歌等一些大佬们早已开始研究量子编程了。2017年微软发布了Q#语言。这是一款用于量子编程的语言,可在Visual Studio2017上开发,并可在量子计算机模拟器上执行,还可以被C#等语言调用,甚至可以转换成Python。和传统逻辑门(And, Or, Xor, Not…)相比,Q#的量子门有阿达马,泡利门(X,Y,Z),相位偏移,互换等。作为一名传统程序员,我也不太懂这些,就不装了。反正只要知道用这些东东对量子比特做运算,一次就可以完成无数次逻辑运算就可以了。

量子编程会取代传统编程吗

传统编程可以看成是1位元量子编程,目前,大部分的量子编程语言都可以转换成传统编程语言执行(当然啦,速度就谈不上了)。而传统编程语言则无法用于量子编程。但量子计算机只适用于一些特定算法的超大规模运算,比如,超大规模遍历搜索素数分解之类。如果用量子计算机进行简单计算,反而要比传统计算机慢许多。如果把传统计算机比作做枪炮,那量子计算机就是核弹。有了无坚不摧的核弹还需要枪炮吗?答案是不言自明的。

到此,以上就是小编对于c 语言翻译的问题就介绍到这了,希望介绍关于c 语言翻译的2点解答对大家有用。

标签: 语言 量子 计算机