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力/简洁的语言之一。