Skip to content

Abstractions

All maps are wrong... but some are useful.

For a map to be useful it has to be wrong. For a map to be right it has to represent with exactitude the world, meaning it has to be the size of the world it represent. Such map has no use as it doesn't simplify our task.

A map's aim is to shrink the information to the minimum for us to accomplish our task. This means that the level of information must depend on our task. You won't take the same map for a road trip or a hike.

Abstractions are the same.

An abstraction that tries to represent all the information it tries to abstract fails in its mission. In the end you end up with the same information but expressed in a different way.

This means that for an abstraction to be useful it must omit information.

Then comes the need to choose which information to keep and the appropriate semantic for the task.

This also means that an abstraction can't fit all tasks and you may not be able to use it. But this is ok, not everyone has to speak the same language; you just need to find the vocabulary that fits your need.

Innmind doesn't try to fit everybody's need (1).

  1. As you'll find with the filesystem abstraction or the ORM.
Note

But keep in mind that semantics change and vocabularies expand.