“Python, pode esperar: a sua hora vai chegar!” Nem tanto. Mas no que…

… depender do novo padrão estabelecido para a Linguagem C++, quem sabe? Que Python é a linguagem de programação “do momento”, isto não há dúvidas. Mesmo apresentando uma queda percentual consistente nestes últimos meses (índice Tiobe), o Python se consolidou no mercado em vista da sua simplicidade e facilidade de aprendizado. No entanto, isto não quer dizer que as demais estão paradas no tempo: algumas delas elas em ascensão, ao passo que outras querem recuperar o seu posto de prestígio, como é o caso das linguagens C/C++…

“The ISO C++ committee (WG21) has approved the C++26 standard, described by committee member Herb Sutter as the most compelling release since C++11, and including Contracts, despite opposition to the feature from C++ inventor Bjarne Stroustrup, among others. The committee met in Croydon, London, and approved the standard on March 28. According to Sutter’s report, the next stage is that the final document will be prepared and sent for international approval…”

— by The Register.

O comitê ISO C++ (WG21) aprovou formalmente o padrão C++26, que está sendo descrito pelo renomado membro do comitê Herb Sutter como a atualização mais impactante desde o padrão C++11. O anúncio marca a conclusão do ciclo de desenvolvimento de três anos, consolidando um conjunto de recursos que visa modernizar a linguagem e aumentar a sua competitividade, em um cenário tecnológico cada vez mais focado em segurança de memória (que há tempos, deveria receber uma atenção especial) e eficiência de desenvolvimento.

O grande destaque desta versão é a inclusão dos “Contracts” (Contratos), uma funcionalidade que permite definir pré-condições, pós-condições e asserções diretamente nas declarações de funções. Embora tenham uma história longa e conturbada (chegando a ser removidos da versão C++20 devido a divergências de design), os Contracts são vistos como uma ferramenta essencial para tornar o código mais seguro e confiável, ajudando a evitar comportamentos inesperados durante a execução dos programas escritos nesta linguagem.

Apesar da aprovação, a inclusão dos Contracts não foi unânime e gerou debates intensos dentro do comitê. O próprio criador do C++ (Bjarne Stroustrup), expressou oposição à forma como o recurso foi implementado nesta fase inicial (“mínimo produto viável”) e a votação final registrou 12 votos contrários, além de três abstenções. Críticos apontam lacunas, como a falta de suporte para contratos em funções virtuais, embora Sutter defenda que a vontade da maioria do comitê era avançar com a proposta atual, para não atrasar mais o padrão.

Outra inovação fundamental do C++26 é a introdução da reflexão em tempo de compilação (compile-time reflection). Ao contrário de linguagens como Java ou C#, onde a reflexão ocorre durante a execução (runtime) e gera um impacto (negativo) no desempenho, o C++26 permitirá que o código seja inspecionado e gerado durante a compilação. Isso promete eliminar grande parte do código repetitivo (“boilerplate”) e permitirá otimizações que antes, eram impossíveis ou exigiam ferramentas externas complexas.

Por fim, o C++26 traz um foco renovado na segurança através de uma proteção reforçada (hardening) da biblioteca padrão. Sutter destacou que a implementação dessas medidas de segurança em larga escala no Google já demonstrou resultados impressionantes, corrigindo mais de mil bugs e reduzindo a taxa de falhas de segmentação (segfaults) em 30% em toda a frota de produção da empresa. Com o padrão C++26 finalizado, o comitê agora volta suas atenções para o C++29, cujo cronograma de trabalho já foi oficialmente adotado.

E em pensar que um dia, planejava me tornar um desenvolvedor C/C++… &;-D

Leave a Comment