采用编译方法的高级语言源程序在编译后,在对高级语言编写的源程序进行编译时
计算机体系结构
计算机的物理属性限制了它只能执行二进制文件,再复杂华丽的程序和应用,在底层都是0和1。
计算机的物理底层是半导体。
也就是半导体只能用二进制计算。
可执行文件是二进制机器语言的集合,可以由机器执行以获得所需的结果。例如,在。exe文件在Windows中是可执行的。
计算机可以执行的指令称为机器语言或机器码。不同的计算机芯片厂商设计不同的半导体电路,在芯片上编程有不同的二进制规则,称为指令集(指令集架构,ISA)。
c:编译语言:正是因为不同的厂商有不同的指令集,才催生了C语言,建立了更通用的编程范式。
用编译器把C语言编译成计算机能识别的机器语言:
# plus.c是一个C语言文件gcc -o plus plus.c #将plus.c编译成Linux/Mac # plus下的plus可执行文件作为可执行文件,这是机器码。上面代码中的Gcc是开源的编译器。
C/C /Fortran语言是编译型语言的一种。从编译语言的源代码到可执行文件,包含三个链接:编译(compile),汇编(assembly),* *链接* *。
编译+汇编,将C源代码转换成机器码;如果其他代码(函数等。)用于代码中,需要更新当前可执行文件中的代码连接。
编译,汇编,连接缺一不可,尤其是连接的存在,导致对不同文件的编译顺序要求严格,二次调试难度较大。因为操作系统不同,架构不同,调用各种接口的代码会不一样,然后编译过程也会不一样,所以应用软件在不同的操作系统下会有不同版本。
Python:解释性语言:为了方便计算机科学中的任何问题,都可以通过增加一个中间层来解决。
C等编译语言很难调试,这就催生了解释性语言。Python、R、Matlab、Java、JavaScript……
解释型语言,一般用C语言等低级语言做一个虚拟机或者解释器。先把解释语言解释成编译语言,再继续从编译语言到机器码的链接,这样速度会比较慢。
在不同的操作系统下,可以运行相同的。py源代码,但是不能运行相同的。c文件。
左手快速,右手方便。你既想要解释性语言的方便,又想要编译语言的速度。
方案一:以Python的numpy为例,用于编译语言编写的模块。numpy的库写的是编译型语言。安装numpy时,下载C/C和Fortran源代码(编译型语言),然后本地编译(编译型语言机器码)成可执行文件。您可以使用Cython编写自己的响应库。
方案二:JIT(Just-In-Time)即时编译技术JIT将需要加速的代码编译成机器语言。
参考计算机基础系列:计算机如何执行源代码
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。