Learning Languages

I needed a new side-project, something to keep me occupied when I just couldn’t work on Project X any longer for the day. So on the spur of the moment, I decided to learn Python.

(Why Python? I’ve heard good things about it. I can use it as a scripting language, which is something that my C/C++ focus has been lacking, and it’s a much better fit for me than the Bash shell language. And it’s named after the Monty Python comedy group, so there’s lots of room for subtle in-jokes… spam and eggs, anyone? 😉 )

While I’m definitely still a newbie at Python, I immediately noticed that my C and C++ background gave me a distinct leg up in understanding the design of Python. I could see the reasons why certain design choices had been made, and the mechanisms behind many of Python’s features. If I had learned Python first, then tried to move to C or C++, I’m pretty sure the transition would have been a lot harder.

All of this has an analog in natural languages too. English, from what I hear, is a much harder language to master than French or Spanish — a native English-speaker can learn either of those much more easily than a non-native English speaker can learn English (primarily due to its extremely mixed heritage). But despite its learning curve, English is often the preferred technical language; I’ve heard it said that two non-English programmers will often switch to English for a technical conversation, even if they have a different shared native language.

My point? I’m not sure I have one, except to say that if you have the time to do so, it might behoove you to tackle the hardest thing in your field first, rather than the easiest one. It’s a longer and more difficult path, but the skill level per hour spent is much higher too.

4 Comments

  1. In turn, because I knew assembler (6502) first, C was easier to learn. I had no problem understanding what pointers were, it was just indirect addressing!

  2. Yes, exactly — you’d already learned the underlying design and how to make sense of it, so you had no trouble when you encountered it in C. I suspect you’d find Python easy to learn too, since your C knowledge would map almost directly to most of its concepts.

  3. Python’s object-oriented though, I get a little confused about OOP for some reason. It’s giving me a very hard time for programming on OS X, because Cocoa is so object oriented.

  4. Get the book Learning Python (Third Edition) by Mark Lutz (ISBN: 978-0-596-51398-6). It introduces things very gradually, and you don’t even get to the OOP parts of the language until two-thirds of the way through the book. I’m still a few pages away from that part, but even without OOP, I can already write pretty complex scripts in it.

    Even complete non-programmers could learn Python programming from that book — I’m going to recommend it to anyone who wants to learn to program. You shouldn’t have any trouble with it.

Comments are closed.