The abstraction is irrelevant. DavidS is obviously a big fan of assembler programming, so that makes him think that the abstractions are bad. They are not. Abstractions REDUCE complexity, they don't increase it. That the whole point of them. Take a camera driver. This is an abstraction that allows someone to, for example, grab a frame from the camera. This abstraction hides the unbelievable amount of pain required to set up the camera, frame the camera, handle interrupts from the camera, tune the camera etc.
Now, someone, somewhere, might be interested in that pain - and that's fine. They can deal with it. For the 99% of the rest of the world who just want to get on with programming their application that deals with camera images, abstraction is the only way.
There is a reason drivers, libraries and HLL's exist. It because they take the pain away of having to deal with low level crap at every turn.
Now, I'm not saying people shouldn't have some knowledge of these abstractions and how they plug together, after all, nearly every computer system has them, but except for a minority few, they really shouldn't have to worry about them. In fact, I personally think that starting at the bottom and working up can be a disadvantage. It's how I learnt, and I have found the mindset its creates to be a disadvantage.
Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."