On 14/07/2010, at 1:55 PM, BGB wrote:

> yes.
>  
> there is much emphasis on people understanding an entire system, whereas 
> often a programmer does not need to have such comprehensive understanding.
>  
> in a large codebase, for example, parts of the project will come into view as 
> one works on them, and when one moves elsewhere they may pass away from 
> memory.
>  
> with an abstracted system, pretty much the entire system may be viewed 
> essentially as a black-box, with people looking at the externals but paying 
> no attention to what happens on the inside. a person working within this 
> system may in-turn see the system in terms of so many black-boxes, and at the 
> same time view what happens externally as a sort of black box (or, as 
> "outside of the current scope").
>  
> of course, this sort of thinking generally requires a fair level of 
> standardization at the interfaces between these systems, such that what goes 
> on inside the box does not break what is outside and vice versa.
>  
>  
> so, often, one may define their APIs and/or data representations before 
> actually having code in place on either side of the boundary (a non-existant 
> app working against a non-existant library).
>  
> but, OTOH, this strategy does seem to scale fairly well, as with 
> multi-million line projects, it is unlikely much of anyone will really look 
> over the whole thing.
>  
> however, in these cases, it is fairly important that these boxes also be 
> "open" (as in, the internals of a complex system are left where programmers 
> can access them), since a "black monolith" is in turn of limited utility. so, 
> some of this is tradeoffs.
> 


Yes, that's exactly what I was saying. I believe it's called Encapsulation :P 
Having an interface and passing messages is incredibly mis-understood generally 
amongst programmers, it seems to me. It's impossible to scale well without an 
interface to objects. In exactly the same way that cells have cellular walls, 
animal bodies have skins or planets have atmospheres, objects need 
interfaces... 

My interest lies in "tiny objects"... because small amounts of things are 
usually more understandable for us humans, and because perhaps there is such a 
thing as a "planck feature" meaning the smallest size one can get to and still 
call it a feature (or object). For example, if I'm considering a certain scale 
where oranges are distinct objects from other fruits, then perhaps one or ten 
oranges interacting with each other is very understandable. Two hundred 
thousand objects interacting is less understandable for humans. But if you look 
at the scale of orange juice factories, perhaps 200,000 oranges (relabelled as 
"raw product quantity") is easy to comprehend because it means something 
different in that context of scale.

Mental visualisation is inherently useful when it comes to comprehensibility of 
systems. Better than mental visualisation, is EXPLICIT graphic visualisation. 
If we could come to a system that inherently understands context of scale and 
allows us to present things graphically with relation to this, we'd really have 
something worth some value for the entirety of humanity IMHO.

Put simply, our systems only seem to represent ONE context of scale and don't 
allow comprehensive illustration of where we're looking on a general (ie they 
lack an awareness of scale-context).

Hopefully all of this is understandable.

Julian.
_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc

Reply via email to