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.
----- Original Message -----
From: Julian Leviston
To: Fundamentals of New Computing
Sent: Tuesday, July 13, 2010 7:33 PM
Subject: Re: [fonc] goals
On 13/07/2010, at 10:29 PM, Jecel Assumpcao Jr. wrote:
The lack of scalability that I was talking about is where a system
becomes too much for any person to understand. Though lines of code is
very simplistic, Alan has compared code sizes of various projects with
different kinds of books in a few of his talks. There are texts that
almost anybody can read and there are others that nobody ever will.
Certainly you can't understand something you have not read. So that is
one bottleneck. I bet there are others - even in a system that is
reasonably short there might be too many combinations of elements to
understand:
http://www.cs.virginia.edu/~evans/cs655/readings/smalltalk.html
-- Jecel
This is extremely interesting to me, because I could ask you very simply:
Do you understand the basic relationship between planets?
Also... of how animal (including our) bodies inter-relate?
Also... of how biological cells interact with each other?
Do you see what my point is? Perhaps if one introduces scale properly, there
is no limit to what one can understand.
Julian.
------------------------------------------------------------------------------
_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc
_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc