话说编译器、解释器、虚拟机三位大佬,看看流行编程语言(C、Java、Python)所属名门

话说编译器、解释器、虚拟机三位大佬,看看流行编程语言(C、Java、Python)隶属哪家门下的!

前言

话说编译器、解释器、虚拟机是干什么的,最流行的几门语言C、Java、Python、Go跟它们有什么关系,你知道?如果只是跟你说C是的编译型语言, 用的是编译器;……只给个答案, 对于有志于成为业界标兵的你,心中的好奇心定然不肯罢休,接着你又去了网上搜, 结果是五花八门,看多了也可能会眼花,你当时可能瞄到一些答案, 但无奈内容松散,不久你又给忘记了,又去查了…… 今天就让我们将它理一理, 相信对像我们这些非科班的同学还是会有帮助的。说不定哪天年薪百万的office面试问到, 深圳6环还有希望~
开门见山,干货整理送上~
编译器 解释器 混合型
C python Java

1、 什么是编译器?

编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器(Linker) → 可执行程序 (executables)。
编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。源代码一般为高级语言 (High-level language), 如Pascal、C、C++、Java、汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。
编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的翻译过程。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的中间代码的编译器(又叫级联)。即有高到低、低到高、高到高的编译器。

2、什么又是解释器?

解释器(英语:Interpreter),又译为直译器,是一种电脑程序,能够把高级编程语言一行一行直接转译运行。解释器不会一次把整个程序转译出来,只像一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。
执行方式:Python、TCL(表示工具命令语言Tool Command Language)和各种Shell程序一般而言是使用解释器执行的。微软公司的Qbasic语言也是解释方式,它不能生成可执行程序(但Quick Basic和Visual Basic可以);运用广泛的网络编程语言java则同时有解释和编译方式。
解释器运行程序的方法有三种:
1.直接运行高级编程语言 (如 Shell 自带的解释器)
2.转换高级编程语言码到一些有效率的字节码 (Bytecode),并运行这些字节码
3.以解释器包含的编译器对高级语言编译,并指示处理器运行编译后的程序 (例如:JIT)
Perl,Python,MATLAB,与Ruby是属于第二种方法,而UCSD Pascal则是属于第三种方式。(此处心中是否有些疑惑,字节码机制不是java才有的?别急!)

3、 虚拟机又是啥?

虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行
在一个完全隔离环境中的完整计算机系统。
在实体计算机中能够完成的工作在虚拟机中都能够实现。
在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机
硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
最为程序员所知的虚拟机
3.1、 linux虚拟机一种安装在Windows上的虚拟linux操作环境,就被称为linux虚拟机。它实际上只是个文件而已,是虚拟的linux环境,而非真正意义上的操作系统。但是它们的实际效果是一样的。
3.2 、Java虚拟机(JVM)是Java Virtual Machine的缩写,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

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

解释性语言比编译型语言执行慢的原因
在解释器上运行程序比直接运行编译过的代码来得慢,是因为解释器每次都必须去分析并转译它所运行到的程序行,而编译过的程序就只是直接运行。这个在运行时的分析被称为"直译式的成本"。在解释器中,变量的访问也是比较慢的,因为每次要访问变量的时候它都必须找出该变量实际存储的位置,而不像编译过的程序在编译的时候就决定好了变量的位置了。
运行编译型语言是相对于解释型语言存在的,编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码(二进制)。像C/C++等都是编译型语言。
编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等。
而相对的,解释性语言编写的程序不进行预先编译,以文本方式存储程序代码。在发布程序时,看起来省了道编译工序。但是,在运行程序的时候,解释性语言必须先解释再运行。

##两种类型语言的特点概括:
• 编译型语言:先整体编译,再执行; 运行速度快,任意改动需重新编译; 可脱离编译环境运行
• 解释性语言:边解释,边执行; 运行速度慢; 部分改动无需整体重新编译; 不可脱离解释器环境运行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值