Recent discussion on Java's merits got me thinking. I recently read an article, entitled "Why Johnny Can't Code[1]," which I thought was interesting, but I'm not sure if his points really are valid. But I came across a little project on freshmeat the other day called BASIC-256 [2] that makes me really think. BASIC-256 teaches BASIC in an interactive way (but without line numbers and forced spaghetti). Now whether or not BASIC is a good language for this is irrelevant. But the thing that got me thinking was that this kind of simple, integrated, immediate environment just isn't really done much anymore. Sure I could fire up Eclipse (or visual studio) and teach kids to program, but the entire burden of project management (which is probably 50% of what real programmers do in the real world) takes away from the simple joys of learning how to program. Many of us probably grew up with our first exposure to programming being the BASIC interpreter on our original Apple II or IBM PC (well those my age or older). When I was in 6th grade, Borland was in their hayday with this new fangled thing called an IDE. They were simple by todays standards, and even though they had a compile step, they were almost as interactive as the old interpreters. QuickBASIC did have completely interactive capabilities where you could call functions you had just defined and do all kinds of testing (sounds like python doesn't it). The integrated debugger in the Borland IDEs worked very well and I learned how to step my code and watch variables. My first step away from spaghetti-land was with Borland's TurboBASIC which brought all the advantages of Pascal to BASIC, and left out some of the things i always hated about Pascal. Later I taught myself C and C++ with Turbo C++ 3.0 (great IDE).
Anyway, our modern IDEs are similar to what Borland started, but way to complicated to get a young child started on, in my opinion. I think bringing back integrated, interpreted, immediate environments like BASIC-256 is a good idea. The Logo environment is also great. Seems to me our modern languages such as Java, C#, C++ don't lend themselves well to a 5 year old (which is when I started programming). Python just might, though, except that a 5-8 year old may not always understand the concept of white space. And I do think it is important to first teach procedural programming first. OOP and event-driven are great, but as the computer itself is procedural, if we want to teach budding computer scientists how computers actually work inside, we need to start on procedural programming (and polling), then probably event-driven (help them understand interrupt-driven stuff), and then introduce them to other artificial abstractions that they will eventually use exclusively. Any thoughts? Michael [1] http://www.salon.com/tech/feature/2006/09/14/basic/index_np.html [2] http://kidbasic.sourceforge.net/ /* PLUG: http://plug.org, #utah on irc.freenode.net Unsubscribe: http://plug.org/mailman/options/plug Don't fear the penguin. */
