I can execute foreverTrue in a Playground and when nothing returns in an appropriate amount of time. I can stop the execution
While working on a project I made a mistake in some code. A common mistake in most languages, a less common one in Smalltalk or Pharo. Something similar to the below.
foreverTrue
| index end |
[ index < end ] whileTrue: [
�� �� "Do something clever.
�� �� �� But forget to increment index."
].
^ returnSomething
I can execute foreverTrue in a Playground and when nothing returns in an appropriate amount of time. I can stop the execution. Fix the bug. Try again. I lose nothing. All my data, all my image state is still there. I do not have to do anything special to execute foreverTrue again, but now successfully so.
Because Pharo/Smalltalk is so much more than just a programming language, this is possible.
Most languages I know you would have to kill the vm and start all over. I would have to do everything I had already done to get to the correct state in order to execute my method. I guess many static languages might catch the bug and not allow execution. But I have no experience there.
I was just curious as to what other languages, environments might survive my mistake and allow me to gracefully correct and continue.
I think this one of the big wins for Pharo/Smalltalk. We can sometimes mess up and recover gracefully.
I think small things like this should possibly be collected in a document as to some reasons for Pharo.
Thanks.
Jimmie