top | item 31538033

(no title)

deilline | 3 years ago

Maybe they meant there’s no VM like w/ Java, so no intermediate bytecode, or no IL like C# iirc

discuss

order

stingraycharles|3 years ago

Yes but assembly is an intermediary representation and the OS is not doing any “direct execution”, it’s the CPU that does it.

I would expect a seasoned C++ database developer to be able to understand these nuances.

jcelerier|3 years ago

> Yes but assembly is an intermediary representation

there's certainly a technical difference between assembly and machine code, but it's pretty common to use the word "assembly" by metonymy with the latter

> the OS is not doing any “direct execution”

OSes have native executable formats for which execution most certainly has less steps than executing a .js, a .jar or a .sh, which I would absolutely call "direct execution". The criterion can be defined I would guess as - does the OS / environment need to launch a separate process / specific steps such as setting up an interpreter before getting to the code you want to execute ? but most likely there's a finer distinction to be made.

pjmlp|3 years ago

It is called LLVM, GIMPLE or whatever, depending on the middle layer we are talking about in C and C++ compilers.

Likewise there are JIT and AOT compilers for turning those JVM bytecodes or MSIL into machine code as well, including not shipping a VM rather a runtime.

So it does show a lack of understanding on how compilers work.

kaba0|3 years ago

I’m sure you know it but in the majority of cases JIT-compiled languages run bare-metal machine code just as well.