Общий сбор программистов. Создатель C++ призвал разработчиков защитить язык от нападок фанатов Python, Rust, Java и Go
Автор языка программирования C++ обратился к сообществу программистов с призывом защитить С и C++ от нападок со стороны любителей более современных и безопасных языков, а также со стороны специалистов по информационной безопасности. Эти языки известны тем, что не умеют безопасно работать с памятью, и потому все чаще высказываются идеи по полному отказу от них в пользу Rust, Java, Go и ряда других, более надежных языков.
Спасите, помогите
Создатель языка программирования C++ Бьярне Страуструп (Bjarne Stroustrup) призвал сообщество разработчиков на C++ защитить их любимый язык программирования, который в последние годы подвергают критике Агентства по кибербезопасности США и ИБ-специалистов, пишет The Register. Претензии у всех одни и те же – ни C++, ни С не умеют безопасно работать с памятью, что в последнее время становится проблемой ввиду наличия целого списка языков, таким умением располагающих.
C++ и тем более С – это старые по современным меркам языки программирования. Они вышли в 1985 и 1972 гг. соответственно, то есть первому 40 лет, а второму – 53. Современные программисты все чаще отдают предпочтение новым языкам – Rust (2012 г.) Java (1995 г.), JavaScript (1995 г.), Go (2009 г.), Python (1991 г.) и пр.
В отличие от них, C и C++ требуют ручного управления памятью, что и приводит к регулярным ошибкам безопасности памяти, о которых не менее регулярно говорят ИБ-специалисты. Это приводит к появлению уязвимостей в программах, которые затем находят и эксплуатируют хакеры.
Как пишет The Register, нередко эксплуатация дыр, первопричиной которых являются особенности С и С++, нередко приводит к финансовым потерям. В результате Отраслевые и правительственные эксперты по кибербезопасности в течение последних трех-четырех лет отговаривают всех от использования C и C++, пропагандируя языки с лучшей безопасностью памяти.
Пока ничего не помогает
За годы, что C и C++ подвергаются критике за небезопасность, сообщество разработчиков представило несколько их более безопасных альтернатив. Среди них – форки TrapC и Mini-C., однако ни один из них к моменту выхода материала не был принят в качестве стандарта в разработке.
Другими словами, эти методы «обеления» С и С++ пока не работают. В начале февраля 2025 г. Страуструп публично обратился к комитету по стандартам C++ (WG21), призвал принять срочные меры по улучшению репутации С и С++, а также предложил перейти на использование среды разработки Profiles с целью улучшения безопасности.
В своем обращении Страуструп написал: «Как я уже говорил ранее, это хорошая возможность, поскольку безопасность типов и безопасность ресурсов (включая безопасность памяти) были целями целями C++ с самого начала». (As I have said before, this is also an opportunity because type safety and resource safety (including memory safety) have been key aims of C++ from the very start).
Власти настроены решительно
Пока разработчики никак не могут «починить» безопасность С и С++, власти США все более жестко критикуют эти языки. В частности, Агентство по кибербезопасности и инфраструктуре США (CISA) в октябре 2024 г. потребовало от разработчиков ПО либо закрыть, наконец, все дыры, связанные с небезопасной работой с памятью, либо отказаться от С и С++ в пользу более безопасных языков программирования. Срок исполнения требования – до 1 января 2026 г. – к этому дню компаниям нужно, по меньшей мере, подготовить дорожные карты перехода на безопасные языки.
Софтверные корпорации тоже теряют интерес к разработке на С и С++, так, в 2022 г. технический директор Microsoft Azure Марк Руссинович (Mark Russinovich) призвал программистов «прекратить разработку любых новых проектов на C/C++ и использовать Rust для тех сценариев, где требуется язык, не собирающий мусор» (to halt starting any new projects in C/C++ and use Rust for those scenarios where a non-garbage collected language is required). В начале 2024 г. CNews писал о намерении Microsoft переписать код облачного сервиса на Rust.
Сообщество Linux и вовсе разделилось на два лагеря. В одном из них оказались сторонники переписывания кода ядра целиком на Rust, в другом – искренние адепты С и С++. Создатель Linux Линус Торвальдс (Linus Torvalds) к моменту выпуска материала не мог решить, какую из сторон ему принять – он то хамит тем, кто выбирает Rust, то в приватной беседе с главным противником Rust заявляет, что будет принимать патчи на Rust в обход мейнтейнеров, голосующих за С.
Интернет-гигант Google, создатель безопасного языка Golang, он же Go, тоже ратует за отказ от С и С++ ввиду их опасности. Опрошенные The Register эксперты, однако, полагают, что полный отказ от этих языков в обозримом будущем невозможен, поскольку слишком много строк кода написано на них. Они предлагают отказаться от революции в пользу эволюции и модернизировать С и С++, повышая уровень их безопасности.