Уровни абстракции языков программирования

От высокоуровневых языков до машинного кода

6
Сверхвысокий уровень 5-6 слоёв до машинного кода

Интерпретируемые языки, динамическая типизация, множество абстракций

Python JavaScript Ruby PHP
5
Высокий уровень (с VM) 4-5 слоёв до машинного кода

Компиляция в байткод → Виртуальная машина → JIT-компиляция

Java C# Kotlin Scala
4
Высокий уровень (компилируемые) 3-4 слоя до машинного кода

Прямая компиляция в машинный код, сборщик мусора или ARC

Go Swift
3
Средний уровень 2-3 слоя до машинного кода

Прямой доступ к памяти, без GC, минимальный runtime

C C++ Rust
2
Низкий уровень 1 слой до машинного кода

Мнемоники команд процессора, прямая работа с регистрами

Assembly (x86, ARM, RISC-V)
1
Машинный код Исполняется процессором напрямую

Бинарные инструкции, непосредственно исполняемые процессором

0100 1010 1100...

Пример цепочки трансформации

Python Байткод .pyc Интерпретатор CPython Машинный код
Java Байткод .class JVM + JIT Машинный код
C / Rust Assembly Машинный код
Assembly Машинный код