1,814 karma · joined December 1, 2009
Perhaps that history could still collapse into existence in stages, as subsequent observations of it became more detailed. The first observer would see far-off galaxies as small white dots in the sky, but not the composition and interaction of each, so perhaps those aspects don't decohere until later observers see more using telescopes.
And not only history but also laws of physics could come into existence in this way. If earthlings are the only observers in the Universe, perhaps dark matter holding galaxies in a circular shape is a law of physics which only came into existence when observers on Earth could start seeing inside other galaxies.
Apache Groovy fluctuates on TIOBE a lot. Six months ago it was at the same 50-ish position as Clojure, which is its usual ranking. It's shot up only in the past 6 months, which has also happened a lot in the past and is always followed by a sudden fall -- perhaps someone's gaming the search engine rankings. On Redmonk, Groovy and Clojure have ranked equal-ish for a long time. In the CloudFoundry report, Groovy is at the same very low rank as Others which would include Clojure if present.
So Groovy and Clojure are at the same ranking in all rankings I've looked at.
The operative word is here slow. Software is taken to the ASL by its backers so they can extract as much benefit as possible for as long as possible. They get an ASL Vice-Presidency position which they tout on their CV's. No upgrades to new major versions, just the current version milked via consulting and conferences.
(1) Announce the next major version to be far off into the future, and say it will be as backwards compatible as possible to keep developers supporting the old version, e.g. Go 1->2.
(2) Build next version to be a little different to current version, provide no facility for interoperating between versions, then expect developers to switch over because of the branding, e.g. Python 2->3.
(3) Announce next version to be far off into the future, and say it will be a totally different language and expect developers to switch because of the branding, e.g. Perl 5->6.
(4) Don't announce or build a new major version, and keep profiting from developers using the current version for as long as possible, e.g. Java 1.x.
(5) Announce next version to be very soon, but delay it for as long as possible with unofficial roadblocks and keep profiting from developers using the old version for as long as possible, e.g. Apache Groovy 2->3.
That's because many of the people who used Grails to build a website didn't intend sticking around to fix the bugs or maintain it -- they just wanted to get paid and move on to hawking themselves as experts in the next fashionable technology. Others chose Grails because they saw they could introduce loads of technical debt thus giving themselves an opportunity to charge a high hourly rate later on.
> I won't be making the Groovy mistake again any time soon
Oh, so you didn't choose Grails so you could skim an agent's fee from sourcing these people? Many did.
XML
> or Gradle?
Apache Groovy
1. Apache Groovy gave people closures and builders on the JVM but at the cost of static type checking, and developers happily embraced it.
2. Then Scala came along and showed you could have closures without losing the static type checking, so many developers moved there instead.
3. Then Clojure came and brought closures to the JVM and lost the syntax, but no-one embraced it.
4. Then Kotlin came and showed you could have both closures and builders on the JVM without losing the static typing, and it's now everyone's favorite.
5. Finally, Java bolted on closures and Groovy and Clojure bolted on static typing annotations, but who's using them?
> QQ messenger – already had over 750 million monthly active users by the time WeChat launched. A user could port her entire QQ social graph to WeChat by just logging in with her QQ ID.
It sounds like WeChat is really just a renamed QQ of sorts. So any adoption comparison of messenging app uptake in other countries with that of WeChat in China should use the QQ launch of 1999, which makes WeChat's rise to ubiquity far less impressive.
You can use Apache Groovy for just the glue code and Gradle build scripts, and use a statically-typed language like Java, Kotlin, or Scala for the actual system you're building -- that's what most programmers do.
> Sometimes I think I should just use Kotlin, but then I would miss the ability to drop seamlessly into dynamic mode
Have you considered Clojure for this use case? That might alleviate your problems with using Kotlin and Scala, without having to resort to a single-target language like Apache Groovy. After all, unlike what Clojure, Kotlin, and Scala all offer now, we're never going to see an edition of Groovy that targets Javascript, Android, or native CPU.
Of course, no-one actually thinks of C# as being a dynamically typed language despite its dynamic keyword, nor does anyone think of Apache Groovy as being a statically typed language despite its @CompileStatic annotation. In the everyday world, C# is used for building performant systems and Groovy is used for glue code and build scripts.
Languages tend to go both ways nowadays. Go first shipped with both static typing (though without generics except for builtin datatypes) and dynamic typing (though using the wordy interface{} marker).
I wouldn't trust Mobike to be more about the bike than O-bike was, though. A few months after joining Mobike in China earlier this year, they decreased the default scale on the location map in their app when you first open it. Within a few months, the usual number of nearby bikes had noticeably decreased, but this was obscured in the app map because of the smaller scaling. It seems like they changed the app map scaling because they were planning the decrease in bikes in the local area. Perhaps they had collected enough deposits in this district, and moved the bikes in bulk to another district of the city with fewer signups to make it look like bikes were always available there, thus encouraging people there to pay deposits.
> Scots never incorporated all that Norman stuff
So wouldn't that mean these 20 Norman words from your English-language comment above:
> enjoy, accent, difference, language, dialect, army, navy, insist, separate, nation, article, mention, real, study, master, local, pronounce, point, claim, apparent
wouldn't exist in Scots? That's a language, not a dialect.
You wrote elsewhere that
> I won't miss Grails because I think that, a bit like Gradle, it is an antipattern use of Groovy - needlessly applying its dynamic features where they are not even required
Groovy was designed as a dynamic language to complement Java. Its static compilation was tacked on much later, whereas Kotlin and Scala, like Java, were designed to be statically typed from the ground up, and they, unlike Groovy, also run on other platforms besides the JVM. If you're not going to use Groovy's dynamic features, you might as well use Java, Kotlin, or Scala.
Grails 3 is built on Boot but virtually no-one uses it. Websites using Grails have largely remained with version 2 and no-one's starting new projects in version 3, so I doubt the Grails backers will even bother to add Java 9+ support to Grails 3.
The Apache Groovy backers also seem to have given up on releasing a version 3. A few months ago, they pulled preview support for version 3 features from the upcoming Groovy 2.6. Since then, Groovy 3 has been stuck on permanent alpha version, with no-one in their project management committee showing any interest in moving it forward.