编译&解释

编译程序 
  把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。 
  编译程序工作时,先分析,后综合,从而得到目标程序。所谓分析,是指词法分析和语法分析;所谓综合是指代码优化,存储分配和代码生成。为了完成分析综合任务,编译程序采用对源程序进行多次扫描的办法,每次扫描集中完成一项或几项任务,也有一项任务分散到几次扫描去完成的。下面举一个四遍扫描的例子:第一遍扫描做词法分析;第二遍扫描做语法分析;第三遍扫描做代码优化和存储分配;第四遍扫描做代码生成。 
  值得一提的是,大多数的编译程序直接产生机器语言的目标代码,形成可执行的目标文件。但,有的编译程序则先产生汇编语言一级的符号代码文件,然后再调用汇编程序进行翻译加工处理,最后产生可执行的机器语言目标文件。

解释程序 
  所谓解释程序是高级语言翻译程序的一种,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。这种工作方式非常适合于人通过终端设备与计算机会话,如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。这的确是很方便的,很适合于一些小型机的计算问题。但解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。

Summary

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

  相反,对于小型题目或计算简单不太费机时的题目,则多选用解释型的会话式高级语言,如BASIC,这样可以大大缩短编程及调试的时间。

时间: 2024-08-09 22:00:54

编译&解释的相关文章

Java 编译解释

JDK提供的主要开发工具有:编译程序,解释执行程序.调试程序.Applet执行程序.文档管理程序.包管理程序等. 1.编译程序:javac.exe,对应的javac命令将Java源程序转换为字节码. javac [-选项] file.java file.java:要编译的源文件 [-选项]:可选项,javac中编译选项可以通过在命令提示符下输入javac或者javac -help查看.无任何可选项的时候,编译器就会把生成.class文件和Java源文件.java放在同一个文件夹中.2.解释执行程

Python、编译解释、动态库静态库、编译过程、头文件了解一下

学习Python这门语言首先要了解 什么是编译与解释,什么是连接,什么是动态库与静态库, 什么是编译: 编译就是先把高级语言设计的程序翻译成二进制的机器语言,然后CPU直接执行机器码就可以了.一把翻译再执行 编译型语言在于速度快. 什么是解释: 解释就是在程序运行时,才把高级程序语言一条一条地翻译成二进制的机器语言.边运行边翻译成二进制机器语言.所以速度没有编译来得快.边执行边翻译 解释型语言的优点在于可以跨平台. Python语言的优点: 可移植性.可扩展性.可嵌入性 简单.优雅.明确 开发效

JavaScript预编译

今天用了大量时间复习了作用域,预编译等等知识 看了很多博文,翻开了以前看过的书 发现当初觉得自己学的很明白,其实还是存在一些思维误区 今晚就整理了一下凌乱的思路 先整理一下预编译的知识吧,日后有时间再把作用域详细讲解一下 大家要明白,这个预编译和编译是不一样的 JavaScript是解释型语言, 既然是解释型语言,就是编译一行,执行一行 传统的编译会经历很多步骤,分词.解析.代码生成什么的 日后有时间再给大家科普 下面就给大家分享一下我所理解的JS预编译 JavaScript运行三部曲 页面加载

3、使用记事本编写java程序并编译

总体步骤: 第一步:新建记事本,文件改名为HelloWorld.java,源文件后缀名为.java 第二步:编译,使用CMD编译javac命令,编译过后生成.class文件,即字节码文件(即输入:javac HelloWorld.java) 第三步:使用解释器,使用CMD编译java命令(即输入:java HelloWorld) /***********************************************************************************

java是编译型还是解释型语言/

有人说Java是编译型的.因为所有的Java代码都是要编译的,.java不经过编译就无法执行. 也有人说Java是解释型的.因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释型的.对于C和C++,它们经过一次编译之后,可以由操作系统直接执行,所以它们是编译型语言.而Java不一样,它首先由编译器编译成.class(字节码)文件,然后在通过JVM从.class文件中读一行解释执行一行,所以它是解释型的语言.也正是由于java对于多种不同的操作系统有不同的JVM,所以实现了真

编译安装LAMP之二

在上一篇中,我们已经安装httpd,以及mysql服务.那么接下来,我们将安装php. 我们知道,php工作的模式有三种:cgi, module, fastcgi.通常,apache与php是以模块的方式结合的,鉴于fastcgi的工作模式会有更好的效率,待会儿也会讲解. 一.以模块化的方式编译php, php作为apache的模块被加载 如果我们先前没有安装: libxml2 libxml2-devel bzip2-devel libmcrypt libmcrypt-devel 需要安装这些包

typeof、摇树优化、js预编译

typeof:  typeof用以获取一个变量或者表达式的类型,一元运算符 null:空.无.表示不存在,当为对象的属性赋值为null,表示删除该属性 undefined:未定义.当声明变量却没有赋值时会显示该值.可以为变量赋值为undefined number:数值.最原始的数据类型,表达式计算的载体 string:字符串.最抽象的数据类型,信息传播的载体 boolean:布尔值.最机械的数据类型,逻辑运算的载体 object:对象.面向对象的基础 注意:没有数组,因为type数组时结果是ob

JavaScript预编译原理分析

今天用了大量时间复习了作用域.预编译等等知识 看了非常多博文,翻了翻曾经看过的书(好像好多书都没有讲预编译) 发现当初认为自己学的非常明确,事实上还是存在一些思维误区 (非常多博文具有误导性) 今晚就整理了一下凌乱的思路 先整理一下预编译的知识吧,日后有时间再把作用域具体解说一下 大家要明确.这个预编译和传统的编译是不一样的(能够理解js预编译为特殊的编译过程) JavaScript是解释型语言, 既然是解释型语言,就是编译一行.运行一行 传统的编译会经历非常多步骤,分词.解析.代码生成什么的

js的预编译

js执行的三步:语法检查,预编译,解释执行. js预编译前:window对象==全局 1.任何位置上的变量未声明直接赋值是全局变量,发到window里 2.在函数外声明的变量也是全局,放到window里. js预编译时:对函数来说 1.生成函数的AO对象(作用域) 2.把函数的形参和变量声明放到AO对象中,作为属性 3.形参和实参相对应(实参的值传给形参) 4.把函数声明的函数名放到AO对象里,作为属性 js预编译结束后,进行解释执行,执行时,变量和函数的声明不执行 原文地址:https://w