My son is taking a course in computer programming at his high school. As is the case for many (most?) high school students in Ontario, they’re using a programming language named Turing.
I initially hated the Turing programming language. That hate was a bit irrational, as–like many of my peers–I have great respect for Alan Turing and find it more than a bit audacious for someone to dare name any programming language after the man that is responsible for much of what we take for granted.
After spending the weekend helping my son with an assignment, I still don’t particularly like the programming language: I find it unnecessarily verbose and cumbersome; its libraries lack important features; the development environment is sluggish; and it only runs on Windows (though it seems to work reasonably well using the wine emulator on Ubuntu 11). But, I’m starting to warm to it as a pedagogical tool.
When I was just learning about programming, the coolest game available was Lode Runner. This is the game that my high school peers and I strived to emulate on four beat up Apple ][ plus computers. The teaching staff wasn’t very much help with regard to learning how to write software; there wasn’t even a formal course on computers. They did provide one big bit of help, however: they only let us play video games that we wrote ourselves; no store-bought games were allowed in the lab. Through trial and error, with help from Nibble magazine, Beagle Bros., other students, and an occasional visit from one of the professors from Royal Roads Military College we learned to program. I produced many great games like Airwolf, a top-down shooter based on the television programme; Corridors of the Inquisition, a 3D maze game; and Kitty Munch–my most popular contribution–another 3D game in which the user drops bricks on cats from the top of a tall building.
By “great”, I of course mean “totally lame”. Nothing that we ever built compared to Lode Runner. But the important part in this little trip down memory lane is that there was a fighting chance that any one of us–or perhaps some small number of us–could write something like Lode Runner, and sell enough copies to make a decent bit of money.
Fast forward to today. “Call of Duty: Modern Warfare 2” cost between $40 and $50 million to produce. A big boatload of people where involved in the creation of this masterpiece of mayhem and violence. I worry a bit that today’s student programmers can’t possible look at games like this and draw inspiration. I can’t see how any reasonable person can look at Call of Duty and say “I could build this” like we did with Lode Runner?
So what does any of this have to do with Turing?
I’ve tried a few times to teach my son how to program in Java. Maybe with more time and effort, that could work. But it was difficult to get to a point were we could do anything meaningful or interesting. In a couple of hours, I managed to get an working version of Kitty Munch (actually the third version) implemented in Java and running on Android, but this just left my son’s head spinning. Three decades of growing with the industry has equipped me with what I need to get that job done, but teaching all of the moving parts to a teenager is pretty difficult. Jumping into the middle of this is a great way to discourage people from even getting started
This is where Turing comes in. It’s a simple language that shares many concepts with Pascal. Like the Applesoft Basic and, later, Turbo Pascal, that I cut my teeth on, it’s possible to write a working program without understanding functions, objects, or structures. You can get by with a very basic understanding of a couple of data types, and grow from there. My son and his classmates have all, in a matter of a few days, managed to build working games. My son’s “Kitty Munch 4” is almost as functional as the original after only about two days worth of effort; more functional if you count the use of colour as functionality. Yesterday, I taught him about using double buffering to eliminate flickering, which should give him a leg up on his classmates. Tomorrow night (he has baseball tonight), I’ll show him how to use image masks.
I’m still not a big fan of the Turing programming language. But I do appreciate the ability to get something running very quickly, and then incrementally introduce concepts without having to worry about all the nitty-gritty things that real programmers have to think about. For students who are just learning to program, I don’t necessarily recommend Turing. What I do recommend, however, is that you start simple. Don’t try to build Call of Duty. Start with Lode Runner. Or Pong. Learn the basics. Get something working. Then make it better.
Do this first. Then go get a degree in Computer Science.