Programmer ProductivityThe elements of style, 4th edition.
``Muddiness is not merely a disturber of prose, it is also a destroyer of life, of hope: [..]. Think of the tragedies that are rooted in ambiguity, and be clear!''
William Strunk, Jr. and E. B. White.
Pearson Higher Education, 2000.
First published in 1918.
Recursive functions of symbolic expressions and their computation by machine, Part I.
Communications of the ACM 3(4):184–195, April 1960.
An axiomatic basis for computer programming.
``[..] which can be used in proofs of the properties of computer programs.''
``Assignment is undoubtedly the most characteristic feature
of programming a digital computer, and one that
most clearly distinguishes it from other branches of mathematics.''
C. A. R. Hoare.
Communications of the ACM 12(10):576–580, October 1969.
The mythical man-month (anniversary ed.).
``The hardest part of the software task is arriving at a complete and consistent specification, and much of the essence of building a program is in fact the debugging of the specification.''
Frederick P. Brooks, Jr.
First published in 1975.
Time, clocks, and the ordering of events in a distributed system.
Communications of the ACM 21(7):558–565, July 1978.
Social processes and proofs of theorems and programs.
Richard A. DeMillo, Richard J. Lipton, and Alan J. Perlis.
Communications of the ACM 22(5): 271–280, May 1979.
Implementing remote procedure calls.
Andrew D. Birrell and Bruce Jay Nelson.
ACM Transactions on Computer Systems 2(1):39–59, February 1984.
Compilers: principles, techniques, and tools.
Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman.
Macros that work.
Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pp. 155–162, 1991.
Extensibility, safety and performance in the SPIN operating system.
Brian N. Bershad, Stefan Savage, Przemyslaw Pardyak, Emin GŁn Sirer, Marc E. Fiuczynski, David Becker, Craig Chambers, and Susan Eggers.
Proceedings of the fifteenth ACM symposium on Operating systems principles, pp. 267–283, 1995.
Growing a language.
Invited talk, OOPSLA '98.