How Books Shape My Appreciation of Programming Languages
This morning, I read this funny tweet from @carina:
When I want to learn a new programming language, I read a book covering it in paralllel of writing exploratory code. This funny tweet makes me wonder how much the first book I read on a language shapes my thoughts on it.
2nd example: Ruby. I learnt Ruby by reading the pickaxe book and did not find the language compelling. I thought it was a good scripting language, more readable than Perl, but nothing really stood out. Then I read Why's (poignant) Guide to Ruby and was blown away: I better understood Ruby mindset, loved it and started to write some non-trivial code1.
I am currently "evaluating" two languages: Clojure and Scala. I started with Clojure and read Programming Clojure by Stuart Halloway. I really enjoyed the book (I plan to review it in a future entry), its examples are relevant and well-thought and it gives a good insight to understand Clojure mindset. I have started to write some pet projects with Clojure and really enjoy the experience.
Programming Scala is a good book to learn Scala syntax, etc. but I do not have a better grasp on Scala mindset after reading it. Anybody interested in Scala should read it but I can not say that it helped me grasp what makes Scala so great.
I was teased enough reading Programming Clojure to enthusiastically dive deep into Clojure. The main reason is, of course, the Clojure language itself but a big kudos goes to Stuart and his book which made me wanting to learn more.
This is not a "Scala Vs. Clojure" argument. I plan to add both to my toolset eventually but, in the short term, I will focus on Clojure when I need a functional/concurrent programming language.
This is not specific to Scala, there are other languages that leave me cold. Python is a fine language but it does not appeal to me2., I prefer Ruby for similar tasks but I can't objectively explain why it is the case.
- jmx4r meta code comes straight from Why's dwenthy.rb. Thank again, Why, for all your contributions. ↩
- Reading Dive Into Python 3 will perhaps change my mind... ↩