🔍 На чём написаны Windows, Linux и macOS?
ОС, которыми мы пользуемся каждый день, работают благодаря языкам программирования. Разбираем, на чём написаны Windows, Linux и macOS.
Зачем вообще знать языки ОС? 💡
Язык — это не «мода». Он определяет, насколько близко система подходит к «железу», как управляет памятью и какой ценой достигает скорости. Поэтому выбор для операционных систем десятилетиями оставался консервативным: нужен контроль, предсказуемость и переносимость.

Windows: C в основе, C++ вокруг
Ядро Windows (NT) исторически написано на C с точечными вставками на ассемблере для критически низкоуровневых операций. По мере роста платформы слой API, подсистемы, графика и множество сервисов активно использовали C++. На уровне приложений Microsoft продвигает C#, но это уже «над» системой.
Тренд: локальные эксперименты с Rust для снижения багов памяти (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 — и почему?