I think smalltalks and Pharo in particular do a good job of this. The introspection, debugging and visualization are top notch. The way it shows functions associated with classes (and the way it separates class side variables from instance side) offers an even higher degree of clarity. The hierarchy of inherited objects and being able to jump to variable, class and function definitions both user and system defined is awesome. The big problem with it though is that it is very OOP in a way that is still just a confusing as deeply inherited, and overloaded OOP can be. And part of me wonders if the reason Pharo has such a great tools for introspecting is simply to make up for the deficiencies of OOP. Don’t get me wrong though, I love the language, and Pharo and Smalltalk put other languages to shame in terms of it’s debuggability and introspection which it has had since the The Smalltalk 76 demo Alan Kay gave to Steve Jobs at Xerox park. And I’m not sure how you could do the things Smalltalk does without everything being an object, message passing, and late binding everything.
I think smalltalks and Pharo in particular do a good job of this. The introspection, debugging and visualization are top notch. The way it shows functions associated with classes (and the way it separates class side variables from instance side) offers an even higher degree of clarity. The hierarchy of inherited objects and being able to jump to variable, class and function definitions both user and system defined is awesome. The big problem with it though is that it is very OOP in a way that is still just a confusing as deeply inherited, and overloaded OOP can be. And part of me wonders if the reason Pharo has such a great tools for introspecting is simply to make up for the deficiencies of OOP. Don’t get me wrong though, I love the language, and Pharo and Smalltalk put other languages to shame in terms of it’s debuggability and introspection which it has had since the The Smalltalk 76 demo Alan Kay gave to Steve Jobs at Xerox park. And I’m not sure how you could do the things Smalltalk does without everything being an object, message passing, and late binding everything.