Власти США требуют отказаться от языка C++. Его создатель призывает одуматься

Источник: cnews

Бьерн Страуструп раскритиковал АНБ США за попытку ведомства навязать разработчикам использование языков программирования, обеспечивающих безопасную работу с памятью. "Отец" C++ - одного из самых популярных языков современности - упрекнул ведомство в поспешности в выводах и узости представлений о безопасности.

Страуструп возразил АНБ

Создатель языка программирования C++ Бьерн Страуструп(Bjarne Stroustrup) отреагировал на призыв Агентства национальной безопасности (АНБ) США к неограниченному кругу организаций отказаться от использования языков программирования, в которых ответственность за управление памятью возложена на разработчика, таких как C и C++, в пользу более обеспечивающих безопасную работу с памятью, например, любимого современными программистами Rust.

В своем открытом письме, опубликованном на open-std.org, Страуструп выразил несогласие с позицией агентства. Во-первых, он отметил, что его представители "смешали в одну кучу" C и C++, несмотря на то, что языки развивались независимо на протяжении последних 30 лет. Впрочем, и практика применения C++ во многом "застряла в прошлом" - разработчики нередко игнорируют изменения в языке, которые позволяют кардинально повысить безопасность кода, сетует Страуструп. 

В действительности же, по его мнению, C++ ни в чем не уступает современным так называемым безопасным языкам вроде C#, Go, Java, Ruby, Rust и Swift. Базовые рекомендации по использованию C++ (C++ Core Guidelines), над которыми Страуструп работал в последние несколько лет, охватывают методы безопасного программирование и предписывают использование средств, гарантирующих безопасную работу с типами и ресурсами.

bjarne600.jpg

АНБ США покусилось на детище Бьерна Страуструпа - язык C++. "Отец" выступил в его защиту

Серьезным подспорьем программисту станет добротный статический анализатор кода (например, входящий в состав Microsoft Visual Studio инструмент учитывает рекомендации упомянутого выше C++ Core Guidelines), считает Страуструп. Внедрение такого инструмента влечет за собой куда меньшие трудозатраты в сравнении с переходом на "безопасные" языки.

По мнению программиста и ученого, помимо прочего, авторы рекомендаций не видят всю картину целиком. В их представлении безопасность ПО якобы ограничивается безопасной работой с памятью. В то же время, как отмечает создатель C++, существует свыше десятка других сценариев, при которых особенности конкретного языка можно - умышленно или нет - использовать в ущерб безопасности разрабатываемого софта. 

"Отец" C++ считает, что добиться безопасности ПО возможно, сочетая различные стили программирования, проверенные библиотеки и обязательное осуществление статического анализа кода.

"Следовало бы хорошенько подумать"

Страуструп призвал АНБ со своей стороны сперва серьезно подумать о "безопасности" новых языков и лишь затем предложить что-нибудь разумное по этому поводу ("Think seriously about 'safety'; then do something sensible about it").

"Разумным" Страуструп, по его словам, счел бы формирование списка проблем безопасности C++, которые впоследствии можно было бы устранить путем принятия поправок к международным стандартам языка. "Этим я и планирую заняться", - отметил программист.

В 2022 г. Страуструп и Габриэль дос Рейс (Gabriel dos Reis), представляющий Microsoft, опубликовали работу, в которой разобрали часто встречающиеся ошибки программистов, приводящие к "поломке" системы типов данных и возникновению проблем с безопасностью использования системных ресурсов (в частности, памяти), а также предложили меры по предотвращению их возникновения.

В заключение письма Страуструп недвусмысленно намекает на то, что авторам доклада АНБ следовало бы обращаться за экспертным мнением к представителям комитета ISO по стандартам C++, а не опираться на точку зрения некоего "всеобъемлющего сообщества разработчиков ПО, представляющего частный и государственный сектора экономики США, а также академическую среду". Именно так в отчете АНБ обозначены инициаторы повсеместного перехода на языки программирования, обеспечивающие безопасную работу с памятью.

 

 


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=40349