As I’ve mentioned earlier, I’m trying to learn Python. Python is a high level programming language. Or as the Pythoneers themselves put it:

Python is an interpreted, interactive, object-oriented programming language. It incorporates modules, exceptions, dynamic typing, very high level dynamic data types, and classes. Python combines remarkable power with very clear syntax. It has interfaces to many system calls and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as an extension language for applications that need a programmable interface. Finally, Python is portable: it runs on many Unix variants, on the Mac, and on PCs under MS-DOS, Windows, Windows NT, and OS/2.

The text above? Pure gobbledygook to me. And not the Harry Potter kind. Wikipedia is slightly less convoluted:

Python is a widely used general-purpose, high-level programming language. Its design philosophy emphasizes code readability, and its syntax allows programmers to express concepts in fewer lines of code than would be possible in languages such as C. The language provides constructs intended to enable clear programs on both a small and large scale.

A bit better, but still a lot of jargon. I find that is usually the problem with learning anything that has anything to do with programming. I learned JavaScript and HTML from books, but those books were obtuse, they required hours and hours (well, not the HTML one) of reading and trying to figure out what the blasted author was actually trying to say. This, combined with my astounding lack of mathematical skill, has kept me away from any kind of programming. Because seriously? If it’s hard learning JavaScript, then how hard would it be learning any kind of programming? Well, as it turns out, Python is not hard to learn at all, but I think that is actually thanks to Zed Shaw who wrote the tutorial I’m currently going through at a reasonably fast pace. It’s called Learn Python the Hard Way, and it is focused on the practical aspects of the language. Learn how to write it and learn what it does while you are writing. That guy Shaw? Serious teaching chops. Also, the tutorial only require that you have a terminal (all computers do), that Python is installed (easy install) and that you have a text editor (free software).

So what’s my point? My point is that it is very difficult to find teachers gifted with both the incredible skill to make something that is complex understandable, and with the ability to talk to people without wrapping stuff up in sentences like “interpreted, interactive, object-oriented programming language”. I mean, I understand what each word means. I just don’t get what it means when it’s strung together like this. And that’s my point. I know I have tendencies to become all jargon-y when I talk about game design or user interface design. And I know a guy at work who talks about diegetic interfaces for instance. Anyone not familiar with the word diegetic doesn’t stand a chance understanding what that is all about. The perk with having a specific language for a speciality is of course that you can be more precise, which is great. But that also requires an audience with access to the terminology you are using. Normally, programmers – not that easy to understand.*

Learning Python the Hard Way uses jargon as well, but it teaches the jargon at the same time as I’m learning what’s happening in the .py file I’m writing, and Shaw also makes me figure out things on my own, but usually with a kind push and nudge in the right direction. The effect of this is that I’ve spent less than an hour on each lesson. I’m on lesson 15 out of 52 as I write this but the amazing thing is that after each lesson I’m also understanding not only what I did, but how I did it and I can read the code and find any errors in it. Compared to my JavaScript experiences, I mostly cut and pasted snippets of script that I knew did certain things, but I never could figure out exactly how without reverse engineering it. Shaw has me commenting my own code (which I am btw diligent about doing, because it helps me quite a bit) and writing my own little versions of what I’ve just learned to make sure that I actually got it. So lesson 15 out of 52 and each lesson takes less than an hour to print and understand. If I were to give an estimate, I’d say I spend about 5 minutes reading, 5 minutes writing code and 30 minutes understanding what I did through the Study Drills.

I’m sure this seems pretty trivial to programmers. To me, as an outsider it is NOT. I’ve tried SO many times to learn different kinds of ways of talking to my computer or my browser in a way that they’d understand, but it’s been like learning a new language with a different syntax on my own. In that language. Meaning that I’ve never understood the lessons, much less the language.

In short – that tutorial? Good stuff. Also, I got a bunch of helpful hints from Mondi at work yesterday. He said three words (he said more, but these were the ones he wanted me to focus on):

Kivy
Nodebox
Pyprocessing

I’m sort of looking forward to seeing how I can use all this stuff that I’ve learned. At the same time, I’m terrified that as I get to the more complex areas of Python, I’ll stop understanding each thing I’m doing and give up. Not yet though. So far, so good.

Now if you’ll excuse me, I’m settling down to a day of Python. I’ve got my Burn, I’ve got my Kraftwerk and I’ve got a matrix runny code desktop image. It’s important to set the mood.

Point? Everyone should have a shot at learning this stuff. It’s good stuff and despite my earlier misgivings, it’s actually not that hard once the teacher speaks your own language.

________________
* This is not quite fair though, as I’ve met a lot of programmers who actually know how to talk to non-programmers (I LOVE YOU GUYS! *waves*). But I’ve also met a lot of texts that are trying to teach me stuff and fail due to jargon.