speed
On Mon, Jun 30, 2008 at 4:10 PM, Igor Stasenko siguctua@gmail.com wrote:
2008/6/30 Peter William Lount peter@smalltalk.org:
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.orghttp://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.
If you able to compile things at run time, then why compiling C at all? See Exupery & friends.
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.
-- Best regards, Igor Stasenko AKA sig.