Does anybody know from where the “layer of abstraction”/“layer of indirection” quote emerged?

纵然是瞬间 提交于 2019-12-18 03:05:17

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!