2011-09-03 113 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