【问题标题】:Is Ruby a scripting language or an interpreted language?Ruby 是脚本语言还是解释语言?
【发布时间】:2011-11-09 04:42:01
【问题描述】:

我刚刚注意到,在 Ruby 的维基百科页面中,这种语言被定义为解释型语言。
我知道我的背景中可能缺少一些东西。
我一直知道不需要编译器的解释语言和编译语言(需要在程序执行之前编译)之间的区别,但是什么描述脚本语言?
Ruby 可以定义为脚本语言吗?

谢谢你并原谅我停电

【问题讨论】:

标签: ruby definition scripting-language interpreted-language compiled-language


【解决方案1】:

事情不只是非黑即白。最起码也是有大有小,有大有小,有声有没有,有蓝有橙,有灰有灰,有长有短,有对有错,等等。

解释/编译只是对语言进行分类的一种方式,它完全独立于(在无数其他事物中)您是否将同一种语言称为“脚本语言”。最重要的是,这也是一个错误的分类:

  • 解释/编译取决于语言实现,而不是语言(这不仅仅是理论,确实有不少语言同时存在解释器和编译器)
  • 有些语言实现(其中很多,包括大多数 Ruby 实现)是编译器,但“仅”编译为字节码并解释该字节码。
  • 还有一些实现可以在解释和编译为本机代码之间切换(JIT 编译器)。

您知道,现实是一头复杂的野兽;) 如上所述,Ruby 经常被编译。然后解释该编译的输出,至少在某些情况下是这样 - 还有 JIT 编译的实现(Rubinius 和 IIRC JRuby 在一段时间后编译为 Java 字节码)。参考实现长期以来一直是编译器,IIRC 仍然是。 Ruby 是解释的还是编译的?除非你定义它,否则这两个术语都没有意义;)

但回到问题:“脚本语言”也不是该语言的属性,它取决于该语言的使用方式 - 即该语言是否用于脚本任务。如果您正在寻找定义,“Scripting language”上的 Wikipedia 页面可能会有所帮助(只是不要让他们将您与实现细节的注释混淆,例如脚本通常被解释)。确实有一些程序使用 Ruby 来执行脚本任务,并且无疑有许多独立的 Ruby 程序可能符合脚本的要求(网络抓取、系统管理等)。

所以是的,我想可以将 Ruby 称为脚本语言。当然,这并不意味着 ruby​​ on rails 网络应用程序只是一个脚本。

【讨论】:

  • 那么 Java 呢?我想我不能将它定义为脚本语言,这是真的吗?为什么 ?谢谢
  • @Guiseppe:嗯,很少有人使用 Java 编写脚本,因此通常不会将其称为脚本语言。当然,如果某些应用程序确实使用 Java 编写脚本,那么在该上下文中,Java 可能确实有资格作为脚本语言。
  • 现在这是我在 SE 中看到的最自命不凡的答案。他不想让你教他生活,他只是有一个关于 Ruby 的问题……
【解决方案2】:

是的。

详细回复:

脚本语言通常用于控制通常不是用该语言编写的应用程序。例如,shell 脚本等可以调用任意控制台应用程序。

Ruby 是一种通用的动态语言,经常用于脚本编写。

您可以使用如下所示的反引号进行任意系统调用。

`<system command>`

还有许多出色的 Ruby gem,例如 WatirRAutomation,用于自动化 Web 和原生 GUI。

脚本语言的定义见here

【讨论】:

    【解决方案3】:

    “脚本语言”一词非常广泛,它可以包括解释型和编译型语言。特别是 Ruby,可能会根据我们使用的特定实现来编译或解释 - 例如,JRuby 被编译为字节码,而 CRuby(Ruby 的参考实现)被解释

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 2012-10-02
      • 1970-01-01
      • 2010-10-19
      • 2011-11-28
      • 2015-07-11
      相关资源
      最近更新 更多