Learning a new programming language each month this year was an ambitious goal. I didn't quite make it -- other things got in the way. I did manage to dip my toes into some interesting languages, learn some new things, and find a couple of candidates for diving deeper into.
Here's the final list of languages I learned and mostly-incomplete projects/prototypes built with each:
- Icon - markdown processor
- Go - markdown processor
- Common Lisp - make-like build tool
- Scala - personal finance app
- D - MP3 ID3 tag reader
- Scheme (specifically, Chicken Scheme) - photo sharing website
- Dart - web game
I played with Java, Groovy, and Rust a little bit, but didn't really do anything with them. (Java isn't new to me, though I'm far from "experienced" with it either.)
My favorite of the bunch has to be D, though I did enjoy working with Dart and Scheme.
In the end, though, D seems too familiar -- too similar to the things I know, and Scheme/Lisp aren't really new to me.
I debated between Scala and Haskell (which I played with a little bit last year), and thought about Erlang (which I experimented with a couple of years ago) and decided to make a deep dive into Scala over the next year. Scala offers a paradigm shift like Haskell or Erlang would, it also forces me to learn a new platform and ecosystem, and challenges my decade-plus JVM-hate. Maybe I'll even learn how to be effective with Eclipse.
I hope to record my progress here as I go along, but my track record on hopes-of-more-frequent-blogging isn't great.