A little bit ago, my oldest son said he wanted to program something. While the thought of passing on my love of techno geekery had me overjoyed, I knew that there was no way he would stay focused long enough to really grasp loops or variables, or why they are important. At least not yet.
It was almost 30 years ago that I first learned “basic” on a Timex Sinclair 1000.
I pined over that computer. It sat on display atop a washing machine at the local appliance store / hobby shop. I’m not sure if many other kids my age saw it as more than just some odd curiosity. A ruthlessly complex speak and spell, that could neither speak nor spell. I had probably crossed some line with the proprietor of the store, and rather than wipe my drool off the machine, my parents purchased it for me as a gift.
It came with 2K of ram, and a 16K ram pack that would occasionally fall out, resetting the machine. Programs to run on it were printed out in a couple of books with names like 70 games for the Timex/Sinclair 1000 and 1500. The first time my dad and I took a spin at typing in one of the games we had no Idea what any of these commands meant or did. We just took turns reading from the listing or blindly pressing characters on the membrane keyboard. Not understanding the weird, context sensitive keyboard layout, or that we had to press enter at the end of each line, we just punched everything in as if it were just one long line of text. Of course the program didn’t run. Also, since the input buffer was full, each time we pressed a key the whole screen would redraw slowing everything to a crawl. Several hours later, we managed to get one simple game called Alley Driver working.
Over the next year or two, I would type in all but the most daunting or dull of the programs in those books. many times. I would attempt to record some of them onto audio tape, usually rendering them irretrievable. Through sheer repetition, and some form of digital osmosis, I gradually learned what most of the basic commands meant and did. Tweaking those programs to do slightly different things became a more enjoyable hobby than actually playing the games. The games were all pretty terrible. I made many, many versions of Alley Driver.
When I went to look for simple, kid friendly, programming environments for my son and I to play with, it was like backing up a dump truck. Where I had a few books and an inscrutable interface to deal with, we now have drag and drop, visual editors like Scratch, Lego Mindstorms, and Alice. Not only are these programming environments very easy to use and understand, but they teach much more relevant and complex concepts than good old basic ever did. Object oriented programming, loops, and recursion are all represented visually. And we all know what a picture is worth.
My son is still not on board with deciphering the deeper concepts of programming, but when he is ready, I’m pretty sure he will have an easier time of it than I did. There is no need for some bizarre comp-sci rosetta stone. Basic has been superseded by more abstracted, but also more easily understood, beginners programming languages. Actually, I take back the “beginners”.
Aside from nostalgic curiosity, there is no longer a reason to cram a program down into 2K of ram. As computing power increases, so will the viability of using drag and drop, visual programming environments to create actual applications. Applications that people will buy, sell, and use. These aren’t just tools that kids use until they graduate to a “real” programming language. Go download Alice or Scratch. They are not dissimilar to what “real” programmers will be using in the future.