首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

任何语言都没有解释器或编译器吗?

任何语言都没有解释器或编译器吗?

这个问题涉及到计算机语言的分类和执行方式。计算机语言可以分为高级语言和低级语言。高级语言是指更接近人类语言的编程语言,例如C++、Java、Python等。低级语言是指更接近计算机硬件的编程语言,例如汇编语言和机器语言。

对于高级语言,它们通常需要通过编译器或解释器将代码转换为计算机可以执行的机器语言或汇编语言。编译器是将高级语言代码一次性转换为机器语言或汇编语言,然后由计算机执行。解释器是逐行将高级语言代码转换为机器语言或汇编语言,并立即执行。

对于低级语言,它们通常需要手动编写汇编代码,然后使用汇编器将汇编代码转换为机器语言。机器语言是计算机硬件可以直接执行的语言,因此不需要解释器或编译器。

总之,任何语言都没有解释器或编译器是不正确的。高级语言需要通过编译器或解释器将代码转换为计算机可以执行的机器语言或汇编语言。而低级语言则需要手动编写汇编代码,然后使用汇编器将汇编代码转换为机器语言。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python语言编译器解释

一、解释语言Python Python语言是一种解释型、面向对象、动态数据类型的高级程序设计语言。 ?...编译型语言 先整体编译,再执行 运行速度快,任意改动需重新编译 可脱离编译环境运行 解释语言解释,边执行 运行速度慢 部分改动无需整体重新编译 不可脱离解释环境运行 编译型与解释语言列表...二、Python解释种类 CPython 官方版本的解释。这个解释是用C语言开发的,所以叫CPython。CPython是使用最广的Python解释。...我们通常说的、下载的、讨论的、使用的都是这个解释。 Ipython 基于CPython之上的一个交互式解释,在交互方式上有所增强,执行Python代码的功能和CPython是完全一样的。...pyc注意事项: 对于当前调用的主程序不会生成pyc文件; 以import xxxfrom xxx import xxx等方式导入主程序的模块才会生成pyc文件; 每次使用pyc文件时,都会根据pyc

1.5K20

自制Monkey语言编译器解释执行哈希表对象

