[squeak-dev] C++ parser in Smalltalk?

Peter William Lount peter at smalltalk.org
Mon Jun 30 19:28:58 UTC 2008


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.



More information about the Squeak-dev mailing list