【周分享02】-【编译型语言和解释型语言的执行原理】

【python教程入门学习】编译型语言和解释型语言的区别 我们编写的源代码是人类语言,我们自己能够轻松理解;但是对于计算机硬件(CPU),源代码就是天书,根本无法执行,计算机只能识别某些特定的二进制指令,在程序真正运行之前必须将源代码转换成二进制指令。 所谓的二进制指令,也就是机器码,是 CPU 能够识别的硬件层面的“代码”,简陋的硬件(比如古老的单片机)只能使用几十个指令,强大的硬件(PC 和智能手机)能使用成百上千个指令。 然而,究竟在什么时候将源代码转换成二进制指令呢?不同的编程语言有不同的规定: 有的编程语言要求必须提前将所有源代码一次性转换成二进制指令 阅读详情

【周分享】2019-11-03 第9周:周日

每周做一些小的分享,加油!!!
作者:阿涛

【编译型语言和解释型语言的执行原理】

[1] 大致区别
  • 编译型:
    • 例子:C 、 C++ 、Go
    • 编译:程序的源代码首先翻译成汇编语言,再用编译器完成编译工作成为目标文件;
    • 通俗:把做好的源程序全部编译成二进制代码的可运行程序,可直接运行这个程序。
    • 执行速度快、效率高;依靠编译器、跨平台性差些。
  • 解释型:
    • 例子:PHP、Python
    • 解释:程序运行的时候通过解释器来完成翻译工作,成为机器语言;
    • 通俗:把做好的源程序翻译一句,然后执行一句,直至结束,每次可能都要进行解释。
    • 执行速度慢、效率低;依靠解释器、跨平台性好。
  • 所以一般来说解释型语言的性能效率相对来说会比编译型差一点点;
[2] 编译型语言的执行大致流程
  • 我们学习C语言的时候,都知道,需要经过预编译,编译,汇编,链接到最后的可执行文件。(大一的概念哈哈哈,我实际上才回忆起来)
  • 基本流程如下:
  • 第一步:预处理器;
    • c语言一开始.c结尾的文件,需要对代码中的宏,依赖进行处理,处理成源程序
  • 第二步:编译器;
    • 编译器会对源程序的每一行代码进行处理为汇编语言,同时优化程序
  • 第三步:汇编器;
    • 编译语言再经过汇编器,处理成目标程序,也就是以.o结尾的文件
  • 第四步:链接器;
    • 需要对程序中的函数或者库,通过连接器进行连接,从而成为机器代码 (可执行程序);
  • 最终:对源代码,编译成为当前平台CPU的指令集
[3] 解释型语言的大致流程
  • PHP7中,对源代码首先进行词法分析,语法分析,转化为抽象语法树AST,生成opcodes,然后解释为机器指令。
  • 基本流程如下:
  • 第一步:词法分析;
    • 将源代码分割为多个字符串单元,然后分割后的字符串为Token;
  • 第二步:语法分析;
    • 由于独立多个Token没有完整的语义,因此进行分析,然后转化成抽象语法树AST,(注意这里的词法和语法分析根据情况是可以一起执行的,提高效率)
  • 第三步:opcodes;
    • opcodes是中间代码,类似java的字节码。
    • 这一步也是与编译型最大区别的,编译型会通过编译器来生成,而解释型则是由解释器来完成指令集的转化。
    • 然后虚拟机来执行opcodes。
    • 注意:可以开启opcodes cache(也就是缓存),省去开始的步骤,直接通过虚拟机执行;
  • 最终:对源代码,可以解释成当前平台CPU的指令集;
[4] 放在最后
  • 如果有错误,大家可以及时指出鸭,欢迎分享自己的意见。
  • 每周总结一些,可以互相交流,共同进步,嘻嘻嘻。
  • 如果大家有什么想一起分享的,可以评论区占楼鸭。

参考:《PHP7底层设计与源码实现》滴滴多位大佬编著:第二章(初始PHP7源码整体框架)

编程语言实现:解释与编译的对比分析 本章深入探讨了编程语言的实现方式,特别是解释型语言和编译型语言的区别。解释型语言依赖于垃圾收集器来管理内存,而编译型语言则在编译时完成大部分工作,执行速度更快。同时,虚拟机的概念被提出,它为程序提供跨平台的可移植性和性能优化。类型检查在编程语言中的重要性也被强调,包括静态类型和动态类型的区别以及它们对开发过程的影响。 阅读详情

