4 ms·
Quibbling and language-lawyering aside, this is clearing up a real, fundamental misunderstanding that a lot of people have. Anecdotally I have encountered load
by umanwizard 9y ago
Quibbling and language-lawyering aside, this is clearing up a real, fundamental misunderstanding that a lot of people have.
Anecdotally I have encountered loads of programmers who actually believe that there is a straightforward correspondence between C code and what the machine is actually doing, which is wrong.
So regardless of how you want to define "low-level", understanding this point is useful.
- craigsmansion 9y ago> actually believe that there is a straightforward correspondence between C code and what the machine is actually doing, which is wrong. That really depends on your definition of "the machine". If "the machine" is "hardware", then sure. But if software is a considered piece of logic onto itself, that, when pitted against a sound model of an architecture will result in a series of logical steps, it's different: there is a very straightforward correspondence between the model-machine and assembly/C. Whether there is a 1-1 correspondence between the model-machine and any accidental hardware it is implemented is not that relevant. So if low-level is defined as the lowest level that any hardware abstraction functions exactly as its logical function and not its silicon, it tells you exactly what the machine should be doing, even if it's doing it through different means.
- fixermark 9y ago> there is a very straightforward correspondence between the model-machine and assembly/C I believe one of the points the article is making is that, no, there is not. Pin down a C developer's actual understanding of how C is converted into x86 or x86-64 assembly, and you find that nobody actually has that abstraction riding around in their heads, because the abstraction they do have riding around in their heads would make for some unacceptably non-performant code. Even if we disregard the fact that x86 is emulated on modern hardware, the C -> (Clang + LLVM / gcc) -> assembly path is deeply complicated.
- Shikadi 9y agoIf you think of the hardware as a black box, it does correspond to the instruction set architecture presented. Generally you don't think about implementation details of an op-amp when you wire it into a circuit. The issue is that CPUs have become so complex that the lines are blurred, since the external interface is so removed from what's going on inside with micro code and ooe and cache. So while pedantically there are no longer low level language outside of microcode, that renders the term useless, and I'd prefer the natural language evolution that's occurring.