当前位置: 首页 > 知识库问答 >
问题:

编译与传输

卫君博
2023-03-14

在寻找区别时,我遇到了这些定义:

编译是将用一种语言编写的源代码转换成另一种语言的通用术语。

Transpiling是一个特定的术语,用于将用一种语言编写的源代码转换成另一种具有类似抽象级别的语言。

我明白什么是抽象

但在上述定义中,“相似的抽象层次”是什么意思?我们如何在语言中找到抽象的层次?

共有3个答案

章晗日
2023-03-14

例如:TypeScript(一个带有类型安全检查的微软JavaScript超集)可以传输到可以在不同类型浏览器上运行的JavaScript代码。

https://en.wikipedia.org/wiki/Microsoft_TypeScript“Microsoft TypeScript是一种由Microsoft开发和维护的开源编程语言。它是JavaScript的严格语法超集,并在语言中添加了可选的静态类型。

TypeScript是为开发大型应用程序和将文件转换为JavaScript而设计的。[5] 由于TypeScript是JavaScript的超集,现有的JavaScript程序也是有效的TypeScript程序。TypeScript可用于开发用于客户端和服务器端(Node.js)执行的JavaScript应用程序。"

唐修能
2023-03-14

这里有一种描述性的回答方式

如果你认为抽象层就是这个例子:

(1) CPU-level (actual logic gates on the CPU)
(2)machine code
(3)assembly code
(4)[C/C++, JVM/bytecode]
(5)[JavaScript, Python]

编译器进入较低的级别(较低的数字)。转发器以相同的数字从一种语言(或一种语言的版本)切换到另一种语言。

金英华
2023-03-14

你上面引用的定义太笼统了,初学者无法完全理解,所以让我把它简化为我们实际看到的东西。

编译器:是一个总括术语,用来描述一个程序,它采用一种语言编写的源代码,并以其他语言产生一个(或多个)输出文件。在实践中,我们主要用这个术语来描述一个编译器,如gcc,它采用C代码作为输入,并产生一个二进制可执行文件(机器代码)作为输出。

传输程序也被称为源代码到源代码的编译器。所以本质上,它们是编译器的一个子集,它接收源代码文件,并将其转换成其他语言的另一个源代码文件或同一语言的不同版本。输出通常是人类可以理解的。这个输出仍然必须经过编译器或解释器才能在机器上运行。

Transpiler的一些示例

  1. Emscripten:将C/C转换为JavaScript

现在,他们所说的“类似的抽象水平”是什么意思:正如我所说的,它编译/传输到一个源文件,人们可以说汇编语言也是一个源文件,因此gcc也是一个传输器。所以,这个论点就是这个类似的抽象水平的空白。

将语言分为低级、中级和高级的概念是基于它们从机器/架构的实际工作中提供的抽象级别。

汇编等低级语言非常接近处理器体系结构,即针对不同的处理器有不同的指令。当使用C/C/Java/JavaScript时,将所有这些抽象化,提供更多抽象。

因此,transpiler编译成的语言更接近于您在这个抽象中开始使用的语言(或者更接近该语言在中低级-高级语言阶梯中的级别)。

 类似资料:
  • 本文向大家介绍sql server 编译与重编译详解,包括了sql server 编译与重编译详解的使用技巧和注意事项,需要的朋友参考一下 SQLSERVER编译与重编译 编译的含义 当SQLSERVER收到任何一个指令,包括查询(query)、批处理(batch)、存储过程、触发器(trigger) 、预编译指令(prepared statement)和动态SQL语句(dynamic SQL S

  • 这个问题与android系统有关。Dalvik VM使用JIT概念,这意味着当您第一次运行应用程序时,Dalvik VM编译它并加载到RAM中,只要它能留在那里。我理解这个概念。而新的称为ART的虚拟机则使用AOT方法。ART编译应用程序后,你安装它(或当你正在安装它?)。这意味着什么?ART编译的应用程序与已编译的应用程序(如C应用程序)相同,但运行在与其他操作系统分离的独立进程中?谁能更透彻地

  • 本文仅阐述Apache在Unix和类Unix系统中的编译和安装,在Windows中的编译和安装可以参考在Microsoft Windows中使用Apache。其他平台可以参见针对特定平台的说明文档。 像其它许多开源项目一样,Apache使用libtool和autoconf建立编译环境。 如果你只进行很小的版本升级(比如2.2.54→2.2.55),请直接跳转到下面的升级部分。 针对心急者的概述 下

  • 1. YodaOS Universal 如何配置系统和应用 1.1. 目录 1.1.1. 一.YODAOS完整体验 1.1.2. 定制系统和应用 1.1. 目录 YODAOS 完整体验 如何定制化系统和应用 1.1.1. 一.YODAOS完整体验 下载代码 Yodaos使用git作为源代码管理工具,用Repo 命令行工具管理多个git代码仓库,下载代码时需要用户注册成为Rokid 平台开发者。 注

  • 问题内容: 我已经在Scala中编程了一段时间了,我喜欢它,但是令我烦恼的是编译程序所花费的时间。这似乎是一件小事,但是使用Java可以对程序进行一些小的更改,单击netbeans中的运行按钮,然后BOOM就会运行,随着时间的推移,在scala中进行编译似乎会花费大量时间。我听说在许多大型项目中,脚本编写语言变得非常重要,因为需要花费大量的编译时间,而使用Java时却没有看到这种需求。 但是我来自

  • 是否有可能拥有一个Scala Maven项目,并在Scala类中编译时编织AspectJ方面? 我已经能够使加载时编织工作,但到目前为止没有成功的编译时。