Interesting read.
I think by all the same arguments, running raw machine code (not even assembly) is not a “low-level language” either by their definition.
The branch prediction, instruction-level-parallelism, and cache behaviors all happen in hardware at a lower level than the programmer can control.
All the talk about compiler optimizations seem irrelevant because you can still just turn them off and output simple machine code.
I’m not really sure what the point of arguing the distinction is anyway? Any practical arguments would be much more specific about typical high-level features like garbage collection.
Right, what we call low level is really just an emulation layer that’s actually at odds with how the actual hardware works. Interestingly enough, it seems like functional style provides a programming model that can be optimized better because it doesn’t rely on global shared state.
this is a great read on the subject https://queue.acm.org/detail.cfm?id=3212479
Interesting read.
I think by all the same arguments, running raw machine code (not even assembly) is not a “low-level language” either by their definition.
The branch prediction, instruction-level-parallelism, and cache behaviors all happen in hardware at a lower level than the programmer can control.
All the talk about compiler optimizations seem irrelevant because you can still just turn them off and output simple machine code.
I’m not really sure what the point of arguing the distinction is anyway? Any practical arguments would be much more specific about typical high-level features like garbage collection.
Right, what we call low level is really just an emulation layer that’s actually at odds with how the actual hardware works. Interestingly enough, it seems like functional style provides a programming model that can be optimized better because it doesn’t rely on global shared state.