Hard disagree with the initial assumption: Abstractions do not make a system simpler.
Note: I would have added usually but I really do mean always.
Note: I would have added usually but I really do mean always.
There are certainly _bad_ abstractions that ought not to exist, which I think is what you're getting at. There are poorly built abstractions, and leaky abstractions. But abstraction itself isn't the problem -- abstraction is what allows us to build anything at all without being crushed by the sheer complexity.