python语言编译过程_程序编译过程

程序编译过程

程序的编译过程与语言类型有关

语言可分为解释性语言和编译语言,解释性语言入Python、JavaScript;编译语言比如C/C++;半解释语言如Java等;编译性语言编译后能直接在机器执行,效率高。解释性语言运行于解释器上,效率依赖于解释器,但跨平台性好。

C/C++语言编译主要分为四个阶段

1. 预处理替换,此阶段由编译器完成

2. 编译过程,优化生成中间代码,此阶段由编译器完成

3. 汇编:讲汇编代码翻译成机器指令,此阶段由汇编器完成

4. 链接:将文件中的各种函数与静态库、动态库文件相连接,生成执行文件由机器执行,此阶段由链接器完成

名词解释

静态链接:在程序执行之前完成链接

动态链接:在程序执行时进行链接

Java程序编译过程

Java属于半解释性语言,运行于虚拟机,主要分为两步

1. 编译:源码编译成class文件(字节码),此过程由编译器完成。

2. 运行:字节码由JVM(java虚拟机)生成模板代码文件并执行,边解释边执行。

Java运行过程

1. 类的加载:加载 --> 验证 --> 准备 --> 解析 --> 初始化,类信息最终被加载到方法区

2. 执行类:JVM找到专属入口,持有指针加载运行

Python程序执行过程

Python属于解释性语言,运行于python解释器(CPython、PyPy、IPython等),边解释边执行,其执行过程如下:

1. 语法分析、词法分析:由解释器完成

2. 编译过程:生成PyCodeObject对象,将import的文件生成pyc文件(字节码):由解释器完成

3. 执行:由解释器完成。

语言的其他分类:

除此之外,语言还会分为

动态语言:在运行期间才去做数据类型检查的语言(比如Python)

静态语言:在编译期间内检查数据类型等,如C++

按照类型分为

强类型语言:一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型,如C++、Java、Python

弱类型语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值,如Vb、Php

按照语言级别分类

高级语言:有类、方便移植,如Java、C++、Python等

低级语言:如汇编等

你可能感兴趣的:(python语言编译过程)