Beyond Black Boxes in Software

I've seen/heard object oriented software compared to a black box.  You don't need to know how something happens, you just need to know that it happens.

This is a nice analogy, as far as it goes.  Unfortunately, most software libraries are not well documented.  Even the gold standard Microsoft/Java/Python libraries could be improved.  This isn't a a jab at those technologies, I use them all the time, but even the best could be improved.

In fact, I've downloaded some of the .NET framework so I could see how certain algorithms were implemented. 

Now, to black boxes.  Wouldn't it be better to have crystal boxes?  Where you can clearly see what is happening on the inside, but not be allowed to mess with the guts (unless it's open source of course).  .NET sorta has this.  You can use some kind of reflector to see all the internals of an object.

You'd still have the open closed principle (open for extension, closed for modification).  I think Python is close to this ideal.  You can play with objects in the interpreter.  You can also get your hands on the source.

Black boxes sounds good in theory.  However, in practice, I'd prefer a nice transparent crystal box.  

About

[Insert Witty Saying Here]