«Отец» 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++, а не опираться на точку зрения некоего «всеобъемлющего сообщества разработчиков ПО, представляющего частный и государственный сектора экономики США, а также академическую среду». Именно так в отчёте АНБ обозначены инициаторы повсеместного перехода на языки программирования, обеспечивающие безопасную работу с памятью.
С++, несмотря на свой солидный возраст, остается одним из основных языков программирования, который применется очень широко: от разработки ПО до создания игр. В сети много ресурсов, которые помогут освоить этот язык. Советуем обратить внимаение на подборку команды Digitaldefynd, котрую мы дополнили. В ней как платные, так и бесплатные ресурсы для людей с разным уровнем подготовки и знаний С++.
10 курсов по SQL для лучшего понимания работы с большими данными (май, 2023)
Собрали 10 платных и бесплатных онлайн-курсов для изучения SQL. Программы рассчитаны на слушателей, которые только начинают или продолжают знакомство с языком.
10 способов научиться программировать самостоятельно
Хотите научиться кодить и освоить алгоритмы? Собрали десять советов с чего начать изучение программирования для тех, кто только начинает своё путешествие в мир программирования и снабдили все это полезными ссылками на курсы для начинающих программистов.
Таки прав. Откройте современный стандарт и убедитесь что этих всех проблем уже нет сто лет в обед. А новые смузи валятся точно так-же, я даже примеры публиковал. При этом C++ на 100 лет впереди всего этого смузи
Зразумелая спроба абараніць сваё «дзіця», але па большай частцы эмацыйная, аргументы не пераконваюць. Развіццё моў пайшло наперад, і няма сэнсу гэтаму супраціўляцца
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.
Таки прав. Откройте современный стандарт и убедитесь что этих всех проблем уже нет сто лет в обед. А новые смузи валятся точно так-же, я даже примеры публиковал. При этом C++ на 100 лет впереди всего этого смузи
первого растамана не знающего о стандартах вычислили по минусу :D
но осталась обратная совместимость. А блеймят из-за того, что раз есть возможность - то все, не безопасно. Хотя ж наверное есть какието stirct чеки
Зразумелая спроба абараніць сваё «дзіця», але па большай частцы эмацыйная, аргументы не пераконваюць. Развіццё моў пайшло наперад, і няма сэнсу гэтаму супраціўляцца
Вы их секты раста аргументы не воспринимаете. Сколько уже статей было на реальных примерах когда ваш раст сваливался похлеще. Но у вас это другое.
Стандарты открой и убедись.
Ах да, у вас их нет, вы не знаете что это такое.