And - I'd like to see if I can (ab)use those languages to improve my experiences with Android.
So far I'm heavily leaning towards Scala. The documentation seems to make more sense to me. It seems powerful to ~no end~. This post now, while being not totally impressed about all things Clojure, ends with an unqualified 'still more usable than Scala', which threw me off.
More data points, please? If the writer is true and makes sense: What's the reason for this comment? Convert me. :)
* Clojure is strongly and dynamically typed. Scala has a complex type system, which from what I understand many Scala developers don't fully understand or utilize it. Clojure doesn't suffer much in performance, however, because you can sprinkle in type hints for performance after the fact wherever it turns out to be necessary.
* Clojure is a Lisp. The benefits of that are a whole other discussion, but homoiconicity and macros are undoubtedly pretty cool.
* Scala is multi-paradigm, Clojure is unabashedly single-paradigm.
* Scala includes the kitchen sink, Clojure is highly opinionated about what it provides. As Brian Hurt says, "It's not what a programming language makes possible, it's what it makes easy." For one example, you can do immutability in Scala, but you're also free to go in and make a hairball of state if you want. Clojure has decided immutability is good, and forces you to manage state in a controlled way.
* Clojure is less complex (in the sense Stu Halloway uses the word in his talk on Simplicity, http://blip.tv/clojure/stuart-halloway-simplicity-ain-t-easy...)
Full disclosure: I'm a huge Clojure fan and author of Practical Clojure, and haven't used Scala on any nontrivial projects, so I'm probably somewhat biased.
"When we say that a language is expressive, we mean that it is easy to use. When we say that a type system is expressive, we mean that it isn't."
- Gilad Bracha
At this point, I have written significant amounts of code in both languages, and I honestly prefer Clojure. Scala is definitely a big step up from Java, and there is a lot to like in the language. Nonetheless, I think that Clojure is a step up from Scala.
There have been a number of times when writing in Scala that I wish I had some of the features of Clojure, macros in particular. Scala provides many neat features that would be implemented as macros in Clojure, but there are some things that can be done as macros that cannot be done in Scala.
Of course, typing is a big issue. I'll have to admit that when writing client code static typing is very nice, but when writing library code dynamic typing makes things easier. Most importantly, Scala suffers from some of the typing problems that are part of the JVM, most notably: type erasure in generics. Scala provides some means to reify generic types, but it is still a pain to work with. I think that Clojure also contains superior polymorphic dispatch capabilities.
In the end, they are both fine languages. I enjoy coding in Scala and Clojure more than C++ or Java. Still, if I have the choice between the two, I'd go for Clojure.
However, my money is on neither. I'm looking forward to Kotlin from Jetbrains: