Recommendation re. next JVM language
Which would you recommend to focus on? I'd like to learn new thing, but hoping to enrich my tool belt with something useful and valuable in job market in the future.
Which would you recommend to focus on? I'd like to learn new thing, but hoping to enrich my tool belt with something useful and valuable in job market in the future.
I'm also a fan of the Pragmatic Programmer and my lifetime language count is at 15. A few years ago I started using Groovy and haven't looked back. Very low ceremony language that gets rid of a ton of Java boilerplate. Borrows idioms/semantics from Ruby and Python, esp. list processing (collect, map, find/findAll, etc.), making those languages easier to learn. There's good library support, even outside of Grails, but Grails plugins are a big win. And assuming you want to be on the JVM to interact with other Java libs, Groovy makes this trivial.
I also love the optional static typing and compilation, which greatly improves performance.
I usually recommend people look at the style guide (http://www.groovy-lang.org/style-guide.html) and the GDK (http://www.groovy-lang.org/groovy-dev-kit.html). Pretty short reads that get you up to speed on much of the functionality quickly. If you like what you see, keep going.
I haven't felt motivated to learn anything new since this meets my needs so well, but if it had better library/framework support I'd give Clojure a shot. I enjoyed Lisp, but didn't use it outside the classroom except for Emacs. Probably learn it with SICP.
"Useful" and "valuable in job market" might not overlap too much.
The small subset of Groovy used in Gradle build files and for quick scripts manipulating Java class files is both useful and valuable, but it's pointless progressing beyond that initial stage. Scala might have peaked in uptake so may not be so valuable, but if you already know Java, it could be useful to learn and practise its functional aspects as a halfway step towards a full funcitonal language like Haskell which is very useful to know.
It's a decent language, I used it in a port of about 10k LoC of Coffeescript Node.js code we had at the end of last year, and it's fit our use case pretty well since it has good support for coffeescript idioms.
But it's not very different. For me that was a selling point, but it's not super widely used nor will it teach you a lot (unless you've never worked with the JVM, in which case you will learn about the JVM with some nicer syntax than Java).
Working with it for over two years and it's great!
Clojure.
(One word
(Clojure))
FTFY