为什么Ruby和Python比Groovy更适合在IDE之外编程?

为什么Ruby和Python比Groovy更适合在IDE之外编程?,python,ruby,groovy,language-comparisons,Python,Ruby,Groovy,Language Comparisons,这主要是指“”中的 是什么让Python和Ruby更容易在IDE之外开发 该链接还提到了控制台中的调试。这到底是什么意思?Python和Ruby通常比大多数JVM语言更容易在IDE之外开发,因为它们需要更少的“开销”。我将主要讨论Python,因为这是我的主要语言 一般来说,Python安装只有一个库源(除非您使用的是virtualenv),整个项目都在文件系统中。无需担心.jar或.class文件——所有内容都是在运行时编译的,.py文件是可分发的 此外,Python比Java更简洁,Groo

这主要是指“”中的

是什么让Python和Ruby更容易在IDE之外开发


该链接还提到了控制台中的调试。这到底是什么意思?

Python和Ruby通常比大多数JVM语言更容易在IDE之外开发,因为它们需要更少的“开销”。我将主要讨论Python,因为这是我的主要语言

一般来说,Python安装只有一个库源(除非您使用的是
virtualenv
),整个项目都在文件系统中。无需担心
.jar
.class
文件——所有内容都是在运行时编译的,
.py
文件是可分发的


此外,Python比Java更简洁,Groovy继承了许多Java语法(尽管它将一些东西抽象掉了)。IDE有助于处理样板文件,减少程序员的工作量——但是没有那么多样板文件的语言不需要这样的帮助。

例如Ruby on Rails包含了一些本来可以由IDE处理的东西,比如生成器和控制台。

我不同意在IDE之外开发groovy比较困难的说法。我已经完成了python和groovy的认真开发,并使用了一点ruby,基本上没有IDE

虽然没有
pdb
风格的调试器,但有一个控制台:groovysh是一个非GUI控制台、命令行应用程序,groovyConsole是一个具有简单语法高亮显示和编辑的GUI。rails和TDD哲学强调使用测试而不是调试器进行开发,我发现如果我有很好的测试覆盖率,我很少(如果有的话)觉得需要使用完整的调试器。这对你是否真的重要取决于你自己的发展风格

Groovy简化了整个
jar
/
类路径。尽管您仍然可以根据需要设置类路径,但让groovy完全管理它要容易得多。Groovy会自动在类路径中的
$Groovy\u HOME/lib
~/.Groovy/lib
中包含JAR。安装库只是在那里复制它。比这更好的是,使用
@Grab
,您可以在脚本顶部声明依赖项,groovy将自动下载您指定的版本,递归地获取其所有依赖项,并设置正确的类路径和类加载器;它甚至可以管理依赖于同一jar的不同版本的两个库。Grails还具有声明性依赖关系

groovy语言本身与ruby或python一样简洁灵活。虽然您可以像编写成熟的Java一样编写groovy,但groovy可以编写成与ruby非常相似的样子


对groovy vs python和ruby的一个合理抱怨是JVM的启动时间仍然非常糟糕。

那些开发起来非常麻烦以至于几乎需要IDE来完成而没有痛苦和痛苦的语言本质上是有缺陷的,IDE只是这些缺陷之上的一个帮手。Python、Perl和Ruby都是直截了当的语言,它们不需要复杂的小发明来解决痛苦的设计错误。@tchrist:你必须维护现有的应用程序,还是只开发新的应用程序?@Andrew,大部分时间我开发新程序,但这仍然需要处理其他人的代码:库和其他东西。我做生物医学文本挖掘,所以有时不得不忍住鼻子用Java弄脏自己。但不要太多:我把UIMA之类的东西留给其他人。但是有很多Perl支持biomed区域,也有相当一部分支持NLP。我仍在努力寻找一种能够很好地处理生物医学文本的词干分析器。斯诺鲍(Snowball)比波特(Porter)好(我认为),但两者都有关于所有经典形态学的问题。但我不确定我是否同意语言本身的简洁性。你一开始说JVM语言有更多的“开销”,但后来却忽略了支持这一说法,除非你在谈论开销时只指“库所在的位置”。此外,Groovy的主要目标之一是消除典型的Java样板,其中包括简洁的代码。Groovy确实很乐意按原样运行大多数Java,但那不是Groovy,那只是在Groovy编译器上运行的Java。Re:JVM启动时间——在我看来,这更多是因为JVM更关注于运行时间更长的应用程序(服务器和桌面),而不是脚本,这也是Python和Ruby更加关注的地方。Grails还包括许多对CLI友好的工具,包括一个显式基于CLI的shell,用于促进创建Grails应用程序。