Python vs Groovy vs Ruby? (根据所列标准)

时间:2008-11-03 01:31:50

标签: python ruby scripting groovy

考虑下面列出的标准,您将使用哪种Python,Groovy或Ruby?

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

10 个答案:

答案 0 :(得分:33)

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

答案 1 :(得分:27)

与他们三个人合作过,这就是我能说的:

  • Python

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

    • 有一些很棒的图书馆(尽管有些文件记载很差)
    • Ruby的反思机制很棒。他们使代码编写非常简单(即使文档不可用)
    • 您可以在没有IDE的情况下开发代码
  • <强> Groovy的

    • 您可以从Java提供的所有内容中受益
    • 语法受到Ruby
    • 的启发
    • 没有IDE就很难编写代码。您无法从控制台调试内容(这是您可以轻松地在Python / Ruby中执行的操作),并且可用的Groovy插件有很多工作要做。我使用Groovy编写了一些应用程序,随着它们变大,我后悔没有使用Ruby / Python(调试会更容易)。如果你只是从IDE开发,那么Groovy就是一种很酷的语言。

答案 2 :(得分:24)

只是为了浑水......

Groovy让您可以访问Java。 Java有一组非常丰富的API /库,应用程序等。

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

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

我已经完成了一些Python编程,但是对Java更熟悉,Groovy对我来说更容易。

答案 3 :(得分:10)

Groovy的?我只是把它拿起来;试试这个(在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”

答案 4 :(得分:8)

尝试Groovy ..它具有您需要的所有功能。您可以使用现有的java lib而不对其类进行任何修改。 基本上.. groovy是java ++,学习起来更有活力和乐趣(就像红宝石一样)

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

答案 5 :(得分:7)

Python有九个标准。得分为56。

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

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

由于Python是56而Ruby是51,所以Python几乎没有使用Ruby。

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

答案 6 :(得分:6)

从你的critera中,我选择了JRuby:

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

JVM可以访问的所有内容,即批次

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

优秀的Monkeybars框架,它允许您在GUI设计器中设计swing GUI,然后使用干净的ruby代码将其连接起来

  • 易于部署(8)

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

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

Java共享库,C通过jna + libffi

  • 生成GUI的能力(7)

Swing正常工作。不确定使用QtJambi是多么容易,但这绝对是可能的。

  • 社区/用户支持(6)

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

  • 便携性(6)

JVM无处不在

  • 数据库操作(3)

所有ruby数据库库所有java

  • 语言/语义学(2)

这里的红宝石在groovy和python上取得了明显的领先优势。该语言早期采用了一些非常漂亮的设计决策,这体现在标准库的一致性和强大功能上。特别是Blocks,使用起来很愉快。

答案 7 :(得分:3)

这种按功能添加分数并不是选择编程语言的好方法。你最好选择最了解的人。如果您不知道它们中的任何一个,请尝试一下。如果你有一个非常具体的项目,那么也许一些编程语言会更好,但如果你只是有一般偏好,你将永远不会达成共识。

也就是说,Python非常灵活,它是你列表中最受欢迎的,所以最容易通过搜索来解决你遇到的各种问题,所以我推荐Python。

答案 8 :(得分:2)

的Perl?让人惊讶。

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

使用Groovy执行某些实用程序任务,很容易上手。完全访问Java库,加上一些很酷的添加,比如使用闭包列出目录中的文件:

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

new File(basedir).eachFile{ f->

    if (f.isFile()) println f.canonicalPath
}

答案 9 :(得分:0)

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

  • Api / Libraries的丰富性使船沉没。
  • 运行的系统比大多数人意识到的要多。
  • 适用于二进制库。
  • 拥有庞大的社区。
  • 便携性,见上文。
  • 数据库操作:更多方法。 (选择你最喜欢的模块)
  • 是最具表现力/简洁性的语言之一。