python的一些思考

一。计算机编程语言与cpu的指令集之间有什么样的一种联系

CPU指令系统中的指令就是机器码,也就是二进制表示的

不同的cpu型号有着不同的指令集。

        python程序之所以可以在不同的操作系统上运行,就是因为有不同操作系统的python虚拟机的存在。我们在编写python代码的时候需要配置环境,而这的python执行环境就是指windos/mac/linux的python版本。通过虚拟机解码器将相同的python源码解码为本操作系统的能识别的字节码。cpu不能读取字节码,而需要将字节码转换成机器码,所以这个相对会慢。

机器语言:机器语言是一种指令集的体系。这种指令集,称为机器码(machine code),是电脑的cpu可直接解读的数据。

特点:计算机直接识别的二进制代码

机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。他是计算机额设计这通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活,直接执行和速度快等特点。不同型号的计算机(一般只有品牌机才有型号,如IBMDELL,苹果等电脑,通常情况下位于电脑的后面标签或包装箱上。而组装的计算机则没有型号可言。)及其机器语言是不相通的,按着一种计算机的机器指令编制的程序,不能在另一种计算机上执行。

       一条指令就是机器语言的一个语句,他是一组有意义的二进制代码,指令的基本格式,如,操作码字段和地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作书和操作数的地址。

二。编译和解释性语言的区别

编译型语言:编译器把源程序的每一条语句都编译成机器语言,并保存为二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。就好比,你跟一个日本人聊天,中间有一个翻译官,你一次性说了5分钟,翻译把你5分钟说的话翻译给日本人。

解释器语言:解释器在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以裕兴速度是不如编译后的程序运行的快的。就好比,你还是跟一个日本人聊天,中间还是有一个翻译官,你说一句,它翻译一句。

那么,为何要编译器呢?

因为计算机不能直接认识并执行我们写的语句,它呢只认识机器语言(二进制的形式)。

接下来,就说说编译型语言和解释型语言有哪些?

常见的编译型有c和c++等

举个栗子:

把c语言代码编译成机器码0和1,就需要编译器gcc来实现,编译之后就可以直接交给机器来执行,这个呢是在Linux下编译使用的,如果换了一个平台,比如说换到Windows上面呢,那么就需要另外一个编译器来编译,然后执行。

那么,问题来了。

很明显,在可移植性这方面,就比较差了。让人很不愉快。但是呢,由于是直接编译成机器码所以运行速度快。

常见的解释型语言有Python,ruby,PHP(世界上最牛逼的语言,没有之一),Java等

它的特点就是边执行边解释,速度慢(相对而言),解释器优秀支持跨平台,一处编译呢,到处执行。

最早的编程使用的是机器语言,就是一串串0和1。后来为了记忆方便,把一些特定的10序列用容易记忆的字母表示,比如MOV,AND之类的,这就是汇编语言,其实汇编语言和机器语言是完全对应的。由于汇编语言太底层,程序员把大部分时间花在了与自己要解决的问题 无关的细节上(比如把数据从CPU寄存器中移来移去),所以人们又发明了高级语言(比如Fortan,Lisp,C……),他们更接近人的思考方式,程序员就能够把更多的时间花在问题本身上。这个时候就需要编译器把高级语言翻译成底层的汇编语言。也就是,所有的编程语言必须要翻译成机器语言,也就是CPU的指令,计算机才能够运行。

猜你喜欢

转载自blog.csdn.net/qq_35810838/article/details/83417581