Python(四十一)python是编译型还是解型语言

Python(四十一)python是编译型还是解型语言,第1张

Python(四十一)python是编译型还是解型语言 一  基础知识铺垫

代码是如何变成机器码的

机器指令就是'0、1'组成的,可被某种类型的'CPU识别并执行'

二    编译型和解型语言 2.1  语言分类 2.1.1  高级语言
高级语言:按程序的'执行方式'可以分为'编译'型和'解释'型两种

TIOBE语言排行榜

2.1.2  硬件描述语言 

高级编程语言vs硬件描述语言

Tcl脚本在IC设计中的应用 

IC设计:Integrated Circuit Design,或称为'集成电路设计'

IC设计中'常用的脚本'有Tcl、Perl、Shell、Python

2.2  编译型
1) 编译型语言是指使用'专门的编译器',针对'特定平台'( *** 作系统)将某种'高级语言源代码'一次性'翻译'成可被该'平台硬件执行的机器码'(包括机器指令和 *** 作数)

2) 并包装成'该平台所能识别'的'可执行程序'的格式,这个转换过程称为'编译'(Compile)

备注:编译生成的可执行程序可以'脱离开发环境',在'特定的平台上'独立运行.

3) 有些程序'编译结束'后.还可能需要对其他编译好的目标代码'进行链接',即组装两个以上的目标代码模块生成'最终'的可执行程序,通过这种方式实现'低层次的代码复用'.

++++++++++++++++++"编译型语言特点"++++++++++++++++++

因为编译型语言是'一次性'编译成机器码的,所以可以脱离开发环境'独立运行',而且通常'运行效率较高'.

但因为编译型语言的程序被'编译'成'特定平台上'的机器码,因此编译生成的可执行程序通常'无法移植'到其他平台上运行

备注:如果需'要移植',则必须将'源代码复制到特定平台上',针对特定平台进行修改,至少需要采用特定平台上的编译器"重新编译".

现有的 'C' 、'C++'、'Golang' 等高级语言都属于'编译型'语言.
2.2.1  C语言

 C相关机器码和汇编代码

目的:用一段 'C 语言代码'来看看,我们平时编写的代码是'如何变成'计算机指令的

+++++++++++"过程演示"+++++++++++

2.3  解释
1) 解释型语言是指使用'专门的解释器'对'源程序逐行解释'成'特定平台'的'机器码'并立即'执行'的语言.

2) 解释型语言通常'不会'进行整体性的编译和链接处理,解释型语言相当于把编译型语言中的'编译和解释过程混合'到一起同时完成.

备注:每个'特定平台上的解释器'都负责将'源程序'解释成'特定平台的机器指令'

补充:解释型语言以'牺牲'程序执行效率为'代价',方便'源程序'的移植
 2.3.1  Java语言

Java即时编译器原理解析及实践

JVM中集成了'两种'编译器,Client Compiler和Server Compiler

在'Hotspot VM'中,'默认'的Server Compiler是C2编译器

从JDK 9开始,Hotspot VM中集成了一种'新的'Server Compiler,Graal编译器

java是编译型的还是解释型的 

'前端'编译: javac将'.java的源文件'转化为'.class'的bytecode'中间字节码文件'

'后端'编译: JVM虚拟机在'运行时'把字节码'转化为'机器码 -->然后让'CPU'去执行'机器码'

说明:'IDEA'之类的工具将'者两部分'整合到一块.

具体:Jva是'先编译'、'后解释'的语言

 

JVM'向上'提供透明,向下'屏蔽' *** 作系统之间的'差异'

Java语言'看似'是编译型的,因为Java程序代码的确是需要'经过编译'的;不经过编译,'.java文件'运行不了

Java语言'又看似'是解释型的,因为Java程序要在'JVM上解释'运行

Java首先是通过编译器编译成字节码文件,然后在'运行时'通过解释器给解释成机器文件

 2.3.2  Python语言

Python是编译型语言还是解释型语言

++++++++++++++'(1)问题引入'++++++++++++++

++++++++++++++'(2)python的运行过程'++++++++++++++

其实Python和Java一样,也是一门'基于虚拟机'的语言

重点理解:PyCodeObject和'pyc文件'

P'ython'VM'类似'JVM

python虚拟机运行原理 

++++++++++++++'(3)什么是pyc和pyo文件'++++++++++++++

++++++++++++++'(3)pyc文件出现的时机'++++++++++++++

1) 由于编译成'pyc文件'的应该是那些可以'重用的模块'

2) 只有'import进来的模块',才是需要'被重用'的模块,才会被'主动持久化'成pyc文件.

备注:下面提供了'三种方式'的场景

py_compile 模块主动为单个py文件编译为pyc文件

compileall模块为目录下多个py文件编译为pyc文件

++++++++++++++'(4)pyc文件过期时间'++++++++++++++

 python程序运行机制简述 

2.3.3  shell语言 2.4  编译型和解释型语言关联

三  其它 
动态类型语言和静态类型语言

强类型语言和弱类型语言

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5680559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存