If you read my blog or follow me on Twitter (https://twitter.com/liveweird), you’re most likely aware, that I’m totally hooked on Scala (http://www.scala-lang.org/) recently - in short words: because it’s what (IMHO) what Java should be alike: concise, up-to-date with recent trends and with a lot of syntactic sugar (to make your work even more fun). I enjoy Scala that much, that these days, if I’m about to write something, I prefer Scala to C# (and that’s something I would not even consider half a year ago).
What is more, for the last few weeks I participate in Coursera’s Reactive Programming course (https://www.coursera.org/course/reactive) - all the code work is made in Scala and I find it incredibly entertaining.
But recently someone has sent me a very interesting link to a blog post that earnestly criticizes Scala and puts in doubt it’s potential to be widely adopted by the JVM world: http://overwatering.org/blog/2013/12/scala-1-star-would-not-program-again/
I’ve read it carefully and I realized that … actually I do agree with 95% of the statements there. It’s scary, but honestly - one of the fun factors in Scala is that it is so different, that using it makes a serious challenge. It really resembles Perl - thanks to syntactic sugar and assumed conventions you’re able to compact your code to the size not achievable in other languages, but will you be able to read it in 2 weeks? 4 weeks? 6 weeks?
You read code and try to understand it, but there’s only 60% of what’s going to be executed - the rest is not visible (due to conventions and other shortcuts) and that seriously imperils the overall readability (and maintainability) of the code. It’s so cool to have more than 1 syntactic path to do something, but having too many paths may be helluva confusing (take LINQ - people who prefere one of query approaches have problems with reading the other one).
For now, if I had to do some code that has to run on non-Windows environment, my first though would be Scala, but I have serious doubts if I were able to convince my fellow programmers to embrace it.
Will Scala remain some kind of programmers’ sudoku then? Hopefully not, but now (after reading this blog post) I have even more doubts whether creators of Scala have picked the correct direction.