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.
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.
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.
Resources:
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 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 hope I'll remember in December 2012 to ask myself "well, how far did I get in Clojure/C/Haskell?"
- I wrote my first C++ app using Qt
- 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.
- Maybe learn Java for Android.
Mostly though, I just drastically extended my capability with the languages I already know.
Gonna deepen my Clojure and C knowledge, play with D, play with Haskell, Erlang and some Lua next year.
But I have studied language itself more than a specific language.
Cheers, www.nkavvadias.com/hercules/
C# is good, IIS has a ways to go imho.