python是一种解释型_Python解释型?

谢邀。

先放个知乎名言先问是不是,再问为什么。

不过这个问题及描述更过分,很多地方都不太对劲,得一点点说。

首先,python是通过虚拟机运行的,这没错,但是虚拟机跟编译器一点关系没有,所以就不要放在括号里了。

然后解释器也不会一句句的翻译代码。

再然后更不会把python翻译成其他语言。

当然,解释运行时也不是一句句运行的。

最后,C语言运行时更不会是一句句的,也就谈不上“那么问题来了”。

详细的解释嘛,有很多概念很复杂很广泛,不容易说明白,所以以下的解释也存在有很多比喻和省略,虽然这可能继续造成更多的误会,但限于篇幅,也没有办法,对哪部分感兴趣其实都能找到资料的,以资料为准。

首先,广义上,电脑里代码的最小单元是cpu指令,也就是一些直接发给cpu看的十六进制数字,比如说FF 05 78 56 34 12代表着把内存地址12345678处存放的数字加一 。

编译器做的事情为,分析源代码,将源代码解析为功能对应的一系列cpu指令并写出,写出的就是编译好的程序,然后编译出来的程序运行起来后,就将会按顺序一条条执行这些cpu指令,来实现对应的功能。也就是生成程序时把整个程序转成一大串cpu指令。

而解释器,也会分析源代码,然后解释器内部预备了一组组的cpu指令,根据分析的源码,实时动态的切换各组对应的cpu指令发给cpu,来实现对应的功能。也就是解释器实时分析代码,并且根据内容向cpu发送各种指令,所谓把代码解释给cpu。

python属于后者,也就是解释器。又称为虚拟机,因为这像是虚拟了一个能看懂python代码的cpu出来,而实际上只是解释器在把python代码解释成普通的cpu指令。

然后说为什么说解释器不是一句句翻译代码的。因为这样做很没效率,而且有些代码是上下文相关的,没那么容易区分出所谓的一句。解释器通常是先将整个代码文件,解析成解释器更容易理解的格式,比如说删除注释,按照子程序分割成一个个小部分,甚至每一行的每个符号数字都单独分割出来等等等等。更进一步,还会把这些解析好的数据,映射成对应的十六进制数字,类似cpu指令一样,只不过这指令不是给真正的cpu看的,而是给解释器(虚拟机cpu)看的。

至于翻译成其他语言……上面也说了实际操作流程,是不存在这一步的,而且把一种比较高级的语言翻译成另一种比较高级的语言,代价很大,是非常难以实现的,毕竟不仅仅是关键字不一样,还有大量的语法问题和函数兼容问题等。

c语言是编译语言,就像上面说的,运行自然不是一句句运行的,在编译生成阶段,就把这一句句指令变成了各种cpu指令,最终运行起来就是cpu按照顺序来执行这一系列的指令罢了,而且编译是也不是一句句对应的,一句c语言通常会产生很多条cpu指令,比如说一句a=b实际上会分割成含义如下的几句指令找到b的内存地址|读取b的内容至缓冲区|找到a的地址|将缓冲区的内容写入a,这根据各cpu不同也有出入。 当然有时候一句c语言却也不会产生任何cpu指令,比如说那些仅仅用来指示编译器选项的语句。

结论,问题不成立。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值