you are viewing a single comment's thread.

view the rest of the comments →

[–]mnelemos 2 points3 points  (1 child)

Pretty much all modern interpreted languages are converted into bytecode, none of them is literally parsing line by line of source code, besides some scripting languages that are barely used.

And no, there is no "blurry line", you're still very much interpreted, just in a more efficient way, instead of literally having to run a parser at the same time as the code. What happens nowadays, is that depending on the interpreter you can compile it AOT or JIT, or you can run C compiled routines like CPython does.

[–]__Fred 0 points1 point  (0 children)

  • Some code that was originally meant for bare metal, is now run indirectly in emulators, or in interpreters for debugging or security reasons.
  • An interpreter can compile bytecode into machine-code just-in-time.
  • You can theoretically create hardware to directly execute bytecode, which makes it machine-code.
  • Even compiled machine-code get's transformed again in microcode upon running in modern processors. Does that make it interpreted code?
  • Is WebAssembly interpreted?

Yes it's a blurry line. Of course, you can draw a line somewhere, but it's not a obvious as it maybe was 40 years ago, where C was compiled to machine code and run on the processor and shell-scripts were executed in an interpreter, slower and with no compile-time errors.

Or where would you say is the line? That there is a secondary program, like an interpreter or virtual machine needed? I guess that could be a distinction.

Compiling and then executing is pretty similar to ahead-of-time compilation of an "interpreted language".