Hi Frank,
Your project seems interesting. I'd like to know more. Any links? Papers?
I need to learn a lot of ick stuff really fast and unfortunately that stuff is really icky, yup the ick is a number of very large monster C/C++ systems with tons of core assembly thrown in for extra fun. Some custom visualizations like I've done for learning monster Smalltalk systems will save a lot of time.
I'm into accelerated learning of detailed systems using the visual cortex of our brains since the human visual system has massive bandwidth that word based and auditory thought channels lack, although I suppose one could convert large systems into a symphony. Anyway visual representations of large systems can help in quickly learning about how they are constructed and identify where one needs to focus extra attention.
On a recent large Smalltalk project the visual map required about eight feet by three feet just to map out the connections between the larger object assemblies. It helped provide an overview of the system. Programmers who'd been working with the system for years had no idea that it was shaped that way.
There is a video from a few years back on Channel 9 over at ick, Microsoft, where they tell of a very large map of their 5,000 + DLLs for XP. They built it by reading the raw DLLs and determining the links between them all. They consider their OS a fractured system living in these DLLs which we know as DLL Hell. It's a Hell for them too! Ah, the fun of eating your own technology. They found redundant code (sometimes 12+ copies of the same function which leads to all sorts of fun fixing bugs and providing security patches) and were better able to reduce their icky factor a little making XP more stable and less tangled that their prior systems.
Aside from the visualization aspect I'd like to computer the System Brittleness Factor (LSBF) for each system to see how rigid or flexible the code base is. This helps identify where it can be improved and where code can be shrunk by increasing flexibility through merging of methods/classes that really are similar. As we know C/C++ code is more "rigid" due to it's use of typed variables which very strictly limits the object flow paths through the program. Even with C++ Templates which enables a measure of polymorphism for C++ programs the rigidity can be measured. Typically the code needed for a system expands when typed variables are added. This is a problem for many reasons including comprehension due to the increased brain bandwidth required to simply read the ick.
Also for the other reasons I stated in the earlier emails: "All your languages and systems belong to us [Smalltalk Style Systems]." The sCurge of C based systems has been with us way to long, it's time to take back the night and the day. ;-) Gotta have fun...
Check out the awesome work of LLVM. http://www.LLVM.org. Runtime Dynamic Recompiled on the Fly C based systems on the way and in part financed by Apple. Liberation from GCC is on the horizon. Imagine a Squeak that can recompile it's VM on the fly and then "hop" over to the new one dropping the old version from memory!!! We do this all the time in Smalltalk, it'll be nice for C to finally catch up after four decades! It's also nice to see a vendor like Apple attempting to bring this capability to their C based operating systems and applications technologies.
All the best,
Peter
[ | peter at smalltalk dot org ]
ps. Ick is a technical term referring to the ick factor of a system. Ick is the opposite of elegant, beauty, simplicity. I work to identify ick and remove it from systems when possible or simply to fix the ick so that it doesn't stop a system from working.