You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Jochen Theodorou (JIRA)" <ji...@apache.org> on 2017/09/25 06:24:00 UTC

[jira] [Commented] (GROOVY-8329) Consider statically typed/compiled as default for Groovy 3.0

    [ https://issues.apache.org/jira/browse/GROOVY-8329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16178588#comment-16178588 ] 

Jochen Theodorou commented on GROOVY-8329:
------------------------------------------

I think we disagree here on so many points...

If Groovy losses Gradle, then because the Gradle project does not want to invest into making a good DSL for Gradle, not because of static typing. Kotlin is doing that for them, adapting language and IDE to fit the needs of Gradle. Groovy does not have the developer resources to do that even remotely on the same scale, or the ability, when it comes to change IntelliJ Idea. You need a whole fulltime working team for that, which they have and we do not.

Let us assume we would do the paradigm shift and make Groovy static first. Then why should we bother with the huge trouble we have to go through to get the dynamic part running? The dynamic part of Groovy is not easy by far. Oh, and the  "everything is an Object" would idea has nothing to do with static or dynamic typing. So that idea would stay. Also staying would be most of the syntax, except thing like foo."$bar"(). Also gone would be all of the MOP. In such a scenario it would only make sense to have some kind of dynamic invocation mode... I think Scala has something like that. So in fact we would throw away a big chunk of Groovy´s runtime as well as a good portion of the helper methods, since most of them depend on the dynamic typing at some point. And in fact we would probably get rid of Closure as well and replace it instead with specific interfaces. This would be the proper course of action in that case in my opinion. But that is not Groovy anymore.


> Consider statically typed/compiled as default for Groovy 3.0
> ------------------------------------------------------------
>
>                 Key: GROOVY-8329
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8329
>             Project: Groovy
>          Issue Type: New Feature
>            Reporter: Endre Stølsvik
>
> Personally, I do not understand why anyone would ever want to drop typing from JVM based languages (or in any other language, for that matter). Thus, I only started using Groovy "for real" when I discovered the @CompileStatic annotation, which really made everything great!
> If I could choose, I'd go for statically typed by default, with @DynamicCompile or somesuch as an annotation I could turn on for methods that uses the XML parsing features etc.
> To me, it seems like more and more people are realizing that statically typed languages is the way to go, notice e.g. TypeScript, Facebook's retrofitting of types onto PHP with Hack, and even PHP's own typing in PHP 7.
> Now with Kotlin joining the fray of JVM-based languages, whose literally first two words on the wepage is "statically typed", getting special support in Spring, and - notably - getting full support in Gradle, I'd say that this applies more than ever. If Groovy "looses Gradle" to Kotlin due to the ability to get a statically typed build script (oh, the joy!), I believe Groovy will have a much harder time attracting new users. Turning Groovy into one of the statically typed JVM languages, instead of hampering users with "everything is an Object"-based runtime resolution, will increase the appeal of the language.
> The 3.0 can be a great point to change this. It could of course be reverted back to previous logic by some -D switch (would need support in IDEs too, I guess), or by sticking some magic "whole-sale annotation" at the top of the source file, or something like this.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)