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".
I have two responses to this:
So on "So?":
So what if the whole world stops? 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 negative 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).
A solution versus an elegant solution: 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"). 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. 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.).
The one addition I would make to the approach above is along the line's of the one in Scott's recent talk. 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.
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. When doing "Test" tiles not sure if you should highlight "Yes" or "No" or just skip to the first tile in that section. I lean toward the former.
Stephen _______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
On 10.11.2011, at 23:04, Steve Thomas wrote: 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". 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.
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. It's just ASMOP ;)
_______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
In reply to this post by Steve Thomas
On Thu, Nov 10, 2011 at 11:04 PM, Steve Thomas <[hidden email]> wrote:
> 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". > I have two responses to this: > > So? > 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? > > So on "So?": > So what if the whole world stops? > 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 negative 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). > A solution versus an elegant solution: > 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"). > 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. 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.). > The one addition I would make to the approach above is along the line's of > the one in Scott's recent talk. 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. > 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. When doing "Test" tiles not sure if you should highlight "Yes" or > "No" or just skip to the first tile in that section. I lean toward the > former. > Stephen Great to see that video. Very cool features that I think will move Etoys much further is ease of scripting. Also good for debugging. A way transition between the single step mode and the full Etoys scriptor would be nice. Karl _______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
In reply to this post by Bert Freudenberg
On Thu, Nov 10, 2011 at 7:04 PM, Bert Freudenberg <[hidden email]> wrote:
Ah, well that would be problematic :) Thought it was similar to putting a self halt. in a script and stepping, which does repaint on forward and turn.
Funny, I have the same answer for developing a new web site, now if I could only find the time ;) Thanks, Stephen
_______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
(removing the education-team list from CC because that always bounces for me as a non-member)
On 11.11.2011, at 01:38, Steve Thomas wrote: > On Thu, Nov 10, 2011 at 7:04 PM, Bert Freudenberg <[hidden email]> wrote: >> 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. > Ah, well that would be problematic :) Thought it was similar to putting a self halt. in a script and stepping, which does repaint on forward and turn. Well, yes, I was kind-of overly dramatic to make my point. The thing is, to make this simple, the world would indeed have to be stopped as I wrote. As soon as we let the world continue to run, affairs get way less predictable. Using the debugger is a delicate affair, it works just fine most of the time, but you have to develop an intuition of how far you can take things there that will still work. And "most of the time" is not good enough for Etoys users. Besides, once we have the infrastructure in place to be able to highlight tiles in a script sequentially (as would be needed for single-stepping regardless of the underlying mechanism) then it is only a small step to actually "perform" the action of the current tile. And that's precisely our "second option", which avoids all the traps of process juggling trickery the regular debugger has to do (*) >> 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. >> >> It's just ASMOP ;) > Funny, I have the same answer for developing a new web site, now if I could only find the time ;) > > Thanks, > Stephen Exactly. But I am very happy to see Scott exploring that direction :) - Bert - (*) It is somewhat mind-boggling to me how interrupting the UI process, doing a few single-steps, and then proceeding could possibly work. I can explain it, yes, how the current UI process gets paused, a new UI process spawned to run the debugger, then when proceeding the new one is killed and the old one resumed, but still. If that is not mind-boggling to you, you may not have understood the problem deeply enough yet. Or you have reached enlightenment already ;) _______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
Hi,
I've added a simple "step over" button in the script editor. I attached a project to demonstrate. For now, it's an ugly red circle because I don't have a nice image, but it should work as expected.
Limitation: it doesn't work with the repeat tile yet. And it could probably be coded more nicely. Cheers, Richo On Fri, Nov 11, 2011 at 8:51 AM, Bert Freudenberg <[hidden email]> wrote: (removing the education-team list from CC because that always bounces for me as a non-member) _______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev StepOverExample.002.pr (56K) Download Attachment |
Go Richo, Go Richo, Go Richo :)
On Sat, Nov 12, 2011 at 3:33 PM, Ricardo Moran <[hidden email]> wrote: Hi, _______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
In reply to this post by Ricardo Moran
Yay, Richo! Outstanding!
-- Scott On Nov 12, 2011, at 12:33 PM, Ricardo Moran wrote: > Hi, > > I've added a simple "step over" button in the script editor. I attached a project to demonstrate. For now, it's an ugly red circle because I don't have a nice image, but it should work as expected. > > Limitation: it doesn't work with the repeat tile yet. And it could probably be coded more nicely. > > Cheers, > Richo _______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
This is really nice, Richo.
So very useful. We must add this to the image :-) Maybe enhance the look of the red button a little. Karl
On Mon, Nov 14, 2011 at 5:39 AM, Scott Wallace <[hidden email]> wrote: Yay, Richo! Outstanding! _______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
This version works with the repeat tile, and I replaced the red button with the "next page" button from books. It's more intention revealing, don't you think? :)
Although it seems to work fine, I think the code should be examined before inclusion because I have the feeling the code is too complex for what it does and I'm not sure how to improve it...
To make it easy for review, I put all the code in a package called "Etoys-Debugger" (except for the code adding the button to the row editor). I don't mean we should upload them as separate packages but it might help to review the code.
Thanks! Richo
On Mon, Nov 14, 2011 at 4:15 AM, karl ramberg <[hidden email]> wrote: This is really nice, Richo. _______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev StepOverExample.003.pr (56K) Download Attachment |
Hi
I think this code looks quite nice and I think it does what it should. I can't see how it could be much simpler either. Others chime in here. I made a drawing of a bug that maybe could be used as the debug button.
Karl On Mon, Nov 14, 2011 at 9:21 PM, Ricardo Moran <[hidden email]> wrote: This version works with the repeat tile, and I replaced the red button with the "next page" button from books. It's more intention revealing, don't you think? :) _______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev bug2.GIF (1K) Download Attachment |
I've also read the code and consider it quite well done -- certainly as good as the code base to which it pertains.
I've not done any serious stress-testing of the code, but I wouldn't worry about its being "too complex for what it does." Cheers, -- Scott On Nov 15, 2011, at 2:34 PM, karl ramberg wrote: > Hi > I think this code looks quite nice and I think it does what it should. > I can't see how it could be much simpler either. > Others chime in here. > > I made a drawing of a bug that maybe could be used as the debug button. > > Karl > > On Mon, Nov 14, 2011 at 9:21 PM, Ricardo Moran <[hidden email]> wrote: > This version works with the repeat tile, and I replaced the red button with the "next page" button from books. It's more intention revealing, don't you think? :) > > Although it seems to work fine, I think the code should be examined before inclusion because I have the feeling the code is too complex for what it does and I'm not sure how to improve it... > To make it easy for review, I put all the code in a package called "Etoys-Debugger" (except for the code adding the button to the row editor). I don't mean we should upload them as separate packages but it might help to review the code. > > Thanks! > > Richo > > > On Mon, Nov 14, 2011 at 4:15 AM, karl ramberg <[hidden email]> wrote: > This is really nice, Richo. > So very useful. We must add this to the image :-) > Maybe enhance the look of the red button a little. > > Karl > > > On Mon, Nov 14, 2011 at 5:39 AM, Scott Wallace <[hidden email]> wrote: > Yay, Richo! Outstanding! > > -- Scott > > > On Nov 12, 2011, at 12:33 PM, Ricardo Moran wrote: > > > Hi, > > > > I've added a simple "step over" button in the script editor. I attached a project to demonstrate. For now, it's an ugly red circle because I don't have a nice image, but it should work as expected. > > > > Limitation: it doesn't work with the repeat tile yet. And it could probably be coded more nicely. > > > > Cheers, > > Richo > > _______________________________________________ > etoys-dev mailing list > [hidden email] > http://lists.squeakland.org/mailman/listinfo/etoys-dev > > > _______________________________________________ > etoys-dev mailing list > [hidden email] > http://lists.squeakland.org/mailman/listinfo/etoys-dev > > > > <bug2.GIF>_______________________________________________ > etoys-dev mailing list > [hidden email] > http://lists.squeakland.org/mailman/listinfo/etoys-dev _______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
In reply to this post by Karl Ramberg
One issue or maybe feature I found with the TimesRepeatTile is that the Try button does not reset the timesToRepeat property.
So the debug button jumps into the TimesRepeatTile and you press the Try button, the debug button will hi-light the same tile you left before clicking the Try button.
Karl
On Tue, Nov 15, 2011 at 11:34 PM, karl ramberg <[hidden email]> wrote: Hi _______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
In reply to this post by Scott Wallace
Thanks for reviewing the code, guys :)
I was afraid of the code quality specially because this is a part of the system I don't get, but if you think it's ok then it's ok for me too. Cheers, Richo
On Tue, Nov 15, 2011 at 7:57 PM, Scott Wallace <[hidden email]> wrote: I've also read the code and consider it quite well done -- certainly as good as the code base to which it pertains. _______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
In reply to this post by Karl Ramberg
Yes, you're right. One thing I was thinking was to move the "timesToRepeat" property from the TimesRepeatTile to the EtoysDebugger, and when hiting the try button or the tick clock, reinitialize the EtoysDebugger altogether.
Also, maybe it would be a good idea to leave the visual feedback instead of deleting after a short while, what do you think? Cheers,
Richo On Tue, Nov 15, 2011 at 8:00 PM, karl ramberg <[hidden email]> wrote: One issue or maybe feature I found with the TimesRepeatTile is that the Try button does not reset the timesToRepeat property. _______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
On Tue, Nov 15, 2011 at 7:12 PM, Ricardo Moran <[hidden email]> wrote:
Agreed, Leave the feedback until next you click next, it gives a visual clue as to where you are in the script and reminds you what just happened on the screen.
_______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
In reply to this post by Ricardo Moran
On Wed, Nov 16, 2011 at 1:12 AM, Ricardo Moran <[hidden email]> wrote: Yes, you're right. One thing I was thinking was to move the "timesToRepeat" property from the TimesRepeatTile to the EtoysDebugger, and when hiting the try button or the tick clock, reinitialize the EtoysDebugger altogether. This sounds right. Once you press other buttons the debugger should be reinitialized.
I think this could be tested. Karl
_______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev |
Hi, I attached a new version of the step button. This one uses Karl's bug picture, it resets the etoys debugger, and it keeps the visual feedback. A few remarks, though:
* I modified PhraseTileMorph>>#try to use the top editor's player when possible. I don't think it could be dangerous, but I'm not sure so I thought you should know... * I had to make a HighlightMorph class to make the rectangle follow the highlighted tile. While writing this I realized a lot of Etoys mechanisms could be made much simpler if we make all morphs trigger events whenever one of its properties change. This way we could avoid a lot of stepping morphs (for instance, all the Updating___Morphs). What do you think?
Cheers, Richo P.S. I borrowed the "salmon sniff" project for the example... I'm not feeling very creative today :)
On Wed, Nov 16, 2011 at 7:23 AM, karl ramberg <[hidden email]> wrote:
_______________________________________________ etoys-dev mailing list [hidden email] http://lists.squeakland.org/mailman/listinfo/etoys-dev StepOverExample2.001.pr (108K) Download Attachment |
Free forum by Nabble | Edit this page |