Skip to content
Tech News
← Back to articles

Reversing Abstractions: An Existential Crisis

read original more articles
Why This Matters

This article challenges traditional views of abstractions in computer science by exploring the concept of 'reversing' abstractions, where implementation details are exposed rather than hidden. Recognizing these alternative approaches can influence how developers design interoperable systems and debugging tools, impacting the flexibility and transparency of software development. Understanding these perspectives is crucial for advancing more adaptable and resilient programming infrastructures.

Key Takeaways

Rambles around computer science

Diverting trains of thought, wasting precious time

Mon, 10 Nov 2025

Reversing abstractions: an existential crisis

Computer science in general, and language implementation in particular, are founded on the idea of realising abstractions in a way I'll call “forwards” and also “existential”. This post is about how these aren't the only way to think about programming infrastructure and abstractions.

The theory goes that you pick some desired abstraction—it could be a programming language, maybe an abstract data type, or something else. Then you figure out the realisation. In the case of a programming language, this could be memory layouts, calling conventions and a compiler that generates object code modelling these. For abstract data types, it's some specific concrete data structure and the mapping from abstract to concrete operations.

That's the “forwards” part. It's also “existential” when you keep the details of the realisation to yourself. Client code (e.g. source code in our new language) knows there is a realisation but the implementation choices themselves are hidden. In turn this allows the implementer to change their minds, while having indemnified themselves against any fallout when this breaks things. (Cynical, me?)

I find myself drawing an ASCII-art diagram like this.

existential . abstraction v / | \ v //|||\\ v . . . . . . . possible realisations -- pick one! hide it!

So far, so textbook. However, this hiding isn't always done. Examples of “opting out” of hiding are ABIs and debuggers.

... continue reading