I think our programming languages haven't caught up to an ideal notation of semantics of computer system behaviour at a macro level.
The design patterns (Gang of Four etc) and software architectures that are so complicated they require extreme discipline to keep understandable. (And cognitive load)