I didn't get as much done on xearth today as I had planned to. Instead, I got involved in a long conversation at chchspace about programming languages, which migrated toward a discussion about a way to introduce programming to young people. For example:
class Hello { public static void main(String[] args) { System.out.println("Hello, world"); } }
is a lot more crap to have to explain (just how long does it take to explain away "public static void main"?) than:
print "Hello, world"
But even then, "Hello, world" is a major let-down as far as a first program goes. My first ever program was a graphics program: It drew a diagonal line from the top left to the bottom right of an Apple ][+ high-res graphics screen. Printing text came later, on an as-needed basis (probably when I first needed to debug something). I think it's important to introduce programming using a medium that's more malleable than plain old ASCII text.
Text is symbolic. By itself, it rarely looks interesting, but it's a representation of something interesting (maybe). It requires a bunch of cognitive processing to go from the letters on the screen, to ideas that are meaningful. When you're learning a new method of expression such as programming, having to apply this extra cognitive load to everything you do (that is, having to read and understand the program output) detracts from the learning process. Young children learn to draw pictures before learning to write words; even Koko can draw pictures.
What's the right answer? Is it Logo? Maybe they were on to something in 1967. Is it Adobe Flex? Silverlight? Yahoo! Widgets? I believe it's likely to be something like that. It is definitely not "public static void main".
I wonder how many people's first programs were
10 PRINT "JAMES IS A STINKY POO"
20 GOTO 10
2009-09-16T20:15:32Z