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

По мнению Страуструпа упомянутые в отчёте АНБ безопасные языки на деле не превосходят C++ в важных с его точки зрения применениях. В частности, развиваемые последние годы базовые рекомендации по использованию C++ (C++ Core Guidelines) охватывают методы безопасного программирование и предписывают применение средств, гарантирующих безопасную работу с типами и ресурсами. При этом разработчикам, которым не требуются подобные строгие гарантии безопасности, оставляется возможность продолжения использования старых методов разработки.

Страуструп считает, что хороший статический анализатор, соответствующий рекомендациям C++ Core Guidelines, может обеспечить необходимые гарантии безопасности C++ кода, требуя значительно меньше затрат, чем переход на новые безопасные языки программирования. Например, большинство рекомендаций Core Guidelines уже реализованы в статическом анализаторе и профиле безопасной работы с памятью из состава Microsoft Visual Studio. Часть рекомендаций также учтена в статическом анализаторе Clang tidy.

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

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

// cc-by opennet.ru
// converted with crypt’s opennet autoreposter <<<

  • Sahas
    link
    fedilink
    arrow-up
    0
    ·
    3 years ago

    проблема, как мне кажется, в том, что в новых модно-молодёжных язычках надо очень постараться, чтобы выстрелить себе в яйногу, а если использовать Цплакплак, то малейший отход от std++11/17/20 – и ты в окопеловишь седитативный фол…

    • Meyer
      link
      fedilink
      arrow-up
      0
      ·
      3 years ago

      «то малейший отход от std++11/17/20» Отход куда? С++98/03 уже закопали, а при использовании вместе с кодом на С нужно думать головой.

      • Sahas
        link
        fedilink
        arrow-up
        0
        ·
        3 years ago

        отход от std++11/17/20, ес-нно :)

        Начитаются всяких переполненных куч, а потом разгребают сие добро…

    • cryptOP
      link
      fedilink
      arrow-up
      0
      ·
      3 years ago

      я вчера изучал вопрос, молодежные языки, к сожалению не работаю на старых (i386) и нестандартных платформах, поэтому их примененеие ограничено.

      • cryptOP
        link
        fedilink
        arrow-up
        0
        ·
        3 years ago

        @odalist нам нужен какой-то сводный rusto-тред.

        вчера попалось видео, кто-то демон для openbsd попробовал переписать на rust:

        https://www.youtube.com/watch?v=gShrmAvYmec

        • odalist
          link
          fedilink
          arrow-up
          0
          ·
          3 years ago

          вчера попалось видео, кто-то демон для openbsd попробовал переписать на rust:

          Интересно. Но в этом я несилен.

          сводный rusto-тред.

          Да, нужно. А для начала, вот неофициальный список программ, написанных на rust.

      • Sahas
        link
        fedilink
        arrow-up
        0
        ·
        3 years ago

        я вчера изучал вопрос, молодежные языки, к сожалению не работаю на старых (i386) и нестандартных платформах

        и прально!.. нефиг тащить гомамонта в стильный-модный-весь-такой-аджильный продакшн!..

        поэтому их примененеие ограничено.

        во-во, пусть старпёры копаются со своими игрушками, а нам смузи подавай… :)

        • cryptOP
          link
          fedilink
          arrow-up
          0
          ·
          3 years ago

          ну вот я подумывал старый спарк попросить. чтобы я на него ставил.

          • Sahas
            link
            fedilink
            arrow-up
            0
            ·
            3 years ago

            ассемблер, вестимо :)