Comment: Language Wars
Are there too many programming languages? Is it time to put a few to bed? Nikita Ivanov, a member of JSR-107, contributor to Java specifications and founder of GridGain, certainly thinks so.
“Practically no one cares about Groovy,” begins his self-proclaimed “politically incorrect rant” blog blasting Groovy in favour of Scala.
Ivanov argues that both languages will take a “couple of weekends” to get to grips with, and derides anyone who tries to make a programmer believe that Scala syntax is more complicated than Groovy. Although Ivanov admits that a programmer migrating from Scala to Groovy, does have a few extra features and syntax quirks to get to grips with, he claims the learning curve is slight. “If you know Groovy – you already know 90% of Scala.”
He cites Scala's “static typing with best-in-business type inference, highly tuned mix of imperative and functional styles, powerful and done-right generics” as proof that Scala, as a post-functional language is far more advanced than Groovy.
Some of his points are inflammatory, and Ivanov neglects to back them up with specific evidence. He makes the sweeping statement that “Scala is designed by people who have proper academic background, experience and talent in the area of language design – Groovy has never been that way.” An intriguing concept – unfortunately, he doesn't elaborate on it. Perhaps he could have mentioned that Groovy lacks the backing of a big industry player (most of Twitter runs on Scala, and the entire WattzOn platform is built on Scala - both big players in the IT world.)
To Ivanov, Groovy only has one serious advantage over his programming language of choice, and that's its integration with Eclipse, NetBeans and IDEA for Scala. To Ivanov, it's only a matter of time before Scala evolves integration with these platforms – and Groovy loses its advantage.
But, could the heir to the Java throne be neither Groovy, nor Scala, but Groovy++? In response to Ivanov's Scala love-fest, software engineer Chris Wong has posted a blog claiming that the compatible variant of Groovy, Groovy++, is the programming language to watch out for.
Groovy++ introduces the option of static typing with type inferencing. Until Groovy++ came along, Wong assumed that Scala would be the next big player in the programming language wars. But, with Groovy++, Wong now sees a language that can offer “the performance and compile time checking of static typed languages while also offering its concise, expressive syntax and the ability to go dynamic.” To his mind, this gives Groovy++ the advantage over Scala.
Interestingly, Scala, which in Ivanov's eyes shares 90% of its syntax with Groovy, is completely incomprehensible to Wong. “It seems to strive to be gratuitously from Java,” he complains. Meanwhile, he experienced the shift from Java to Groovy as a gentle learning curve. “I learned it easily on the job, simply because it felt like such a natural extension to Java, allowing me to gradually be as Groovy as I wanted to be.” Similarity-to-Java is completely in the eye of the beholder, if these two blog posts are to be believed.
Wong concludes by putting the whole Scala-Groovy-Groovy++ war into perspective, with a simple chart showing the percentage of vacancies for various programmers on internet job seeking website indeed.com. Ruby, Scala and Groovy all lag light years behind Java. “At their current rate, I wouldn't extrapolate their adoption to reach Java's level in a human lifetime,” Wong concludes and, looking at that graph, it is difficult not see the logic to his argument.