Abstraction is the act of keeping some distinctions and deliberately dropping others, so that many particular things can be handled as one general thing. Locke called it separating ideas “from all other ideas that accompany them in their real existence”; programmers do the same when they write a function, an interface, or a type. Every abstraction is therefore also a decision about what to forget.

Discussed in