Learning New Languages

by Scott Saad - August 8, 2010

I always enjoy picking up a new programming language. There’s something about it that seems to turn on a different part of the brain that was lying dormant before. It seems to be another outlet for the exploration of creative problem solving. The problems remain the same, yet the approach changes a little bit.

With every new language it takes a while for the brain to adjust to the syntax. Once it does, then things become a bit more natural. As I start to figure out the basics of how certain structures and semantics are represented in the language, I’m able to apply similar techniques to the problem at hand. However, finding a good way to explore this has not always been a pleasant experience.

An effective way of learning a new language is something I’ve struggled with. I’ve always flailed here and there trying to create test projects to learn with. Most of the time I get so caught up in the details of what the project should be that the primary objective of learning the language takes a back seat. This has been very frustrating and counterproductive.

A year ago or so, I stumbled upon Project Euler, a site that has a series of challenging programming problems, many of which are mathematical in nature. This site is an amazing way to try out a new language because it forces one to explore the basic elements of the language, with a focused problem instead of a dreaded test project.

As a side, I’ve found that solving the problems in more than one language really helps bring to surface the differences between the languages. For instance, solving a long hand division problem will usually result in needing to store string representations along the way. If one were to try and use normal floating point operations on a problem like this, it would cause some type of overflow. Doing this in c/c++ can be somewhat a pain, but in python is trivial.

This has been my experience in picking up a new language and I would recommend the method to others if asked.

Discussion, links, and tweets

I'm a software geek living and working in Boulder, Colorado. Follow me on Twitter; you'll dig my tweets if you're into that sort of thing.