Alan Perlis was the first winner of the Turing Award in 1966. In 1982 he published  a set of 130 epigrams on programming. His aim, he explained, was to capture—in metaphors—something of the relationship between classical human endeavours and software development work. "Epigrams," he wrote, "are interfaces across which appreciation and insight flow." This post offers a few aphorisms. My dictionary tells me that an epigram is 'a pointed or antithetical saying', while an aphorism is 'a short pithy maxim'. Whatever they may be called, I hope that these remarks will evoke some appreciation and insight.1. The products of normal engineering have requirements, but the products of radical engineering have only hopes and aspirations.
2. Premature formalisation cripples understanding of the physical problem world.
3. Successful search for design errors demands a method that tells you where to look.
4. Large structures can emerge only from bottom-up assembly; small structures may sometimes emerge from top-down decomposition.
5. Declarative properties can be deduced from causal models, but not vice versa.
6. Administrative systems can sometimes define problem world states in terms of the computer state; cyber-physical systems must be more honest.
7. You can't determine what went wrong unless you understand exactly what going right would have been.
8. To ask whether the software for a cyber-physical system is 'correct' is like asking whether your house is 'correct'.
9. A system is not a device: devices have users, but systems have participants.
10. We lack suitable formalisations for causality, but the physical world doesn't know that.
 A J Perlis; Epigrams on Programming; ACM SIGPLAN Notices 17,9 September 1982.
Links to other posts:
→ Top-Down: Why top-down development is so often a mistake