O criador do C++, Bjarne Stroustrup, defendeu a linguagem de programação amplamente usada em resposta a um relatório da administração Biden que pede aos desenvolvedores que usem linguagens seguras para memória e evitem o uso de linguagens vulneráveis, como C++ e C.
Em uma resposta de 15 de março a uma consulta da InfoWorld, Stroustrup apontou os pontos fortes do C++, que foi projetado em 1979. “Acho surpreendente que os redatores desses documentos governamentais pareçam alheios aos pontos fortes do C++ contemporâneo e aos esforços para fornecer recursos fortes garantias de segurança”, disse Stroustrup. “Por outro lado, eles parecem ter percebido que uma linguagem de programação é apenas uma parte de uma cadeia de ferramentas, de modo que ferramentas e processos de desenvolvimento aprimorados são essenciais.”
A melhoria da segurança sempre foi um objetivo dos esforços de desenvolvimento do C++, enfatizou Stroustrup. “Melhorar a segurança tem sido um objetivo do C++ desde o primeiro dia e ao longo de sua evolução. Basta comparar a linguagem C K&R com o C++ mais antigo e o C++ mais antigo com o C++ contemporâneo. Minha palestra na CppCon 2023 descreve essa evolução”, disse ele. “Grande parte do C++ de qualidade é escrito usando técnicas baseadas em RAII (Resource Acquisition Is Initialization), contêineres e ponteiros de gerenciamento de recursos, em vez de bagunças convencionais de ponteiros no estilo C.”
A Casa Branca, em um relatório divulgado em 26 de fevereiro, apelou aos desenvolvedores para reduzirem o risco de ataques cibernéticos usando linguagens de programação que não tenham vulnerabilidades de segurança de memória. C++ e C foram citados como dois exemplos de linguagens com vulnerabilidades de segurança de memória. Um folheto de informações de segurança cibernética de novembro de 2022 da Agência de Segurança Nacional dos EUA (NSA) citou C#, Go, Java, Python e Rust como linguagens consideradas seguras para a memória.
Stroustrup citou uma série de esforços para melhorar a segurança do C++. “Existem dois problemas relacionados à segurança. Dos bilhões de linhas de C++, poucas seguem completamente as diretrizes modernas, e as noções das pessoas sobre quais aspectos de segurança são importantes diferem. Eu e o comitê do padrão C++ estamos tentando lidar com isso”, disse ele. “Profiles é uma estrutura para especificar quais garantias um trecho de código exige e permitir implementações para verificá-las. Existem documentos que descrevem isso no site do comitê – procure WG21 – e mais estão por vir. No entanto, alguns de nós não estão dispostos a esperar pelo progresso necessariamente lento da comissão.”
Perfis, disse Stroustrup, “é uma estrutura que nos permite melhorar gradativamente as garantias – por exemplo, eliminar a maioria dos erros de intervalo relativamente rápido – e introduzir gradualmente garantias em grandes bases de código por meio de análise estática local e verificações mínimas em tempo de execução. Meu objetivo de longo prazo para o C++ é e tem sido que o C++ ofereça segurança de tipos e recursos quando necessário. Talvez a atual pressão pela segurança da memória – um subconjunto das garantias que desejo – seja útil para meus esforços, que são compartilhados por muitos no comitê de padrões C++.”
Stroustrup defendeu anteriormente a segurança do C++ contra a NSA, que recomendou o uso de linguagens seguras para memória em vez de C++ e C em um boletim de novembro de 2022.