一、计算机编程语言

主要分为3类:

高级语言(抽象层次更高的便于记忆和表示的英文代码) 
            |
汇编语言(抽象层次较高的对应机器硬件的cpu指令集,英文缩的助记    符号代码)       
            |
机器语言(抽像层次最低的由0、1序列所表示的机器码)

计算机底层只能识别0,1,所以高级语言所编写的代码,都要以某种方式被转换成机器码。这种将代码转换为机器码的方式可为为编译型和解释型。

二、概念

编译型语言

在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率 较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的。编译程序将源程序翻译成目标程序后保存在另一个文件中,该目标程序可脱离编译程序直接在计算机上多次运行。大多数软件产品都是以目标程序形式发行给用户的,不仅便于直接运行,同时又使他人难于盗用其中的技术C、C++、Fortran、Visual Foxpro、Pascal、Delphi、Ada都是编译实现的。

解释型语言

解释型语言的实现中,翻译器并不产生目标机器代码,而是产生易于执行的中间代码,这种中间代码与机器代码是不同的,中间代码的解释是由软件支持的,不能直接使用硬件,软件解释器通常会导致执行效率较低。用解释型语言编写的程序是由另一个可以理解中间代码的解释程序执行的。与编译程序不同的是,解释程序的任务是逐一将源程序的语句解释成可执行的机器指令,不需要将源程序翻译成目标代码后再执行。解释程序的优点是当语句出现语法错误时,可以立即引起程序员注意,而程序员在程序开发期间就能进行校正。对于解释型Basic语言,需要一个专门的解释器解释执行 Basic程序,每条语言只有在执行才被翻译。这种解释型语言每执行一次就翻译一次,因而效率低下。一般地,动态语言都是解释型的,如python、Tcl、Perl、Ruby、VBScript、 JavaScript等。

混合型

Java很特殊,Java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后在Java虚拟机上用解释方式执行字节码。Python 的也采用了类似Java的编译模式,先将Python程序编译成Python字节码,然后由一个专门的Python字节码解释器负责解释执行字节码。(Java虚拟机对字节码的执行相当于模拟一个cpu,而ruby1.8–在虚拟机还未出现前–是通过解释成语法树执行。)

编译型:用中英文词典(翻译器)将一本英文书一次性翻译(编译)成一本中文书。以后查看直接就是中文了。可想而知,以后读书(运行)会非常非常方便。
而解释型:用中英文词典(翻译器)将一本英文书读一段翻译一段(解释)中文。以后查看时还是需要重新翻译。这样效率会低一些,必须依赖解释器,但是跨平台性好。

三、区别

编译型语言

1、 编译型语言最大的优势之一就是其执行速度快。用C/C++编写的程序运行速度要比用Java编写的相同程序快30%-70%。

2、编译型程序比解释型程序消耗的内存更少

3、不利的一面——编译器比解释器要难写得多。

4、编译器在调试程序时提供不了多少帮助——有多少次在你的C语言代码中遇到一个“空指针异常”时,需要花费好几个小时来明确错误到底在代码中的什么位置。

5、可执行的编译型代码要比相同的解释型代码大许多。例如,C/C++的.exe文件要比同样功能的Java的.class文件大很多。

6、编译型程序是面向特定平台的因而是平台依赖的。

7、编译型程序不支持代码中实现安全性——例如,一个编译型的程序可以访问内存的任何区域,并且可以对你的PC做它想做的任何事情(大部分病毒是使用编译型语言编写的)

8、由于松散的安全性和平台依赖性,编译型语言不太适合开发因特网或者基于Web的应用。

解释型语言

1、解释型语言提供了极佳的调试支持。一名Java程序员只需要几分钟就可以定位并修复一个“空指针异常”,因为Java运行环境不仅指明了异常的性质,而且给出了异常发生位置具体的行号和函数调用顺序(著名的堆栈跟踪信息)。这样的便利是编译型语言所无法提供的。

2、另一个优势是解释器比编译器容易实现

3、解释型语言最大的优势之一是其平台独立性

4、解释型语言也可以保证高度的安全性——这是互联网应用迫切需要的

5、中间语言代码的大小比编译型可执行代码小很多

6、平台独立性,以及严密的安全性是使解释型语言成为适合互联网和Web应用的理想语言的2个最重要的因素。

7、解释型语言存在一些严重的缺点。解释型应用占用更多的内存和CPU资源。这是由于,为了运行解释型语言编写的程序,相关的解释器必须首先运行。解释器是复杂的,智能的,大量消耗资源的程序并且它们会占用很多CPU周期和内存。

8、由于解释型应用的decode-fetch-execute(解码-抓取-执行)的周期,它们比编译型程序慢很多。

