3 ms·
It's so weird to me that software's complexity is such a force of nature. My instinct is that no implementation of a piece of software should ever need to be m
by _bxg1 7y ago
It's so weird to me that software's complexity is such a force of nature.
My instinct is that no implementation of a piece of software should ever need to be more complex than the idea of it is (fully and precisely articulated, of course). Yet the code is usually orders of magnitude more complex than that. I don't understand why we can't solve this problem.
- 9diov 7y agoThe paper "Out of the tar pit" (https://github.com/papers-we-love/papers-we-love/blob/master/design/out-of-the-tar-pit.pdf https://github.com/papers-we-love/papers-we-love/blob/master...) discusses this in more details. Basically it argues that one needs to separate the complexity into essential complexity (complexity inherent to the problem) and accidental complexity (complexity due to the way the solution is designed). The idea is to reduce accidental complexity as much as possible while making the essential complexity more managegable. The paper also discusses that you can separate a program into 1. state (data that changes over time) 2. behavior (computational logic) In order to reduce the accidental complexity, you can use functional programming (which is purely behavior, devoid of complexity due to state mutation) for the behavior part. For the state part, you can use a relational database to manage it in a more systematic manner. They call it functional-relational approach to software design. If you do game development, you likely heard of ECS (entity-component-system) and data oriented programming which in a way promotes this approach to software design.