Abstractions in programming promise to create efficiency (mostly for the programmer, but still), but it only creates efficiency in the actual program when you reuse code in functions instead of copy-pasting it over and over (one of the purposes of functions) which results in less total code in the executable file.
But this doesn't matter in object-oriented programming anyway, because the objects have overhead in code size, memory usage and computation time, that makes the code automatically much less efficient anyway.
Abstractions also promise to make code readable, but it doesn't make the actual working CODE more readable, it just makes the abstractions more readable. So even if it's easily readable, you won't understand the interesting parts anyway.
When abstractions aren't used primarily for code reuse, but instead to hide meaning, the program will grow more and more inefficient. Because you stop reading the actual code and only read the abstractions.
And then you won't know about what actually happens anymore underneath the abstractions anymore. Now those things can be as efficient as they want without you knowing about it. And it tends to grow more inefficient and not the other way, because of our large RAM sizes and CPU speeds today.
This is why Notepad is slower today instead of faster. It's not because of slow hardware or incompetent programmers, it's computer bureaucracy (probably heavily influenced by the organizational bureaucracy at Microsoft).
So, abstractions probably won't create programmer efficiency either, because abstractions lead to less understanding of the actual program, which leads to computer bureaucracy, which is a much bigger problem to handle than just editing code.
So... I remove all object-orientation and unnecessary abstractions in my code, and just use functions to prevent too much code reuse. All other structure is in comments so they don't fill up the executable (like objects and functions does, no matter how efficient your language claims to optimize those)
But this doesn't matter in object-oriented programming anyway, because the objects have overhead in code size, memory usage and computation time, that makes the code automatically much less efficient anyway.
Abstractions also promise to make code readable, but it doesn't make the actual working CODE more readable, it just makes the abstractions more readable. So even if it's easily readable, you won't understand the interesting parts anyway.
When abstractions aren't used primarily for code reuse, but instead to hide meaning, the program will grow more and more inefficient. Because you stop reading the actual code and only read the abstractions.
And then you won't know about what actually happens anymore underneath the abstractions anymore. Now those things can be as efficient as they want without you knowing about it. And it tends to grow more inefficient and not the other way, because of our large RAM sizes and CPU speeds today.
This is why Notepad is slower today instead of faster. It's not because of slow hardware or incompetent programmers, it's computer bureaucracy (probably heavily influenced by the organizational bureaucracy at Microsoft).
So, abstractions probably won't create programmer efficiency either, because abstractions lead to less understanding of the actual program, which leads to computer bureaucracy, which is a much bigger problem to handle than just editing code.
So... I remove all object-orientation and unnecessary abstractions in my code, and just use functions to prevent too much code reuse. All other structure is in comments so they don't fill up the executable (like objects and functions does, no matter how efficient your language claims to optimize those)
The point of all this is: Don't create more technology to handle your technology, that will leave no space for art.