I would like to know what languages my fellow HN readers are currently learning/investigating, in their free time, and the criteria for choosing which language to learn next.
None. I've got enough of them. What I need to get better at is maths, signal processing, and graphics. Chiming in to reject the idea that we should spend our careers churning through languages.
I'm learning Scala for the following three reasons (in increasing order of importance.) These just reflect my current needs, not a prescription for other people, and all three revolve around my need to add a practical language to my repertoire to reduce my usage of C++ and Java.<p>3. I decided to learn a language I could use on the Java platform using Java APIs, rather than on the _nix C platform using C APIs. Partly this is a matter of wanting to escape C's shortcomings; partly it's because I have my eye on a couple of upcoming projects at my company for which the Java libraries will be extremely helpful.<p>2. I want to learn a language that will allow me to use functional idioms and help me learn a more functional style, yet allow me to get the job done even when my functional-fu falls short. I don't want to learn a language that expands my mind but then becomes a fond memory. I hope that for many years to come Scala will be the first language I reach for when I need to get something done on the Java platform.<p>1. I want to master a modern yet practical language with a strong static type system. I don't do much programming that calls for a dynamic language, and I'm pretty satisfied with Python. I write a lot of code in C++; C++ and Java are the only statically typed languages that I have really mastered, and I'm dissatisfied with both of them.<p>Runners-up:<p>Clojure: not statically typed. Maybe my next language after Scala -- I really enjoyed using Common Lisp but hated the library situation.<p>O'Caml: great for the _nix C platform, but not for Java. Also possibly too pure to be a "go-to" language (heh.)
(1) Haskell, because I like functional programming, and this language seems very promising (I first looked at it 10 years ago, but I gave up because the implementations seemed immature. I took another look recently, and I'm amazed by how much it's progressed since then). I especially like the way that laziness and purity enable a concise, stream-processing paradigm through the use of maps, folds, and various combinators.<p>(2) Lua, because it seems like the Scheme of imperative scripting languages, while still being very practical and hackerish. It also has a neat game engine (Love2d) which I'm eager to try out.
Javascript. I've "known" it for 10+ years, but now I think is the time to take it seriously. The web stack is getting dumber as a lot of UI and logic moves to JS inside the browser.<p>Databases got dumber in exactly the same way -- do you know or care if your database has good stored procedure support? Eventually it won't matter much what the server is running.
Haskell. I'm working through <a href="http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours" rel="nofollow">http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_H...</a> which is quite a good tutorial.
Erlang - why? after diving into threading in Java for a recent project, I wanted to see other ways of approaching the same problem - recommendations for other languages with powerful threading solutions?
I'm not learning any language right now, but have learned a fair share over the course of the past few years.<p>My general criteria is not to learn a language that is conceptually similar to something you already know unless there are professional advances to be had there. If all you know is Python, C might be good because it's lower level. Lisp or Haskell or O'Caml might be good because you'll have to program with different paradigms, etc. If I were coming from Python, Ruby wouldn't be my next choice unless I needed it for a job.
Python, Processing & Java. And HTML, CSS etc.....<p>All of them, really, for pleasure. Python because I want to learn to program, Processing for image processing, Java to bypass CS 101 requirements, and HTML & CSS for web design.
Adobe flex. I am doing some data visualization stuff. I thought about using HTML5 drawing syntax first. But because stupid IE still doesn't support it. I give it up. Adobe flex is perfect for the job for the time being.
after being a coder for 3 decades I finally got around to lisp, two things prompted me to do it, first the source code to HN, secondly a discussion with 'dtor' of the glusterfs project, a young indian coder that seems to be pretty gifted. I audited some code there and came upon a macro that took me a long long time to comprehend, he explained it was to give C continuations.<p>One thing let to another and I ended up buying a bunch of books and downloading the mit video lectures.
I haven't learned a new language for a while now. Perl/Java/C never fails me and I'd rather learn a new trick than another way of doing an old trick. I am learning about modern large-scale Internet service design, running hadoop clusters, distributed logging solutions, virtualization, ad-hoc radio networks, radio propagation, sensor fusion, intelligent transportation systems, etc. (for startup and PhD)
Objective-C and the iPhone API. This is probably the first language I learn just in the process of doing something specific (writing apps for iPhone), and not because I really need to learn it for enhance my programming skills. Still it is an interesting language even if designing it today from scratch could lead to something pretty different...
I'm rewriting a card-game-playing environment written in Java. I originally wanted to use one of the Java implementations of Arc, but the low activity level of the forum (and my difficulty installing Rainbow a while back) makes me uneasy, so I'm learning Clojure. Sorry PG.
I continue to learn Haskell. A possible future side project would be a good fit for trying out functional reactive programming.<p>If I ever find myself wanting to program at a low level again, I can see myself learning D.
Potion, _why's experimental language. It's cool to play with something bleeding edge, though something about the language itself makes it feel like Python. Maybe the use of colons to define functions/blocks.
After trying to learn Haskell on and off for a couple of years and miserably failing to be able to write a useful program with it, I'm moving on to Scala which pretty much rules.
Playing with Erlang - I like its approach to errors and parallelization. Plus the idea of a functional language with Prolog-like pattern matching seemed like a cool idea.
erlang. because somehow my install of ejabberd failed and I don't know the first thing about how to troubleshoot it. plus I want to learn more about languages that are good with parallelization.