相关推荐

【Kingbase人大金仓】授权文件更换

本文介绍了金仓数据库授权文件更换的步骤:1.通过ksql或客户端工具查询数据库版本;2.在官网下载对应版本的license.bat文件;3.替换前先备份原授权文件(使用tar命令压缩),再用新文件覆盖原文件。注意事项包括:版本号需严格对应,授权文件通常位于安装目录下,可使用find命令查找具体位置。操作需谨慎,建议先备份原文件以便恢复。

qq_34463511的博客 3466

计算机组成原理(三):编译型语言与解释型语言

一、五级层次结构 说明: 1.下层是上层的基础,上层是下层的扩展 2.汇编语言指令和机器语言指令一一对应(先把高级无言翻译成汇编语言) 3.高级语言可以是C/C++、Java;汇编程序可以当作一种助记符;机器语言是一串二进制代码 二、编译型语言与解释型语言的区别 2.1 编译型语言 定义:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需翻译一次)。典型的就是它们可以编译后生成.exe文件,之后无需再次编译,直接运行.exe文件即可...

xuanyao66666的博客 931

【ROS】usb_cam相机标定

1. 唠叨两句 当我们要用相机做测量用途时,就需要做相机标定了,不然得到的计算结果会有很大误差,标定的内容包括三部分:内参,外参还有畸变参数。所以标定的过程就是要求得上面这些参数。 以前弄这个事估计挺麻烦,需要做实验和计算才能得到,现在通过ros的开源包几分钟就能完成相机标定,感激! 具体的内外参和畸变系数的说明,可以看看Reference里面的第一个链接,写得很详细。 2. 准备工作 要准备三样东西: usb_cam的ROS启动包 相机标定的ROS包 还有一个用于标定的棋盘格 1)usb_cam启动包

Will_Ye的博客 8204

编译型语言与解释型语言

编译型语言与解释型语言 首先要说明,编译型语言与解释型语言这种分类方法是不科学的,或者说已经过时了,但是这种称呼大抵还是能够让人明白我们将要讨论的是什么东西。 文中所列参考是笔者认为比较有帮助的一些扩展阅读内容。 首先贴一个很形象的比喻,来自知乎@孛尔只斤南丁: 假设厂里来了两个新工人,一个叫编译,另一个叫解释。厂长(程序员)给他们安排了一项任务(需求),并发放了操作说明(源代码)。 编译这名工人的做法是先完整的看一遍操作说明,遇到错别字或者不明白的地方,就去问厂长,直到操作说明最终成为一个没有错别字

weixin_44966641的博客 1859

信创改造实战:SpringBoot项目迁移到宝兰德BES 9.5.5的完整避坑指南(附依赖与web.xml配置)

本文详细介绍了将SpringBoot项目迁移到宝兰德BES 9.5.5的完整流程,包括依赖改造、web.xml配置降级等关键步骤。通过实战案例和避坑指南,帮助开发者高效完成国产中间件适配,确保项目平稳运行。特别针对Tomcat依赖排除和BES适配器选择提供了专业建议。

weixin_30689307的博客 742

PX4控制云台的两种方式 方法适用控舵机 控灯

云台控制插件是mount_control,运行mavros启动文件的时候需要注意该插件是否正常启动,需要在px4_pluginlists.yaml配置文件中将mount_control从blacklisted中移除后才可启动。后会默认占用AUX端口1-4,此时通过AUX通道1-4输出PWM控制信号至云台,对应的RC通道映射功能失效。控制信号输入为RC 则接收机必须连接对应的通道至AUX辅助通道,并通过MNT_MAN_*参数设置pitch/roll/yaw对应的AUX通道。配置为AUTO或MAVLINK,

z1872385的博客 3669

python语言是编译型语言-Python程序的执行过程原理(解释型语言和编译型语言)...

Python是一门解释型语言?我初学Python时,听到的关于Python的第一句话就是Python是一门解释型语言,我就这样一直相信下去,直到发现.pyc文件的存在,如果真是解释型语言,那么生成的.pyc文件的是什么呢?c应该是compiled的缩写才对啊!为了防止其他学习Python的人也被这句话误解,那么我们就在文中来澄清一下这个问题,并且把一些基础概念给理一理。解释型语言和编译型语言计算机...