我们在上节完成了对哈希表对象的解析,这一节我们给编译器添加执行哈希表对象的功能,完成本节代码后,编译器能执行以下代码: let hash = {'hello':'world'} let y = hash...['hello'] 当编译器执行上面代码后,变量y的值就是字符串’world’,接下来我们看相关代码的实现。...我们需要在解释中创建哈希表的符号对象,因此先添加如下代码: class BaseObject { constructor (props) { .... //...我们的编译器所至此的Monkey语言其实与Javascript没有太大区别,它支持多种数据类型,例如整形,布尔值,数字,字符串,它还支持复杂数据结构,例如数组和哈希表,它具有高级语言特点,例如支持函数传参...,函数闭包调用等,唯一遗憾的是它暂不支持面向对象编程的类定义,但只要你吃透了课程所介绍的编译原理,添加相应功能并没有太大难度,事实上当前Monkey语言编译器已经是一个完整可用的编程语言了,据说当今世界能做编译器的人最多坐满一个

64420

【JavaScript】JavaScript 简介 ④ ( 解释语言 和 编译型语言 | 计算机程序本质 | 编译器解释 )

所有的语言 都要 转为 机器语言 才能在 计算机中执行 , 如 : 汇编语言 / C / C++ / Python / Kotlin / Java / JavaScript 等语言 ; 2、编译器 和...解释 将 程序代码 转为 机器码 的 工具 , 称为 " 翻译 " , 翻译 翻译 代码 的方式有两种 : 编译 和 解释 ; 编译器 : 在 程序执行之前 就将 代码 编译成 机器码 ; 一次性将所有代码...; 每次将一行代码 翻译成 机器码 ; 解释 可以 理解为 涮火锅 , 一边涮 , 一边吃 ; 3、编译器 分析 编译型语言 在 程序执行 之前 , 需要 将 程序源代码 一次性 编译 成 机器码...C 语言编译器 是 GCC ; C++ 语言编译器 是 G++ ; 4、解释 分析 解释语言 不需要 预先 将 程序源代码 编译成 机器码 , 而是在运行时 逐行解释并执行源代码 ,...解释语言 只要有相应的 解释 , 就可以在任何平台上运行源代码 , 因此解释语言 的 移植性 很好 ; 解释 是在 程序执行过程中 , 解释一行代码 , 将其翻译成 机器码 , 然后执行 , 然后再解释下一行代码

9910

Java 答疑:编译器解释有何区别?Java 语言属于编译型编程语言还是解释型编程语言

文章目录 前言 一、Java 与 Java 字节码 二、什么是编译器(Compiler) 三、什么是解释(Interpreter) 四、编译器解释有何区别? 五、Java 语言属于哪种语言?...总结 前言 我们都知道开发语言整体分为两类,一类是编译型编程语言,一类是解释型编程语言。那么你知道二者有何区别编译器解释又各自有何区分?...解释的过程就是一次将字节码中单独的一步翻译为目标机器语言代码,翻译后立即执行这一步,具体如下图所示: 四、编译器解释有何区别?...语言既不属于编译型编程语言也不属于解释型编程语言,因为它由 Java 编译器编译为字节码文件,然后仍需要有 JVM 将字节码解释翻译为目标机器语言,先编译后解释。...总结 在本文中我们解释了什么是编译器,什么是解释,并对二者进行了比较,从原理层面指出 Java 语言既不属于编译型编程语言也不属于解释型编译语言

73130

自制Monkey语言编译器:解释执行if..else判断语句

任何编程语言都少不了条件判断语句,Monkey语言也一样,有自己的If…else条件判断指令,本节我们看看如何解释执行该条件判断语句。...根据我们原有的解释执行机制,我们只要在原框架的基础上添加若干代码就可以实现本节功能。当本节代码完成后,执行结果如下: ? 如图中的if else 语句被编译器解释执行后,在控制台的输出如下: ?...根据输出可知,编译器在执行了if里面的条件判断后,执行了if模块里面的语句,也就是执行了”10+10;”,然后输出计算结果是20。我们看看该功能是如何实现的。...继续回到evalIfExpression函数,它根据对if后面语句的解释执行返回来的值判断接下来是解释执行if语句块里面的语句还是else语句块里面的语句。...上面代码完成后,编译器就具备了文章开头所展示的能够解释执行if…else…模块的解析功能。

87650

自制Monkey语言编译器:解释执行return语句和错误处理控制

本节我们就给Monkey语言编译器增加解释执行return语句的功能,完成本节代码后,编译器解释执行如下代码: ?...if里面的return语句执行后,把整形10返回给最外层,完成本节代码后,编译器对上面代码解释执行的结果如下: ?...从运行结果看,编译器解释执行了一系列if条件判断语句后,将内层if语句块包含的return语句执行了,并没有执行外层if语句块包含的return语句,所以在控制台输出上显示出编译器将数值10返回给最外层...完成上面代码之后,编译器就能正确的解释执行return语句了,更详细的讲解和代码调试演示,请参看上头给出的视频链接。接下来我们要为编译器添加错误处理信息。...在解释执行前置表达式时,编译器检测运算符后面的表达式在解释执行时是否正常,如果出错则直接将错误返回。

70250

Java真的是一门编译型的语言——即时编译器JIT

让我们回忆一下Java程序是如何运行的 我们知道编程语言根据编译及运行过程,主要分为两大阵营:编译型语言解释语言。...在这里插入图片描述 Java语言通常被归属为编译型语言,但其与C/C++、Go这些传统意义上的编译型语言又有所不同,Java代码经由编译器编译后得到的产物并不是机器码,而是 字节码 这种“中间语言”,需要交给...因此Java语言同时具有 编译型语言解释语言的特点:既能保证运行速度够快,同时又具有一定的运行时灵活性,也被称为“半编译半解释型”语言。...提出问题并在学习中回答Q&A Q1.为何HotSpot虚拟机要使用解释与即时编译器并存的架构? Q2·为何HotSpot虚拟机要实现两个(三个)不同的即时编译器? Q3·程序何时使用解释执行?...HotSpot虚拟机中内置了两个(三个)即时编译器,其中有两个编译器存在已久,分别被称 为“客户端编译器”(Client Compiler)和“服务端编译器”(Server Compiler),或者简称为

37320

汇编程序,编译器解释的简短介绍【Programming】

实际上,程序员是如此廉价,以至于他们甚至都没有被称为“程序员”,实际上通常是称之为数学家电气工程师。 实际上早期的计算机被用来快速解决复杂的数学问题,因此数学家很自然地适合“编程”工作。...与汇编语言程序相比,编译语言的巨大优势是可以从一种计算机模型品牌移植到另一种计算机模型品牌。...除了需要插入电源之外,这些计算机都没有任何共同点。 内存和CPU体系结构差异很大,将程序从一台计算机转换到另一台计算机通常需要花费多年的时间。 使用高级语言,只需将编译器工具链移植到新平台。...一旦有了编译器,就可以在不做任何修改的情况下为新计算机重新编译高级语言程序。 高级语言的编译确实具有革命性。 image.png 1983年发布的IBM PC XT是降低硬件成本的早期例子。...解释 随着时间的流逝,出现了一种新的编程模型,其中一种称为“解释”的特殊程序可以读取程序,并将其转换为可立即执行的计算机指令。解释将程序作为输入,并将其解释为中间形式,就像编译器一样。

1.3K00

第一个C语言程序(从Hello World开始)

双斜杠后面的为 注释 ,一般来说,注释用于标注这段代码的用途解释思路等。因为注释不会被当作代码进行编译,所以无论添加什么注释内容,都不会对代码的实际运行产生任何影响。 2. 什么是函数?...在编程语言里面,你可以把函数看做一个盒子,这个盒子有如下几个特性: 开始执行时,函数可以被输入一些值 执行过程中,函数可以做一些事情 执行完成后,函数可以返回一些值 以上边的示例代码为例进行解释: 主函数什么都没有输入...(若类型不同,编译器会尝试自动类型转换。自动类型转换失败则会编译失败。) 问题: 主函数是被谁调用的?主函数的返回值必须是 int ?...如果编译器遇到未经定义声明的标识符,将会无法理解这个标识符具体是一个什么实体的名称而报错。...关键词 问题:int是一个 标识符 ? 答案:不是。首先int并不是我们随意命名的,其次int并不是任何实体的名称。 int是C语言中的一个 关键词 。

51920

2020Java高频面试题--Java知识点汇总

现在的 Java 版本中又加入了即时编译功能(just-in-time 编译器,简称 JIT 编译器),编译器将字节码转换成本机的机器代码,然后能够以较高速度执行,使得执行效率大幅度提高,基本达到了编译语言的水平...Java是与平台无关的语言。 Java编译器将Java代码转换为可由JVM解释的字节代码。 JVM为世界上几乎所有流行的平台编写。 Java字节码可以相同的方式在任何受支持的平台上运行。...所以Java是真正的平台无关的语言。 所有这些可移植性的背后是Java字节码。 Java编译器生成的字节码可以由任何JVM解释。...因此,用Java编写程序并期望它们可以在任何平台上运行变得容易得多。 Java编译器javac编译Java代码,而JVM java运行该代码。...我们可以将main方法写为public void static而不是public static void? 不,你不能这样写。 任何方法都必须首先指定修饰符,然后再指定返回值。

40251

C语言中什么是常量表达式_c语言整型表达式

常量表达式 c语言,整型表达式和常量表达式中都没有变量参与吧? 完整问题: 好评回答:表达式没有变量参与?...完整问题:Java编译器对于String常量表达式的优化是什么呢?...,编译器在编译时直接计算容易理解,而”a” + “b” 这样的表达式,string是对象不是基本类型,编译器会把它当成常量表达式来优化?。...Java编译器对于String常量表达式的优化是什么呢? 完整问题:Java编译器对于String常量表达式的优化是什么呢?...,编译器在编译时直接计算容易理解,而”a” + “b” 这样的表达式,string是对象不是基本类型,编译器会把它当成常量表达式来优化?。

1.1K30

真正的杀死C++的不是 Rust

我甚至还写过 VisualBasic、bash,以及几种不能公开谈论的专有语言。我甚至编写过自己的语言,我写了一个简单的 Lisp 风格解释,帮助游戏设计师自动加载资源,然后去度假了。...回来后发现他们用这个解释编写了整个游戏场景,所以在接下来的一段时间里我们必须支持这个解释。 在过去的 17 年里,我一直在努力摆脱 C++,但每次尝试过新技术后,总是会回到 C++。...如果你果断地回答了以上所有问题,甚至没有思考上网搜索,那么只能说你被自己的直觉骗了。你没有发现陷阱?在没有上下文的情况下,这些问题都没有确定的答案。...我们只有--use-fast-math之类的编译器标志,而且只在翻译单元的范围内。 在第二个示例中,编译器不知道我们的值仅限于 0 1,而且也不可能提出可以实施的优化。...Python 编译器有很多,其中一个最被看好的编译器也算是Python脚本。我来解释一下。

10010

解释模式举例-柯里化的前生今世(四):编译器解释

写完了这个解释之后,我们会增加一些新的功能。   编译器解释   编译器会将源代码转换成另一种语言的代码解释模式举例,然后在支持后一种语言的机器上执行。   ...编译器优化:中间代码多次转换,多种优化,   编译器后端:目标代码生成,优化目标代码。   解释不包含目标代码生成阶段,将优化结果直接执行。   前端和优化,是编译器解释共有的。   ...( (+ 1 ( 2 3)) (- 4 5))   这不就是S表达式?   对的,编译器前端会将任何语言的源代码转换成与具体语法无关的抽象语法树,   而S表达式正是这种抽象语法树的线性编码。   ...(因此,你写任何语言,本质上都是在写Lisp。。   ...格林斯潘第十定律:   任何C程序复杂到一定程度之后,都会包含一个临时开发的、不合规范的、充满程序错误的、运行速度很慢的、只有一半功能的Common Lisp实现。

27610

手摸手实现一个编译器(上)

您可以使用它来处理复杂的数据计算机语言,并轻松构建转换解释编译器和其他工具。...我们先简单了解解释编译器的定义: 解释(interpreter)是一种计算机程序,能够把解释语言解释执行。解释就像一位“中间人”。...二者的区别主要有: 编译器将一个程序作为一个整体进行翻译,而解释则是一行一行地翻译; 在编译器的情况下生成中间代码目标代码。...而解释不创建中间代码; 编译器解释要快得多,因为编译器一次完成整个程序,而解释则是依次编译每一行代码; 由于要生成目标代码,编译器解释需要更多的内存; 在编译器中,当程序中出现错误时,它会停止翻译...相反,当解释中发生错误时,它会阻止其翻译,在删除错误后,翻译将继续; 编译器用于编程语言,如 c、c++、c#、Scala 等。

68910

JavaScript 究竟是如何工作的?

用机器语言汇编语言编写企业级代码是不可行的,因此我们需要像 Java,Python 这样配带一个解释或者编译器用于将其转换为机器码的高级语言。...1.1编译器解释 编译器/解释可以用它处理的语言任何其他语言来编写。 解释: 一行一行地快速读取和翻译文件。这就是 JavaScript 最初的工作原理。...和其他语言类似,引擎可以用任何语言来开发,因此这样的引擎不止一个。 V8 是谷歌针对 Chorme 浏览的引擎实现。...我们之前谈到,JavaScript 是由 Ignition 这个解释解释的,同时由 TurboFan 这个 JIT 优化编译器进行编译。...使用这个分析后,任何未优化的代码都将传递给编译器以进行优化,同时生成机器码,它最终会替换掉之前由解释生成的未优化代码中的对应部分。

45020

「译」JavaScript 究竟是如何工作的?(第一部分)

用机器语言汇编语言编写企业级代码是不可行的,因此我们需要像 Java,Python 这样配带一个解释或者编译器用于将其转换为机器码的高级语言。...1.1编译器解释 编译器/解释可以用它处理的语言任何其他语言来编写。 解释: 一行一行地快速读取和翻译文件。这就是 JavaScript 最初的工作原理。...和其他语言类似,引擎可以用任何语言来开发,因此这样的引擎不止一个。 V8 是谷歌针对 Chorme 浏览的引擎实现。...image.png 3.3 引擎的核心 image.png 我们之前谈到,JavaScript 是由 Ignition 这个解释解释的,同时由 TurboFan 这个 JIT 优化编译器进行编译。...使用这个分析后,任何未优化的代码都将传递给编译器以进行优化,同时生成机器码,它最终会替换掉之前由解释生成的未优化代码中的对应部分。

49620

JavaScript到底是解释语言还是编译型语言?

JIT(及时编译)会做代码优化(同时创建代码的编译版本);解释语言无法做到这些。 有什么快速的回答?...在执行任何语句之前,解释就要从创建执行上下文后已经存在的作用域(scope)中找到变量的值。...解释 JavaScript 中的即时编译(JIT) JIT 及时编译 编译器不是 JavaScript 所特有的。其他语言比如 Java 也有一些在执行前编译代码的机制。...是的,它们有编译器。让我来为你解释一下为什么它们需要 JIT 以及 JIT 在 JavaScript 的执行中是如何工作的。 编译型和解释语言最重要的区别是编译型语言需要很长的时间来准备执行。...变量提升只是 JS 解释处理事情的方式。 JIT 是唯一一点我们可以对 JavaScript 是否是一个解释语言提出疑问的理由。但是 JIT 不是完整的编译器,它在执行前进行编译。

1.7K20

带你了解 JavaScript 作用域

简述编译原理 通常我们会将JavaScript归类为“动态”解释执行“语言,但它实际上是一门编译语言。与传统的编译语言不同,它不是提前编译的,编译结果也不能在分布式系统中进行移植。...image.png 代码生成 将上边的抽象语法树转换为机器可执行代码 JavaScript引擎比只有三个步骤的语言编译器要复杂的多。...引擎、编译器、作用域在赋值操作中的配合 引擎:从头到尾负责整个JavaScript程序编译及执行过程undefined 编译器:负责语法分析及代码生成undefined 作用域:负责收集维护由所有变量组成的一系列查询...1.编译器首先将这段代码分解成词法单元,然后解析为树结构。(在下一步代码生成时,处理这段代码的方式会跟预期有所不同) 2.遇到 var foo ,编译器会检查作用域是否已有同名变量存在。...如果有的话编译器会忽略声明,继续编译。

27930

连1.0版本都没有,Uber为什么会采用这样一项新技术?

因此,用于构建 Go Monorepo 的 Go 编译器不会受系统上安装的编译器影响(如果有的话)。因此,无论在哪个环境下构建,都会使用相同版本的 Go。Bazel 文档对此做了很好的解释。...我们无法使用新的编译器,即使它提供了更好的优化功能,因为我们在构建机群上运行的是旧版本的操作系统(只向后迁移编译器,而不迁移 glibc,本身就有风险)。...然后我在#zig:libera.chat中扔了一枚炸弹: 捐赠后,有什么规约可以用来“申请”开发时间? ZSF 只接受不附带任何条款的捐赠。...一个存在缺陷,但可以工作的封闭式 macOS(交叉)编译器。使用这两种方法中的任何一种处理 glibc 都没问题,然而,grailbio似乎不大可能编译到 macOS 上,更不用说交叉编译了。...我们对 Zig 没有任何决定权投票权。我们有权提出建议,但这些建议将和来自其他第三方的建议等量齐观。我们不能要求特殊权利,这在合同中有明确规定,我们也不希望那样。

1.4K20
领券