为什么计算机能够识别计算编程语言,底层物理原理及逻辑是什么?

底层原理就是电路原理


每种计算机语言都有自身特有的写法,我们叫语法。

只有特定写法,计算机才能认识。


计算的本质是图灵运算,计算机是一种图灵机。编译原理,逻辑运算都是在这个基础上运行的。

图灵机简单讲就是要让计算机能在一堆01代码中识别出哪些是操作,哪些是数据


计算机不能直接识别编程语言,即便是汇编语言也不能直接识别。

汇编语言与机器指令一一对应,但是我们说的汇编都是通过助记符编程,要汇编成二进制代码后才可以被计算机识别。计算机只认识010101组成的计算机指令代码。

高级语言,C语言、java、Python等都是不能被直接识别的,需要编译系统编译成机器指令,也就是二进制代码才可以被识别和执行。

高级语言有大量的支持库,这些支持库一般都是C语言为代表的高级语言写成的,编译成二进制代码后备用。

高级语言的编译器的工作是将人类易识别、理解的计算机语言翻译成计算机能识别的机器代码,并通过link程序将你编写的代码和支持库组成一个完整的执行程序。

编译系统就是个翻译官,最早的编译器肯定也是汇编语言写成,现在一般都是C语言为主导写成,就是滚雪球,从最早的简单的语言迭代发展成现在的众多高级语言。

高级语言分两大类,解释型和编译型。

解释性的一边编译一边执行,自带基础支持库,速度慢,但是门槛略低。

编译型的编译后需要链接(link),一边将支持库代码或者调用入口纳入执行代码。

CPU就是一些数字电路组合,很傻只能进行极为简单的逻辑运算,但是速度贼快,可以达到纳秒级;当然为了提高速度设计出各种CPU结构和指令体现,基本的原理都是数字逻辑运算。

现在的X86体系源自60年代,发展到现在已经是非常复杂臃肿,指令丰富到一般人无法掌握使用,我们现在只能通过高级语言和开发套件才能使用到那些指令。X86的复杂度降低了CPU的效率,增加了CPU设计、制造的难度,苹果公司的M1以极少的晶体管数量和极低的功耗获得了极高的运行速度就是个例证,当然苹果M1的主CPU本身功能一般,高速度的功劳是辅助功能模块的接入,也就是n年前说的协处理器。

90年代有科技大佬预测未来的计算机发展会出现大量的辅助处理器,结果被wintel简单粗暴的单一CPU+windows组合替代,现在的苹果给出了新思路,为未来的AI、VR等技术带来希望


逻辑函数模电数电。

大学课程先是模拟电子电路。就是三极管二极管。然后产生数字电子电路几个三极管产生与非门。最后用与非门结合逻辑函数产生可计算的东西


他们回答的太复杂了感觉,我用简单的例子来说说,计算机为什么能够识别现代的编程语言编写的程序吧!

比如:小明说的是他们本地的方言(计算机本身)而且他又不会也听不懂普通话,你直接用你自己家里方言或者普通话跟他说话交流他可能会听不懂啊!这个时候怎么办,你只能找个懂他们家里方言的人把你的话翻译给他听,这个时候给你翻译的人就相当于是一个中间的翻译器(计算机编程语言自带的编译器层面),你说的话就相当于是现代编程语言,需要有一个或者多个人翻译后,小明才能明白你说的话是什么意思。这期间你找的翻译人越多效率就越差(程序执行效率越差),你找的翻译人越少效率就越好(程序执行效率越好)。

计算机底层只能识别0和1二进制,现在编程语言最终都会被翻译成0和1去让计算机去执行。


您一定用过算盘吧,其实,计算机的工作原理跟算盘差不多,也可以说算盘是一种机械计算机。下面就借算盘给您解释一下计算机的工作原理。

算盘上的算珠就相当于计算机的寄存器,每个算珠有两种状态,初始位置和被拨上去,这可以对应计算机每个数位的0和1。使用算盘做加法时,先拨动算珠写入第一个数据,再拨动算珠写入第二个数据,按照规则这个数被累加到第一个数上了。用计算机术语说,算盘的拨动规则就是CPU(中央处理器)的运算规则,一次算盘操作,就相当于CPU从寄存器里读取两个数把它们相加的结果写到寄存器里。

