🔍 На чём написаны Windows, Linux и macOS?

ОС, которыми мы пользуемся каждый день, работают благодаря языкам программирования. Разбираем, на чём написаны Windows, Linux и macOS.

Разработка

6 мин

Зачем вообще знать языки ОС? 💡

Язык — это не «мода». Он определяет, насколько близко система подходит к «железу», как управляет памятью и какой ценой достигает скорости. Поэтому выбор для операционных систем десятилетиями оставался консервативным: нужен контроль, предсказуемость и переносимость.

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 — и почему?

Комментарии