weixin_37988176的博客 213

芒果YOLO11改进21:检测头Head篇:即插即用|新颖轻量化非对称多级压缩LADH检测头,原创改进适配YOLOv8高效检测头,检测头新颖性改进,全网首发独一份

检测头Head篇:即插即用|新颖轻量化非对称多级压缩LADH检测头,原创改进适配YOLOv8高效检测头,检测头新颖性改进,全网首发独一份

包括YOLOv5、YOLOv7、YOLOv8等模型改进 792

编译器与解释器的区别和工作原理

这篇教程,我们一起来了解编译器和解释器的工作原理,这对我们提升能力很重要。 我一直认为概念或理论知识是非常重要的,让我们能够将很多模糊的认知关联起来,变得更加清楚,从而打开视野,上升到新的层次。 但是,一般来说,在刚刚入门的时候,接触一些概念性、理论性的内容,不但非常枯燥,而且难以理解。 而在一定时间的学习接触之后,再来看这些东西,则会变得更加容易领悟,理解的更透彻。 这篇教程会包含很多专业术语,我会对其中一些专业术语进行解释,对于一些未做解释的专业术语,建议大家通过搜索引擎进行理解。 首先,从P

Le_Sam的博客 1045

FC7300 SPI MCAL配置引导

Example - QMI8A01z外设:Example - QMI8A01z外设:

舊梦的博客 260

【数据集】ERA5(欧洲中期天气预报中心)再分析数据介绍及下载

简介EAR5数据集及下载步骤

WW、forever的博客 1万+

解释型语言和编译型语言

解释型语言和编译型语言

qq_51626500的博客 742

cuRobo 入门教程(二)基于CUDA的机器人运动规划加速库

cuRobo是一款基于CUDA加速的机器人算法库,提供正向/逆向运动学、碰撞检测、数值优化等核心功能,支持在NVIDIA Jetson Orin等平台上实现毫秒级运动规划。该库创新性地采用并行轨迹优化技术,结合nvblox工具实现深度摄像头避障功能,并通过多层ESDF结构处理动态障碍物。性能测试显示,在RTX 6000 Ada显卡上可实现99.85%的成功率,平均规划时间仅39毫秒。cuRobo还提供Python API支持神经网络集成,并具备批量环境处理能力,特别适用于工业机器人应用场景。最新版本通过算法

2506_90492529的博客 1303

【python教程入门学习】python零基础入门编译型语言和解释型语言的区别

我们编写的源代码是人类语言,我们自己能够轻松理解;但是对于计算机硬件(CPU),源代码就是天书,根本无法执行,计算机只能识别某些特定的二进制指令,在程序真正运行之前必须将源代码转换成二进制指令。 所谓的二进制指令,也就是机器码,是 CPU 能够识别的硬件层面的“代码”,简陋的硬件(比如古老的单片机)只能使用几十个指令,强大的硬件(PC 和智能手机)能使用成百上千个指令。 然而,究竟在什么时候将源代码转换成二进制指令呢?不同的编程语言有不同的规定: 有的编程语言要求必须提前将所有源代码一次性转换成二进制指令

oooorrr的博客 148

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

解释型语言与编译型语言的区别与特点 | 深入了解两者的优势和应用领域

总体来说,解释型语言更适合快速开发和灵活的应用场景,而编译型语言则更适用于性能要求较高的系统和软件开发。选择何种编程语言,应根据项目的实际需求来决定。理解两者的优缺点,有助于开发者做出最佳的技术决策。

hyiciw_642的博客 400

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

解释型语言和编译型语言的区别_「CSAPP」 - 编译型语言

一、编程语言分类(编译 & 解释)程序设计语言现今主要是如下分类,编译型和解释型。分别的代表有Interpreted(Python、Ruby、PHP、JAVA) and Compiled(C、C++、Objective-C、Swift)。没有最好的语言,只有最适合的语言。运行效率、开发效率根据具体需求选择即可。C、C++、Objective-C、Swift都属于编译型语言,通过编译器直接将...

weixin_39955825的博客 210

