Создатель языка 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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.