There’s a question that have been worrying many of us for quite a few years now. How will today’s kids learn to program?
In the late 70s and 80s many kids were blessed with a microcomputer in their home that ran BASIC. Most folks don’t even know or remember that the first IBM PC booted straight up into BASIC, just like a Commodore 64. That’s where they learned to program. Those BASIC computers launched a whole generation of computer programmers.
But then, as time went on, computers no longer came with BASIC. Magazines no longer published programs that you had to type in, line by line, hopefully with an input program that gave a little checksum for each line to match with the checksum in the original listing. I’ve thought about this for many years and the topic has been raised by others, even on sites like Slashdot over the years. How will kids learn to program?
Java seemed too complex for kids to really latch on to. There were plenty of little learning languages here and there, but they didn’t just pop up on the family computer when you turned it on—-someone had to go looking for them and install them.
Some people speculated that making web pages might capture the modern youth’s enthusiasm. But (at least normal) HTML doesn’t have the concept of a conditional if-then clause. I consider that an essential element of programming.
I used to think how it would be nice if there was something like a world, as in object-oriented MUDs, where you could program little objects to do conditional things. That would be like building a web page or something, but you could make things “smart” so they responded to changes in their surroundings or to inputs.
Lately I’ve been hearing a pattern. I’ve heard it at least a couple of times and I bet it’s happening more. Kids are learning to program via the path Minecraft, Scratch, Python.
Minecraft is a game where you can build an program objects. And it does have conditionals! Nearly every kid seems to be playing Minecraft.
Scratch is a wonderful programming language based on clicking little objects together that do things. It’s the perfect programming paradigm for youngsters. Scratch was developed at the MIT Media Lab.
Finally, there’s Python, which I consider the perfect programming language for a majority of purposes including a first real programming language.
I think this is the perfect path. Minecraft is wonderfully engaging and pretty much universally present. Scratch has all of the fundamental elements you need, and it’s still fun. Python is complete, readily available, and programs can be as easy as BASIC but can grow into fully developed object-oriented or even functional applications.
It’s highly likely I won’t even understand what the Minecraft-Scratch-Python generation produces as adults, but I’m sure it will be wonderful!
BASIC
Minecraft
Scratch
My Scratch Programming blog post, 2008-10-02
Python
P.S. Yes, I know that there are, in fact, many tools around for kids to learn from. Even Logo and of course BASIC are still around! They just aren’t universally present by default on the home computer until someone puts them there.
P.P.S. And it’s also true that the Raspberry Pi was intentionally created to fill this void with hardware that nearly any kid could afford and just hook to their TV and power with their phone charger. (You do need a keyboard and mouse). Not coincidentally, it comes with Scratch and Python ready to go and can be configured to boot straight into those environments.