This theory says that pushing down complexity in one part of the language or tool makes complexity resurface in other part. This is compared to waterbed—if you push one part of waterbed, the other side raises.
- Is this always true?
- Can this be applied to things other than programming languages?
Programming systems become more and more complex
I don’t feel like it’s quite true. It would imply that all languages would be of the same complexity as they are just pushing complexity around but the net sum must be the same. Unless you can hide complexity in the compiler/interpreter, which is effectively making language less complex by encapsulating complexity in the compiler/interpreter. And that is what really happens with programming languages, operating systems, or any other programming system. Humans just hide complexity by abstraction, but the whole stack does not become less complex (quite the opposite). →
Time-adjusted complexity definition if there is an upper limit on complexity humans can manage (Is there an upper limit on complexity humans can manage?).
Waterbed theory seems to hold under