macOS написана преимущественно на C, C++, Objective-C и Swift, а её основа — гибридное ядро XNU, которое Apple развивает как открытый проект Darwin. Это не один язык, а многослойная архитектура, где каждый уровень системы исторически создавался на своём инструменте: низкоуровневое ядро — на C и ассемблере, фреймворки — на Objective-C, а современные компоненты всё активнее переводятся на Swift.
Понимание того, на чем написана macOS, полезно не только из любопытства. Разработчикам это помогает выбрать язык для создания приложений под Mac, а пользователям — понять, почему система ведёт себя именно так: откуда берутся её Unix-команды, почему работает Терминал и чем macOS родственна iOS и даже FreeBSD.
Ядро XNU — сердце системы
Фундамент macOS — ядро XNU (расшифровывается как «X is Not Unix»). Это гибридное ядро, объединяющее компоненты разного происхождения: микроядро Mach, разработанное в Университете Карнеги-Меллона, и части BSD — семейства свободных Unix-подобных систем. Исходный код XNU Apple публикует открыто в составе проекта Darwin.
Ядро написано в основном на C с вставками на C++ и ассемблере для платформенно-зависимых участков. Именно на этом уровне работают управление памятью, планировщик задач, драйверы устройств и сетевой стек. Код драйверов для macOS создаётся с использованием фреймворка IOKit, который построен на ограниченном подмножестве C++.
Darwin — открытая Unix-основа
Darwin — это Unix-подобная операционная система, лежащая в основе macOS, iOS, iPadOS, watchOS и tvOS. Именно благодаря Darwin в macOS доступны привычные Unix-инструменты: командная оболочка zsh, утилиты вроде ls, grep, ssh и стандартная файловая иерархия с каталогами /usr, /etc, /var.
Состав Darwin включает несколько ключевых слоев:
- 🧩 XNU — гибридное ядро (Mach + BSD), написанное на C и C++;
- 📁 Системные библиотеки BSD — стандартная библиотека C, интерфейсы POSIX;
- 🛠️ Командные утилиты — многие заимствованы из проектов FreeBSD и других открытых систем;
- 🔐 Подсистемы безопасности — механизмы sandbox, код-подписи и контроля доступа.
Стоит понимать: сам по себе Darwin — это система без графического интерфейса. Всё, что пользователь видит на экране Mac, — надстройки над этой открытой основой, и они являются закрытой собственностью Apple.
Что общего у macOS с FreeBSD
Apple исторически заимствовала значительную часть пользовательского окружения и сетевого стека из FreeBSD и других BSD-систем. Разработчики Apple периодически переносят улучшения обратно в открытые BSD-проекты, а некоторые инженеры FreeBSD работали в Apple.
Objective-C — язык классических фреймворков
Графическая часть macOS и её ключевые фреймворки — Cocoa, AppKit, Foundation — десятилетиями писались на Objective-C. Этот язык Apple унаследовала вместе с компанией NeXT, которую основал Стив Джобс после ухода из Apple. Операционная система NeXTSTEP стала прямым предком macOS, а Objective-C — её главным языком разработки.
Objective-C представляет собой надстройку над C с объектно-ориентированной моделью в стиле Smalltalk. Характерный синтаксис с квадратными скобками до сих пор встречается в огромном объёме системного кода:
NSString *greeting = @"Hello, macOS";
NSLog(@"%@", greeting);
Хотя Apple больше не позиционирует Objective-C как язык будущего, отказаться от него невозможно: на нём держится значительная часть системных API. Любое приложение для Mac, даже написанное полностью на Swift, внутри всё равно взаимодействует с библиотеками на Objective-C и C.
Swift — современный язык Apple
В 2014 году Apple представила Swift — собственный язык программирования, призванный постепенно заменить Objective-C. Swift компилируется в машинный код через инфраструктуру LLVM, обеспечивает безопасную работу с памятью и полностью совместим с существующими библиотеками на C и Objective-C.
С тех пор Apple последовательно переводит на Swift новые компоненты системы. Фреймворк SwiftUI для построения интерфейсов, части системных служб и встроенные приложения создаются уже на нём. Кроме того, Swift — открытый проект: его компилятор доступен не только для macOS, но и для Linux и Windows.
- ⚡ Скорость — компиляция в нативный код без виртуальной машины;
- 🛡️ Безопасность — защита от ошибок работы с памятью на уровне языка;
- 🔗 Совместимость — бесшовная работа с кодом на Objective-C и C;
- 🌍 Открытость — исходный код компилятора и стандартной библиотеки общедоступен.
Сравнение языков в структуре macOS
Чтобы наглядно представить, какой язык за что отвечает в системе, сведём их роли в одну таблицу:
| Язык | Область в macOS | Примеры компонентов |
|---|---|---|
| C | Ядро, библиотеки, утилиты | XNU, libc, Unix-инструменты |
| C++ | Драйверы, системные службы | IOKit, графический стек |
| Objective-C | Классические фреймворки | AppKit, Foundation, Cocoa |
| Swift | Новые компоненты и API | SwiftUI, системные приложения |
| Ассемблер | Платформенный код ядра | Низкоуровневые процедуры XNU |
Отдельно стоит упомянуть скриптовые языки. В состав macOS входят интерпретаторы и системные скрипты, а автоматизация рутинных задач традиционно выполняется через AppleScript и shell-скрипты. Это не языки, на которых написана сама система, но они являются её штатной частью.
⚠️ Внимание: не путайте язык системы и язык приложений. То, что macOS написана на C и Objective-C, не обязывает использовать эти языки для своих программ — приложения для Mac можно создавать на Python, JavaScript, Rust и многих других.
Как проверить компоненты системы самостоятельно
Убедиться в Unix-природе macOS можно прямо на своём компьютере через Терминал. Откройте приложение Терминал из папки «Программы → Утилиты» и выполните команду:
uname -a
В ответе вы увидите слово Darwin — прямое подтверждение того, что в основе системы лежит открытое Unix-ядро. Команда sw_vers покажет версию macOS, а clang --version — версию компилятора, которым собирается системное ПО (при установленных инструментах разработчика).
☑️ Что можно проверить в Терминале macOS
Если вам интересно устройство открытой части системы, исходный код Darwin и XNU Apple публикует на своём портале для разработчиков и в открытых репозиториях. Изучение этих исходников — лучший способ понять, как устроена macOS изнутри.
⚠️ Внимание: команды в Терминале выполняйте внимательно. Просмотр информации безопасен, но команды с правами администратора (
sudo) способны изменить или удалить системные файлы — без понимания последствий их лучше не запускать.
Почему архитектура macOS важна пользователю
Многослойность системы объясняет её характерные особенности. Unix-основа обеспечивает стабильность и предсказуемое управление процессами: зависшее приложение редко «роняет» всю систему, потому что ядро изолирует программы друг от друга. Тот же фундамент объединяет macOS с iOS — обе системы построены на Darwin, поэтому Apple относительно легко переносит технологии между платформами.
Для разработчиков выбор языка определяется задачей: интерфейсы и бизнес-логика — на Swift, работа с устаревшими API — на Objective-C, высокопроизводительные вычисления и драйверы — на C и C++. Понимание этого распределения помогает ориентироваться в документации Apple и выбирать правильные инструменты.
Часто задаваемые вопросы
macOS написана на Linux?
Нет. macOS не использует ядро Linux. Её основа — собственное ядро XNU, объединяющее компоненты Mach и BSD. Linux и macOS — разные Unix-подобные системы с независимым происхождением, хотя обе следуют стандартам POSIX.
Можно ли посмотреть исходный код macOS?
Частично. Apple публикует исходный код открытой части системы — Darwin, включая ядро XNU, системные библиотеки и многие утилиты. Графический интерфейс, фреймворки Cocoa и фирменные приложения являются закрытыми.
На каком языке пишут приложения для macOS?
Современный стандарт — Swift вместе с фреймворком SwiftUI. Для поддержки старых проектов используется Objective-C. Также доступны кроссплатформенные варианты: Python, JavaScript (Electron), Rust, C++ и другие.
Чем macOS отличается от Windows по архитектуре?
macOS построена на Unix-основе Darwin с ядром XNU, тогда как Windows использует собственное ядро NT. Из-за этого в macOS есть полноценный Unix-терминал, POSIX-совместимость и файловая иерархия в стиле Unix, чего в Windows изначально не было.
Правда, что iOS и macOS — родственные системы?
Да. Обе системы построены на общей основе Darwin и ядре XNU, используют общие фреймворки и языки разработки. Именно поэтому приложения для iPhone и Mac могут использовать значительную часть общего кода.