考虑下面列出的标准,您将使用哪种Python,Groovy或Ruby?
答案 0 :(得分:33)
我认为要进行客观比较会很困难。我个人更喜欢Python。为了满足您的一个标准,Python从一开始就被设计为可嵌入的语言。它有一个非常丰富的C API,并且解释器是模块化的,以便从C调用。如果Java是您的主机环境,您应该查看Jython,它是Java环境中的Python实现(VM和库)。 / p>
答案 1 :(得分:27)
与他们三个人合作过,这就是我能说的:
Python
<强>红宝石强>
<强> 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:
JVM可以访问的所有内容,即批次
优秀的Monkeybars框架,它允许您在GUI设计器中设计swing GUI,然后使用干净的ruby代码将其连接起来
Rawr可以将您的应用打包为可执行jar
Java共享库,C通过jna + libffi
Swing正常工作。不确定使用QtJambi是多么容易,但这绝对是可能的。
很多。 Ruby拥有一个优秀的社区。 p>
JVM无处不在
所有ruby数据库库和所有java
这里的红宝石在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。