It's almost as if bloat is a meaningless snarl term with a mostly illusory definition beyond "bad".
Redundant code has performance and resource ramifications: Programs that are bigger load slower (more bytes to pull from disk) and run slower (more trips in and out of cache memory).
Redundant code also has other ramifications: Two modules in the same source tree may attempt similar (or identical) algorithms and miss an opportunity to consolidate. One of them might hide a bug, where the other code path was executed more frequently and the bug fixed.
One product had minimal redundancy. It used a plug-in architecture for the entire application - not just for extensions.
For example, why have Bentley when we already have Ford? Multiple car manufacturers is surplus, waste, and bloat.
Car manufacturers do not exist inside the source tree.
They aren't even obviously unnecessary; After all, people have different tastes about whether they like a Bentley or they like a Ford.
The computer (however) does not have taste, and it doesn't care whether you like your strcmp or my strcmp.
Is it something we can develop in people? Teach? Practice?
It may be rare that people will do it and invent it on their own, but I know there was a point in my life that I did not want to write code this way, so I know at least one person can change.
The speed at which code runs? The size that the binary is? The size of the source file? How long it takes to build software that runs correctly?
These are things we can measure, and while I suspect once we optimise programming languages for these things we will end up with something that looks like K, I do not think that it will be K because I have noticed that K is very bad at some things that I like to do.
Yes. It might be.