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 offer some appreciation and insight.11. In a cyber-physical system, logic and physics can show the presence of errors, but not their absence.
12. To master complexity you need a clear idea of the simplicity you are aiming for.
13. No system can check its own assumptions: if it checks, they aren't assumptions.
14. In a cyber-physical system, the die is cast for success or failure in the pre-formal development work.
15. Software engineering for a cyber-physical system is programming the physical world.
16. Traceability should trace the graph of detailed development steps, not just their products.
17. A deficient development method cannot be redeemed by skilful execution.
18. A declarative specification is like the Sphinx's riddle: "Here are some properties of something—but of what?"
19. Cyber-physical systems can exhibit no referential transparency: everything depends on context, including—recursively—the context itself.
20. Natural science aims to be universal, but engineering is always specific to the current project.
 A J Perlis; Epigrams on Programming; ACM SIGPLAN Notices 17,9 September 1982.
Links to other posts:
← Ten Aphorisms: Ten short remarks