考虑下面列出的标准,您将使用Python,Groovy或Ruby中的哪一个?
标准(10个中的重要性,10个是最重要的)
丰富的API /库(例如数学,绘图,网络)(9)
能够嵌入桌面(java/c ++)应用程序(8)
易于部署(8)
能够与DLL /共享库进行交互(7)
能够生成GUI(7)
社区/用户支持(6)
便携性(6)
数据库操作(3)
语言/语义学(2)
Ned Batcheld.. 33
我认为要进行客观比较是很困难的.我个人更喜欢Python.为了满足您的一个标准,Python从一开始就被设计为可嵌入的语言.它有一个非常丰富的C API,并且解释器是模块化的,以便从C调用.如果Java是您的主机环境,您应该查看Jython,它是Java环境(VM和libs)中的Python实现.
我认为要进行客观比较是很困难的.我个人更喜欢Python.为了满足您的一个标准,Python从一开始就被设计为可嵌入的语言.它有一个非常丰富的C API,并且解释器是模块化的,以便从C调用.如果Java是您的主机环境,您应该查看Jython,它是Java环境(VM和libs)中的Python实现.
与他们三个人一起工作,这就是我所说的:
蟒蛇
有非常成熟的图书馆
图书馆有记录
可以在运行时通过docstrings从调试器/ shell访问文档
你可以在没有IDE的情况下开发代码
红宝石
有一些很棒的图书馆(尽管有些文件很难记录)
Ruby的反思机制很棒.他们使代码编写非常简单(即使文档不可用)
你可以在没有IDE的情况下开发代码
Groovy的
您可以从Java提供的一切中受益
语法有点受Ruby启发
没有IDE就很难编写代码.您无法从控制台调试内容(这是您可以轻松地在Python/Ruby中执行的操作),并且可用的Groovy插件有很多工作要做.我使用Groovy编写了一些应用程序,随着它们变大,我后悔没有使用Ruby/Python(调试会更容易).如果你只是从IDE开发,Groovy是一种很酷的语言.
只是为了浑水......
Groovy允许您访问Java.Java有一组非常丰富的API /库,应用程序等.
Groovy是可嵌入的,尽管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类动态执行的.
在第二个块中,删除'f'闭包参数.作为一个参数,它默认为闭包上下文可用的内置"it"变量.
这是你得到的:
"调用isFile拦截...... C:\ temp\img.jpg"
等等
尝试Groovy ..它具有您需要的所有功能.您可以使用现有的java lib而不对其类进行任何修改.基本上.. groovy是java ++,学习起来更有活力和乐趣(就像红宝石一样)
我不喜欢ruby或python语法,所以我会把它们放在后面.Groovy就像C/C++语法,所以我喜欢他大声笑:)
Python有九个标准.它得分56.
我确信Ruby拥有Python所拥有的一切.它似乎有更少的库.所以它得分51.
我不知道Groovy是否具备所有功能.
由于Python是56而Ruby是51,因此Python几乎没有使用Ruby.
但是,我认为这种决定仍然可以归结为这九个标准之外的一些主观问题.
从你的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)
这是红宝石在常规和蟒蛇方面取得明显领先的地方.该语言早期采用了一些非常漂亮的设计决策,这体现在标准库的一致性和强大功能上.特别是块使用起来很愉快.