Abstraction in software is a tool that facilitates communication. But it's often misused as a "problem-solving tool". Abstraction doesn't solve problems, the details do.
6. 6
David Wheeler: ”All problems in computer science
can be solved by another level of indirection";
Kevlin Henney: "...except
for the problem of too
many layers of
indirection."
FTSE (The Fundamental Theorem
of Software Engineering)
24. Communication With Code
24
Hey! I’m changing the method that
conflicts with your changes!
Roger!
... done and committed!
Ok! I’ll update and check
the merged changes!
... Looks good!
Great!
31. 31
"Being abstract is something
profoundly different from being
vague … The purpose of
abstraction is not to be vague,
but to create a new semantic
level in which one can be
absolutely precise."
Edsger W. Dijkstra