9、解释器也会做很多代码优化,运行时安全性检查;这些额外的步骤占用了更多的资源并进一步降低了应用的运行速度。

计算机编程语言:解释型语言与编译型语言的理解相关推荐

  1. 计算机编程语言的分类,解释型语言、编译型语言、脚本语言的区别

    原文传送门:http://blog.csdn.net/liuchuo/article/details/52014764 计算机编程语言的分类: 机器语言(二进制代码) 汇编语言(面向机器的程序设计语言 ...

  2. 计算机编程语言的分类,解释型语言、编译型语言、脚本语言的关系

    计算机编程语言的分类: 机器语言(二进制代码) 汇编语言(面向机器的程序设计语言) 高级语言(按转换方式可分为两类:1.编译型语言;  2.解释型语言   ||  按照客观系统的描述可分为两类:1.面 ...

  3. JavaScript基础第01天笔记——编程语言、计算机基础、JavaScript注释、JavaScript输入输出语句、变量的概念、变量的使用、数据类型、解释型语言和编译型语言、关键字和保留字

    1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的指令集合,而程序全部都是用我们所掌 ...

  4. JavaScript基础(一)(编程语言,计算机基础,初始JavaScript,JavaScript注释,输入输出语句,变量的概念,变量的使用,数据类型,解释型语言和编译型语言)

    JavaScript基础第01天 1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的 ...

  5. 计算机编程语言python-PYTHON之计算机语言基础知识 —— 编程语言的分类

    一.计算机语言分类 低级语言.高级语言.专用语言.脚本语言 1.低级语言:机器语言.汇编语言和符号语言.机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令(机器码)的合集,他是计算机的设 ...

  6. foreach和while的区别(编译之后)_一文了解解释型语言和编译型语言之区别

    引言 ​ 我们学了这么久的编程,做了那么多的项目,但总有那么一些概念即模糊又清晰,比如我们今天要细谈的解释型语言和编译型语言. 何谓解释?何谓编译? 这一切要从我们学习C语言的时候开始. 所有学过C语 ...

  7. JAVA是解释型语言还是编译型语言

    JAVA是解释型语言还是编译型语言 Under J2SE | 三月 10th, 2010 1 comment JAVA是解释型语言还是编译型语言 概念: 编译型语言:把做好的源程序全部编译成二进制代码 ...

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

    Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是Python是一门解释型语言,我就这样一直相信下去,直到发现.pyc文件的存在,如果真是解释型语言,那么生成的 ...

  9. python语言采用编译执行方式_Python程序的执行过程 解释型语言和编译型语言

    我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在.如果是解释型语言,那么生成的*.pyc文件是什么呢?c应 ...

最新文章

  1. 操作系统学习:Linux0.12初始化详细流程-打开文件与加载可执行程序
  2. 安卓okhttp上传jason和图片_微信图片总是「已过期或被清理」?简单 3 招,可摆脱烦恼...
  3. php short_open_tag asp_tags
  4. ssm项目jsp加载不出来图片_16. SSM 搭建
  5. python读取 .mat 文件(matlab文件)
  6. iscroll5制作上下拉刷新 tab出现的问题
  7. 30亿参数,华为云发布全球最大预训练模型,开启工业化AI开发新模式
  8. python getostime_python转换在os.utime中使用的datetime
  9. c语言自由存储区,C/C++ 内存分区以及自由存储区和堆的区别
  10. 蓝桥2014c++真题:神奇算式
  11. linux tomcat配置https
  12. python 列表定义 初始化为0_Python为列表添加一个foreach方法
  13. 神奇技术:科学家借助AI从受害人脑中还原犯罪者样貌
  14. Roslyn 如何获得一个类的引用
  15. 120G+训练好的word2vec模型(中文词向量)
  16. android录音声波动画,Android开发:仿微信 录音声波
  17. 2019-08-12 纪中NOIP模拟赛B组
  18. 比特大陆发布首款7nm芯片矿机,力压抢了7nm首发的嘉楠耘智?
  19. bat文件调用CMD命令快速显示ip
  20. 基于ART-PI SPI驱动W25Q128

热门文章

  1. 百度站长论坛问答750条经典有价值的经验
  2. 广州琶洲人工智能与数字经济试验区亮相进博会
  3. 计算机网络技术 校园网规划,大学校园网的IP地址规划
  4. 卸载和重装docker的方式
  5. 扒一扒传智播客深藏在背后的内幕
  6. java断言--04--TestNG(Asserts)
  7. 统计相关的分析(表格)
  8. 09组织安全:为 MFA 的采用实施基于风险降低的激励模型
  9. 常见ADSL猫的默认管理员用户名及其密码
  10. 搭建DHCP服务实现动态分配IP地址-NTP网络同步时间