精华内容
下载资源
问答
  • 编译型语言与解释型语言
    千次阅读
    2022-03-28 10:11:42

    计算机只能识别二进制指令,不能直接识别由JavaScript等高级编程语言所编写的代码(源代码),所以需要将高级语言转为二进制指令。

    由于不同语言转换为二进制指令的时机不同,可分为编译型语言和解释性语言。

    一、编译型语言

    ● 编译型语言

    编译型语言要求使用编译器一次性将所有源代码编译为一个可执行程序,一次编译可重复执行。代表语言有C、C++、Golang、汇编等。

    编译型语言一般不能跨平台

    1.编译出来的可执行程序不能跨平台:因为不同操作系统对可执行文件有着不同的要求,彼此之间不能兼容。

    2.源代码不能跨平台:不同操作系统下的函数、变量、api等可能会有不同。

    二、解释型语言

    解释型语言

    解释型语言是使用解释器一边执行一边转换,用到些源代码就转换哪些,不会生成可执行程序。代表语言有JavaScript、Python、PHP、Shell等。

    解释型语言一般可以跨平台

    跨平台是指源代码可以跨平台,解释器是不能跨平台的。源代码在不同操作系统中运行的结果相同。

    更多相关内容
  •  对于C和C++,它们经过一次编译之后,可以由操作系统直接执行,所以它们是编译型语言。而Java不一样,它首先由编译器编译成.class(字节码)文件,然后在通过JVM从.class文件中读一行解释执行一行,所以它是解释型...
  • 解释型语言

    千次阅读 2019-08-01 09:29:28
    有人说Java是编译型的。因为所有的Java代码都是要编译的,.java不...Basic/Python/JavaScript / Perl /Shell等都是解释型语言解释型语言(英语:Interpreted language),是一种编程语言。这种类型的编程语言,会...

    有人说Java是编译型的。因为所有的Java代码都是要编译的,.java不经过编译就无法执行。 也有人说Java是解释型的。因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释型的。

    Basic/Python/JavaScript / Perl /Shell等都是解释型语言。

    解释型语言(英语:Interpreted language),是一种编程语言。这种类型的编程语言,会将代码一句一句直接运行,不需要像编译语言(Compiled language)一样,经过编译器先行编译为机器代码,之后再运行。这种编程语言需要利用解释器,在运行期,动态将代码逐句解释(interpret)为机器代码,或是已经预先编译为机器代码的的子程序,之后再运行。
    ——维基百科

    特点:
    非独立:需要依赖解释器
    效率低:边解释边执行。解释器每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。它不会一次把整个程序翻译出来,而是每翻译一行程序叙述就立刻运行,然后再翻译下一行,再运行,如此不停地进行下去。(而编译型语言被编译器一次性将所有源代码翻译成另一种机器语言,运行时无需再依赖编译器,因此运行速度比较快。)
    跨平台兼容性好(编译型语言进行移植后要重新编译)

    展开全文
  • JavaScript是解释型语言--V8、JIT

    千次阅读 多人点赞 2021-05-25 20:11:49
    编程语言 可以通过”语言“来控制计算机,让计算机为我们做事情。(类似于中文、英文) 编程语言是用来控制计算机的一系列指令(Instruction),它有固定的格式和词汇(不同编程语言的格式和词汇不一样),必须遵守...

    编程语言

    可以通过”语言“来控制计算机,让计算机为我们做事情。(类似于中文、英文)

    编程语言是用来控制计算机的一系列指令(Instruction),它有固定的格式和词汇(不同编程语言的格式和词汇不一样),必须遵守,否则就会出错,达不到我们的目的。

    编程语言的发展大概经历了以下几个阶段: 汇编语言 ==> 面向过程编程 ==> 面向对象编程

    • 汇编语言是编程语言的拓荒年代,它非常底层,直接和计算机硬件打交道,开发效率低,学习成本高;
    • C语言是面向过程的编程语言,已经脱离了计算机硬件,可以设计中等规模的程序了;
    • Java、C++、Python、C#、PHP 等是面向对象的编程语言,它们在面向过程的基础上又增加了很多概念。

    在这里插入图片描述

    编程语言的从执行原理上分为两类:解释型语言和编译型语言

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

    编译型语言

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

    解释型语言

    程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。如 Python、Shell、JavaScript 等。

    Java 语言

    编译器(javac)把源代码转化为字节码,然后解释器(Java.exe)把字节码转换为计算机理解的机器码来执行。其中编译器和解释器都是 Java 虚拟机(JVM)的一部分,由于针对不同的硬件与OS,Java 解释器有所不同,因此可以实现“一次编译、到处执行”。所以 JVM 是Java 跨平台特性的关键所在 – 引入 JVM 后,Java 语言在不同平台上运行时不再需要重新编译。

    对于前端开发同学使用的 JavaScript 语言,属于典型的解释型语言

    JavaScript

    JavaScript 作为编程语言的一种,直接输送给计算机(CPU)是不认识的(上面有提及),需要将其转换为指令集。不同类型的 CPU 的指令集是不一样的。JavaScirpt 引擎可以将 JavaScript 代码编译为不同 CPU(Intel, ARM 以及 MIPS 等)对应的机器码,同时引擎还可以执行代码、分配内存以及垃圾回收等。

    Google V8 是开源高性能 JavaScript 和 WebAssembly 引擎,被用于 Chrome 和 Node.js 等。其中包括重要的四个模块:

    1. Parser:将 JavaScript 源码转换为 Abstract Syntax Tree (AST);
    2. Ignition:解释器,将 AST 转换为 Bytecode,解释执行 Bytecode;同时收集 TurboFan 优化编译所需的信息,比如函数参数的类型;
    3. TurboFan:编译器,利用Ignitio所收集的类型信息,将Bytecode转换为优化的汇编代码(计算机可识别);
    4. Orinoco:垃圾回收,负责将程序不再需要的内存空间回收。

    整个转换过程:JavaScript ==> AST ==> Bytecode ==> Machine Code

    关于 v8 引擎是如何工作的,可以看 这篇文章

    V8 出现之前,所有的 JavaScript 虚拟机所采用的都是解释执行的方式,这是 JavaScript 执行速度过慢的主要原因之一。而 V8 率先引入了即时编译(JIT)双轮驱动的设计(混合使用编译器和解释器的技术),这是一种权衡策略,给 JavaScript 的执行速度带来了极大的提升。

    绝大多数编译器以预先编译(AOT)或实时编译(JIT)形式工作。

    • 使用命令行或者集成开发环境(IDE)调用预先编译(AOT)的编译器,如 gcc
    • 实时编译器通常是用来提高性能的,令你没有感知的,如 V8

    即时编译 JIT(Just-in-time)

    解释器的工作方式:边解释,边执行。 对于循环等会存在解释多次的情况。从而导致运行速度变慢。

    for (let i = 0; i < len; i++) {
      doSomething(i)
    }
    

    整体来说,为了解决解释器的低效问题,后来的浏览器把编译器也引入进来,形成混合模式。最终,结合了解释器和编译器的两者优点。

    They added a new part to the JavaScript engine, called a monitor (aka a profiler). That monitor watches the code as it runs, and makes a note of how many times it is run and what types are used.

    关于 JIT 的原理,大部分来自 这篇文章,英文好的同学可自行跳转查阅。

    基本思想: 在 JavaScript 引擎中增加一个监视器(也叫分析器)。监视器(monitor)监控着代码的运行情况,记录代码一共运行了多少次、如何运行的等信息。后续遇到相同代码时,跳过解释,直接执行。

    执行步骤

    第一步:Interpreter

    使用解释器执行,当某一行代码被执行了几次,这行代码会被打上 Warm 的标签;当某一行代码被执行了很多次,这行代码会被打上 Hot 的标签

    第二步:Baseline compiler

    被打上 Warm 标签的代码会被传给 Baseline Compiler 编译且储存,同时按照行数 (Line number)变量类型 (Variable type) 被索引。当发现执行的代码命中索引,会直接取出编译后的代码给浏览器执行,从而不需要重复编译已经编译过的代码。

    第三步:Optimizing compiler

    被打上 Hot 标签的代码会被传给 Optimizing compiler,这里会对这部分带码做更优化的编译(类型假设)。在执行前会做类型检查,看是假设是否成立,如果不成立执行就会被打回 interpreter 或者 baseline compiler 的版本,这个操作叫做 “去优化”。

    JIT 会增加多余的开销:

    • 优化和去优化开销
    • 监视器记录信息对内存的开销
    • 发生去优化情况时恢复信息的记录对内存的开销
    • 对基线版本和优化后版本记录的内存开销

    所以,整体来看是一个空间换时间的优化方案。当然,通过上述三个步骤,可得知,虽然 JavaScript 是弱类型语言,随意修改变量的类型会导致 JIT 编译效率下降(命中索引概率低)。

    说在后面

    对于整个解释型语言及现有的相关优化方式(JIT)了解之后,对于后续文章要提到的 esbuild 会有更好的理解。esbuild 也被称为下一代构建工具(使用 Go 语言编写,基于 ESM)。coming soon~~

    esbuild:An extremely fast JavaScript bundler
    Our current build tools for the web are 10-100x slower than they could be. The main goal of the esbuild bundler project is to bring about a new era of build tool performance, and create an easy-to-use modern bundler along the way.

    展开全文
  • Java是编译型还是解释型语言

    万次阅读 多人点赞 2020-09-19 10:53:20
    1.编译型语言和解释型语言 编译型语言 定义:在程序运行之前,通过编译器将源程序编译成机器码(可运行的二进制代码),以后执行这个程序时,就不用再进行编译了。 优点:编译器一般会有预编译的过程对代码进行优化。...

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

    编译型语言

    定义:在程序运行之前,通过编译器将源程序编译成机器码(可运行的二进制代码),以后执行这个程序时,就不用再进行编译了。

    优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高,可以脱离语言环境独立运行。

    缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

    总结:执行速度快、效率高;依靠编译器、跨平台性差些。

    代表语言:C、C++、Pascal、Object-C以及Swift。

    解释型语言

    定义:解释型语言的源代码不是直接翻译成机器码,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。在运行的时候才将源程序翻译成机器码,翻译一句,然后执行一句,直至结束。

    优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

    缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。

    总结:执行速度慢、效率低;依靠解释器、跨平台性好。

    代表语言:JavaScript、Python、Erlang、PHP、Perl、Ruby。

    混合型语言

    定义:既然编译型和解释型各有缺点就会有人想到把两种类型整合起来,取其精华去其糟粕,就出现了半编译,半解释型语言。

    比如C#,C#在编译的时候不是直接编译成机器码而是中间码,.NET平台提供了中间语言运行库运行中间码,中间语言运行库类似于Java虚拟机。.NET在编译成IL代码后,保存在dll中,首次运行时由JIT在编译成机器码缓存在内存中,下次直接执行。严格来说混合型语言属于解释型语言,C#更接近编译型语言。

    Java即是编译型的,也是解释型语言,总的来说Java更接近解释型语言

    • 可以说它是编译型的。因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。同时围绕JVM的效率问题,会涉及一些如JIT、AOT等优化技术,例如JIT技术,会将热点代码编译成机器码。而AOT技术,是在运行前,通过工具直接将字节码转换为机器码。

    • 可以说它是解释型的。因为Java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的。

    2.动态类型语言和静态类型语言

    动态类型语言

    动态类型语言:在运行期间才去做数据类型检查的语言,说的是数据类型。动态类型语言的数据类型不是在编译阶段决定的,而是把类型绑定延后到了运行阶段。

    代表语言:Python、Ruby、Erlang、JavaScript、Swift、PHP、Perl。

    静态类型语言

    静态类型语言的数据类型是在编译期间(或运行之前)确定的,编写代码的时候要明确确定变量的数据类型。

    代表语言:C、C++、C#、Java、Object-C。

    3.动态语言和静态语言

    动态语言

    动态类型语言和动态语言是完全不同的两个概念。

    动态语言:说的是运行时改变结构,说的是代码结构。在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。

    代表语言:Object-C、C#、JavaScript、PHP、Python、Erlang。

    静态语言

    与动态语言相对应的,运行时结构不可变的语言就是静态语言。如Java、C、C++。

    展开全文
  • 在本篇文章里小编给大家整理了关于python是否属于解释型语言的相关知识点内容,需要的朋友们可以学习下。
  • LabVIEW 是编译型语言还是解释型语言
  • 解释型语言和编译型语言

    万次阅读 2019-06-22 16:04:52
    解释型语言和编译型语言 编程语言从执行原理上可分为编译型语言和解释型语言。 比如常见的C语言、C++等都是编译型语言 Java、Python等都是解释型语言 计算机不能直接理解机器语言以外的语言,因此需要将我们写的代码...
  • 40.LabVIEW 是编译型语言还是解释型语言.doc
  • 解释型语言则完全不一样,它有一个解释器,在程序运行时,解释器会一行行地读取我们编写的源代码,然后实时地将这些源代码解释成计算机可识别的二进制数据后再执行,因此解释型语言通常效率会差一些,像Python和...
  • 1.编译型语言和解释型语言 编译型语言 定义:在程序运行之前,通过编译器将源程序编译成机器码(可运行的二进制代码),以后执行这个程序时,就不用再进行编译了。 优点:编译器一般会有预编译的过程对代码进行优化。...
  • 解释型语言和编译型语言概述 计算机是不能直接理解任何除机器语言以外的语言,所以必须要把程序员所写的程序语言编译成机器语言才能执行程序。程序语言翻译成机器语言的工具,被称为翻译器。 翻译器翻译的方式有...
  • 标题 解释型语言和编译型语言的比较 解释型语言代表:PHP、JS、Python、Perl 和Shell。 编译型语言代表:C、C++、Golang JAVA这门语言比较特使,它是通过jit compile(just in time compilation)先将.java编译成....
  • 什么是编译型语言和解释型语言

    万次阅读 多人点赞 2018-08-01 21:42:16
    什么是编译型语言和解释型语言 计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。 ...
  • 编译型语言和解释型语言的本质区别: 编译型语言是将源代码先通过编译为cpu认识的机器码,从而cpu执行编译后的机器码; 解释型语言则不是直接编译成机器码,而是将源代码转化成中间代码发送给解释器,解释器再发给...
  • Python程序的执行过程(解释型语言和编译型语言)

    万次阅读 多人点赞 2018-03-30 11:41:10
    Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是Python是一门解释型语言,我就这样一直相信下去,直到发现.pyc文件的存在,如果真是解释型语言,那么生成的.pyc文件的是什么呢?c应该是...
  • Python真的是解释型语言吗?

    千次阅读 多人点赞 2019-10-13 18:59:40
    刚接触python的时候就知道,python有一个缺点,那就是运行速度比较慢,因为python是一门解释型语言。 那么,什么是解释型语言呢? 其实简而言之就是:python不像C语言那样,在运行之前需要编译那么麻烦,它可以直接...
  • 解释型语言的特点与理解

    千次阅读 2020-12-29 17:41:34
    解释型语言是什么?对比编译型语言有什么区别?为了将高级语言转换成计算机能识别的机器语言,需要一个‘翻译’过程。即编译或者解释 编译型语言编译型语言的程序只要经过编译器编译之后,每次运行程序都可以直接运行...
  • 几天前一个刚接触JavaScript的朋友问我 JavaScript 是编译型语言还是解释型语言。从一个初学者那里听到这样的问题让我有些惊讶,因为所有初学者都知道 JS 是一个解释型语言;特别是像她这样之前使用过 Java 这类语言...
  • JAVA到底是解释型语言还是编译型语言是属于编译型语言。因为需要编译成位元组码以后才能在jvm上执行。JavaScript到底是解释型语言还是编译型语言编译型语言是把原始码先编译为机器码(也就是所谓的可执行程式,比如...
  • Java语言是编译型语言还是解释型语言? 我们都知道,编程语言从程序执行过程分,分为编译型语言和解释性语言 什么是编译型语言和解释型语言? Java语言看似是编译型的,因为Java程序代码的确是需要经过编译的 还...
  • 1 编译型语言和解释型语言的含义  大家都知道,代码语言级别主要有机器语言、汇编语言、和高级语言。而高级语言主要又分为编译型语言和解释型语言,下面我们主要讨论这两种语言的含义。  编译型语言指使用专门的...
  • 编译型语言与解释型语言的真正区别

    万次阅读 多人点赞 2018-10-20 13:02:00
    编译型语言与解释型语言的真正区别 一、编译型语言与解释型语言的必需知识点 二、Python和Java解释型语言的主流执行方式 三、进而可推之解释性语言和编译型语言的优缺点 一、编译型语言与解释型语言的必需知识点...
  • 编译型语言 编译型语言先要进行编译,然后转为特定的可执行文件,这个可执行文件是针对平台的(CPU类型),可以这么理解你在PC上编译一个C源文件,需要经过预处理,编译,汇编等等过程生成一个可执行的二进制文件。...
  • 编译型语言与解释型语言的优缺点

    千次阅读 2019-03-09 15:20:23
    解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编C/C++ 等都是编译型语言,而Java,C#等都是解释型语言。 虽然Java程序在运行之前也有一个编译过程,但是并不是将程序编译成机器语言,而是...
  • Python语言是编译型语言还是解释型语言? 我们都知道,编程语言从程序执行过程分,分为编译型语言和解释性语言 什么是编译型语言和解释型语言? Python是一种解释型语言 Python程序源码不需要编译,可以直接从源...
  • 可执行文件,是二进制机器语言的集合,可以被机器执行,得到想要的结果。比如Windows里的.exe文件,即executable。 计算机能执行的指令,称为机器语言或机器码。不同计算机芯片厂商所设计的半导体电路不同,...
  • 而这些语言根据运行的方式不同,大体分为两种:编译型语言和解释型语言。 其中,编译型语言包括C\C++、Pascal、Go等。这里说的编译是指在应用源程序执行之前,就将程序源代码编译成汇编语言,然后进一步根据软...
  • 解释型语言和脚本语言的区别

    千次阅读 2019-07-18 23:46:02
    解释型语言和脚本语言的区别 - 脚本语言是解释型的语言,也就是解释型语言包括脚本语言。 - 解释语言是说解释执行的语言,但执行的代码并不一定是文本格式的。 - 脚本语言的程序是文本文件,并且是解释执行的。 ...
  • 既可以说是编译型语言,也可以说是解释型语言。 或者 既可以说“既不是编译型语言,也不是解释型语言”。 由上述图示就能看出原因。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 322,633
精华内容 129,053
关键字:

解释型语言

友情链接: fuzzy-c-means-master.zip