C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.
← К каналу

⚔️ Линус Торвальдс против C++: Почему ядро Linux остается на C?

⚔️ Линус Торвальдс против C++: Почему ядро Linux остается на C?

Почему Линус Торвальдс категорически запрещает C++ в ядре Linux. Казалось бы, C++ - это "C на стероидах", но для разработки ядра эти стероиды - яд.

Разбираем основные аргументы Линуса (и почему они имеют смысл в context of kernel development).

1. Исключения (Exceptions) - зло для ядра
В C мы проверяем коды возврата. В C++ исключение может вылететь откуда угодно.

🔹 Проблема: Недетерминированность. Для ядра с 30 млн строк кода это ад отладки.
🔹 Риск: Если МРТ-сканер или система управления полетами "выбросит исключение" и упадет, последствия будут фатальными. Ядро требует полного контроля над потоком выполнения.

2. Скрытое управление памятью (RAII)
Линус считает, что компилятор не должен делать ничего "за спиной" программиста.

🔹 Проблема: Конструкторы, деструкторы и неявные аллокации.
🔹 Аргумент: В ядре управление памятью должно быть ручным и прозрачным. Зависимость от магии компилятора снижает производительность и стабильность.

3. "Жирная" объектная модель
Нужно ООП? Его можно сделать и на C. Линус утверждает, что C++ тянет за собой переусложненные иерархии и абстракции, которые потом невозможно рефакторить.

🔹 Цитата: "Ограничение проекта языком C означает, что люди не смогут его испортить... идиотской чушью 'объектной модели'".

💡 Как выглядит ООП в стиле Linux (на чистом C):
Вместо классов - структуры и указатели на функции. Это дает полиморфизм без оверхеда C++.

typedef struct {
int value;
// V-table на минималках: указатель на функцию
void (*increment)(struct Person *self);
} Person;

void increment_person(Person *self) {
self->value++;
}

int main() {
Person *p = (Person*)malloc(sizeof(Person));
p->value = 5;
p->increment = increment_person; // Привязка метода

p->increment(p); // Вызов: 6
free(p);
}

4. Проблема зависимостей (STL/Boost)
То, что стабильно для приложения в GNOME, недостаточно стабильно для ядра. Внедрение STL или Boost - это риск security-проблем (вспомним бэкдор в xz/liblzma) и раздувание бинарников.

А как же Rust?
Интересно, что к Rust отношение другое. Линус допускает Rust, потому что он (в отличие от C++) решает проблемы безопасности памяти, а не просто добавляет синтаксический сахар. C - прост, но позволяет выстрелить себе в ногу. Rust - строг. C++ - слишком сложен и неявен для ядра.


Отказ от C++ - это выбор между эргономикой разработчика и стабильностью системы. Для User-space приложений C++ прекрасен. Но для ядра, от которого зависит работа миллиардов устройств (от тостеров до спутников), консерватизм C - единственно верный путь.

👉 Читать статью полностью: https://habr.com/ru/companies/otus/articles/902724/


#cpp #c #linux #kernel #linus #coding #holivar

👉 @cpp_lib
Найти похожие посты в архиве
Удалить пост или канал с МАКСОТЕКИ
Заявка подтверждается через бота MAX: нужно быть администратором канала и добавить бота МАКСОТЕКИ в администраторы. После проверки канал или конкретный пост скрывается с сайта.
Удалить этот пост Удалить канал
🔍
Архив всех постов MAX
Поиск по тексту среди 2,900,599 постов из 195,433 каналов. Фильтры по дате, видео, репостам и удалённым публикациям.
1 ₽ — 14 дней доступа
далее 299 ₽/мес 599 ₽/мес
Получить доступ за 1 ₽
или войти, если уже есть аккаунт

Связанные темы в других каналах

Каналы из той же тематики, где часто появляются близкие сюжеты
Вся тема →
@WylsacomRed
Wylsacom Red
Официальный канал Wylsacom в Max. Тут всё про технологии и жизнь в ногу со временем! Номер заявления для регистрации в РКН: № 6979154178 Розыгрыши: kichaev@wylsacom.med…
👥 125 310 · +3 018/7д
@BelgorodDRONE
Информация БПЛА Белгород, Белгородский район
Информация БПЛА Белгород, Белгородский район — специализированный канал в мессенджере Макс, посвященный новостям и информации о беспилотных летательных аппаратах в регион…
👥 111 893 · +3 235/7д
@canalmaxone
AntiCloudMod
👥 88 016 · +6 107/7д
@TikTokModCloud
TikTokModCloud
Официальные обновления стабильного мода TikTok Чат: https://clck.ru/3S6mVh По рекламе: https://iimax.ru/dim4ugan
👥 55 753 · +3 110/7д
@hitech
Hi-Tech
Оперативные новости, обзоры гаджетов, собственное видео, трансляции мировых анонсов и мероприятий По вопросам сотрудничества и размещения рекламы i.ostapenko@corp.mail.r…
👥 52 189 · +3 357/7д
@vilianov
Гаджеты и технологии на Вильянов.Ком
Обзоры новой цифровой техники, интересные технологии, репортажи с выставок и просто интересное от Сергея Вильянова. Уже больше 25 лет я делаю так, чтобы купленная техник…
👥 28 735 · -169/7д

