Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.
Variant in Knuth, "Structured Programming with Goto Statements" http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf. Computing Surveys 6:4 (December 1974), pp. 261–301, §1.
Knuth refers to this as "Hoare's Dictum" 15 years later in "The Errors of Tex", Software—Practice & Experience 19:7 (July 1989), pp. 607–685. However, the attribution to C. A. R. Hoare is doubtful. http://shreevatsa.wordpress.com/2008/05/16/premature-optimization-is-the-root-of-all-evil/
All three of these papers are reprinted in Knuth, Literate Programming, 1992, Center for the Study of Language and Information ISBN 0937073806
Source: Computer Programming as an Art (1974), p. 671
“The adverse impact on development productivity of requiring programmers to navigate along access paths to reach target data […] was enormous. In addition, it was not possible to make slight changes in the layout in storage without simultaneously having to revise all programs that relied on the previous structure. […] As a result, far too much manpower was being invested in continual (and avoidable) maintenance of application programs.”
Relational Database: A Practical Foundation for Productivity (1982)
Help us to complete the source, original and additional information
E. F. Codd 5
computer scientist 1923–2003Related quotes
Relational Database: A Practical Foundation for Productivity (1982)
you must not fall into the trap of rejecting a surgical technique because it is beyond the capabilities of the barber in his shop around the corner.
Dijkstra (1975) Comments at a Symposium http://www.cs.utexas.edu/users/EWD/transcriptions/EWD05xx/EWD512.html (EWD 512).
1970s
As cited in: Allen Kent, James G. Williams (1995), Encyclopedia of Computer Science and Technology: Volume 32. p. 187
Principles of program design, 1975
As cited in Donald Knuth (1972). "George Forsythe and the Development of Computer Science" http://www.stanford.edu/dept/ICME/docs/history/forsythe_knuth.pdf. Comms. ACM.
"Educational implications of the computer revolution," 1963
1980s, GNU Manifesto (1985)
Source: Software Engineering: Principles and Practice, 2007, p. 2