A thought experiment...
If I was going to teach kids how to control a Roomba by way of programming, where would I start?
Outside of Squeak and Scratch, I think the most common answer involves also teaching them how to use a source code editor.
This is unacceptable.
Squeak (as derived from Smalltalk-80) and Scratch (as derived from various Logos) integrates the programming environment with the language. This isn't about just being an "IDE".
Squeak let's you hack in a workspace without concern for files. It is persistent and natural. You write a little, see how it works out and continue. At some point you may save your workspace, but you aren't really thinking about files at this point.
Scratch has a similar (although not as radical) approach. My youngest kids (age 7 & 7) would script for a few hours and then pick some random series of characters as a "name" to save their project into (for later recovery). Eventually, they started using more descriptive words for naming their projects. But at no time did they think about files and file systems.
I think files and editors are distractions (and not necessary ones -- unless you want to get a mainstream programming job).
Forth had this idea decades ago (and so did Smalltalk). Forth had blocks (1K blocks to be specific) that held text and data. The early bare-metal Forths used blocks as the single abstraction from persistent storage devices (disks). Eventually, folks "enhanced" line oriented block editing with a visual screen (with single character cursor movement!).
Forthers in the early 1980s (my self included) were happy.
Now, in 2010, I face the prospect of teaching my oldest kid (age 12 -- expert Scratcher, beginning Python programmer) how to control a Roomba via programming that require the selection and mastery of files (and file systems) -- or at least some kind of file based IDE.
Of the languages I have been looking at, Forth, Python and Lua are the front runners.
I think Forth is a more natural fit. I have just downloaded VIBE and I am being transported back 30 years. I use to write (and extend) Forth editors like this. I am remembering how natural it felt to edit in blocks. (ColorForth continues this tradition, so Chuck Moore arguably never found much of an improvement in using file oriented environments ;-)
Forth has always made me feel "closer to the machine". Plus, with a built-in editor, I am no longer doing the context switch being external editor and Forth. VIBE (or any other Forth Screen Editor) keeps me in Forth.
I will be playing with VIBE under gforth (and perhaps extending it). I am curious to see if this feeling is simply nostalgia or if my 23+ years of Emacs (w/ language editing modes) has been a bad move.
I thoroughly enjoyed this blog thanks for sharing.
ReplyDelete