Популярные посты канала «C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.»

Этот проект содержит исходный код игр Command & Conquer: Tiberian Dawn и Command & Conquer: Red Alert, выпущенных как часть сборника Command…
👁 5 717 просмотров
🚀 CUTE_HEADERS - Коллекция кроссплатформенных однофайловых библиотек на C/C++ без зависимостей, в основном используемых для разработки игр. …
👁 5 712 просмотров
Три теоремы о сортировках Я знаю многих программистов и руководителей в IT компаниях, которые недолюбливают математиков и в частности счита…
👁 5 675 просмотров
Практика языка C (МФТИ, 2023-2024). Допсеминар: системы сборки (make, cmake). 00:00 Зависимости и хедера 08:22 Build.sh 11:48 Makefiles и д…
👁 5 645 просмотров
ggwave — это компактная и переносимая библиотека C/C++ для передачи и приема коротких сообщений с использованием звуковых волн. Она позволя…
👁 5 629 просмотров
📦 cpp-sort — это коллекция высокоэффективных алгоритмов сортировки, написанная на C++. Она предоставляет как классические алгоритмы (наприме…
👁 5 623 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 5 618 просмотров
Пишем на С++ 23 под Windows 95, не вызывая подозрение у санитаров Что, если я скажу вам, что можно писать код на свежайшем C++23 с модулями…
👁 5 608 просмотров
Можно ли навсегда избавиться от утечек памяти из-за циклических ссылок? В комментариях к статье в очередной раз услышал мнение, что посколь…
👁 5 587 просмотров
🚀 JSON тормозит? Вы просто не умеете его готовить Казалось бы, парсинг JSON - задача решенная. Взял библиотеку, вызвал метод, получил объек…
👁 5 570 просмотров
Генерация лабиринтов: алгоритм Эллера Сегодня я хотел бы рассказать о генерации идеального лабиринта — алгоритмом Эллера. Статья подойдёт в…
👁 5 553 просмотров
Логика коэволюции компиляторов, инструментов разработки и языков программирования. Выступление в институте iSpring 17 мая 2025 года. Огромн…
👁 5 540 просмотров
Проектируем змейку под учебный RISC-V микроконтроллер На третьем курсе некоторые направления в МИЭТ проходят лабораторный практикум, на кот…
👁 5 533 просмотров
Как читать язык ассемблера Зачем кому-то нужно изучать язык ассемблера? Во-первых, чтение языка ассемблера - это способ узнать, что именно …
👁 5 511 просмотров
C++ Std:: string Interface Overview #cpp #programming 👉 @cpp_lib
👁 5 509 просмотров
Опенсорс от кристалла до программного стека Нужны ли нам открытые архитектуры? Что нам нужно, чтобы они работали? В этом докладе мы попытае…
👁 5 485 просмотров
Dockerизированная toolchain в CLion с Conan При разработке на C++ часто возникает необходимость воспроизводимой среды для сборки. Особенно …
👁 5 479 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 5 475 просмотров
#cpp #programming 👉 @cpp_lib
👁 5 468 просмотров
Руководство по сборке Qt под Windows из исходников с MinGW Официальный способ установки готовых бинарников Qt - через онлайн инсталлятор. О…
👁 5 454 просмотров
🏷 Темы и теги
#cpp #c #linux #kernel #linus #coding #holivar #системное программирование #c++ #stl #boost #highload
📋 О канале C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.
Канал для серьезных C++ программистов. Глубокое погружение в STL, Boost и метапрограммирование (Templates). Управление памятью (Memory Management), умные указатели и безопасность кода. Разработка высоконагруженных систем, сетевое программирование и Embedded (встраиваемые системы). Сборка через CMake, компиляторы GCC/Clang. Подготовка к собеседованиям: LeetCode, System Design и ООП.
← Предыдущий пост Практика языка C (МФТИ, 2023-2024). Допсеминар: системы сборки (make, cmake). 0… Следующий пост → 🚀 CUTE_HEADERS - Коллекция кроссплатформенных однофайловых библиотек на C/C++ бе…
📊 Аналитика канала «C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.» ➡️ Перейти в канал MAX
Заявка в МАКСОТЕКА
📌 Данные подтянутся автоматически по ссылке на канал. Логотип необязателен — ускоряет проверку.
🖼 Перетащите картинку или выберите файл
PNG, JPG, WEBP · до 5 МБ
captcha

Нажимая кнопку, вы соглашаетесь на обработку данных.
Проверим и добавим канал в течение суток.