What's the modern day equivalent of old school "line number" BASIC as a tool for young children to play and learn with?
As with many of us of a certain age, I spent a lot of time writing software in line number BASIC learning how to break problems down into component algorithms and generally getting a sense of how electronic computing works. The advantages of such a language as a learning tool are pretty well known: the constrained vocabulary and relatively powerful primitives make it fairly easy to learn, although obviously not the kind of thing you'd want to write production software with. I'd like to share at least a sliver of this experience with my own children, but the chances of getting them to sit down in front of a crumbling TRS-80 or Apple II in order to learn are slim.
So instead I'm looking at other options. Ideally I'd like a language and execution environment that is somewhat multiplatform, has graphics and sound support, uses a language I know or can learn relatively easily in order to teach, and most ideally is procedural rather than OO. A few I am considering are:
- a Lua system for creating games. Lua looks fairly approachable although I don't know enough of it to teach, and I'm not entirely sure about making young children wrap their brains around the idea of callbacks in order to get anything done.
- a framework for Python game creation. I only speak a little Python but it's learnable, I suppose, and the presence of an "immediate mode" interpreter is compelling in terms of being able to learn the basics interactively. However, I'm not at all convinced I want my kids using an OO language before they understand procedural programming. That seems like putting the cart way out in front of the horse in terms of depth of learning.
- a Smalltalk implementation. Yet another OO language, although at least a fairly pure one, and I can probably dust off my long-rusted Smalltalk skills to teach it. But honestly, who even knows or cares about Smalltalk any more?
seems like a Squeak-derived project of some kind, and the visual programming approach seems aimed at very young or only partially-literate learners. I'm not sure this is the kind of thing I'm interested in at all.
has some of the attributes I'm looking for, but may not be an ideal learning language due to being extremely visual in emphasis, the OO, and the Java syntax.
Visual Basic is really BASIC in name only; it's not a language I want to teach, nor one I'd want my children to bother with, and it's tied utterly to a platform I don't particularly care about.
So, folks, I'm not seeing a very attractive range of tools. What am I missing? Aren't there tools for kids to just sit down, play with, and make things? Or is the entire concept of teaching fundamental computer literacy an obsolete one in the modern age of children surrounded by closed, sealed, consumer-oriented devices that are made by distant wizards?