)*+*
How do you learn a new language? The fastest way is when you are forced to do so. But if
you're lucky enough to be learning by choice, you are probably doing it in your spare time and
you won't do that unless you are enjoying yourselfÇso choose an interesting project.
Choosing what you are going to write in your new language is more important than
choosing the language. Choose the language to suit the project or, better, choose both together.
For example, if you want to write something that will look good then don't choose a language
with no support for graphics.
Learn a little about the language before you start and try and find a solution that will play to
the language's new features. If you are using OOP for the first time, for example, try and think
how your project can be split into objects. If you are looking at functional programming, maybe a
numerical project would be a good start (I chose cryptography) (this suggestion does not imply
that functional languages are only useful for numerical code, just that most textbooks seem to
feature numerical examplesÇin my limited experienceÇmaking it easier to start in that
direction).
At the same time, be honest with yourself. Don't be too ambitiousÇdon't pick too difficult a
project and (maybe) don't pick too exotic a language. The second point is debatable. With any
language you will learn something new: it doesn't have to be a huge intellectual leap into the
unknown. You are going to be more productive in a language that has some familiar ideas, and
you can lean on that part of the language to get going. On the other hand, if you enjoy new ideas,
maybe you will be happier with something completely different.
Support is also important. If you intend to post questions to Usenet, is there an appropriate
newsgroup? Personally, I like booksÇthe best impetus for me is finding a good book on
computing that uses a particular language in the examples.
A note about asking for information on newsgroups: people seem to vary widely in how
precisely they talk about languages. At one end of the spectrum there are people who tend to rely
on a "subconscious" (or at least "sub-language") intuition and happily misuse terminology to "get
the idea across". At the other end are people who are very precise. Both, no doubt, will give
conflicting advice on how to learn and, sometimes, apparently conflicting answers to questions.
You have to learn to recognise different styles and read them in the context of the poster.
Finally, don't be afraid to change direction. I've stuck with a few languages much more than
with others. Sometimes I have given up in frustration. But even when you only play around a
little, you learn somethingÇmy argument is not that you must stay with a language a long time
to learn anything, but that the learning continues. Stay for a while and you'll learn something.
Stay longer and you'll learn moreÇthere's no magic moment when you know everything (which
is what makes programming such a rewarding profession).