|
|
|||||||||||||||||||||||||||||
|
Власти США требуют отказаться от языка 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), над которыми Страуструп работал в последние несколько лет, охватывают методы безопасного программирование и предписывают использование средств, гарантирующих безопасную работу с типами и ресурсами. АНБ США покусилось на детище Бьерна Страуструпа - язык 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++, а не опираться на точку зрения некоего "всеобъемлющего сообщества разработчиков ПО, представляющего частный и государственный сектора экономики США, а также академическую среду". Именно так в отчете АНБ обозначены инициаторы повсеместного перехода на языки программирования, обеспечивающие безопасную работу с памятью.
|
|