[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
|