I like the idea of learning one new programming language every year. This is also mentioned at The Pragmatic Programmer Book. I’m now looking for a new language to learn.
In 2011, I learned F#, my first functional programming language experience. It’s a really nice language, especially if you’re familiar with the .Net class library and the windows development echo system in general. This was really fun, learned the basic concepts and building blocks of functional languages.
The direct impact of F# is, even if I’m not using F#, I’m consciously using the concepts in other languages. For example, Ruby comes with a handful of functional style methods in its Array/Enumerable API, and so does UnderscoreJS. Not just that, I’m always watching for opporunities to reduce side-effects, use delayed execution and pass around blocks when it makes sense. Learning F# has improved my Ruby/JavaScript/C# coding as a direct result. One disclaimer here, I’ve failed to grasp the true concepts of Category Theory and Monads, although I understand how to use these.
I also learned ObjectiveC in 2011 while working on a project with ThoughtWorks. This was fun, apart from the frustrations with the IDE. As a language, I actually liked it quite a lot, the way they handle dynamic message passing while still giving you compile errors looked really innovative to me. I believe there’s a lot of room for me to learn more about ObjectiveC and Cocoa framework in general. Please let me know if there’s a good open source project where I can see professional level ObjectiveC code.
2012 was my year of learning JavaScript. Don’t get me wrong, I’ve been writing JavaScript for some time now, but I think I really learned the language in 2012. Thanks to the influx of micro libraries, as well as their coolness, and seriousness. CoffeeScript made me immensely happy, too. Started writing a JavaScript book with Isa Goksu, too bad we didn’t get far with it :(
I’m yet to pick a new language for 2013. Any suggestion? Or, what are you learning in 2013?