Why Johnny can’t code

I saw a post on Salon.com which reiterates something I feel strongly about, and have been saying for quite some time.

BASIC used to be on every computer a child touched — but today there’s no easy way for kids to get hooked on programming.

Why Johnny can’t code

Yes, absolutely yes. If you bought any PC prior to the Mac and DOS era, it came with programming built in. It was most likely BASIC, or some similar language. You turn on an Apple 2, Commodore, or Atari computer, and you can immediately start typing in a program that will execute.

If you want to get even close to this on a modern computer, you need to either use a much bigger and more serious language, like Python, or you need some piece of software to help you. It’s not built into the computer. Even if you install Linux, the only thing you can do on the terminal is shell scripting. That shell scripting creates a barrier between the user and other programming languages.

Every operating system should ship with some sort of BASIC-like interpreter. It wouldn’t have any significant additional cost. Just one more icon in the start menu or applications folder. That one icon has the potential to open up an entire world of programming to a new generation.

Now, I was born beyond the BASIC days. I used some Apple computers at school, and learned some LOGO, but I was primarily in the DOS/Windows 3.1 era. How did I learn programming without having a prompt shoved in my face every day? Well, I put some effort in, going to science camp and selecting programming classes as an activity. But more than that, I had a TI Graphing Calculator, which comes with TI BASIC built in. I did a great deal of programming on that calcuator to ease my way through math classes.

And that brings me to my final point. Yes, I agree with this article. We need to expose simple, yet useful, programming interfaces on modern computers for educational purposes. However, the author of this article clearly doesn’t know about the large number of these that exist and can be easily acquired. There are TI Calculators, Microsoft Small BASIC, Arduino, Squeak, LOGO, and may more entry-level programming environments to learn on. If you have kids, or are looking to learn programming yourself, I highly suggest you try some of them out. We do not have a shortage of such things, we just need to get some of them pre-installed.

6 thoughts on “Why Johnny can’t code

  1. Good article and I agree with you on pretty much every point. However, I would like to correct you — even during the DOS/Win 3.1 days, computers came with GW-BASIC (BASICA on IBM-branded machines running PC-DOS) or, more recently, Qbasic. It’s how I started to teach myself programming when I’d run GW-BASIC on a dual floppy machine running DOS 3.2.

    Admittedly, you would have to know about the gwbasic or qbasic DOS commands to fire them up (as opposed to them just popping up on screen when you turned on the computer), but they were there and didn’t cost extra.

  2. OMG, you are shitting me! Why didn’t you tell me about basica in 1994, you could have changed my life! I had PC-DOS, instead of MS-DOS, and I couldn’t figure out for the life of me how to get any BASIC going on. Instead, I paid $90 for a copy of Borland Turbo C++ for Windows 3.1. I still have the huge pile of floppy disks it took to install that bad boy.

    I think that shows just how important it is not to hide the interpreter behind a command shell. It needs to be up front and in your face.

  3. Why is BASIC more approachable than shell scripting? Why is Arduino (presumably Wiring) OK for an intro while Python is not?

  4. Python and other such languages have a lot of extra syntax and commands going on because they have so many language features. With something like BASIC, you only have a few language features, so you can learn them all, and learn powerful patterns to combine them. You don’t let someone use a nail gun before they have mastered using the hammer. Just knowing that nail guns even exist means the person learning will see no point in learning the hammer, and will want to move straight to the nail gun.

    I took Calculus in high school and again in college. Both professors taught how to find derivatives the hard way before telling us the secret that the derivative of x^n is nx^(n-1). Starting out your programming experience with limited tools is the same.

  5. I dunno, it doesn’t take much to get started with Python. I get started learning a limited set of commands and syntax structures, just because none of the rest made any sense.

    …of course, I’m *still* picking up new Pythonisms and features six years later, but that’s just the nature of the thing.

  6. Ah programming in Basic brings back a lot of memories. I never actually made programs with it but mIRC scripts were written in Basic and that’s how I self learned some programming fundamentals.

Leave a Reply
