On Tue, Mar 2, 2010 at 1:18 PM, Andrey Fedorov <[email protected]> wrote: > John Zabroski wrote: >> >> the three stumbling blocks are size, complexity and trustworthiness > > How are these different? > A small program is a simple program by definition, assuming it's expressed > in an intuitively comprehensible way.
I disagree that a small program is by definition a simple program. Let's consider a program os a network with objects as nodes and paths of communication as edges. If you have a program with N objects and N-1 edges, it's going to be a simple and pretty linear program. If however, in the other direction, each object itself has N-1 edges for N*(N-1) paths of communication you'll quickly end up with a complex system without growing in size. Complexity is a question of topology and graph theory, size is a question of quantity. Often in science, relations amongst objects are not considered as significant. This was particularly the case in biology for a long time where a large number of practitioners thought they could understand biological systems in their entirety by isolating subsystems and not considering that in reality these systems exist in an environment. A powerful case for thinking about relationships was made by Bertalanaffy in his book General Systems Science. What particularly struck me about his work is the difference between informational feedback/openness (e.g. Cybernetics) and structural feedback/openness particularly of the thermodynamic kind. In Cybernetics, it's not possible for a system to evolve into a more complex structure whereas with thermodynamic feedback and input of negative entropy it is. This may seem like it has nothing to do with computer science or software, but I think it does. These concepts can show us how to understand complex systems, especially those that are capable of changing in structure. Incidentally, there's a link between the ideas of Bertalanaffy (and also the related ideas of Prigogine) to Lambda Calculus via the work of Walter Fontana and his work on Abstract Chemistry (http://tuvalu.santafe.edu/~walter/Papers/barrier.pdf , http://tuvalu.santafe.edu/~walter/Pages/publications.html ) > And a simple program is a program I > can trust to do what I think it does. Conversely, the only reason I wouldn't > trust a program (assuming I trust the compilers/interpreters) is because it > would be too complicated to understand. That's what I meant when I quoted As for trustworthiness ... if complexity can be understood in terms of topology and graph theory, then trustworthiness can be understood in terms of applying graph theoretical techniques to verify or guarantee behavior of the structures represented by the network. All in all, I think there's a pretty clear distinction to be made. wes _______________________________________________ fonc mailing list [email protected] http://vpri.org/mailman/listinfo/fonc
