Saturday, June 10, 2006

What Do We Do with the Old Code?

"What do we do with the old code? Throw it out! Don't comment it out... thrash it!"

-- David Astels

If We Wish to Count Lines...

"If we wish to count lines of code, we should not regard them as 'lines produced' but as 'lines spent:' the current conventional wisdom is so foolish as to book that count on the wrong side of the ledger"

--
Edsger W. Dijkstra

If Programmers Got Paid...

"If programmers got paid to remove code from software instead of writing new code, software would be a whole lot better."

-- Nicholas Negroponte

Wegner's Lemma

"It is impossible to fully specify or test an interactive system designed to respond to external inputs."

-- Peter Wegner, Brown University ["Why Interaction is more powerful than algorithms," CACM 40(5):80-91, 1997]

Quick Summary
  • A mathematical proof that any process that assumes known inputs, is doomed to failure when buildig interactive object-oriented systems.
  • If silver bullets are interpreted as formal (or algorithmic) systems specifications, the nonexistence of silver bullets can actually be proved.
  • Interaction is not expressible by algorithms.
  • Complete specification must be replaced by partial specification of interfaces, views and modes of use.
  • A system satisfies its requirements if it supports specified modes of use, even though correct behavior for a given mode of use is not guaranteed and complete system behavior for all possible modes of use is unspecifiable.
  • From Rationalism to Empiricism: Social and scientific rationalism have common roots in the deep-seated human desire for certainty.
  • Algorithms and Turing machines, like Cartesian thinkers, shut out the world during the process of problem solving.
  • The sacrifice of completeness is frightening.
  • The insight that the rationalism/empiricism dichotomy corresponds to algorithms and interactions... allow computing to be classified as empirical, along with physics and cognition.

Chronologist

Chronologist [n]: an expert in chronology, the arrangement in order of occurence.