Currently playing with some sample programs that I
downloaded from this site. I must
say these programs are very good for making kernels.
11:57 AM
Speculation
One thing I noticed with COM's IUnknown is the
QueryInterface member function. COM specification details
say interfaces totally decouple objects from each other,
objects pass information by means of wires connected to
each other. But, I think COM has made a mistake when it
used refids to query an interface, this method resulted to
an effect that made clients know who its objects are. Same
problem again: a web of inseparable objects.
12:45 AM
Have been playing Atheos' libgui and so
far
I'm
getting
a
lot of compile errors. It looks like libgui is heavily
dependent on a win32 version of gcc, plus, some of the
header files seem to point to a win32 include directory. My
guess is thatlibgui was developed initially from a DOS
based compiler. And coverting it over to linux would
require a herculean task. I dunno, I'll find out as soon as
they start talking about the things I reported.
1:40 AM
Code Reuse Rant( please ignore )
On another topic, all this research I've been doing only
made me realize that code reuse is still far from being a
real solution. Looking at
some of the major milestones, like how K&R had their
version of code reuse by means of built-in and user-defined
libraries, one might think that libraries was the solution,
Unfortunately it wasn't because most programs had the
tendency of becoming monolithic.
Then comes Stroustrup's inheritance which was
supposed to cure the monolithic disease by means
modularization using classes, forcing developers to reuse
code by coupling objects together forming a heirarchy or
web of classes. Well, I think it wasn't the solution too
since it only made classes interdependent making it
impossible to divide the classes into smaller pieces.
Then comes MS with their version of COM which was supposed
to improve code reuse by means of contract programming.
Well, I think it failed too for the same reason that its
achilles heel was the interface that bind the components. A
bad interface design
could really make components pretty much have the same
problems as interdependent classes. Also, component
techonology somehow raised the learning curve to a level
where it takes a newbie about 6 to 12 months to learn all
the interfaces and classes. Then it would take years of
practice just to become a COM expert.
There's a new one called factoring which was supposed
to cure interface design problems. This one is still
relatively new on my radar, so I'll just skip this one
until I get more information.
Somehow, with all these variety of approach in achieving
code reuse are IMHO, still not enough to be even treated as
a practical solution. I'll be waiting for that day when
code reuse will just be as easy as a walk in the park.
