Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby是脚本语言还是解释语言?_Ruby_Definition_Scripting Language_Interpreted Language_Compiled Language - Fatal编程技术网

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

Ruby是脚本语言还是解释语言?,ruby,definition,scripting-language,interpreted-language,compiled-language,Ruby,Definition,Scripting Language,Interpreted Language,Compiled Language,我刚刚注意到在Ruby的wikipedia页面中,这种语言被定义为解释语言。 我知道我的背景中可能缺少一些东西。我一直知道不需要编译器的解释语言和编译语言(需要在程序执行之前编译)之间的区别,但脚本语言的特征是什么? Ruby可以定义为脚本语言吗? 感谢您并原谅我的疏忽术语“脚本语言”非常广泛,它可以包括解释语言和编译语言。尤其是Ruby,可能会根据我们使用的具体实现进行编译或解释——例如,JRuby被编译成字节码,而CRuby(Ruby的参考实现)被解释为是 详细答复: 脚本语言通常用于控制

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


感谢您并原谅我的疏忽

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

详细答复:

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

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

您可以使用反勾符号进行任意系统调用,如下所示

`<system command>`
``
还有许多优秀的Ruby gems,例如和,用于自动化web和本机GUI


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

事情不仅仅是黑白的。至少,它们也有大小、响亮和安静、蓝色和橙色、灰色和灰色、长和短、对和错,等等

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

  • 解释/编译取决于语言的实现,而不是语言(这不仅仅是理论,确实有相当多的语言同时存在解释器和编译器)
  • 有些语言实现(很多,包括大多数Ruby实现)是编译器,但“仅”编译成字节码并解释该字节码
  • 还有一些实现在解释和编译本机代码之间切换(JIT编译器)
你看,现实是一头复杂的野兽;)如上所述,Ruby经常被编译。然后对编译的输出进行解释,至少在某些情况下是这样——还有JIT编译的实现(Rubinius和IIRC JRuby在一段时间后编译为Java字节码)。参考实现作为编译器已经有很长一段时间了,IIRC仍然是。那么Ruby是解释的还是编译的呢?除非定义,否则这两个术语都没有意义;)

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


所以是的,我想人们可以称Ruby为脚本语言。当然,这并不意味着RubyonRails web应用程序只是一个脚本。

那么Java呢?我想我不能把它定义为脚本语言,是真的吗?为什么?Thanks@Guiseppe:嗯,很少有人使用Java编写脚本,所以一般不会称之为脚本语言。当然,如果某个应用程序确实使用Java编写脚本,那么Java在该上下文中可能确实符合脚本语言的条件。他不想让你教他生活,他只是问了一个关于Ruby的问题…可能是