35

考虑到下面列出的标准,您会使用 Python、Groovy 还是 Ruby 中的哪一个?

  • 标准(10 项中的重要性,10 项最重要)
  • 丰富的 API/库可用(例如数学、绘图、网络)(9)
  • 能够嵌入桌面 (java/c++) 应用程序 (8)
  • 易于部署 (8)
  • 能够与 DLL/共享库交互 (7)
  • 生成 GUI 的能力 (7)
  • 社区/用户支持 (6)
  • 便携性 (6)
  • 数据库操作 (3)
  • 语言/语义 (2)
4

10 回答 10

33

我认为很难进行客观的比较。我个人更喜欢 Python。为了满足您的一个标准,Python 从一开始就被设计为一种可嵌入的语言。它有一个非常丰富的 C API,并且解释器是模块化的,可以很容易地从 C 调用。如果你的宿主环境是 Java,你应该看看 Jython,它是 Java 环境(VM 和库)内的 Python 实现。

于 2008-11-03T01:44:39.577 回答
28

在与他们三个人一起工作之后,这就是我可以说的:

  • Python

    • 有非常成熟的库
    • 库记录在案
    • 可以在运行时通过 docstrings 从调试器/shell 访问文档
    • 您可以在没有 IDE 的情况下开发代码
  • 红宝石

    • 有一些很棒的库(即使有些没有很好的文档记录)
    • Ruby 的自省机制很棒。它们使编写代码变得非常容易(即使文档不可用)
    • 您可以在没有 IDE 的情况下开发代码
  • 时髦的

    • 您可以从 Java 所提供的一切中受益
    • 语法在某种程度上受到 Ruby 的启发
    • 没有 IDE 很难编写代码。您无法从控制台调试东西(这是您可以在 Python/Ruby 中轻松完成的事情),并且可用的 Groovy 插件有很多工作要做。我使用 Groovy 编写了一些应用程序,随着它们变得越来越大,我很遗憾没有使用 Ruby/Python(调试会更容易)。如果您只从 IDE 开发,Groovy 是一种很酷的语言。
于 2009-09-09T19:33:20.270 回答
24

只是为了搅浑水...

Groovy 让您可以访问 Java。Java 有一组极其丰富的 API/库、应用程序等。

Groovy 是可嵌入的,尽管在 Java 中最简单。

DLL/库(如果您谈论的是非 Groovy/Java)可能会有些问题,尽管有一些方法和一些 API 可以提供帮助。

我做过一些 Python 编程,但由于更熟悉 Java,Groovy 对我来说更容易。

于 2008-11-03T02:06:59.593 回答
10

时髦?我只是把它捡起来;试试这个(在 groovyconsole 里面):

File.metaClass.invokeMethod = { String name, args ->
    System.out.print ("Call to $name intercepted...");
    File.metaClass.getMetaMethod(name, args).invoke(delegate, args);
}

new File("c:/temp").eachFile{
    if (it.isFile()) println it.canonicalPath
}

第一个代码是 AOP。对 File 对象的任何方法的所有调用都将被拦截。不需要额外的工具。这是针对现有的 Java 类动态执行的。

在第二个块中,您删除了 'f' 闭包参数。作为一个参数,它默认为闭包​​上下文可用的内置“it”变量。

这是你得到的:

“调用 isFile 被截获...C:\temp\img.jpg”

等等

于 2009-04-27T04:15:03.403 回答
8

试试 Groovy .. 它有你需要的所有功能。您可以使用现有的 java lib 而不对其类进行任何修改。基本上 .. groovy 是 java++,学习起来更加动态和有趣(就像 ruby​​ 一样)

我不喜欢 ruby​​ 或 python 语法,所以我会把它们放在后面。Groovy 就像 C/C++ 语法,所以我喜欢他,哈哈 :)

于 2008-11-29T00:34:24.383 回答
7

Python 具有所有九个标准。它得分为56。

我确信 Ruby 拥有 Python 所拥有的一切。它似乎有更少的图书馆。所以它得分为51。

我不知道 Groovy 是否具备所有功能。

由于 Python 是 56,而 Ruby 是 51,Python 只是勉强超越了 Ruby。

但是,我认为这种决定仍然可以归结为这九个标准之外的一些主观问题。

于 2008-11-03T02:48:20.180 回答
6

根据您的标准,我会选择 JRuby:

  • 丰富的 API/库可用(例如数学、绘图、网络)(9)

JVM可以访问的所有东西,很多

  • 能够嵌入桌面 (java/c++) 应用程序 (8)

优秀的 Monkeybars框架,可让您在 GUI 设计器中设计一个摆动 GUI,然后使用干净的 ruby​​ 代码将其连接起来

  • 易于部署 (8)

Rawr可以将您的应用程序打包为可执行 jar

  • 能够与 DLL/共享库交互 (7)

Java 轻松共享库,C 共享库通过jna + libffi

  • 生成 GUI 的能力 (7)

摇摆只是工作。不确定使用 QtJambi 有多容易,但绝对有可能。

  • 社区/用户支持 (6)

很多。Ruby 有一个优秀的社区。

  • 便携性 (6)

JVM 工作的任何地方

  • 数据库操作 (3)

所有的 ruby​​ 数据库所有的 java数据库

  • 语言/语义 (2)

这就是 ruby​​ 明显领先于 groovy 和 python 的地方。该语言在早期做出了一些非常漂亮的设计决策,这体现在标准库的一致性和强大功能上。尤其是Blocks,使用起来很有趣。

于 2009-05-27T11:20:23.470 回答
3

这种按功能加分的方式并不是选择编程语言的好方法。你最好选择你最了解的那个。如果您不认识其中任何一个,请尝试一段时间。如果您有一个非常具体的项目,那么也许某些编程语言会更好,但如果您只是有一般偏好,您将永远无法达成共识。

也就是说,Python 非常灵活,它是您列表中最受欢迎的,因此最容易通过搜索解决您遇到的任何类型的问题,所以我推荐 Python。

于 2008-11-03T02:03:04.687 回答
2

珀尔?哎呀。

正如有人观察到的那样,Perl 就像标点符号工厂的大爆炸。如果生成的代码不是自我记录的,那么简洁不是优势。

已经使用 Groovy 完成了一些实用任务,很容易上手。完全访问 Java 库,以及一些很酷的附加功能,例如使用闭包列出目录中的文件:

// process all files printing out full name (. and .. auto excluded)

new File(basedir).eachFile{ f->

    if (f.isFile()) println f.canonicalPath
}
于 2008-11-03T11:01:22.463 回答
0

我知道它不在你的清单上,但至少看看 perl。

  • 丰富的 API/库可以沉船。
  • 运行在比大多数人意识到的更多的系统上。
  • 适用于二进制库。
  • 拥有庞大的社区。
  • 便携性,见上文。
  • 数据库操作:更多方法。(选择你最喜欢的模块)
  • 并且是周围最具表现力/简洁的语言之一。
于 2008-11-03T01:36:34.210 回答