I thought about doing a poll, but I think it'd be more interesting to see what people learned and why (or perhaps not learned and why). This year I can't say I've "learned" a language although I have dabbled in Erlang, Clojure, and Haskell.
I learned Prolog and logic and constraint programming in general. Not only did I learn the Prolog language and some of it's dialects for constraint programming and fuzzy logic as a part of a logic programming course, I also wrote an interpreter for a Prolog-like programming language in Haskell as a part of an AI course.
Prolog and Logic programming in general are really worth learning. They will definitely widen your horizons when it comes to programming. Implementing a logic programming system will also teach some basic pattern matching and unification algorithms and applying them.
I learnt Python this year. I went from being a fulltime LAMP employee to contracting in Python.
In May I started spending a few hours every night after the gym working on Django apps, mostly re-building my blog and just fell in love with everything Pythonic.
In August I started applying for Python contracts around London and one came through in about three weeks. I've since managed to only be out of work eight days since the beginning of September. I've done well enough to take six months off and travel around Asia next year.
I'm really glad I did this as I was unhappy being an employee and LAMP coding felt like I was untangling other people's piles of cables all the time.
I played with Haskell, to the point of being able to read and understand larger chunks of Haskell code - but I haven't written anything of note in it yet. Not sure I ever will, either. I started playing with it due to git-annex (which was written in Haskell, and that triggered the interest) and the LYAH book (which is beyond awesome, by the way). Coming from an OO/imperative background, functional programming seemed interesting, and even though I didn't end up using Haskell, the tricks and ideas I borrowed did have a huge impact on me.
The other language I played a lot with, and ended up using a lot this year is Clojure. The main reason I started learning it is because its not only a LISP, it's a mostly functional, yet, practical language, whose concurrency and paralellism support is unparalelled. Being a JVM language, with great interoperability with Java also means that I can use existing Java libraries. All in all, it had great properties, and a syntax I was already somewhat familiar with (being an Emacs user for the past 12 years or so did expose me to at least some lisp, after all!), so my next few projects, which will likely see the light of day in early 2012, will be written in Clojure.
I also learned a bit about sparc assembly, because I had to, and as much as I didn't want to, I learned to read PHP a little bit better than I used to. I'm not exactly proud of that, but nevertheless, that's what happened.
I've learned JS, after being very reluctant to it for a long while, and I gladly found out it's actually a very interesting and missunderstood language!
I'm in the process of learning Python. I don't know the internals as deeply as I'd like, but I've used it superficially pretty effectively. It has pretty much replaced Perl for me, but there's still some things about it that annoy me. However it's easy to use, and I'm happy I started the ball rolling on it.
I don't know if I really learned a "new" language this year (i.e. one I had never touched before), but I did spend a lot of time on improving my understanding of some languages which were more important to me, and learning some new frameworks and libraries.
In particular, I spent a lot of time digging into OpenMP and MPI programming in Fortran and C, and getting a better understanding of SciPy and NumPy. (If you hadn't guessed, I work in HPC. :-) ) I also worked on a couple of webapps using Bottle (Python) and Dancer (Perl), which were new frameworks to me.
I've learned/am learning Python for about a year now mostly because I've always worked with C type languages, except Pascal and (TI) Basic long time ago, and wanted to try something different. It's so much fun to program with it, I'm having some trouble wanting to use anything else.
I've also played with OCaml and R, not to the extent of actually understanding them, and learned a fair (i guess) amount of Octave by doing ml-class problems.
I think actually learning R may be on the table next due some dabbling in machine learning.
I learned Clojure this year, but I don't think I have finished learning it. So my plan for next year is to study on it until I am comfortable enough with it (which would be: good enough to make some money from something built in Clojure) -right now I am having a look at Seesaw to builf GUI's in Clojure, I am quite impressed!
Then I will go for some low-level C, and after that Haskell probably.
I hope I'll remember in December 2012 to ask myself "well, how far did I get in Clojure/C/Haskell?"
- I tried getting into Django and RoR, coming from a PHP background. Unfortunately, I haven't yet had a chance to code anything worthwhile in either Python or Ruby.
My goals in 2012:
- Create a non-trivial Ruby or Python app. Still haven't chosen between the two. Ruby currently seems more popular but Python is used quite a bit in my company and for engineering applications in general.
- Program an HTML5/JS game, eventually using GameJS.
This year...I learned SAS Macro Programming to automate roughly twelve analyst jobs (including my own), a whole bunch of SQL (for the new job that replaced the automated one), some basic common lisp for fun (up to writing a Sudoku solver in ~150 LoC), and have just started on Clojure (because I love lisp, but want to be able to actually use it).
Coming from a Java and Grails background, I debuted as a Rails developer this year and was very impressed by Ruby and the framework too. Also tried some basic Clojure, solved most of the Clojure koans and solved 48 problems (so far) on 4Clojure.com ... I'd love to learn more and build something with it on 2012.
Common Lisp, although I started learning it last year. I don't know if it counts, but I learned SQL and I’m currently studying relational theory in more depth. I also had to take a course on Prolog, but I'd be bullshiting you all if I said I knew prolog, I know enough of it to write factorial and reverse lists.
Wouldn't consider it a new language, but after all the back-and-forth articles on HN about CoffeeScript, this year I really spent some time learning the fundamentals of it.
Mostly though, I just drastically extended my capability with the languages I already know.
I learned Ruby. I've used Grails a lot on the past but it's to heavy for my new projects. I decided to take a look at Sinatra and found out that Rails was actually the perfect fits for my needs. I also learned Sass and Coffeescript.
I learned Verilog at my summer job, and discovered that FPGAs are freaking awesome.
(I also learned Perl and Python there, neither of which are awesome. Abandon hope all ye who enter the NetFPGA toolchain!)
I learnt Ruby this year, because I read Why's Poignant Guide to Ruby and it made me really excited about it's simplicity and readability. I used it to build Hackerbuddy.com.
haskell! cannot say i master it, but i build a little something (https://github.com/cies/thehall), and certainly experienced the beauty of it. it was quite a painful experience coming from the OO continent, but then: no pain, no gain -- right?
Prolog and Logic programming in general are really worth learning. They will definitely widen your horizons when it comes to programming. Implementing a logic programming system will also teach some basic pattern matching and unification algorithms and applying them.