精华内容
下载资源
问答
  • 解释型语言与编译型语言的异同

    解释型语言和编译型语言,这两个概念在我本科结束后发现如果让我自己清晰的解释,好像我并不能,最近看到一篇比较好的介绍,如下:

    1.何谓解释?何谓编译?

    这一切要从学习C语言的时候开始。C语言在执行前一定要先编译一下,如果发现语法错误,就会发出编译不通过的提示。C语言就是一种编译型的编程语言,那什么又是解释型的语言呢?这又要从我们学习MATLAB说起,当我们写完MATLAB代码之后是不是直接点执行就等待结果了,如果有那一句代码发生错误的话,程序就执行到那一句才会停下来报错,所以MATLAB是一种一边执行一边解释的语言,解释是一句一句的翻译。从而不需要预先进行编译,所以称之为解释型语言,当然python也是一种解释性语言。
    在这里插入图片描述

    2.为什么会有这两种类型的编程语言?各自的优缺点是什么?

    我想最主要的因素就是:编译性语言不如解释性语言跨平台性好,也就是说不同平台的兼容性有区别,所以才有了两种语言。
    编译性语言例如c语言:用c语言开发了程序后,需要通过编译器把程序编译成机器语言(即计算机识别的二进制文件,因为不同的操作系统计算机识别的二进制文件是不同的),所以c语言程序进行移植后,要重新编译。(如windows编译成ext文件,linux编译成erp文件)。

    解释性语言例如java语言,java程序首先通过编译器编译成class文件,如果在windows平台上运行,则通过windows平台上的java虚拟机(VM)进行解释。如果运行在linux平台上,则通过linux平台上的java虚拟机进行解释执行。所以说能跨平台,前提是平台上必须要有相匹配的java虚拟机。如果没有java虚拟机,则不能进行跨平台。

    这个原因说明白了之后,我们来看看两种语言有哪些代表呢?编译型语言代表有:C语言和C++。解释型语言代表有:js,php,MATLAB,java和javascript。
    如果对于java语言是解释型语言的观点难以认同,可参考这篇博主的文章,我觉得讲的很好。
    Java到底是编译型语言还是解释型语言?

    2.1 编译型与解释型的共同点

    他们都要弄成二进制代码才能执行,两类编程语言的源代码都是英文,但是我们的计算机并不认识英文,所以都要转化成二进制才能执行。

    2.2 编译型与解释型的不同点:

    区别就在于“转化的方式”不一样
    1.从运行效果上来看:编译型语言要等全部写完后通过编译器去生成一个类似*.exe的二进制文件,然后双击这个文件才可以看到效果。而解释型语言并没生成*.exe文件,而是直接生成效果,这就是我之前提到的的那个C语言和MATLAB的例子。

    2.运行的时候是否需要编译器(或解释器)的伴随:编译型语言运行的是最终生成的二进制代码,所以不需要编译器伴随。而解释型语言则一边解释一边运行,所以运行的时候很可能还有部分代码没有解释好,所以需要解释器伴随。有人会问编译器(解释器)在哪里呢?举个例子,网页的解释器就在浏览器中,所以要看HTML的效果必须用浏览器或者有编译工具在内的其他工具打开,比如:模拟浏览器的工具。

    3.执行的速度对比:编译型语言运行的已经是完全的二进制内容,运行起来十分干净利落,所以速度很快。而解释型语言运行的不一定是完全的二进制内容,因为它是一边解释成二进制一边运行。所以当它执行看出效果的时,程序后半部分还不一定解释成二进制,速度没有前者快,但是CPU的运行速度如果很快,可能看不出来,只是偶尔会看到“有点卡”的效果。原因就是它一边解释一边运行,你看到效果的后面可能还有一少半的代码没解释成二进制,所以看到的效果会是残缺的。这就是为什么有时候查看网页,先是出现一堆没有布局的文字,然后才出现那种布局好的效果。

    4.可移植性对比:编译型语言是运行二进制内容,所以一旦CPU指令系统改变,那么之前的二进制文件可能运行不了。比如,如果到其他硬件平台上运行,就可能出现错误,就需要根据该平台重新编译出新的二进制文件。所以可移植性、平台兼容性比价差。而解释型语言则没有弄成什么二进制内容,而是在需要的时候才开始编译、运行。所以它自然具有可移植性,即在任何平台都可以马上运行起来。要注意的是它的解释工具如:浏览器,本身就是编译型语言解释出来的二进制代码,所以浏览器本身不具备可移植性,是需要针对不同的平台弄出对应的浏览器最终二进制文件的,这里可别混淆。

    5.升级上对比:编译型语言弄出来的二进制文件若要升级,自然要重新下载一个新的二进制文件。所以重新下载、安装、覆盖是最大的特点。比如微信的升级,就是要重新下载、重新安装、重新覆盖,等个半天而且很耗费CPU资源,体验性就不大好。而解释型的语言只要重新写好源代码即可,用户想要最新的效果,只要刷新一下即可,所以体验性好。比如:某网站平台升级了,用户只要重新刷新一下。

    6.应用领域,编译型语言应用领域通常是那些安装软件,例如桌面上的安装软件。解释型的语言的应用领域通常是互联网、网站等那种刷新了一下就可以看到最新效果的领域。结论两类编程语言都各有优势和劣势,无绝对的正确和错误之分,大家仁者见仁智者见智。

    参考链接:https://zhuanlan.zhihu.com/p/111763425

    展开全文
  •  对于C和C++,它们经过一次编译之后,可以由操作系统直接执行,所以它们是编译型语言。而Java不一样,它首先由编译器编译成.class(字节码)文件,然后在通过JVM从.class文件中读一行解释执行一行,所以它是解释型...
  • 一 定义解释型语言源代码不是直接翻译成机器语言,而是先...】①程序执行效率:低(一般情况)②跨平台性:高③解释器依赖度:高④形如:Java、JavaScript、Python、VBScript、MATLAB、Ruby等编译型语言首先将源代...

    一 定义

    1173617-20190312132710816-545045145.png

    解释型语言

    源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。

    多次解释,多次执行。【每执行一次,便解释一次。】

    ①程序执行效率:低(一般情况)

    ②跨平台性:高

    ③解释器依赖度:高

    ④形如:Java、JavaScript、Python、VBScript、MATLAB、Ruby等

    1173617-20190312134451406-561770518.png

    编译型语言

    首先将源代码编译生成机器语言,再由机器运行机器码(二进制)。程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。

    一次编译,多次执行。

    ①程序执行效率:高

    ②跨平台性:差

    ③编译器依赖度:高

    ④形如:C、C++、Delphi、Pascal等

    1173617-20190312134540573-778976919.png

    机器语言

    又称"原生码”,一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。

    一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。指令的基本格式如,操作码字段和地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。

    ①优点:直接执行,速度快,资源占用少

    ②缺点:可读性、可移植性差,编程繁杂

    ③形如:机器码 0000 代表 加载(LOAD)

    机器码 0001 代表 存储(STORE)

    机器码 000000000000 代表地址为 0 的存储器

    机器码 000000010000 代表地址为 16 的存储器

    机器码 000000000001 代表地址为 1 的存储器

    三 Java语言

    遗留问题

    1.JDK/JRE

    2.JVM

    3.Java内存(回收/管理)机制

    1173617-20190312162012885-1990441918.png

    Java编译>解释>执行[4]

    1173617-20190312161810004-144419480.png

    Java虚拟机与字节码和源码之间的关系[4]

    1173617-20200208235008264-1084731965.png

    1173617-20190312155950648-1829891916.png

    Java工作原理图

    1173617-20190312155127762-2145492999.png

    Java虚拟机机理

    四 JavaScript语言

    test

    五 Python语言

    test

    六 C/C++语言

    test

    七 参考文献

    展开全文
  • 解释型语言和编译型语言

    万次阅读 2019-06-22 16:04:52
    解释型语言和编译型语言 编程语言从执行原理上可分为编译型语言和解释型语言。 比如常见的C语言、C++等都是编译型语言 Java、Python等都是解释型语言 计算机不能直接理解机器语言以外的语言,因此需要将我们写的代码...

    解释型语言和编译型语言

    编程语言从执行原理上可分为编译型语言解释型语言

    比如常见的C语言、C++等都是编译型语言

    Java、Python等都是解释型语言

    计算机不能直接理解机器语言以外的语言,因此需要将我们写的代码编译成机器语言,然后再交给计算机去执行。

    具有把其他语言翻译为机器语言的功能的,称为编译器。

    编译器翻译语言的方式有两种:

    1. 编译

    2. 解释

    二者区别在于翻译时间点不同。

    那么到底什么是解释型语言和编译型语言呢?

    1、编译型语言

    • 编译型语言是指程序在执行之前需要一个专门的编译过程,把程序源文件编译为机器语言的文件,运行时不需要重新编译,执行效率高,但缺点是,编译型语言依赖编译器,跨平台性差。

    • 举例:比如C语言程序的执行过程,要先将后缀为.c的源文件通过编译、链接为后缀为.exe的可执行文件,才能运行。

    2、解释型语言

    • 解释型语言是指源代码不需要预先进行编译,在运行时,要先进行解释再运行。解释型语言执行效率低,但跨平台性好。

    • 举例:比如Java程序执行过程,我们写好代码,直接运行即可(运行前有解释的过程)。

    3、几种热门解释型语言执行原理详解

    详解:Java是解释型语言

    详解:Python是解释型语言

    展开全文
  • 编译型语言与解释型语言的优缺点

    千次阅读 2019-03-09 15:20:23
    编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言就不用再进行翻译了。 解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编C/C++ 等都是编译型语言,而Java,C#等都是...

            编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言就不用再进行翻译了。

            解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编C/C++ 等都是编译型语言,而Java,C#等都是解释型语言。

    虽然Java程序在运行之前也有一个编译过程,但是并不是将程序编译成机器语言,而是将它编译成字节码(可以理解为一个中间语言)。在运行的时候,由JVM将字节码再翻译成机器语言。

    注:脚本语言一般都有相应的脚本引擎来解释执行。 他们一般需要解释器才能运行。JAVASCRIPT,ASP,PHP,PERL,Nuva都是脚本语言。C/C++编译、链接后,可形成独立执行的exe文件。

    编译型语言:

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

    本文转自博客:https://blog.csdn.net/girldwh0715/article/details/70228553

    展开全文
  • 解释型语言和编译型语言概述 计算机是不能直接理解任何除机器语言以外的语言,所以必须要把程序员所写的程序语言编译成机器语言才能执行程序。程序语言翻译成机器语言的工具,被称为翻译器。 翻译器翻译的方式有...
  • 标题 解释型语言和编译型语言的比较 解释型语言代表:PHP、JS、Python、Perl 和Shell。 编译型语言代表:C、C++、Golang JAVA这门语言比较特使,它是通过jit compile(just in time compilation)先将.java编译成....
  • 编译型语言和脚本型语言的区别

    千次阅读 2020-06-20 19:48:43
    首先我们需要了解一下程序语言的大体分类,通过分类进行纵向横向的选择性学习,深入提高。     相信大部分同学在没有来到大学之前已经有过编程接触史了吧,有搞过scratch少儿编程,还是机器人...
  • 什么是编译型语言和解释型语言

    万次阅读 多人点赞 2018-08-01 21:42:16
    什么是编译型语言和解释型语言 计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。 ...
  • 1 编译型语言和解释型语言的含义  大家都知道,代码语言级别主要有机器语言、汇编语言、和高级语言。而高级语言主要又分为编译型语言和解释型语言,下面我们主要讨论这两种语言的含义。  编译型语言指使用专门的...
  • 几天前一个刚接触JavaScript的朋友问我 JavaScript 是编译型语言还是解释型语言。从一个初学者那里听到这样的问题让我有些惊讶,因为所有初学者都知道 JS 是一个解释型语言;特别是像她这样之前使用过 Java 这类语言...
  • LabVIEW 是编译型语言还是解释型语言
  • 编译型语言与解释型语言的真正区别

    万次阅读 多人点赞 2018-10-20 13:02:00
    编译型语言与解释型语言的真正区别 一、编译型语言与解释型语言的必需知识点 二、Python和Java解释型语言的主流执行方式 三、进而可推之解释性语言和编译型语言的优缺点 一、编译型语言与解释型语言的必需知识点...
  • 编译型语言 编译型语言先要进行编译,然后转为特定的可执行文件,这个可执行文件是针对平台的(CPU类型),可以这么理解你在PC上编译一个C源文件,需要经过预处理,编译,汇编等等过程生成一个可执行的二进制文件。...
  • 可执行文件,是二进制机器语言的集合,可以被机器执行,得到想要的结果。比如Windows里的.exe文件,即executable。 计算机能执行的指令,称为机器语言或机器码。不同计算机芯片厂商所设计的半导体电路不同,...
  • 40.LabVIEW 是编译型语言还是解释型语言.doc
  • Java语言是编译型语言还是解释型语言? 我们都知道,编程语言从程序执行过程分,分为编译型语言和解释性语言 什么是编译型语言和解释型语言? Java语言看似是编译型的,因为Java程序代码的确是需要经过编译的 还...
  • 编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言就不用再进行翻译了。 解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度慢相对于C/C++ 等都是编译型语言,而Java,C#等都是...
  • 动态语言是在运行时才确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。 例如PHP、ASP、Python、SQL、JavaScript、Unix Shell等等。 动态语言的优势:思维不受束缚,可以...
  • Python语言是编译型语言还是解释型语言? 我们都知道,编程语言从程序执行过程分,分为编译型语言和解释性语言 什么是编译型语言和解释型语言? Python是一种解释型语言 Python程序源码不需要编译,可以直接从源...
  • 常见的编译型语言有:C、C++ 常见的解释型语言有:Python、JAVA、PHP、C#     传统意义上的所谓编译与解释,区别在于代码是在什么时候被翻译成目标CPU的指令。——虽然这种解释从科学上说不通,但这却是一直...
  • 严格来说:C,C++是编译型语言(经过编译器生成机器码),它们针对特定的CPU,不具备可移植性。Python、Java属于解析型语言(代码运行期间逐渐生成机器码)。但是python解析过程中也需要编译成pyc文件(生成python...
  • 1、C++和C都是属于编译型语言,本来的.c文件都是用高级语言编写的,计算机是不能识别高级语言的,所以,必须要通过编译,链接等手段,将.c文件转换成可执行文件,可执行文件就是纯二进制文件,然后计算机才能够执行...
  • 而这些语言根据运行的方式不同,大体分为两种:编译型语言和解释型语言。 其中,编译型语言包括C\C++、Pascal、Go等。这里说的编译是指在应用源程序执行之前,就将程序源代码编译成汇编语言,然后进一步根据软硬件...
  • Python程序的执行过程(解释型语言和编译型语言

    万次阅读 多人点赞 2018-03-30 11:41:10
    Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是Python是一门解释型语言,我就这样一直相信下去,直到发现.pyc文件的存在,如果真是解释型语言,那么生成的.pyc文件的是什么呢?c应该是...
  • 编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言就不用再进行翻译了。 解释型语言,是在运行的时候将程序翻译成机器语言,虽然Java程序在运行之前也有一个编译过程,但是并不是将程序编译成...
  • 你可以说它是编译型的。因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。 你可以说它是解释型的。因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释的...
  • 大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言。 编译型语言 很多传统的程序设计语言,例如Fortran、Ada、Pascal、C、C++和Java,都是编译型语言。这类语言需要预先将我们写好的源代码(source ...
  • 计算机编程语言种类非常多,根据与计算机硬件贴近程度和抽象程度大致可分为3类,自顶向下分别是 : 高级语言(抽象层次更高的便于记忆和表示的英文代码) | 汇编语言(抽象层次较高的对应机器硬件的cpu指令集,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 305,724
精华内容 122,289
关键字:

编译型语言