Wednesday, January 12, 2011

Basic Programming 101: Prelude

A long time ago, more years than I care to remember, I learned to write my first program in BASIC, not Visual Basic, but real, honest to goodness, HP 3000 series BASIC. A few years later I graduated to a TRS-80 with 4K of memory and a lousy tape recorder for program storage that never worked. I had to write my programs from memory.

What a great environment! Easy to use, all of the principles of good software development were possible (and sometimes necessary).

Recently, I started teaching my son (13) how to program and figured I'd show him a more useful and modern language: Java. Ugh. He got it, but it takes forever. Try doing a proper coding for a program that takes in two numbers and prints their sum or the classic "hello, world!". Forget it. I started thinking about what might be the best programming language to start off kids (or perhaps anybody). C? Perl? Javasript? XHTML? Ruby (on rails)? Lisp?

What would you want your first experience with programming to feel like? The language should be powerful enough to do interesting things, yet simple enough that it doesn't get in the way of a beginner. It should fail informatively and be forgiving. It doesn't need to support a server farm or the support of a server farm. It needn't be able to run 3D vector calculations on a graphics card.

It ought to inspire confidence to go deeper.

Anyone who has coded for fun or for a living, that truly loves programming and can make computers sing or fly or run, knows how amazing the rush of coding a really great project feels. How to inspire that rush in kids? Airline pilots use flight simulators, little kids play with squishy balls and bats, small bikes have training wheels.

And beginning programmers use BASIC.

Check out Ron Nicholson's Chipmunk BASIC for the Mac. Great stuff. I'm using it for a beginning programming class for 7th and 8th graders.

1 comment:

  1. I agree. I fell in love with programming using basic (and if it was good enough for me, its good enough for my kids).

    With a bit more sophistication, you begin to realize the need for readability, maintainability, and more sophistication. But you don't want to lead with that.