Donald Knuth        zurück ]      [ Stichworte ]      [ Die Hyper-Bibliothek ]      [ Systemtheorie ]         [ Meine Bücher ]

Literatur

The Art of Computer Programming

Zur Person

bild
Bildquelle: Wikipedia
bild Donald Ervin Knuth (1938), Professor für Informatik an der Stanford University und Urvater des Textsatzsystems TeX.

siehe auch M. Jackson

Anmerkung

Donald Knuth said: "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." (Knuth, Donald. Structured Programming with go to Statements, ACM Journal Computing Surveys, Vol 6, No. 4, Dec. 1974. p.268.) "Premature optimization" is a phrase used to describe a situation where a programmer lets performance considerations affect the design of a piece of code. This can result in a design that is not as clean as it could have been or code that is incorrect, because the code is complicated by the optimization and the programmer is distracted by optimizing.

An alternative approach is to design first, code from the design and then profile/benchmark the resulting code to see which parts should be optimized. A simple and elegant design is often easier to optimize at this stage, and profiling may reveal unexpected performance problems that would not have been addressed by premature optimization.

In practice, it is often necessary to keep performance goals in mind when first designing software, but the programmer balances the goals of design and optimization.

Well, I'm Back, Robert O'Callahan. Christian. Repatriate Kiwi. Mozilla hacker, November 1, 2005

"Premature Optimization Is The Root Of All Evil" Is The Root Of Some Evil There's a folklore quote "premature optimization is the root of all evil", attributed to Tony Hoare and Donald Knuth. A variant is due to my PhD advisor's father Michael Jackson: "The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.". Unfortunately --- and I'm not the first to note this --- this advice, taken out of context and followed slavishly, often leads people into deep trouble. The problem is that it collides with another well-known feature of software development: it gets more expensive to make changes to the system later in its development, especially cross-cutting changes that impact module interfaces. If you leave optimization to late in development, then profile it and find that fixing the performance bottleneck requires a major change in your design, or forces major module interface changes, then you have a serious problem.


D. Knuth schreibt im Vorwort seines Buches Concrete Mathematics:
„Der Veranstaltungstitel ‚Konkrete Mathematik‘ war ursprünglich als Gegenpol zur ‚Abstrakten Mathematik‘ gedacht, denn konkrete, klassische Errungenschaften wurden von einer neuen Welle abstrakter Vorstellungen – gemeinhin ‚New Math‘ (‚neue Mathematik‘) genannt – in rasantem Tempo aus den Lehrplänen gespült. Abstrakte Mathematik ist eine wunderbare Sache, an der nichts auszusetzen ist: Sie ist schön, allgemeingültig und nützlich. Aber ihre Anhänger gelangten zu der irrigen Ansicht, dass die übrige Mathematik minderwertig und nicht mehr beachtenswert sei. Das Ziel der Verallgemeinerung kam dermaßen in Mode, dass eine ganze Generation von Mathematikern nicht mehr im Stande war, Schönheit im Speziellen zu erkennen, die Lösung von quantitativen Problemen als Herausforderung zu begreifen oder den Wert mathematischer Techniken zu schätzen. Die abstrakte Mathematik drehte sich nur noch um sich selbst und verlor den Kontakt zur Realität; in der mathematischen Ausbildung war ein konkretes Gegengewicht notwendig, um wieder ein stabiles Gleichgewicht herzustellen.“
E. Knuth meint schlicht und einfach numerische Mathematik als Teilgebiet der Informatik !


 
[wp]