Python тоже компилируется. Почему многие неправильно понимают работу языков программирования
Привычное объяснение: C++ и Go компилируются, а Python и JavaScript интерпретируются. Но на практике всё интереснее.
Компилятор преобразует программу из одного представления в другое. Интерпретатор выполняет инструкции, не обязательно превращая всю программу в машинный код заранее.
Например, обычный CPython сначала компилирует исходный код в байткод, а затем выполняет его на виртуальной машине.
Проверить легко:
python -m py_compile app.py
В каталоге __pycache__ появится файл .pyc с байткодом.
У других языков свои особенности:
C++ и Go: обычно компилируются в нативный машинный код.
Java: компилируется в байткод JVM, который может дополнительно компилироваться JIT-компилятором.
C#: использует промежуточный код CIL и JIT либо AOT.
JavaScript: современные движки вроде V8 сочетают интерпретацию и JIT-компиляцию.
Поэтому деление языков на компилируемые и интерпретируемые довольно условно. Один и тот же язык может иметь несколько реализаций с разными способами выполнения.
А скорость программы зависит не только от языка, но и от компилятора, runtime, оптимизаций и характера нагрузки.
https://dev.to/dchhitarka/introduction-to-programming-compiler-and-interpreter-23a4