问题
The quote goes something like this:
There's no problem in Computer Science that can't be solved by adding another layer of abstraction to it
(Copied in this wording from http://blogs.oracle.com/fcmartin/2009/01/pardon_my_dust.html)
There are a number of variations but I have been unable to find an originator. Since I quite like the quote with its tongue in cheek and quite a bit of truth, I would be interested to hear if anybody knows where this may come from.
回答1:
This website attributes it to David Wheeler, who worked on EDSAC among his other early accomplishments. His Wikipedia bio also suggests he might have originated it. This is probably your best bet.
The form they give is:
Any problem in computer science can be solved with another layer of indirection. But that usually will create another problem
I first heard it when I was a CS freshman in '85 while our instructor was introducing pointers in our CS101 course. I got the impression it was a canard even then.
If anyone is looking to attribute it to someone, it had better be someone at least moderately famous back in '85. That probably rules out Koenig.
回答2:
I like this version better:
All problems in computer science can be solved by another level of indirection... Except for the problem of too many layers of indirection.
David Wheeler
Insightful... So remember: KISS!
回答3:
The better known quote is:
There's no problem in Computer Science that can't be solved by adding another level of indirection to it
Not sure where it came from, but I have a vague memory that Andrew Koenig had something to do with it.
Edit: And it seems to be so - see this review of his and his wife's excellent book Acclerated C++ in Dr Dobbs.
回答4:
I have seen it attributed to Andrew Koenig.
回答5:
I've found these terms at:
- wikipedia:
Fundamental theorem of software engineering
The fundamental theorem of software engineering (FTSE) is a term originated by Andrew Koenig to describe a remark by Butler Lampson attributed to the late David J. Wheeler:
"We can solve any problem by introducing an extra level of indirection."
The theorem does not describe an actual theorem that can be proven; rather, it is a general principle for managing complexity through abstraction.
The theorem is often expanded by the humorous clause:
"…except for the problem of too many levels of indirection,"
referring to the fact that too many abstractions may create intrinsic complexity issues of their own.
RFC 1925 (year 1996):
which is an "April Fools' Day RFC" and here is the relative section:
The Twelve Networking Truths
(6) It is easier to move a problem around (for example, by moving the problem to a different part of the overall network architecture) than it is to solve it.
- (6a) (corollary). It is always possible to add another level of indirection.
来源:https://stackoverflow.com/questions/2057503/does-anybody-know-from-where-the-layer-of-abstraction-layer-of-indirection-q