I like programming languages, and I just couldn’t find a proper excuse to learn them. So I decided to go on and learn them without an excuse.

My first attempt at doing so was via the amazing book by Bruce Tate, “Seven Languages in Seven Weeks” (great read, highly recommended).

After sparking my initial interest in learning programming languages for fun (and ruining my ability to calmly write plain old Java), that book left me with an itch for more. The itch kept on spreading when I came across a blog post “Perlis Languages” by the brilliant Fogus, go on and read it.

As I personally almost never go on and read stuff pointed to in posts, I’ll give a quick recap of that post here.

It starts off with a quote by Alan Perlis:

A language that doesn’t affect the way you think about programming is not worth knowing.

Next, Fogus goes on to explain how one can and should expand one’s views on software development, namely, by learning “Perlis Languages”:

A Perlis Language is a programming language that I believe will shake one’s views on software development to the core.

This is followed by a list of (mostly esoteric) programming languages, with their short descriptions, code samples and links to further information. (You really should read the full post, though.)

And I got this idea – to start learning the languages from that list and document the process here.

So how is it going to work? Well, I’ll randomly select a language from the list and go on and learn it. To show off my newly acquired knowledge, I’ll devise a small project or two to implement using the language. The project (or two) will probably be something for a couple of weeks work, e.g., the sort of projects you may get as homework assignments in CS classes. As the process goes on, I’ll be posting my impressions here.

What’s in it for you, you’ll ask? First off, you’ll get a glimpse into the twisted mind of a budding polyglot – who knows what sort of gray matter you may find there? Other than that, I hope this whole thing might have some educational value, either for people like me who just enjoy learning new languages, or, maybe, for the occasional language designer, who might find a user’s point of view in some way conducive to his or her PL activities.

And now for a short disclaimer:

This is going to be an ongoing side project of mine, so I can’t really guarantee my rate of progress; hopefully I’ll have enough time and will power to keep on going at a relatively constant rate.

The language list is not fixed in stone; I might omit some languages from the original list and maybe add some other languages. It all will be guided by what is most interesting to me at the moment, though don’t expect to see your regular Java.next language here…

In any case, I’m not pretending to be any sort of expert in any of the languages I’m about to learn (duh…). Feedback and constructive criticism are always more than welcome.

Next stop, Joy.