A、解释程序
所谓解释程序是高级语言翻译程序的一种,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。
就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。这种工作方式非常适合于人通过终端设备与计算机会话,如在终端上打一条
命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。
这的确是很方便的,很适合于一些小型机的计算问题。但解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。
B、编译程序
这是一类很重要的语言处理程序,它把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。
编译程序工作时,先分析,后综合,从而得到目标程序。所谓分析,是指词法分析和语法分析;所谓综合是指代码优化,存储分配和代码生成。为了完成这些分析综合任务,
编译程序采用对源程序进行多次扫描的办法,每次扫描集中完成一项或几项任务,也有一项任务分散到几次扫描去完成的。下面举一个四遍扫描的例子:第一遍扫描做词法分析;
第二遍扫描做语法分析;第三遍扫描做代码优化和存储分配;第四遍扫描做代码生成。
值得一提的是,大多数的编译程序直接产生机器语言的目标代码,形成可执行的目标文件,但也有的编译程序则先产生汇编语言一级的符号代码文件,
然后再调用汇编程序进行翻译加工处理,最后产生可执行的机器语言目标文件。
在实际应用中,对于需要经常使用的有大量计算的大型题目,采用招待速度较快的编译型的高级语言较好,虽然编译过程本身较为复杂,但一旦形成目标文件,
以后可多次使用。相反,对于小型题目或计算简单不太费机时的题目,则多选用解释型的会话式高级语言,如BASIC,这样可以大大缩短编程及调试的时间
- 浏览: 485916 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (575)
- eclipse (22)
- axis1.4 (3)
- oracle (42)
- java (32)
- 数据结构 (0)
- struts1.x (16)
- struts2.3.8 (14)
- hibernate2.x (3)
- hibernate3.5 (15)
- WinRAR4.20 (2)
- window7 (1)
- problem (1)
- 网址 (17)
- itext (5)
- JavaScript高级程序设计 (22)
- dom4j (1)
- jsp (5)
- jstl (3)
- PL/SQL developer工具 (1)
- derby (1)
- log4j (6)
- HotSpot VM (2)
- poi-2.0-RC2 (2)
- Ubuntu (4)
- weblogic (1)
- Paros安全测试 (2)
- DWR (2)
- jspsmart (2)
- jquery (8)
- css (1)
- jquery ui (2)
- Maven (12)
- Bootstrap (3)
- Ant1.7 (25)
- 保险 (8)
- XFire (3)
- CXF (4)
- Axis2 (5)
- 随笔 (4)
- spring mvc (2)
- dorado (1)
- UML (2)
- spring3.2.2 (9)
- 设计模式 (0)
- JXL (4)
- breakpoints (4)
- Chosen (1)
- BusinessObjects Enterprise XI Release 2 (9)
- FusionCharts (5)
- kettle (2)
- SQL Server 2008 (1)
- struts2.3.8随笔 (20)
- hibernate3.3.2随笔 (6)
- spring2.5.6随笔 (3)
- SVN (4)
- svnkit (1)
- FCKeditor (1)
- ajax (0)
- 日历控件 (1)
- socket编程 (2)
- java并发编程 (10)
- Excel (3)
- Crystal Reports XI Release 2 (1)
- jasperreport(报表工具) (1)
- 微信支付 (1)
- 支付宝支付 (1)
- GISS (1)
- PDF (2)
- hadoop (10)
- json (2)
- 文件上传下载 (1)
- DCSWeb (1)
- acegi security (16)
- oracle编程艺术 (1)
- RAID (1)
- CentOS (19)
- xmanager (1)
- HBase (1)
- Oracle性能优化技术内幕 (0)
- ExtJs (1)
- Oracle SQL高级编程 (0)
- extjs4 (4)
- 微信公众平台 (0)
- mysql (5)
- axure (5)
- mybatis (1)
- MagicDraw UML (0)
- activeMQ (0)
- JMS (1)
- slf4j (1)
- DbUnit (1)
- redis (2)
- SecureCRT (1)
- winSCP (1)
- vmware workstation (1)
- 面试 (5)
- CLodop(Web打印控件) (3)
- IBM MQ (1)
- Spring mvc风格restful接口开发 (1)
- Operating System (2)
- 测试 (0)
- java虚拟机 (17)
- 编译openJDK (1)
- java并发框架-Disruptor3.2 (4)
- Java Magic (3)
- 架构 (1)
- nginx (4)
- 微信开发 (0)
- 大型分布式网站架构设计与实现 (3)
- 阿里RocketMQ (3)
- DUBBO (1)
- zookeeper (3)
- RabbitMQ (0)
- Memcached (0)
- Ehcahe (0)
- AngularJs (0)
- SpringBoot (6)
- 摄影 (1)
- 中通 (9)
- TbSchedule (1)
- 养生 (1)
- Git (1)
- druid (1)
- kafka (2)
- Elasticsearch (2)
- kibana (2)
- 网关 (0)
- HttpClient (0)
- Guava (0)
- 读书 (0)
- 实时应用监控平台CAT (1)
- Python3 (1)
- java8 (1)
- 压测工具之jmeter (0)
- JProfiler (0)
- SSO (0)
- UNIX网络编程 (3)
- DDD (0)
- 下载 (0)
- 国泰 (2)
最新评论
-
wangyudong:
非常详细的代码实例,试着写出了自己的API用Wisdom RE ...
Spring MVC风格的restful接口开发
发表评论
-
计算1个字节表示的数字范围
2018-01-06 23:14 2590在计算1个字节表示的数字范围之前,我们需要先了解一下数字在计 ... -
解决Debug JDK source 无法查看局部变量的问题方案
2017-03-15 14:05 440一.问题阐述 首先我们要明白JDK source为什么在d ... -
[Java并发包学习七]解密ThreadLocal
2017-03-14 17:28 529相信读者在网上也看 ... -
信号量Semaphore
2017-03-04 14:13 386java中信号量Semaphore的作用是控制资源(比如 连 ... -
实现发邮件功能
2016-01-29 10:38 6201.发邮件功能 -
java中调用package
2015-09-14 18:00 450具体代码如下: public String ... -
java定时任务
2015-07-22 21:04 356java定时任务 -
前置机 SocketPatch
2015-04-28 23:09 585http://blog.csdn.net/java2000 ... -
java 线程
2015-04-25 20:28 402java 线程 -
java 分布式
2015-04-25 20:26 500java 分布式 -
端口号0
2015-04-21 22:53 672端口号0 -
ServerSocket构造函数中backlog参数的含义
2015-04-21 22:52 717ServerSocket构造函数中backlog参数的含义 -
java.util.Properties
2015-04-21 14:27 375Properties -
Date 处理
2015-04-14 19:31 3781.获取当前月1日 Date date = new Dat ... -
StringEscapeUtils工具的使用
2015-03-20 18:28 649StringEscapeUtils.escapeSql ... -
Calendar
2015-03-18 19:15 412Calendar中的常量单独使用并无意义,需要搭配方法使用 ... -
java 6.7.8在线帮助文档
2015-03-14 20:37 647我们自己下载的API不一定很全,下面是java官网提供的A ... -
java Util
2015-03-13 23:49 700java Util -
DateUtils
2015-03-09 23:11 457DateUtils -
DatabaseUtils
2015-03-09 23:10 535DatabaseUtils
相关推荐
解释执行和编译执行的主要区别在于: 1. 执行效率:编译执行通常比解释执行效率更高,因为编译器生成了可直接由机器运行的目标程序,而解释执行则需要每次都对代码进行实时翻译。 2. 调试难度:解释执行更容易进行...
标题中的“解释语言与编译语言的区别”是一个重要的计算机科学概念,主要涉及到程序设计语言的两种执行模式。这里,我们将详细探讨这两种语言类型的核心特点、工作原理以及它们在实际应用中的差异。 首先,解释语言...
Java源代码先被编译成字节码,这是一种平台无关的中间语言,然后由Java虚拟机(JVM)解释执行。这种方式使得Java具有跨平台的能力,实现了“写一次,到处运行”的理念。Java平台包括Java虚拟机和Java应用程序接口...
Java编译和解释执行对比及原理解析 Java编译和解释执行对比及原理解析主要介绍了Java编译和解释执行对比及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以...
### JAVA文件编译执行与虚拟机(JVM)介绍 #### 关键知识点概述: 1. **JAVA文件的编译与执行**:JAVA程序首先通过编译器转换为中间代码(字节码),然后由JVM解释执行。 2. **JVM的角色与功能**:JVM作为JAVA程序...
Java内存动态编译执行是Java程序运行时的一个关键特性,它涉及到JVM(Java虚拟机)的即时编译器(JIT,Just-In-Time Compiler)和元空间(Metaspace)等核心概念。在Java的世界里,代码首先会被解释器逐行解释执行,...
解释程序与编译程序类似,但它们不生成目标代码,而是直接解释执行源代码,每读取一行就执行一行,没有预先生成的机器码。自编译是指使用某高级语言编写自己的编译器,而交叉编译则是在一种机器上编译代码,使其能在...
解释器是编译原理的一个重要应用,它不同于传统的编译器,不需要先将源代码编译成目标代码,而是直接执行源代码。 在这个“编译原理课程解释器构造Java源码”中,我们可以推测这是一个基于Java编程语言实现的解释器...
解释执行的过程较慢,因为它必须边解释边执行,这增加了运行时的开销。但是解释器的优势在于良好的动态特性和可移植性,因为可以在不同的系统上不需改动程序代码即可运行。 低级语言和高级语言在编译和解释中的表现...
(1)解析:.class文件经过JVM内嵌的解析器解析执行 (2)编译:存在JIT编译器(Just In Time Compile 即时编译器)把经常运行的代码
这种执行方式结合了解释执行的灵活性和编译执行的高效性。 文章中所提到的HotSpot JVM是Oracle公司JDK和JRE中包含的Java虚拟机实现,特别在Intel x86 32位CPU架构下得到广泛应用。HotSpot JVM通过这种方式实现了...
实验标题是“编译原理实验PLMy语言的编译和解释程序及实验报告”,这表明我们将通过实现一个简单的PLMy语言的编译器和解释器来深入理解这一主题。 编译器是将源代码(高级语言)转换为目标代码(机器语言)的程序,...
**编译原理课程设计——CMM语言解释器** 在计算机科学领域,编译原理是研究如何将高级程序设计语言转换为机器可理解的低级语言的一门学科。本项目是基于CMM语言的一个解释器,它由Java语言实现,旨在帮助学生理解和...
vb.net执行代码段 自解释自编译
C++ 程序在编译后生成 `.exe` 文件,而 Java 程序通过 Java 编译器(Javac)生成 `.class` 字节码文件,然后由Java虚拟机(JVM)解释执行。 **源码与工具**:源码是程序员用高级语言编写的程序文本,它是可读的、...
翻译程序将源程序翻译成目标程序,而解释程序则将源程序解释执行。两者的主要区别在于翻译程序在执行过程中产生目标程序,而解释程序不产生目标程序。解释程序的优点是交互方便,节省空间,但缺点是效率低。 编译...
涉及了编译原理的各个过程:词法分析,LL1语法分析,语义分析,中间代码生成,中间代码优化(常表达式优化,公共表达式优化,循环不变式优化),中间代码生成目标代码,目标代码的解释执行,详细地阐述了一个编译器...
### 程序编译与解释的关键知识点 #### 一、程序翻译的必要性 - **背景介绍**:计算机只能直接识别和执行机器语言(即由0和1组成的...- Java语言通过编译成字节码再解释执行的方式,实现了良好的跨平台兼容性和高效性。