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, The Humble Programmer, 1972 (via)