Создатель языка C++ раскритиковал отчет АНБ о безопасных языках программирования

Бьерн Страуструп

Бьерн Страуструп отвечает на рекомендацию АНБ и противоречит классификации C++

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

По словам Страуструпа, безопасные языки, упомянутые в отчете АНБ, на самом деле не превосходят C++ в важных с вашей точки зрения приложениях.

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

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

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

Например, большинство основных рекомендаций уже реализованы в статическом анализаторе Microsoft Visual Studio и безопасном для памяти профиле. Некоторые рекомендации учтены и в статическом анализаторе Clang tidy.

Отчет АНБ также подвергся критике за то, что он сосредоточился только на проблемах с памятью., оставляя без внимания многие другие проблемы языка программирования, влияющие на безопасность и надежность.

К сожалению, большая часть использования C++ также застряла в далеком прошлом, игнорируя улучшения, в том числе способы радикального повышения безопасности. Теперь, если бы я считал какой-либо из этих «безопасных» языков превосходящим C++ в интересующем меня диапазоне применений, я бы не считал кончину C/C++ чем-то плохим, но это не так. .

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

«Единого определения «безопасности» не существует, и мы можем достичь различных типов безопасности за счет сочетания стилей программирования, вспомогательных библиотек и использования статического анализа, — говорит он. Таким образом, Бьерн Страуструп предполагает, что то, что можно получить от C++ с точки зрения безопасности программного обеспечения, зависит, среди прочего, от разработчика и, в частности, от знания инструментов, которые предлагает язык, его владения компилятором и т. д.

Страуструп рассматривает безопасность как более широкое понятие, различные аспекты которого могут быть достигнуты за счет сочетания стиля кодирования, библиотек и статических анализаторов. Для контроля включения правил, обеспечивающих безопасность работы с типами и ресурсами, предлагается использовать аннотации кода и опции компилятора.

В приложениях, где производительность важнее безопасности, этот подход позволяет выборочно использовать инструменты, обеспечивающие безопасность только там, где это необходимо. Также можно частично применять инструменты повышения безопасности, например сначала ограничить проверку диапазона и правила инициализации, а затем постепенно адаптировать код к более строгим требованиям.

Наконец, если вы заинтересованы в том, чтобы узнать больше о публикации создателя C++, вы можете ознакомиться с подробностями в разделе по следующей ссылке.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.