Well yeah. What the hell are we doing as programmers punching tape for a Turing machine? That's robot work!
Our abstractions are still leaky, but they're getting better. Soon enough they'll be good enough that you mostly don't have to think about what's happening in the physical box at all— just like you shouldn't have to think about different kinds of wood when you're laying out a housing development.
I'd say that depends on what you mean by "ultimate". The Turing machine is the most fundamental abstraction in CS, sure. But it's not that much of an abstraction of my laptop. My laptop has state, it has instructions, each instruction takes it from one state to another. It doesn't have infinite resources, but for most of my purposes it might as well.
So since my metaphor was obviously unclear, the point I'm getting at is why would I want to be "punching tape" (writing assembly or C instructions) for a "Turing machine" (a physical computer with unlimited resources that executes one — okay, two — instructions at a time) when I could instead tell a robot (a high-level programming language) what I want it to do, and let the robot figure out the individual instructions to make that happen?
And just for future reference, "You know that #{thing I assume you don't know}, right?" is a really douchey way to pretend to try to educate somebody.
Sorry I came across as douchey. That's what I get for trying to write a terse reply from my phone. It just felt like an incomplete analogy when you were talking about abstractions and it felt like you knew a TM was an abstraction. Like trying to call everything a car.
I would say that TMs are one of the most fundamental abstractions in CS - but as you note, for an abstraction they are actually quite concrete. I would perhaps argue that the lambda calculus is a slightly more fundamental abstraction - even of course they are equivalent in "power" to TMs.
I see where you're coming from with that, although personally I mostly think of them as different approaches of considering the same thing. A Turing machine asks the question of what a computer can be, while lambda calculus asks the question of what a computer program can be. You could also think of the TM as an abstraction of the imperative paradigm, and LC as as abstraction of the functional paradigm. We know they're theoretically equivalent, but they're different ways of conceptualizing it, and probably trying to figure out which is more basic is not a good use of our time :P
Our abstractions are still leaky, but they're getting better. Soon enough they'll be good enough that you mostly don't have to think about what's happening in the physical box at all— just like you shouldn't have to think about different kinds of wood when you're laying out a housing development.