python采用解释方式执行_Python解释执行原理

谈到了Python语句的两种执行方式,实际上,这两种运行方式在本质 上是相同的,它们都是由解释器来解释执行我们提供的Python语句。 这里所说的解释执行是相对于编译执行而言的。我们知道,使用诸如 C或C++之类的编译性语言编写的程序可以从源文件转换成计算机使用 的机器语言, 经连接器连接后形成二进制可执行文件。当我们运行二进制可执行程 序的时候,因为已经编译好了,所以加载器软件把二进制程序从硬盘...

weixin_31001069的博客 3391

Python代码是编译执行还是解释执行?_java解释python编译

我们安装Python 时候,会有一个 Python.exe 文件,它就是 Python 解释器,你写的每一行 Python 代码都是由它负责执行,解释器由一个编译器和一个虚拟机构成,编译器负责将源代码转换成字节码文件,而虚拟机负责执行字节码,所以,解释型语言其实也有编译过程,只不过这个编译过程并不是直接生成目标代码,而是中间代码(字节码),然后再通过虚拟机来逐行解释执行字节码。基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。最近我才对这些路线做了一下新的更新,知识体系更全面了。

2401_84558388的博客 577

编程语言怎么选?编译型与解释型语言的区别与应用场景解析

编程语言主要被划分成编译型与解释型这两种类型 ,编译型语言像C++或者Go ,于运行之前要把整个源代码轉化成机器码 ,其执行效率一般来讲是很高的 ,适用于开发操作系统 、游戏引擎这类对性能要求极为严苛的系统。解释型语言诸如Python或者JavaScript ,由解释器逐行去读取并且执行 ,开发调试具备灵活快速的特点 ,被广泛运用在Web开发 、数据分析以及脚本自动化这些领域。近些年,JIT(即时编译)技术,把这条界限弄模糊了,诸如Java和C#这般的语言,于虚拟机里边运行,兼有着两者的优势。

2601_95061701的博客 323

eclipse中加装python解释器_技术分享|Python解释执行原理及过程

谈到了Python语句的两种执行方式,实际上,这两种运行方式在本质上是相同的,它们都是由解释器来解释执行我们提供的Python语句。这里所说的解释执行是相对于编译执行而言的。我们知道,使用诸如C或C++之类的编译性语言编写的程序可以从源文件转换成计算机使用的机器语言,经连接器连接后形成二进制可执行文件。当我们运行二进制可执行程序的时候,因为已经编译好了,所以加载器软件把二进制程序从硬...

weixin_39595164的博客 163

python是解释型_python解释性

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!为了得到一个可以正常返回的 url ,需要修改示例中的 secretid 和 secretkey 为真实的密钥,并使用系统当前时间戳作为 timestamp 。 为了更清楚的解释签名过程,下面以 python 语言为例,将上述的签名过程具体实现。 请求的域名、调用的接口和参数的取值都...

weixin_39959615的博客 1346

python和c语言哪个有用

各位读者,小编来为大家解答,python和c语言哪个有发展前途 python语言和c语言哪个厉害,现在让我们一起来看看吧!大家好,给大家分享一下python和c++学哪个简单,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!

ab524100的博客 1194

JavaScript代码是如何被执行上下文的

基本概念 编译器,解释器 抽象语法树 字节码和机器码 编译器和解释器 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。根据语言的执行流程,可以把语言分成编译型语言和解释型语言。 编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、go等. 解释型语言: 程序不需要编译,程序在运行时才翻译成机器

webxh6的博客 972

2024年最新(Java)编译型解释性语言,java注解原理面试题

蚂蚁面试比较重视基础,所以Java那些基本功一定要扎实。蚂蚁的工作环境还是挺赞的,因为我面的是稳定性保障部门,还有许多单独的小组,什么三年1班,很有青春的感觉。面试官基本水平都比较高,基本都P7以上,除了基础还问了不少架构设计方面的问题,收获还是挺大的。经历这次面试我还通过一些渠道发现了需要大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。本文已被。

2401_84002482的博客 366
上一篇: (leetcode)[数组] titleID169 【求众数】
下一篇: 【周分享01】-【对新技术的学习大致流程方法】
Tacks
博客等级 码龄9年 37粉丝 97原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值