Is it compiled or interpreted? 14 languages at a glance

Almost every language here compiles your code. They differ in what the compile produces, and in whether an optimizer works before the program runs, while it runs, or not at all.

LanguageHow the usual implementation runs itJIT
PythonBytecode on a virtual machineCPython: no. PyPy: yes.
JavaBytecode on the JVMYes, two tiers.
JavaScriptBytecode on a virtual machine inside the engineV8: yes. QuickJS: no.
TypeScriptCompiled to JavaScript, then bytecode on a virtual machineV8: yes.
C++Machine code, compiled ahead of timeNo JIT. Static optimization.
C#IL on the .NET runtime, or native codeYes, tiered. Ahead-of-time also available.
GoMachine code, compiled ahead of timeNo JIT.
RustMachine code, compiled ahead of timeNo JIT.
KotlinBytecode on the JVM, or native codeOn the JVM: yes.
SwiftMachine code, compiled ahead of timeNo JIT.
RubyBytecode on a virtual machineOptional (YJIT).
PHPOpcodes on a virtual machineOptional.
LuaBytecode on a virtual machineStandard Lua: no. LuaJIT: yes.
PerlOp tree in memoryNo.

The table lists the usual implementation of each language. Other implementations exist: PyPy for Python, LuaJIT for Lua, GraalVM Native Image for Java, NativeAOT for C#, and Static Hermes for JavaScript. A language has no speed of its own. Each implementation has one, and it depends on how much optimization its authors built into it.

Read what the words mean, see the measured times, or read the objections.