Erik Engheim
1 min readDec 4, 2021

--

The difference between accidental complexity and necessary complexity.

Usually when you create a new design of pretty much any technology you are able to learn from the mistakes of the past. This allows you to create a cleaner design which achieves the same things as older designs while being less complex.

However there is of course a limit to how simple you can make something before you remove necessary features and capabilities. Also over time you must adopt to new innovations and new needs. It is hard to avoid the growth in complexity.

But this is why I believe there must be regular cleanups of any technology. This is much like refactoring old software. Complexity grows as we add features, but over time it becomes apparent that there are ways to modify the overal design to retain existing functionality while keeping the whole thing simpler.

x86 in particular is based on hardware choices made a long time ago which are no longer relevant. This ia accidental complexity, not necesary complexity. Variable length instructions are not necessary. It is an accident of history.

--

--

Erik Engheim
Erik Engheim

Written by Erik Engheim

Geek dad, living in Oslo, Norway with passion for UX, Julia programming, science, teaching, reading and writing.

No responses yet