Wandering Thoughts archives

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.)

programming/LearningLanguages written at 23:20:31;


Page tools: See As Normal.
Search:
Login: Password:

This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.