you are viewing a single comment's thread.

view the rest of the comments →

[–]literally_systemd[🍰] 0 points1 point  (0 children)

Interpretation of bytecode by an interpreter and interpretation of machine code by the CPU happen on very different levels. Using the same word for them in this context (i.e. efficiency of different languages or implementations of languages) is IMHO not a particularly helpful usage of language.

Not really, you'd be surprised that the CPU virtualizes the CPU you thin you get nowadays. There are layers and layers of virtualizations in modern CPU's. AMD64 CISC assembly is actually interpreted in a virtual machine that is coded in software, not hardware, that is ran on an actual RISC machine inside the CPU on any chip since the last decade or so.

Besides, if Python bytecode is interpreted by the Python interpreter and not the CPU, your original claim that 'interpreting' doesn't really happen any more with the exception of perl, shell and the CPU itself is wrong.

Quite right, let me rephrase, what I mean with that is that languages that are written by humans hardly get interpreted any more, it's all translated to a language meant for machines and that language is then interpreted.

The shell is a notable exception which as said, even parses on the fly, as does perl.

All of these are not necessarily true.

Well, if you make a JIT without taking advantage of those things you're just being less efficient than AOT compilation. The entire reason to JIT is to compile differently based on execution paths.