2011-09-03 214 views
2

是Groovy中的1.x(从http://groovy.codehaus.org)和Groovy ++(从http://code.google.com/p/groovypptest两种不同的语言还是他们的只是一种语言两个部分组成?为什么或者为什么不?Groovy和Groovy ++是两种语言还是一种语言?

+0

可能重复的[Groovy和Groovy ++,它们是不同的吗?](http://stackoverflow.com/questions/5441482/groovy-and-groovy-are-they-different) –

+0

@Andrew无论是“Groovy”还是“ Groovy ++“是不同的,不管它们是一种语言还是两种语言,都是两个不同的问题。我已经看到了他们是两种不同语言的争论,并希望能够引出人们为什么会在答案中以某种方式思考的原因。 –

+0

我的推理是,他们是否是不同语言而不是相同语言的口味的问题是学术问题(消极意义上的)。对于这个问题的答案如何提供更多的理解,而不是我已链接到的副本上已经提供的答案?更根本的是,你真的想找出什么? –

回答

3

您的问题的答案在Groovy ++网站上提供。这是您链接到的页面上的第二句话!

Groovy ++是Groovy编程语言的静态类型扩展。

的Groovy ++的一个扩展的Groovy。它建立在Groovy之上,在一些或所有类中添加了真正的静态类型。目标是性能和其他改进。再次,您链接到的页面有完整的描述。最近,Groovy确实提高了它的性能,并且随着Java 7的增加,性能可能很快会像Groovy ++/Java一样快(差别几乎可以忽略不计)。

+0

因为这个问题可能会有不同的意见(和原因),所以我会留下这个答案,以鼓励其他答案。 –

+0

您写道:“最近,Groovy的性能得到了很大的提升,而且随着Java 7的invokeDynamic的增加,性能可能几乎和Groovy ++/Java一样快(差别几乎可以忽略不计)”。 Groovy尚未使用Java 7的invokeDynamic,因此与Java和Groovy ++相比,它的性能仍然很低,因为这些统计信息显示为:http://code.google.com/p/groovypptest/wiki/Performance –

+0

您是对的。最近有关于invokeDynamic的好处的讨论,但尚未实现。 Groovy用户组和我相信在StackOverflow上讨论invokeDynamic的好处的其他问题。我想是准确的,我应该写* *性能可能**很快**几乎一样快...... * – OverZealous

1

从软件架构的角度来看,Groovy ++可能是Groovy的扩展。

但如果你看看目前的语言水平:如果你使用动态方法invokation和注释是类@Typed会发生什么?编译器会抱怨未知的方法。

我认为Groovy ++是一种新语言,因为@Typed带注释的Groovy类不允许动态调用,如未注释的Groovy类。它改变了你的代码的语义。 Groovy ++是Groovy的一个子集。

+0

子集?通过@Typed **注释的类是否允许大多数动态调用。** 允许大部分动态调用。 Groovy ++只是试图在编译时将它们转换为静态类型。无论如何,您可以使用**每个** Groovy与@Typed(TypePolicy.MIXED)进行比较。 – uhbif19

0

正式Groovy ++只是Groovy库。 Groovy ++甚至没有任何特殊的语法并使用Java注释。

但事实上Groovy ++是Groovy方言(当然不是新语言)。 Groovy ++禁止一些Groovy libretys(正如我所理解的,由于良好的代码风格)。

但是,Groovy的++提供了许多语义扩展,如非常复杂的类型推理系统,特点,扩展方法,函数式编程库等

正因为如此,我认为Groovy的+ +不只是的”子集Groovy“,正如你所说的。

+0

如果Groovy ++是一种Groovy方言,因为它没有额外的语法,这与Java如何与Groovy相关? Java是Groovy的雏形吗?我认为一种语言不能只归结为语法。你必须考虑sematics,sematic使Groovy和Groovy ++有所不同。 – Peter