<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>Actually, I said "I made up the term 'Object-oriented', and I did not have C++ in mind".<br><br>Cheers,<br><br>Alan<br></div><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><br><div style="font-family:arial, helvetica, sans-serif;font-size:10pt"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight: bold;">From:</span></b> "mokurai@earthtreasury.org" <mokurai@earthtreasury.org><br><b><span style="font-weight: bold;">To:</span></b> Walter Bender <walter.bender@gmail.com><br><b><span style="font-weight: bold;">Cc:</span></b> Lucian Branescu <lucian.branescu@gmail.com>; IAEP SugarLabs <iaep@lists.sugarlabs.org>; OLPC Devel <devel@lists.laptop.org>; John Gilmore <gnu@toad.com><br><b><span style="font-weight:
 bold;">Sent:</span></b> Fri, May 20, 2011 5:51:08 PM<br><b><span style="font-weight: bold;">Subject:</span></b> Re: [IAEP] Turtles All The Way Out<br></font><br>
On Fri, May 20, 2011 3:11 pm, Walter Bender wrote:<br>> On Fri, May 20, 2011 at 2:28 PM, John Gilmore <<a ymailto="mailto:gnu@toad.com" href="mailto:gnu@toad.com">gnu@toad.com</a>> wrote:<br>><br>>> > Recently, I finished my dissertation on mobile development<br>>>  directly from mobile devices. Something like this might've been very<br>>>  useful, although I did target experienced developers, not beginners.<br><br>When we get to wearables with glasses-mounted full-sized display devices<br>and one-hand chord keyboards, absolutely. Or when soft keyboards on<br>multitouch tablets are totally reliable.<br><br>>> Mobile development would work great on mobile devices like the XO-1,<br>>> XO-1.5, XO-1.75, and perhaps even the XO-3, if only we'd teach the<br>>> kids a few simple paradigms like "files", "hierarchical file systems"<br>>> and "text editors".<br><br>See Introduction to the Command
 Line<br><br><span><a target="_blank" href="http://booki.flossmanuals.net/command-line/edit/">http://booki.flossmanuals.net/command-line/edit/</a></span><br><br>of which I am a co-author.<br><br>I don't know where you get the idea that files, hierarchical file systems,<br>and text editors are simple concepts. I would be willing to discuss<br>introducing the Linux file system in middle school, but our issue is<br>programming for third-graders, or even earlier. Preschoolers can grasp the<br>ideas behind turtle art by acting the part of the turtle. Where would you<br>have them begin?<br><br>> Sugar comes with a plain-text editor (written by a 14-year-old, BTW) and<br>> files (and even a hierarchical file system) that has a data store as its<br>> primary interface. The problem with mobile development on mobile devices<br>> is<br>> not one of religion, it is about physical affordances: small screen and no<br>> (or inadequate)
 keyboard.<br>><br>><br>>> (Efforts to teach computers to compile or interpret large programs<br>>> that aren't written in collections of "files" are doomed to niche<br>>> uselessness, though it sure makes a fun research/masturbation topic.<br><br>Language, John, our discussion of child programming must be discussable<br>with the children, their parents, and their parents' churches and<br>political parties. The archive of this list is public information.<br><br>>> I spent years paid to write big programs in APL that way in the '70s --<br>>> those programs are all unportably dead today, and APL is a tiny niche.)<br><br>I have an ISO/ANSI standard APL that occupies 29K, thus originally giving<br>a 32K workspace on 8-bit computers with 64K memory. It could easily be<br>expanded to run with any amount of memory. Ken Iverson successfully used<br>IBM APL\360 to teach first-grade arithmetic on a 360 with
 Selectric<br>terminals.<br><br>I also have books on math and other subjects in APL, from arithmetic to<br>calculus, cryptography, and computer design.<br><br>>> These are not hard concepts.  Kids learn them daily, but not from XOs.<br><br>Kids of what age?<br><br>>> Since OLPC can't seem to be dissuaded from this fundamental error,<br><br>because it isn't one,<br><br>>> the<br>>> question for me is whether it can be influenced to minimize the amount<br>>> of learning that kids go through which is unique to this useless<br>>> programming model.<br><br>The point is to maximize learning in minimum time or with minimum effort.<br><br>>> There *is* usefulness in teaching kids how to<br>>> write tiny programs that can never scale up to useful, portable,<br>>> supportable programs.  But once they get the basic concepts, they<br>>> should be transitioned to industry best<br><br>worst,
 actually (Did you ever hear of the programmer who claimed to have<br>20 years experience in COBOL, but it turned out he had two years<br>experience repeated 10 times?) No industry has ever embraced best<br>practices.<br><br>>> practices pretty quickly,<br>>> writing a real "Hello World"<br><br>So Hello World in Turtle Art is unreal?<br><br>Here is a complete APL "Hello, World." program, with its output.<br><br>   'Hello, World.'<br>Hello, World.<br><br>and a complete Turtle Art version<br><br>Print<<TextVariable "Hello, World."<br><br>which the activity will be happy to convert to Logo.<br><br>Next you put a Python function call on a single block to print the text,<br>and away you go.<br><br>>> and then evolving it to be more useful.<br><br>Precisely.<br><br>I prefer to teach not only programming but computer science concepts in<br>the early years. One of the great advantages of Turtle Art is that there<br>is no parsing step
 to translate from linear text with bizarre punctuation<br>rules to a tree structure. The children program directly in effectively<br>preparsed tree structures, with no "syntactic sugar", as the LISPers call<br>it.<br><br>Also, Walter has built stack primitives into Turtle Blocks, so we can<br>teach stack discipline and the rudiments of FORTH in Turtle Art. He<br>recently added a block to read the color at the turtle's location. I had<br>mentioned to him some time ago that that was the only function missing for<br>me to write a Turing machine in Turtle Art, using colors for cell states<br>and elements in the transition table. I must do that sometime.<br><br>>> Rather than getting stuck by e.g. trying to make substantial programs<br>>> fit on one screen by moving tiles around visually.<br><br>Strawman. Not the purpose of Turtle Blocks, and not something we would<br>encourage anybody to do. At that point you start writing Python<br>subroutines,
 and shortly after that you transfer completely to Python. Or<br>Smalltalk. And from there, you can learn the syntactic sugar of any<br>programming language. After learning three different clean programming<br>models, we have some hope that our children will appreciate what<br>abominations most other programming languages are.<br><br>"I invented Object-Oriented Programming, and C++ is _not_ what I had in<br>mind."--Alan Kay<br><br>>> As in the<br>>> model-view-controller paradigm, the kids need to learn that the view<br>>> is not the model, but the model is a simply structured thing that<br>>> lives behind the view.  If you don't teach the abstract structures<br>>> that the model is based on, the kids can't learn to make that<br>>> separation.  This is why they never learn to modify the real programs<br>>> that hide behind the fluffy interfaces on their real XO computers.<br><br>We have paths from
 Turtle Art to Python and Logo, and we also have all of<br>FORTH and Smalltalk built into XOs.<br><br>Also, I don't know of any more fundamental structure than a parse tree,<br>something that almost no conventional programming students ever learn<br>about. They only see the linear text view of their programs, and most form<br>incorrect models of the execution process. LISP has the best execution<br>model, with the eval-apply mutual recursion and the read-eval-print loop.<br><br>> I cannot speak for every Sugar developer, but the approach I have tried to<br>> take with Turtle Art is a bit different than you are describing.<br><br>Don't be modest, Walter, it's very different.<br><br>> The<br>> block-based programming environment is not meant to be a substitute for<br>> real tools; it is meant to be a place to get started;<br><br>to understand the real ideas behind programming without getting bogged<br>down in syntax;<br><br>> to learn
 that you can write<br>> and modify code; and to provide multiple motivations and launch pads for<br>> getting into the "real" thing. I've worked pretty hard to make the<br>> "structured thing" behind the view more approachable, and have provided<br>> multiple ways in and out: exporting your "fluffy" view into Logo that can<br>> be<br>> run in Brian Harvey's text-based Logo environment; direct, in-line<br>> extensions written in Python; the ability to create new blocks by<br>> importing<br>> Python; a plugin mechanism for making major interventions; and a<br>> refactoring<br>> of the underlying structures to make the code more approachable. (The<br>> source<br>> code is peppered with comments and examples of how to make modifications.)<br>> None of these interventions are intended to keep the kids programming in<br>> Turtle Art. They are all intended to get the kids started down the path of<br>> "real"
 programming. But I content that we need to engage them; let them<br>> discover that they can write code; and make changes; and that it is not<br>> something just for "others" but for everyone. When I talked about Turtles<br>> All the Way Down at Libre Planet two-years ago, I wasn't suggesting that<br>> we<br>> use fluffy interfaces all the way down, but that we invite modifications<br>> all<br>> the way down by providing scaffolding and encouragement. Step One is to<br>> give<br>> them the freedom to make changes; Step Two is to give them the context in<br>> which they can actually start doing it.<br><br>Yes, what Walter said.<br><br>>  Sure, there will always be the<br>> handful of kids who will jump right into Emacs and C, but most won't.<br>> Maybe<br>> we can encourage a few more to do something of substance but giving them<br>> some scaffolding.<br>><br>> I am open to suggestions as to how to
 get more kids to move on from Turtle<br>> Art to ___ (insert you favorite "real" programming environment here).<br><br><br><br>> -walter<br>><br>><br>>>        John<br>>> _______________________________________________<br>>> Devel mailing list<br>>> <a ymailto="mailto:Devel@lists.laptop.org" href="mailto:Devel@lists.laptop.org">Devel@lists.laptop.org</a><br><span>>> <a target="_blank" href="http://lists.laptop.org/listinfo/devel">http://lists.laptop.org/listinfo/devel</a></span><br>>><br>><br>><br>><br>> --<br>> Walter Bender<br>> Sugar Labs<br><span>> <a target="_blank" href="http://www.sugarlabs.org">http://www.sugarlabs.org</a></span><br>> _______________________________________________<br>> IAEP -- It's An Education Project (not a laptop project!)<br>> <a ymailto="mailto:IAEP@lists.sugarlabs.org"
 href="mailto:IAEP@lists.sugarlabs.org">IAEP@lists.sugarlabs.org</a><br><span>> <a target="_blank" href="http://lists.sugarlabs.org/listinfo/iaep">http://lists.sugarlabs.org/listinfo/iaep</a></span><br><br><br>-- <br>Edward Mokurai<br>(默雷/धर्ममेघशब्दगर्ज/دھرممیگھشبدگر<br>ج) Cherlin<br>Silent Thunder is my name, and Children are my nation.<br>The Cosmos is my dwelling place, the Truth my destination.<br><span><a target="_blank" href="http://wiki.sugarlabs.org/go/Replacing_Textbooks">http://wiki.sugarlabs.org/go/Replacing_Textbooks</a></span><br><br>_______________________________________________<br>IAEP -- It's An Education Project (not a laptop project!)<br><a ymailto="mailto:IAEP@lists.sugarlabs.org" href="mailto:IAEP@lists.sugarlabs.org">IAEP@lists.sugarlabs.org</a><br><a href="http://lists.sugarlabs.org/listinfo/iaep"
 target="_blank">http://lists.sugarlabs.org/listinfo/iaep</a><br></div></div></div></body></html>