Registered: Jul, 2006
Re: Josh Bloch on the Semantic Gap
Posted: Sep 19, 2009 8:37 AM
> The very basis of software development is processing and
> storing bits in available time and space. This doing
> particular things with available resources, and by
> logical, mathematical understanding, is what maps it to
> engineering generally. If you consider structural
> engineering, a basic capability of it is calculating
> resultant behaviour from forces across whole structures.
> In software, that translates to time and space needed for
> a whole computation. But software development lacks
> comparatively clear, predictive, understanding and
> control. The basic medium is entirely determinate; it is a
> lack of maturity in the field.
Structural engineering is not properly comparable with programming. The models of structural engineering are based on analysis (in the mathematical sense), a field where broad-based deep tools are available; in structural engineering, one may almost always assume that small errors will cancel out. Programming, on the other hand, is an activity in which the result of the whole depends intimately on the state of the parts. A single alpha particle from within a memory chip (uranium and thorium are everywhere, alas) that flips a single bit may cause a program to produce results whose error is arbitrarily large.
So much is commonplace. Alas, the real problem is far more deep-seated; it lies in the fundamental intractability of discrete mathematics as compared with continuous mathematics. Problems in discrete mathematics may defy solution for centuries, because those broad-based tools of analysis are simply not available.
Number theory is quirky: what we know, we know; but what we do not know, we depend on fundamental insight to discover, and fundamental insight comes when it wants to, not when we need it to. It's no accident that Goedel chose the domain of integers to make his famous proof of incompleteness. In the domain of the real numbers, on the contrary, arithmetic is in fact complete (it is not possible to find theorems that are true but not provable).
Or Fermat's last theorem: how easy to state, how hard to prove! And when the proof came, it came from outside number theory altogether, precisely by finding an ingenious method of applying continuous mathematics (of a kind utterly inconceivable to Fermat) to the problem in such a way that the theorem would fall out of it as a special case.
As long as we employ digital methods, with their unmatched accuracy when correct, I fear we will have to live with their unmatched potential for nonsense when incorrect.