Ruby是脚本语言还是解释语言?

时间:2011-09-02 13:32:56

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

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

3 个答案:

答案 0 :(得分:43)

事情不仅仅是黑与白。至少,它们既大又小,又大又安静,蓝色和橙色,灰色和灰色,长短,对与错等。

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

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

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

但回到问题:“脚本语言”也不是语言的属性,它取决于语言的使用方式 - 即语言是否用于编写脚本任务。如果您正在寻找定义,那么“Scripting language”上的维基百科页面可能会有所帮助(只是不要让他们将实际细节上的注释混淆,例如通常会解释脚本)。确实有一些程序使用Ruby来执行脚本任务,毫无疑问,有许多独立的Ruby程序可能有资格作为脚本(网页抓取,系统管理等)。

所以,我想可以将Ruby称为脚本语言。当然,这并不意味着rails web app上的ruby只是一个脚本。

答案 1 :(得分:4)

详细回复:

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

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

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

`<system command>`

还有许多优秀的Ruby宝石,例如WatirRAutomation,用于自动化Web和本机GUI。

有关脚本语言的定义,请参阅here

答案 2 :(得分:3)

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