解释执行

由解释器根据输入的数据当场执行而不生成任何目标程序。

解释执行程序是高级语言翻译程序的一种,它将源语言(如VASIC)书写的源程序作为输入,解释一句后就提交给计算机执行一句,并不生成目标程序。这种工作方式非常适合于人通过终端设备与计算机会话,如在终端上打一条命令或者语句,

解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。这的确很方便,很适合于一些小型机的计算问题,但解释执行速度很慢,例如源程序中出现循环,

则解释程序也重复地解释并提交这一组语句,这就造成很大浪费。

编译执行

先将源代码编译成目标语言(如:计算机语言)之后通过连接程序生成目标程序进行执行。

这是一类很重要的语言处理程序,它把高级语言(如Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。

编译程序工作时,先分析,后综合,从而得到目标程序。所谓分析,是指词法分析和语法分析;所谓综合是指代码优化,存储分配和代码生成。为了完成这些分析综合任务,编译程序采用对源程序进行多次扫描的方法,

每次扫描集中完成一项或几项任务,也有一项任务分散到几次扫描去完成的。下面举一个四遍扫描的例子:第一遍扫描做词法分析;第二遍扫描做语法分析;第三遍扫描做代码优化和存储分配;第四遍扫描做代码生成。

值得一提的是,大多数的编译程序直接产生机器语言的目标代码,形成可执行的目标文件,但也有的编译程序则先产生汇编语言一级的符号代码文件,然后再调用汇编程序进行翻译加工处理,最后产生可执行的机器语言目标文件。

实际应用中,对于需要经常使用的有大量计算的大型题目,采用招待速度较快的编译型的高级语言较好,虽然编译过程本身较为复杂,但一旦形成目标文件,以后可多次使用。相反,对于小型题目或计算简单不太费机时的题目,

则多选用解释型的会话式高级语言,如BASIC,这样可以大大缩短编程及调试的时间。1、运行效率

编译语言需要编译一次,运行直接执行、不需要翻译,所以编译型语言的程序执行效率高。而解释语言则不同,解释型语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释型basic语言,

专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。 解释执行的语言因为解释器不需要直接同机器码打交道所以实现起来较为简单、

而且便于在不同的平台上面移植,这一点从现在的编程语言解释执行的居多就能看出来,如 Visual Basic、Visual Foxpro、Power Builder、Java...等。编译执行的语言因为要直接同CPU 的指令集打交道,

具有很强的指令依赖性和系统依赖性,但编译后的程序执行效率要比解释语言要高的多,象现在的 Visual C/C++、Delphi 等都是很好的编译语言。2、代码安全性

对于解释语言与编译语言所编制出来的代码安全性上而言,可以说是各有优缺点。曾经在 Windows 下跟踪调式过 VB 程序的朋友一般都知道,程序代码99%的时间里都是在 VBRUNxx 里转来转去,根本看不出一个所以然来。

这是因为你跟踪的是 VB 的解释器,要从解释器中看出代码的目的是什么是相当困难的。但解释语言有一个致命的弱点,那就是解释语言的程序代码都是以伪码的方式存放的,一旦被人找到了伪码与源码之间的对应关系,

就很容易做出一个反编译器出来,你的源程序等于被公开了一样。而编译语言因为直接把用户程序 编译成机器码,再经过优化程序的优化,很难从程序返回到你的源程序的状态, 但对于熟悉汇编语言的解密者来说,也很容易通过跟踪你的代码来确定某些代码的用途。

解释执行的优点

不依赖于平台,因为每次都会根据不同的平台对语句进行解析,像JS就是一种边解释边执行的语言,不管是在windows还是unix都可以直接用

解释执行的缺点,解析是需要时间的,每次都解析在很多情况下都是相当于每次都在做重复功,这样运行的效率比较低。尽可能的减少重复功,这也是现在为什么很流行的缓存的原因,但是解析执行这种方式就没无法做到了

编译执行的优点

所谓的编译执行就是先对编程进行编译,生成一个obj文件,然后再拿来运行,它的优点恰巧就是解释执行的缺点的反义,去除了每次都解析的问题

编译执行的缺点,也是恰巧是解释执行优点的反义。就像C语言,你在windows下编译的程序,拿到unix下运行,当然如果只是简单的scanf,printf是可以的,但是像指针,内存分配,文件操作,多线程等,

在一些相对复杂的系统问题就严重了。 更可怕的是拿源码到unix环境下编译通过了,但是运行却出问题,这种问题最要人命。 所以一般的做法都是这个程序会用在什么系统,就到什么系统环境去开发

java编译执行与解释执行混合_编译执行与解释执行的区别相关推荐

  1. java编译过程中产生哪些文件_编译Java源程序文件后将产生相应的可执行字节码文件,这些文件的扩展名为( )。...

    编译Java源程序文件后将产生相应的可执行字节码文件,这些文件的扩展名为( ). 答:class 恒温下,对同一反应来说,下列叙述正确的是 答:转化率和平衡常数都可以表示化学反应的进行程度 老瞎子在一 ...

  2. python执行原理是什么意思_简述Python程序的执行原理。

    [简答题]什么是遗传密码的摆动性? [简答题]请将下列程序补充完整,并将源代码和运行结果截图提交. 要求:从键盘输入任意实数,请输出其绝对值. 注意:完善源代码文档信息,并为程序添加必要的注释. /* ...

  3. java中bin和src文件夹_编译src中的所有文件?

    这是我得到的: /myjava/compile.cmd /myjava/src/a/HelloWorld.java /myjava/src/b/Inner.java /myjava/src/b/Inn ...

  4. java编译字节码转化程序下载_编译Java Application源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )...

    编译选择导线和电缆截面时必须满足的原则是 程序小白想去图书馆听华图一小时,她应该去图书馆几楼? 文件第t年还款总额=所还本金+利息. 将产件件(内)列车运行中回手柄若柴油机转速不下降,为防止柴油机&q ...

  5. 名词解释atm网络_电信技术名词解释:什么是ATM技术

    一.ATM的产生 自Alexander Graham Bell于1870年发明电话后,为有效地连接日益增多的电话用户,电话交换网应运而生.它经历了人工交换,机电式自动交换系统以及数字程控系统发展过程, ...

  6. 5码默认版块_用字节码解释try、catch、finally、i++、++i的执行结果?

    推荐学习 肝了十天半月,献上纯手绘"Spring/Cloud/Boot/MVC"全家桶脑图 一箭双雕!Alibaba架构师,纯手打Cloud+Boot微服务架构笔记 最新" ...

  7. java 执行多个查询语句_用java在单个语句中执行的多个查询

    交互式爱情 我想知道是否可以使用JDBC执行类似的操作."SELECT FROM * TABLE;INSERT INTO TABLE;"是的是有可能的.据我所知,有两种方法.他们是 ...

  8. java合并后求和_用分支/合并框架执行并行求和

    分支/合并框架的目的是以递归方式将可以并行的任务拆分成更小的任务,然后将每个子任 务的结果合并起来生成整体结果.它是 ExecutorService 接口的一个实现,它把子任务分配给 线程池(称为 F ...

  9. c 语言是一种以解释方式实现的高级语言,高级语言按照计算机执行方式不同可以分为哪两类?它们的执行方式有什么不同,请进行概要说明。...

    满意答案 xp0M0 2019.03.15 采纳率:51%    等级:9 已帮助:513人 计算机高级语言按程序的执行方式可分为:编译型和解释型. 编译型的语言之使用专门的编译器.针对特定平台将某种 ...

最新文章

  1. phpstrom函数注释模板_PHPstorm 函数时间注释的修改
  2. window中搭建jenkins_Windows环境中的jenkins构建时报错
  3. 按键改变元素背景颜色 链式编程的原理 评分案例 each方法的使用
  4. altium如何制作mark点_如何选择一家优质的网站制作公司,看这2点
  5. C++ this指针初步使用,与链式编程
  6. 阿里云安全肖力:云的六大安全基因助力企业构建智能化安全体系
  7. TensorFlow12CIFAR-CNN实现
  8. ArrayList理解(1)初始化
  9. Mblog 开源Java多人博客系统
  10. 【Windows系统】-- 远程桌面时,WIN键被锁定
  11. jquery 逗号分割截取字符串_JS/JQUERY字符串截取分割匹配等处理汇总
  12. 为什么Spring MVC能自动转换json/xml,你研究过它背后的原理吗?
  13. 基于bert的阅读理解脚本(run_squad)原理梳理(从举例的角度说明)
  14. 如何把代码写的更优雅,你需要这一份代码精进书单!
  15. linux搭建MinIO集群
  16. 怎么在中国知网免费下载论文?
  17. SAP MM-MB52 物料库存查询简单操作
  18. 求职简历-机器学习工程师V2
  19. 最实用的计算机系统清理加速,最实用的win7电脑清理垃圾方法分享
  20. lzy的游戏【思维分析】【背包】

热门文章

  1. Linux 下sz/rz(lsz/lrz)的使用
  2. 爬取人民日报_scrapy爬虫爬取新闻入坑第一课
  3. Android手机应用UI设计的10个建议
  4. C语言使用开源库libusb进行USB设备操作
  5. nand_flash_裸板驱动及其时序图详解(转)
  6. 关于 NC6.3 打开单据报 “用户定义属性指定的元数据不存在“ 的解决办法
  7. layui 的checkbox事件
  8. 【CV】用于图像恢复的深度学习方法综述论文(2022年)
  9. WPS文档没保存,怎么找回未保存的文件
  10. 《通信原理》课后题 樊昌信