Friday, February 4, 2022

Realms of Programming

One of the ideas I'm tossing around for PigeonTalk is the concept of a Realm.  In a Smalltalk environment, when you're using a debugger if you keep hitting "Send" to follow the message send into the called method, you'll eventually find yourself in the "weeds" inside collections code, window frameworks, exception handling, and more.  Although this may be interesting, and useful at times, it can be distracting and confusing for kids who are new to programming.

On top of that, your stack trace in the debugger is filled with low level framework methods that usually don't help you understand the problem at hand.

To address this, I'm considering the concept of a Realm.  A Realm is a group of classes and methods.  It has some similarity to the concept of a Package in Store or an Application in Envy.  On top of the grouping of classes and methods, however, it controls what you see when you debug through your code and when you browse senders, implemented, class references, etc.

Users can turn realms on or off.  If a realm is on, then its classes and methods will show up in the IDE tools allowing you to see and step through the code.  If a realm is off, you don't see the code inside it.  Stack frames called by that code are hidden. Senders, implementers and references from the realm are hidden.  You see the code you're working on and only that code.

It will certainly take some experimentation and trial implementations, but I believe it can help control the complexity of the system and hide the irrelevant parts from the programmers so they can focus on what they're doing.

No comments:

Post a Comment