Ask HN: How did you learn Scala? And are you finding it useful?

10 points by irahul ↗ HN
I am taking a break from reading "Programming in Scala" http://www.artima.com/shop/programming_in_scala_2ed Man, that's a huge book, and scala is one kitchen-sink of a language. I would wager it's bigger than C++(quite a feat), but smaller than Racket(not racket core but the myriad of language modes which Racket has).

So, far I didn't have a a-ha moment. May be that's because I already knew C++(haven't programmed in C++ for some time but used to), Java(used to do heavy Java), F#(have a beginner level grasp), and Scala seems to mix and mash ideas from these 3.

So my questions is:

1. How did you learn Scala? Book? Which book? Please don't point out that I need to do a project(many projects actually) to grasp any language. I am asking about the groundwork needed for tackling a project.

2. Did you have an "a-ha" moment while learning Scala? If yes, what was it? If no, did it not meet your expectations, or you were expecting no "a-ha" moments all along?

3. Are you using it? For what? Compared to your earlier choices, how is it faring?

4. How about tooling? I am using vim for now. I tried searching for an omnicomplete plugin, found a couple of links which required some housekeeping to get it running. Dropped them for now.

2 comments

[ 3.7 ms ] story [ 17.3 ms ] thread
1. Primarily through the same book as you are reading. If you are already familiar with Java and the functional paradigm, the book will primarily help you see those concepts in Scala.

2. Scala is a pretty complex language. There are many ways to do the same thing. While working in a team, this become slightly problematic. One thing I learned is that you can get significant boost in productivity by just using a fraction of the language (when compared to say Java).

3. Overall, I am pretty pleased. The compiler is VERY slow though. It's bearable on a SSD.

4. Tooling is a problem. However, Scala plugin on IntelliJ is pretty good, though not as complete as Java. For e.g. Scala allows method names like `method name in a backtick` but IntelliJ (when I last tried it) could not allow you to rename those method names.