采用编译方法的高级语言源程序在编译后,在对高级语言编写的源程序进行编译时

  采用编译方法的高级语言源程序在编译后,在对高级语言编写的源程序进行编译时

  计算机体系结构

  计算机的物理属性限制了它只能执行二进制文件,再复杂华丽的程序和应用,在底层都是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将需要加速的代码编译成机器语言。

  参考计算机基础系列:计算机如何执行源代码

采用编译方法的高级语言源程序在编译后,在对高级语言编写的源程序进行编译时