【软开】编程语言基础知识

解释器与编译器、解释型语言与编译型语言

  1. 解释器(interpret):把高级编程语言逐行翻译并直接执行

    解释器运行程序的方法有三种: 1.直接运行高级编程语言 (如 Shell 自带的解释器) 2.转换高级编程语言码到一些有效率的字节码 (Bytecode),并运行这些字节码(Java/Python/ruby/perl) 3.以解释器包含的编译器对高级语言编译,并指示处理器运行编译后的程序 (例如:JIT)

  2. 编译器(complier):把源语言翻译为目标语言(编译过程通常为:从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的翻译过程)

  3. 虚拟机:通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统

    • linux虚拟机一种安装在Windows上的虚拟linux操作环境,就被称为linux虚拟机。它实际上只是个文件而已,是虚拟的linux环境,而非真正意义上的操作系统。但是它们的实际效果是一样的。

    • Java虚拟机(JVM)是Java Virtual Machine的缩写,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。

      一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行

  4. 解释型语言和编译型语言

    编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等。

    解释型语言:在程序运行中,通过解释器对程序逐行作出解释(运行中逐行翻译),然后直接运行。如Ruby,但python也提供

    • C++编译过程:

      预处理编译器把源文件包含的头文件、预编译语句(宏定义)进行分析替换,生成预编译文件(.i).
      编译编译器进行语法分析、语义分析,语法检查无误后把代码翻译为汇编语言,将预编译文件(.i)转换为汇编代码,生成汇编文件(.s).
      汇编把编译阶段生成的汇编文件转化成机器代码,生成目标文件(.o).
      链接链接器将多个目标文件以期运行所需的库进行连接,生成可执行文件(.exe).
    • Java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后在Java虚拟机上用解释方式执行字节码,Java是一种先编译后解释的语言

    • Python是一个解释型的语言,但是为了效率上的考虑,Python也提供了编译的方法。编译之后是bytecode的形式。Python也提供了和Java类似的VM来执行这样的bytecode。

      技术分享|Python解释执行原理及过程 - 知乎 (zhihu.com)

  5. 解释性语言比编译型语言执行慢的原因

    解释器每次都必须去分析并转译它所运行到的程序行,而编译过的程序就只是直接运行

    在解释器中,变量的访问也是比较慢的,因为每次要访问变量的时候它都必须找出该变量实际存储的位置,而不像编译过的程序在编译的时候就决定好了变量的位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值