Python vs Groovy与Ruby? (根据问题列出的标准)

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

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

我认为要进行客观的比较是困难的。 我个人比较喜欢Python。 为了解决您的一个标准,Python从一开始就被devise成一种可embedded的语言。 它有一个非常丰富的C API,并且解释器被模块化以便于从C调用。如果Java是您的宿主环境,您应该查看Jython,它是Java环境(VM和libs)内部的一个Python实现。

和他们三个人一起工作,我可以这样说:

  • python

    • 有非常成熟的图书馆
    • 库被logging
    • 文档可以在运行时通过docstrings从debugging器/ shell中访问
    • 您可以在没有IDE的情况下开发代码
  • ruby

    • 有一些伟大的图书馆(即使有些logging不完善)
    • Ruby的反省机制很好。 他们使编写代码非常容易(即使文档不可用)
    • 您可以在没有IDE的情况下开发代码
  • Groovy的

    • 您可以从Java所提供的一切中受益
    • 语法有点受Ruby启发
    • 没有IDE就很难编写代码。 你没有办法从你的控制台debugging东西(这是你可以很容易地在Python / Ruby中做的事情),可用的Groovy插件有很多赶上的事情。 我使用Groovy编写了一些应用程序,并且随着它们变得更大,我很遗憾没有使用Ruby / Python(debugging将会更容易)。 如果你只能从IDE开发,Groovy是一个很酷的语言。

只是为了浑水

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

Groovy是可embedded的,尽pipe在Java中最简单。

DLLs / Libraries(如果你正在谈论非Groovy / Java)可能有些问题,虽然有方法和一些API来帮助。

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

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类dynamic执行的。

在第二个块中,删除'f'闭包参数。 只是一个参数,它默认为闭合上下文可用的内置“it”variables。

这是你得到的:

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

等等

尝试Groovy ..它具有你需要的所有function。 您可以使用现有的java lib,而不需要对其类进行任何修改。 基本上.. groovy是Java + +,它是更加dynamic和有趣的学习(就像ruby)

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

Python有全部九个标准。 它得分56。

我相信Ruby拥有Python的一切。 它似乎有更less的图书馆。 所以它得了51。

我不知道Groovy是否拥有所有function。

由于Python是56,而Ruby是51,所以Python几乎没有任何Ruby的优势。

不过,我认为这样的决定仍然可以归结为九项标准以外的一些主观性问题。

从你的标准,我会selectJRuby:

  • 可用的API /库的丰富性(例如math,绘图,networking)(9)

JVM可以访问的所有内容都是很多的

  • embedded桌面(java / c ++)应用程序的能力(8)

优秀的Monkeybars框架,可让您在GUIdevise器中devise一个挥杆GUI,然后使用干净的ruby代码进行连线

  • 易于部署(8)

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

  • 能够与DLL /共享库连接(7)

Java通过jna + libffi轻松共享库

  • 能够生成GUI(7)

摆动只是工作。 不知道使用QtJambi是多么容易,但它绝对有可能。

  • 社区/用户支持(6)

许多。 Ruby有一个很好的社区。

  • 便携性(6)

JVM工作的地方

  • 数据库操作(3)

所有的Ruby数据库库所有的Java的

  • 语言/语义(2)

这里是ruby和python的明确领先地位。 这个语言早就有了一些非常漂亮的devise决定,这显示出标准库的一致性和威力。 块 ,特别是,使用它是一个喜悦。

这种按function添加分数并不是select编程语言的好方法。 你最好select你最了解的人。 如果你不了解他们中的任何一个,试一试。 如果你有一个真正的具体项目,那么也许一些编程语言会更好,但如果你只是有一般的喜好,你永远不会达成共识。

也就是说,Python非常灵活,它是列表中最受欢迎的,所以最简单的方法就是通过search来解决各种各样的问题,所以我推荐Python。

Perl的? 让人惊讶。

正如有人所观察到的,Perl就像是一个标点工厂的大爆炸。 如果由此产生的代码不是自我logging,则简洁性不是一个好处。

已经使用Groovy进行一些实用工作,容易上手。 完全访问Java库,加上一些很酷的插件,如使用闭包将文件列在目录中:

 // process all files printing out full name (. and .. auto excluded) new File(basedir).eachFile{ f-> if (f.isFile()) println f.canonicalPath } 

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

  • Api /图书馆沉没船的丰富性。
  • 运行在比大多数人意识到的更多的系统上。
  • 适用于二进制库。
  • 有一个巨大的社区。
  • 可移植性,见上文。
  • 数据库操作:更多的方法来做到这一点。 (select你喜欢的模块)
  • 而且是最具performance力/简洁的语言之一。