当然了算盘是全手动的,想连续计算就得不断拨算珠。计算机里有一个时钟,每隔一段时间,就自动运算一次。这个时钟的频率,就是CPU的主频。有了这个时钟计算机就可以自动地完成一系列的运算了。为了让计算机能连续完成运算,我们得写好拨算珠的步骤(拨上、拨下、进位之类),这样计算机在时钟的驱动下就可以一步一步完成设计好的操作。这样的步骤就是汇编语言了。汇编语言写的是操作寄存器的步骤,一般人很难看懂。人们希望写一句“1+1=?”计算机就能完成加法计算,于是有人就设计出了比较接近这样的语言的高级语言,比如,C语言。先把C语言程序翻译成汇编语言(机器语言),就可以让计算机按照人的指示进行工作了。

用算盘做加减法是很方便的,但乘法除法这些就比较困难了。CPU要比算盘复杂得多,做四则运算都不是事儿。比如,做除法只需几次移位操作就可以(二进制向右移位是除二,向左移位是乘二)。还可以做逻辑运算,比如,两个都是真结果就是真,有一个假结果就是假之类。这些就是数字电路中与非门的原理了。比如,两个串联在一起的开关,断开了一个线路就会断,这就是与门。

计算机原理大致就是这些了。原理上挺简单的,我曾经试着用几十个继电器做CPU,结果没有成功,因为,继电器的时间响应太慢了,这个庞大的CPU要么卡壳,要么停不下来,一次都没有成功。说这件事就是想帮助您理解计算机的原理跟算盘原理是大同小异的,计算机并不神秘。当然了要把它做得很快需要很多高技术的加工工艺了。


我用一种较为容易理解的方式进行解答吧。

1.计算机最底层的识别并不是识别编程语言

2.计算机能够识别的只有0和1,并且0与1已经是人类具象化的一种标识

3.计算机能够识别例如01010101011101或者1010111011101011这种1和0所组成的“数字”,不同的五个排列有不同的意义

4.那为什么能够识别编程语言?以下我所述并不严谨,只用做例子。例如1010010101111...表示计算机显示你好,那么我们在写c语言时printf(“你好”)表示计算机显示你好。这时就可以做一个转换,将编程语言中的你好转变成机器码,这个时候计算机就知道你要命令他做什么了。

5.计算机编程指的是,命令计算机完成一个任务。可以这样简单理解,我们通过编程语言编写程序后,例如c语言,需要有一个编译过程,这个时候是我们所使用的编程软件帮我们自动的去进行编译,而这个编译就是可以当做是一个机器码转换的过程。

以上考虑到多个方面,所以所述并不严谨,但大致流程相似。谢谢[玫瑰]


计算机能够直接识别的只有机器语言,也就是用二进制编码的0和1表示的二进制语言。其中机器语言的基本单位是指令,指令由操作码和数据两部分组成,也就是说,计算机指令是一系列0和1的组合。而这些0和1的实质,是与之相对应的逻辑电路的两个状态,即低电平和高电平,这两个状态是数字逻辑电路的状态,也就是说,二进制的物理基础是数字逻辑电路。数字逻辑电路有输入和输出两个部分,每个部分都有用0和1表示的两个状态,简单来讲,输入端的状态决定了输出端的状态,计算机的核心CPU以及内存都是数字逻辑电路。上面说到,计算机语言的基本单位是计算机指令,每条计算机指令包括操作数和操作码两部分,操作码告诉计算机该干什么,操作数告诉计算机对谁做,而这些指令都是用0和1表示的,并且存储在存储器中。当存储器中的指令通过CPU中的控制器取出并送到CPU中的运算器时,实际上就是把一组由0和1组成的输入信号送到了数字逻辑电路的输入端,也就是给数字逻辑电路的输入端送入了不同的电平,数字逻辑电路就回按照自己的逻辑功能做出处理并体现在输出端,这样计算机就按照由一系列指令组成的程序连续工作了。计算机编程语言是一个笼统的概念,按照计算机语言的发展历史,其实经历了机器语言,汇编语言,高级语言几个阶段,其中机器语言是计算机、也就是CPU能够识别的唯一语言,但是,这种由0和1组成的语言只有很少的计算机专业人士才能应用,后来发展出来汇编语言,就是用英语单词或者缩写帮助记忆机器语言的语言,这些缩写称之为助记符。这种靠助记符表示的语言,计算机并不能识别,必须先编好另一个程序,通过这个程序把汇编语言程序转化为机器语言程序,计算机才能识别并执行。汇编语言虽然解决了机器语言难以记忆的问题,但仍然具有高度的专业性,与CPU结构和指令高度相关,对普通人而言依然不太好用,后来就又发展出来所谓的高级语言,高级语言脱离了具体的CPU结构,其语言语法更接近自然语言,但是,用高级语言编写的程序,计算机是不能识别的,必须通过所谓的解释程序或编译程序处理后计算机才能识别和执行。


原始地址:/shenghuo/561.html