【问题标题】:Where can I compile my ruby code?我在哪里可以编译我的 ruby​​ 代码?
【发布时间】:2016-06-10 23:55:55
【问题描述】:

我在 codecademy 开始使用 ruby​​ 进行编程,但是我在哪里可以编译我的代码来做一个网站? 当我学习 C 语言时,我使用代码块来运行代码。我知道任何文本编辑器都可以运行 HTML 代码。那么红宝石呢?
谢谢。

【问题讨论】:

  • How to compile Ruby?的可能重复
  • 虽然提问者使用了“编译”这个词,但由于还不知道 Ruby 通常是被解释的,这似乎只是一个糟糕的词选择。出于这个原因,我不认为这个问题是提名样本的正确重复。

标签: ruby


【解决方案1】:

我会尝试回答我认为您提出的问题,但我不能 100% 确定。

Ruby 是一种解释型语言(这是什么意思?现在还不是很多。如果您想更深入地讨论解释型与编译之间的区别或缺乏,请阅读下面 Jorg 的 cmets)。要执行 ruby​​ 代码,您需要安装 ruby​​。幸运的是,这可以在任何主要平台上免费使用。如果您使用的是 unix-y(例如,linux 或 mac),我强烈建议您通过 rvm 或 rbenv 之类的工具安装 ruby​​。如果你在 Windows 上,你可以走 cygwin 路线并假装它是一个 unix-y 环境,或者那里有预建的安装程序。谷歌搜索“安装 ruby​​”应该在搜索结果的顶部或附近有一些可以帮助您的网站。

【讨论】:

  • 没有“解释语言”这样的东西。语言是一组抽象的数学规则和限制。语言不被解释或编译。他们只是。解释和编译是解释器或编译器的特征,而不是语言。每种语言都可以编译,每种语言都可以解释。大多数语言都有编译和解释的实现。大多数现代语言实现实际上都在同一个实现中使用。恰当的例子:所有当前维护的 Ruby 实现都有一个编译器。
  • 虽然您所说的是准确的,但我发现这种区别在大多数情况下是有用的。 Ruby 在其最常见的用法中完全按原样传递给解释器,然后解释器执行代码,而 C 之类的东西在其最常见的用法中首先编译,然后执行生成的二进制文件。虽然这些必须都不是您使用这些语言的方式,但它们是最常见的范例。 OP 可能有一天需要了解您指出的区别,但我认为今天不是那一天。
  • Ruby,在其最常见的用法中,直接按原样传递给编译器,而不是解释器。该编译器的 输出 可能会或可能不会被传递给解释器,但目前没有 Ruby 实现解释 Ruby 代码。 YARV 编译为字节码,然后进行解释。 Rubinius 编译为字节码,然后解释或编译为本机代码。 JIT 模式下的 JRuby 编译为 JRuby IR,然后解释或进一步编译为 JVM 字节码。 AOT 模式下的 JRuby 直接编译为 JVM 字节码,就像javac 一样完全。如果 Ruby 是一种解释型语言,那么 Java 也是。
  • 我发现这种区别完全没有用。将解释器与程序一起打包到单个可执行文件中与编译没有区别。直接执行其输出的快速编译器与解释器没有区别。 Futamura Projections 允许您自动将解释器转换为编译器。 PyPy 自动从解释器生成 JIT 编译器。 V8 一直是纯编译器,但它的行为与解释器没有区别。 Scala 和 GHC Haskell REPL 基于编译器,每个人都认为……
  • ……他们是口译员。解释器和编译器做几乎相同的事情:解释器将代码读入缓冲区,将缓冲区词法分析为令牌流,将令牌流解析为解析树,执行语义分析并将其转换为抽象语法树,执行类型推断(如果适用)、类型检查、重载解析等,执行优化,然后遍历树,对于它遇到的每个节点,它执行一段代码来实现该代码的含义。 唯一编译器做的不同的事情是替换单词“执行”......
猜你喜欢
  • 2018-10-05
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 2023-03-10
  • 2015-03-23
相关资源
最近更新 更多