Зачем вообще знать языки ОС? 💡
Язык - это не «мода». Он определяет, насколько близко система подходит к «железу», как управляет памятью и какой ценой достигает скорости. Поэтому выбор для операционных систем десятилетиями оставался консервативным: нужен контроль, предсказуемость и переносимость.
Windows: C в основе, C++ вокруг
Ядро Windows (NT) исторически написано на C с точечными вставками на ассемблере для критически низкоуровневых операций. По мере роста платформы слой API, подсистемы, графика и множество сервисов активно использовали C++. На уровне приложений Microsoft продвигает C#, но это уже «над» системой.
Тренд: Rust уже используется в отдельных компонентах Windows для снижения багов памяти (use-after-free и др.).
Linux: классика C и прагматизм
Ядро Linux с 1991 года - почти «чистый» C плюс немного ассемблера. Причина проста: контроль за памятью и переносимость между архитектурами CPU. Сообщество тщательно держит планку качества и производительности.
Тренд: официальная поддержка Rust для написания отдельных драйверов - ставка на безопасность без потери скорости.
macOS: XNU - гибрид с корнями в C
macOS опирается на ядро XNU (гибрид Mach + BSD). Базовые слои, драйверы и многие системные компоненты - на C с ассемблером там, где это необходимо. Пользовательские фреймворки долгое время развивались на Objective‑C (и частично C++), а в последние годы Apple активно продвигает Swift в пользовательском пространстве - но ядро остаётся верным C.

Сравним по ключевым пунктам 📊
ОС | Ядро | Системные компоненты | Пользовательское пространство | Современные сдвиги |
|---|---|---|---|---|
Windows | C + ASM (точечно) | C/C++ | C++, C#, .NET | Пилотные зоны Rust (безопасность памяти) |
Linux | C + ASM | C | На выбор: C/C++/Rust/Go/… | Rust для драйверов (опционально) |
macOS | C + ASM (ядро XNU) | C, C++, Objective‑C | Objective‑C / Swift | Рост роли Swift «сверху» |
Почему везде побеждает C? 🧠
Контроль памяти: ручное управление - меньше абстракций, больше предсказуемости.
Переносимость: C сравнительно легко тащить на разные архитектуры CPU.
Зрелая экосистема: компиляторы, тулчейны, драйверные SDK - всё отточено годами.
Не путайте «старый» с «устаревшим»: на системном уровне важнее предсказуемость, чем новизна синтаксиса.
А при чём тут Rust и Swift? 🚀
Rust заходит туда, где критична память и безопасность: драйверы, отдельные модули ядра, системные утилиты. Он не «переписывает всё», а аккуратно уменьшает класс ошибок. Swift же в мире Apple - это прежде всего удобство и безопасность пользовательских приложений и фреймворков, тогда как «низ» остаётся на C.
В Кодике мы делаем обучение программированию увлекательным и понятным: у нас есть интересные курсы с заданиями, которые помогают прокачивать навыки шаг за шагом.
А ещё у нас есть активный telegram-канал, где мы обсуждаем крутые идеи, делимся опытом и вместе разбираем задачи - учиться становится не только полезно, но и весело.
Если бы вы переписывали один модуль ОС ради безопасности, что бы выбрали: остаться на C или рискнуть с Rust - и почему?
Частые вопросы про языки операционных систем
На каком языке написано ядро Windows?
Ядро Windows (NT) исторически написано на C с точечными вставками ассемблера для самых низкоуровневых операций. Слой API, подсистемы, графика и системные сервисы во многом используют C++. C# идёт уже выше, на уровне приложений, а не самой системы.
На каком языке написано ядро Linux?
Ядро Linux с 1991 года пишут почти на чистом C с небольшими вставками ассемблера. Такой выбор даёт контроль над памятью и переносимость между разными архитектурами процессоров. В пользовательском пространстве Linux при этом можно писать на чём угодно: C, C++, Rust, Go и других языках.
На каком языке написан macOS?
macOS опирается на гибридное ядро XNU (Mach плюс BSD), которое написано на C с ассемблером там, где он нужен. Системные компоненты используют C, C++ и Objective-C, а пользовательские фреймворки давно жили на Objective-C и постепенно переходят на Swift. Ядро при этом остаётся на C.
Почему операционные системы пишут именно на C?
C побеждает в системном программировании из-за трёх вещей: ручное управление памятью даёт предсказуемость, код сравнительно легко переносится на разные архитектуры CPU, а компиляторы, тулчейны и драйверные SDK отточены десятилетиями. Старый язык здесь не значит устаревший: на уровне ядра предсказуемость важнее свежего синтаксиса.
Заменит ли Rust язык C в ядрах ОС?
Rust пока не заменяет C, а заходит точечно туда, где критична безопасность памяти: драйверы, отдельные модули ядра, системные утилиты. В Linux есть официальная поддержка Rust для написания отдельных драйверов, в Windows идут локальные эксперименты ради снижения багов вроде use-after-free. Полного переписывания ядер никто не делает.
Зачем Apple продвигает Swift, если ядро на C?
Swift в мире Apple отвечает за удобство и безопасность пользовательских приложений и фреймворков, то есть за верхний слой системы. Низкоуровневая часть, ядро XNU и драйверы, остаётся на C с ассемблером. Поэтому знание Swift не отменяет пользы от понимания C.
