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

Giu*_*ico 29 ruby scripting-language interpreted-language definition compiled-language

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

谢谢你,请原谅我

小智 43

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

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

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

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

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

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

  • 现在这是我在SE看到的最自命不凡的答案.他不想让你教他生活,他只是对Ruby有疑问...... (3认同)
  • @Guiseppe:嗯,很少有人使用 Java 来编写脚本,所以人们通常不会将其称为脚本语言。当然,如果某些应用程序确实使用 Java 进行脚本编写,那么 Java 可能确实有资格作为该上下文中的脚本语言。 (2认同)

pea*_*kxu 5

是的。

详细回复:

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

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

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

`<system command>`
Run Code Online (Sandbox Code Playgroud)

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

有关脚本语言的定义,请参见此处