4.02. Уровень языка и виды кода
Разработчику
Аналитику
Тестировщику
Архитектору
Инженеру
Уровень языка и виды кода
Часто в программировании, начиная работать с языками, сразу, ещё в понятиях языков, можно увидеть такие понятия, как «уровень» языка.
★ Уровень языка – степень его близости к машинному коду (нулям и единицам) или к человеческому языку.
- Чем ниже уровень – тем ближе к железу (процессору, памяти), сложнее для человека, но быстрее выполняется;
- Чем выше уровень – тем ближе к человеческой логике, проще писать, но медленнее выполняется (из-за дополнительных слоёв абстракции).
★ Низкоуровневые языки работают почти напрямую с процессором и памятью, требуют ручного управления ресурсами (например, выделение памяти, код сложный, но очень эффективный, и используются там, где важна скорость и контроль (ОС, драйверы, микроконтроллеры).
Примеры низкоуровневых языков – Ассемблер и C. Вот пример кода на Си:
#include <stdio.h>
int main() {
int a = 5;
int b = 10;
int sum = a + b;
printf("Sum: %d", sum);
return 0;
}
★ Высокоуровневые языки ближе к человеческому (английскому, математике), имеют автоматическое управление памятью (сборка мусора), меньший контроль над железом. Но их проще писать, потому они используются для веб-приложений, мобильных приложений, скриптов.
Примеры – Python, Java, JavaScript, C#.
Программистам проще работать с высокоуровневыми языками, а современные компьютеры настолько мощные, что потери скорости по сравнению с низкоуровневыми уже не критичны. Кроме того, в высокоуровневых языках сложнее «выстрелить себе в ногу», что делает их безопасными по отношению к устройству и данным.
Есть и средний уровень – C++, Rust, Go – это некий компромисс между скоростью и удобством.
Код может быть управляемым и неуправляемым.
Управляемый код (Managed Code) — это код, который выполняется под управлением среды выполнения (runtime environment), которая берёт на себя задачи управления ресурсами, такими как выделение и освобождение памяти, обработка исключений и безопасность. К примеру, это C#, Java, Python, JavaScript. Примеры среды выполнения - CLR (Common Language Runtime) в .NET и JVM (Java Virtual Machine) в Java.
Неуправляемый код — это код, который выполняется непосредственно на уровне операционной системы без участия среды выполнения. Разработчик сам отвечает за управление ресурсами. Примеры - C, C++, Assembly. В таком случае среды выполнения нет, код компилируется напрямую в машинный.
Соответственно, управляемый код называют также безопасным, а неуправляемый - небезопасным.