I'd extend that by saying it teaches you what OO was meant to be.. It also shows you a lot of what is missing in modern environments. Imagine being able to run code and create any objects via a kind of command line and while any program is running be able to change it on the fly for experimentation/exploration purposes! I wish .net had something like this!
I'm not familiar with these. Are the properties and methods that dynamically add visible in the code editor?
It seems C# work by subclassing the DynamicObject class. What about dynamically extending all the other existing C# classes?
What if I subclassed a C# Queue as MyQueue and then while my days long simulation was running I wanted add an instance variable 'trackCount' to all existing MyQueue instances? In Pharo all you do is this...
btw, see the section here on "Blub Paradox"
(http://www.paulgraham.com/avg.html )
which means I'm not really competent to comment of C#'s dynamic objects.