[XML-SIG] xml.apache.org

uche.ogbuji@fourthought.com uche.ogbuji@fourthought.com
Tue, 09 Nov 1999 19:22:50 -0700


Greg Stein:

> I looked at IBM's XML4C package a while back. A bazillion C++ classes all
> over the place. I don't know what it is about C++, but most C++
> programmers seem to want to write a class for this and that, the other
> thing, their sister, and for their little dog, too. I shook my head at the
> beast and haven't looked back.
> (figuring that if somebody really wanted XML4C plugged into mod_dav, then
>  they can do the work...)

It can be odd, coming from the tremendous productivity of Python development, 
to contemplate the typical state of large-scale C++ and Java projects.

There is an interesting article in last Month's DDJ talking about a software 
engineering principle that I was at first shocked to discover is just being 
re-invented.  It points out that the structured-programming movement was about 
moving from a graph model of code dependency and control-flow to a tree model. 
 They then point out that the OO revolution has merely moved us back to the 
old problem in slightly different form: now we have a graph of 
object-dependencies.  The whole article talks about a C++ programming practice 
of organizing object dependencies and flow strictly into tree-form.

My first thought was that this was all quite a commonplace to be occupying the 
respectable pages of DDJ.  There have been several books on large-scale OO 
programming that admonish developers to manage component dependencies as DAGs 
and trees to reduce complexity and improve traceability.  But then I thought 
of the several huge projects I've worked on pre-Python, and I realized that we 
broke such sound sense many times because "uses" relationships often 
stubbornly refused to line themselves up properly.  I have noticed that I am 
much more successful in proper hierarchical design using Python, and similar 
problems usually resolve themselves into far fewer actual classes with 
better-defined interfaces.

I'm not sure exactly why this is the case, and I'm sure there's a Ph.D. 
dissertation in there somewhere, but despite people's insistence on knocking 
Python for large-scale system design, I find it many times more suitable than 
C++ or Java.


-- 
Uche Ogbuji
FourThought LLC, IT Consultants
uche.ogbuji@fourthought.com	(970)481-0805
Software engineering, project management, Intranets and Extranets
http://FourThought.com		http://OpenTechnology.org