I'm learning Scala for the following three reasons (in increasing order of importance.) These just reflect my current needs, not a prescription for other people, and all three revolve around my need to add a practical language to my repertoire to reduce my usage of C++ and Java.
3. I decided to learn a language I could use on the Java platform using Java APIs, rather than on the _nix C platform using C APIs. Partly this is a matter of wanting to escape C's shortcomings; partly it's because I have my eye on a couple of upcoming projects at my company for which the Java libraries will be extremely helpful.
2. I want to learn a language that will allow me to use functional idioms and help me learn a more functional style, yet allow me to get the job done even when my functional-fu falls short. I don't want to learn a language that expands my mind but then becomes a fond memory. I hope that for many years to come Scala will be the first language I reach for when I need to get something done on the Java platform.
1. I want to master a modern yet practical language with a strong static type system. I don't do much programming that calls for a dynamic language, and I'm pretty satisfied with Python. I write a lot of code in C++; C++ and Java are the only statically typed languages that I have really mastered, and I'm dissatisfied with both of them.
Runners-up:
Clojure: not statically typed. Maybe my next language after Scala -- I really enjoyed using Common Lisp but hated the library situation.
O'Caml: great for the _nix C platform, but not for Java. Also possibly too pure to be a "go-to" language (heh.)
Ocaml isn't too pure. It's just weaker in libraries (and has no threading). It's faster than Scala in my experience, but not by more than 50%.
I like Scala quite a lot so far. The main pleasure of Haskell or Ocaml over Scala is that they can deduce all your types (even function arguments), whereas Scala supports overloading and can't.
I'm learning Scala for the same reasons. I'm also working with my professor on building a scala web framework to do stuff for which Jave EE is usually used. Whatever little I know about Scala, I love.
3. I decided to learn a language I could use on the Java platform using Java APIs, rather than on the _nix C platform using C APIs. Partly this is a matter of wanting to escape C's shortcomings; partly it's because I have my eye on a couple of upcoming projects at my company for which the Java libraries will be extremely helpful.
2. I want to learn a language that will allow me to use functional idioms and help me learn a more functional style, yet allow me to get the job done even when my functional-fu falls short. I don't want to learn a language that expands my mind but then becomes a fond memory. I hope that for many years to come Scala will be the first language I reach for when I need to get something done on the Java platform.
1. I want to master a modern yet practical language with a strong static type system. I don't do much programming that calls for a dynamic language, and I'm pretty satisfied with Python. I write a lot of code in C++; C++ and Java are the only statically typed languages that I have really mastered, and I'm dissatisfied with both of them.
Runners-up:
Clojure: not statically typed. Maybe my next language after Scala -- I really enjoyed using Common Lisp but hated the library situation.
O'Caml: great for the _nix C platform, but not for Java. Also possibly too pure to be a "go-to" language (heh.)