2007-10-29
My problem with learning new programming languages
There's any number of programming languages I'd like to learn, ranging from the prosaic like C++, Java, and JavaScript (mostly because it would make it easier to work with various interesting things written in them, like Firefox) to the esoteric favorites like Haskell and Erlang. Unfortunately, I have a problem.
My problem is that I can't learning languages by themselves in the abstract; I can't just sit down and learn one just to know it. I need to be learning them to use them on something, and the something has to feel real and motivating to me. Without a real project to use the language on, my motivation collapses; the whole exercise becomes a purely intellectual pursuit and I turn away to more interesting things.
(It doesn't have to be a project that really cries out for the language,
and it doesn't have to be a big project, although it does have to be
something that I actually want; for example, my first Python code was
a little thing to spit out /etc/lilo.conf
stanzas for the kernels it
found in /boot
. However, this is more difficult in languages that
aren't really suitable for little command line utilities or that really
want to be used in big projects, from which I conclude that I will not
be learning Java any time soon.)
I find this a bit irritating, because I would like to know things like Haskell; they certainly seem interesting, and I keep reading snippets of tutorials (and explanations of monads). But I can only read so much without writing a program, partly to test my understanding, and my motivation for writing programs that won't do anything useful is lacking.
(Haskell is probably going to be a real challenge; most of the stuff I want to do involves file IO, which seems to imply a fairly immediate dive down into the depths of IO monads and so on. Maybe I'll find a relatively pure logic problem to tackle.)