In the 1970s, a team of pioneering computer scientists at Xerox PARC known as the Learning Research Group investigated this very problem--that of creating a programming language suitable for children as young as five to write programs in. As part of their study, they took their computers and their language into Palo Alto schools and attempted, successfully, to teach children from different age groups how to program. The language, named Smalltalk, underwent continuous revision throughout the '70s and was finally released to the world in 1980 as Smalltalk-80.
Smalltalk is a tiny language, with the entire syntax famously fitting on an index card. It is pure in theory: everything is an object and every operation, even "1 + 2," a message sent to an object. It is also pure in implementation: except for a handful of primitive messages, Smalltalks are written almost entirely in themselves, like Lisps.
That a developer could, in 2009, be completely ignorant of the advances made in his field a quarter century earlier is simply inexcusable. To see people, in 2009, touting BASIC as a fine pedagogical tool (and not a modern incarnation, but classic line-oriented, GOTO-ridden BASIC--the very BASIC upon which Dijkstra unleashed his rancour), and to see others seriously suggesting Ruby, Python or some other overly-complex bastard child of C instead, is to observe first-hand the tribute that ignorance exacts from the ignorant. And that ignorance is not only the cause of BASIC being inflicted on yet another generation of hapless youth, but is also the reason why C#'s classes aren't real objects, why Java's "new" is a special primitive, and the source of countless over incongruities between Smalltalk and nearly every other language advertised as "object-oriented."
The thing is, Smalltalk (and Forth, and to a certain extent Lisp) do what they do by pretending that everything outside the language runtime doesn't really exist. I wonder how much it's possible for young children to really care about manipulating symbols in such a closed world. Now consider LOGO which is all about moving the turtle around the the floor (and is quite Lisp-like). Even now, decades later, when I'm typing the commands that will make the tape robots in a distant datacentre spin into motion, I'm remembering LOGO at primary school...
I don't know why you include Forth in that "closed world" category. It was originally designed to control machinery, and it's still ideal for exploratory embedded code.
In Forth the BLOCK mechanism for file access is unlike any other programming language, for example. It doesn't even really have a concept of a filesystem or files; you load pages into memory yourself.
Block files are for when Forth is the OS and you want a quick simple way to divide up your storage. Forths that are hosted on eg: Linux all let you use the regular filesystem.
Yes I am not knocking Forth as a language for embedded systems. I own a copy of Thinking Forth and it's great. But it's not what I'd use to teach kids (having had LOGO and BBC BASIC myself).
Smalltalks usually come with some sort of graphical environment that facilitates the building of GUIs. Those environments usually also provide simpler graphical primitives you can draw with. In fact, if all you want is LOGO, you can use the Pen class (a standard ST-80 class) in Squeak or Pharo as a LOGO turtle:
p := Pen new.
360 timesRepeat: [p go: 1; turn: 1].
that will draw a circle.
4 timesRepeat: [p go: 100; turn: 90].
and that, a square.
More complicated stuff can be done with Morphic and eToys.
Smalltalk is a tiny language, with the entire syntax famously fitting on an index card. It is pure in theory: everything is an object and every operation, even "1 + 2," a message sent to an object. It is also pure in implementation: except for a handful of primitive messages, Smalltalks are written almost entirely in themselves, like Lisps.
That a developer could, in 2009, be completely ignorant of the advances made in his field a quarter century earlier is simply inexcusable. To see people, in 2009, touting BASIC as a fine pedagogical tool (and not a modern incarnation, but classic line-oriented, GOTO-ridden BASIC--the very BASIC upon which Dijkstra unleashed his rancour), and to see others seriously suggesting Ruby, Python or some other overly-complex bastard child of C instead, is to observe first-hand the tribute that ignorance exacts from the ignorant. And that ignorance is not only the cause of BASIC being inflicted on yet another generation of hapless youth, but is also the reason why C#'s classes aren't real objects, why Java's "new" is a special primitive, and the source of countless over incongruities between Smalltalk and nearly every other language advertised as "object-oriented."