<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 10.11.2011, at 23:04, Steve Thomas wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">So the argument I have heard as to why Etoys does not have a single Step Debugging like Scratch seem to go along the lines of "If we step one script, the whole world waits".<div><br></div><div>I have two responses to this:</div>
<div><ol><li>So?</li><li>Should we let the search for an elegant solution (that a few developers will see and appreciate) prevent us from providing a tool that can positively impact many children?</li></ol><div><u>So on "So?":</u></div>
<div>So what if the whole world stops?&nbsp;</div></div></blockquote><div><br></div><div>You couldn't even press the "next step" button because the world would be literally stopped. And you wouldn't see what's going on since the world would not be repainted. That's what "stopping the world" means.</div><br><blockquote type="cite"><div><div>Yes, I know and can think of some cases where this will impact the ability to debug certain issues, but my guess is these are a small minority of cases and I do not see any&nbsp;negative&nbsp;consequences (other than the single step debugging is not ideal in these few cases, but it would still be better than no single step debugger).</div>
</div><div><br></div><div><u>A solution versus an elegant solution:</u></div><div>Another way to solve this problem (which I will assume others have thought of, so I am probably missing something) is to do something similar to what Bert did in his Squeakland presentation where you "roll your own tiles" and place them in special holders (like "do together" or "do one at a time"). &nbsp;When you click on "debug" or some other similar script icon, a new "special script" is instantiated that has a copy of each tile, but it operates one "step" at a time, doing the step during its cycle. &nbsp;This would allow the whole world to continue to run and provide single step execution of tiles (or copies of those tiles inside a special scriptor, that runs one tile at a time.).</div></blockquote><div><br></div><div>Yes, that is a solution we discussed, and think is optimal. The script would be "interpreted", each message "performed" individually, rather than executed as a compiled method.</div><div><br></div><div>It's just ASMOP ;)</div><div><br></div><span class="Apple-style-span" style="font-family: Helvetica; font-size: 12px; ">- Bert -</span></div><div><font class="Apple-style-span" face="Helvetica"><br></font><blockquote type="cite"><div>The one addition I would make to the approach above is along the line's of the one in <a href="http://tinlizzie.org/~bert/scott-2011-11-08-q35.mp4">Scott's recent talk</a>. &nbsp;Where you add an icon (the exclamation point in a yellow circle) to allow the user to execute one tile at a time in any order/timing they want.</div>
<div><br></div><div>Another possibility would be to allow the user to "toggle" the visibility of a yellow exclamation point for each tile, this would be to allow kids to display the "fire tile" icon and just click through one at a time, which would also allow single step debugging (versus run at a slow pace, and frankly I prefer kids click each time, as it forces them to slow down and think. &nbsp;When doing "Test" tiles not sure if you should highlight "Yes" or "No" or just skip to the first tile in that section. &nbsp;I lean toward the former.</div>
<div><br></div><div>Stephen</div></blockquote></div><div apple-content-edited="true"><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: 'Lucida Grande'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><br class="Apple-interchange-newline"></span>
</div>
<br></body></html>