Seeds of Disquiet in Programming
Richard P. Gabriel, Sun Labs
Since the first days of computing there has been a disquiet about precision--or the machine. This disquiet implicates the nature of computational existence and how programs are treated. An early form of this disquiet was Bayesian inference which looks at probabilities as degrees of belief in contrast to purely deductive modes of reasoning. The trend in logic and mathematics continued with fuzzy sets and fuzzy logic which talk about set membership in vaguely defined sets. This early disquiet was with truth and certainty, both of which were shaken scientifically and philosophically by quantum mechanics where observables are characterized by probability distributions.
Later the disquiet became more focused and better defined: Expert systems were developed which worked with confidences--degrees of belief--and challenged programming. The challenge came in three parts: the sequence of steps to reach a conclusion should be dynamically synthesized rather than statically programmed; multiple lines of attack or reasoning can be pursued concurrently; and knowledge has primacy over technique. The impulse for an expert system developer when things don't work is to expand the knowledge base not reprogram procedures.
The essence of the disquiet has to do with what programs are and how they behave. The strong thrust in computing has been that programming is a precise encoding of a technique for solving a primarily mathematical problem. The disquiet is that not everything fits such a mold--the (very) execution of a program, its well being and robustness in the face of flaws, and the path it takes through the exigencies it faces while running seem to be of a different nature from that of simple computations and therefore require some other means, mechanisms, and ways of operating than do those more routine parts of the running program.
The disquiet has ebbed and flowed over the years, with neural nets, genetic programming, and even things like randomized algorithms on one hand, and ever more detailed and exhaustive type schemes, precise semantics, and methodological rigor on the opposite, as if one side wished to accommodate and survive the unexpected in processing while the other wished to control and dominate.
Finally, the disquiet may resolve to an approach that takes at least some part of computing as living while other parts are deathlike machines--the one suitable for inherently flexible and adaptive techniques and mechanisms, and the other, perhaps, remaining subject to rigor.