Absolutely right, aos.
Assembly is very fast and efficient - from the program's point of view. They are fast and small = efficient.
And with asm, you can do anything your hardware allows you
From a programmer's point of view, assembly is absolutely inefficient. It takes significantly longer to write, is extremely error-prone (no compiler to help you) and debugging is just hell.
For any mid-size or bigger program, it would be insane to use assembly.
But you can write parts of it in asm if youneed the extra speed.
For small, fast, and/or low-level programs like device drivers and
something like a 64k intro, assembly is still the language of choice.
I used to do quite a bit of x86 programming a couple of years ago.
Small graphic intros, but nothing really good. That was fun back then
What does 'bloated code' mean? Is the program bigger? Sure. (even without the libraries) But who cares with today's prices for memory?
Is the program slower? Maybe. Today's compilers do a pretty good job optimizing your code, so you might not get 100% speed but very close. On the other hand, a well designed algorithm in C++ beats a bad algorithm in asm. And algorithm implementation/testing is a lot easier with higher-level languages such as C/C++ or Pascal.