It is good to re-read Alan Perlis' epigrams in programming from time to time.
Some which stand out to me today:
32. Programmers are not to be measured by their ingenuity and their logic but by the completeness of their case analysis.
41. Some programming languages manage to absorb change, but withstand progress.
64. Often it is the means that justify the ends: Goals advance technique and technique survives even when goal structures crumble.
94. Interfaces keep things tidy, but don't accelerate growth: Functions do.
One which I don't think has ever stood out to me before:
20. Wherever there is modularity there is the potential for misunderstanding: Hiding information implies a need to check communication.
And of course, there are the old favorites:
11. If you have a procedure with ten parameters, you probably missed some.
95. Don't have good ideas if you aren't willing to be responsible for them.
101. Dealing with failure is easy: Work hard to improve. Success is also easy to handle: You've solved the wrong problem. Work hard to improve.
117. It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?
Saturday, February 2, 2008
- Smoke and Mirrors. Neil Gaiman.
- The Long Tomorrow. Leigh Brackett.
- Norstrillia. Cordwainer Smith.
- Nova. Samuel R. Delany.
- Iron Sunrise. Charles Stross.
- The Lies of Locke Lamora. Scott Lynch.
- The Road. Cormac McCarthy.
- Paradise Lost. John Milton.
- Lord of Light. Roger Zelazny.