With widespread use of AOT, JIT, and native language bindings not to mention exotic things like Roslyn and hardware implementations (e.g. Java processor), the distinction is perhaps murky and mostly accademic.
In practical terms, it comes down to a programmer's workflow. Do you run a compile step? No: interpreted.
Interesting approach, but I'm not sure the Java processor really makes it a compiled language in the typical sense of the term. They still run it off their own custom bytecode, instead of assembling it down to actual machine language for common architectures. It's kinda "cheating" to me (but props that it works regardless).
Since the beginning Java has had javac- the "Java compiler". Surely having a compiler makes you compiled.
Remember the definition, which I didn't make up.
Compiler — converts code to either source code in another language, or to bytecode. (Contrast with assembler.)
You can compile to anything, but if the product of the compilation is not actually executable in and of itself, but requires an interpreter to execute, isn't that still an interpreted language?
After all, Python compiles to Python Bytecode (*.pyc), but that still can only be executed through the Python interpreter. According to the language's own documentation, Python is an interpreted language, and not a compiled language.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
With widespread use of AOT, JIT, and native language bindings not to mention exotic things like Roslyn and hardware implementations (e.g. Java processor), the distinction is perhaps murky and mostly accademic.
In practical terms, it comes down to a programmer's workflow. Do you run a compile step? No: interpreted.
Interesting approach, but I'm not sure the Java processor really makes it a compiled language in the typical sense of the term. They still run it off their own custom bytecode, instead of assembling it down to actual machine language for common architectures. It's kinda "cheating" to me (but props that it works regardless).
I'm playing devil's advocate.
It's not all that exotic, ARM has Jazelle.
Similarly, many CPUs have complex instructions that are decoded at execution time into smaller, native instructions (i.e "interpreted").
Since the beginning Java has had
javac
- the "Java compiler". Surely having a compiler makes you compiled.But mostly it doesn't really matter. It's an imprecise term that can be interpreted as pedantically as you like (pun intended).
Remember the definition, which I didn't make up.
You can compile to anything, but if the product of the compilation is not actually executable in and of itself, but requires an interpreter to execute, isn't that still an interpreted language?
After all, Python compiles to Python Bytecode (
*.pyc
), but that still can only be executed through the Python interpreter. According to the language's own documentation, Python is an interpreted language, and not a compiled language.