«Отец» C++ выступил в его защиту — в АНБ США требуют отказаться от языка
Создатель C++ — одного из самых популярных сегодня языков программирования и «языка года» по версии TIOBE — Бьёрн Страуструп отреагировал на призыв Агентства национальной безопасности США отказаться от использования языков программирования, в которых ответственность за управление памятью возложена на разработчика, таких как C и C++, в пользу более обеспечивающих безопасную работу с памятью, например Rust.
В открытом письме Страуструп не согласился с позицией агентства. Во-первых, он отметил, что там «смешали в одну кучу» C и C++, хотя языки развивались независимо на протяжении последних 30 лет. Впрочем, и практика применения C++ во многом «застряла в прошлом» — разработчики нередко игнорируют изменения в языке, которые позволяют кардинально повысить безопасность кода, сетует Страуструп.
В действительности же, по его мнению, C++ ни в чём не уступает современным так называемым безопасным языкам вроде C#, Go, Java, Ruby, Rust и Swift, которые АНБ продвигает в качестве альтернативы. Базовые рекомендации по использованию C++ (C++ Core Guidelines), над которыми Страуструп работал последние несколько лет, содержат методы безопасного программирования и предписывают использование средств, гарантирующих безопасную работу с типами и ресурсами.
Серьёзным подспорьем программисту станет добротный статический анализатор кода, считает Страуструп. Внедрение такого инструмента приведёт к куда меньшим трудозатратам, чем переход на «безопасные» языки.
По мнению датского программиста и учёного, у авторов рекомендаций в АНБ слишком узкое представление о безопасности ПО, которое ограничивается безопасной работой с памятью. В то же время существует свыше десятка других сценариев, при которых особенности конкретного языка можно — умышленно или нет использовать в ущерб безопасности софта, отмечает создатель C++.
«Отец» C++ считает, что добиться безопасности ПО возможно, сочетая различные стили программирования, проверенные библиотеки и обязательный статический анализ кода.
Страуструп призвал АНБ сперва серьёзно подумать о «безопасности» новых языков и лишь затем предложить что-нибудь разумное по этому поводу. «Разумным» Страуструп счёл бы формирование списка проблем безопасности C++, которые впоследствии можно было бы устранить путём принятия поправок к международным стандартам языка. «Этим я и планирую заняться», — отметил программист.
В 2022 году Страуструп и Габриэль дос Рейс из Microsoft, опубликовали работу, в которой разобрали частые ошибки программистов, приводящие к «поломке» системы типов данных и возникновению проблем с безопасностью использования системных ресурсов (в частности, памяти), а также предложили меры по их предотвращению.
В заключение письма Страуструп намекнул, что авторам доклада АНБ следовало бы обращаться за экспертным мнением к представителям комитета ISO по стандартам C++, а не опираться на точку зрения некоего «всеобъемлющего сообщества разработчиков ПО, представляющего частный и государственный сектора экономики США, а также академическую среду». Именно так в отчёте АНБ обозначены инициаторы повсеместного перехода на языки программирования, обеспечивающие безопасную работу с памятью.
Читать на dev.by