Notícias

Linguagem de programação C ganha atualizações

Um rascunho de trabalho do padrão para a próxima revisão da linguagem de programação C, agora chamada “C2x“, está disponível para review.

A maioria das alterações aprovadas até agora para o C2x não envolve a adição de novos recursos, mas sim o esclarecimento e o refinamento de como C deve se comportar em diferentes implementações e em relação ao C ++, irmão maior. A ênfase no refinamento está de acordo com a maneira como as revisões anteriores do C – C11 e, mais recentemente, do C17.

Conforme descrito na Carta C2x, o plano enfatiza fortemente a manutenção de edições futuras da linguagem compatíveis com o grande corpo do código C existente, e para evitar (embora não descartar totalmente) “mudanças silenciosas” ou mudanças “que causam um programa de trabalho trabalhar de forma diferente sem aviso prévio.”

O WG14, grupo que supervisiona o desenvolvimento do padrão C (ISO / IEC 9899), aprovou formalmente apenas um pequeno número de alterações no idioma do padrão C17.

Conheça algumas das mudanças mais notáveis que sabemos até agora:

Um esclarecimento da palavra-chave restrita

A palavra-chave restrita é usada para informar ao compilador que um determinado objeto na memória pode ser acessado apenas por aquele ponteiro, como uma otimização. No C2x, haverá exemplos mais detalhados de como a restrição deve se comportar, para garantir que os compiladores não acabem fazendo otimizações inseguras ou desnecessárias.

Fazendo o static_assert se comportar da mesma maneira que no C, como em C ++

A declaração static_assert, encontrada em C e C ++, é usada para garantir que uma determinada expressão constante seja válida em tempo de compilação, mas é implementada de maneira diferente nos dois idiomas. Com essa mudança, a versão C2x se comportará da mesma forma que a versão C ++, facilitando o compartilhamento do código de cabeçalho entre os idiomas e a tradução entre C e C ++.

Melhores definições para comportamento de uniões

Diferentes implementações de C têm diferentes comportamentos quando se trata de uniões anônimas, um recurso adicionado em C11. O C2x esclarece como isso funciona, por isso não depende da implementação.

Outras alterações incluem como lidar com casos de divisão por zero em pow (), formatos de avaliação para pontos flutuantes e mais esclarecimentos sobre como lidar com conversões de codificação de caracteres largos.

A linguagem

C é a base de muitos projetos de software populares, como o kernel do Linux, e continua sendo uma linguagem amplamente usada, atualmente em segundo lugar no índice Tiobe. Sua simplicidade faz com que seja uma escolha comum para aplicativos de software que são executados em ou próximo ao bare metal, mas os desenvolvedores devem ter cuidado extra em C, em comparação com linguagens de nível mais alto, como Python, para garantir que a memória seja gerenciada corretamente – facilmente em programas em C.

As revisões anteriores do padrão C incluíam recursos para ajudar no gerenciamento da memória, incluindo o recurso de verificação de limites do “Anexo K”. No entanto, uma das propostas na tabela para o C2x é desaprovar ou remover as APIs do Anexo K, porque suas implementações no campo são em grande parte incompletas, não conformes e não portáteis. Propostas alternativas incluem a substituição dessas APIs por sistemas de verificação de limites de terceiros, como o Valgrind ou o Intel Pointer Checker, introduzindo refinamentos no modelo de memória ou adicionando novas maneiras de executar a verificação de limites para objetos de memória.

Além das revisões do padrão oficial C, outros projetos surgiram para oferecer melhores maneiras de escrever C. A extensão Checked C, da Microsoft, adiciona verificações para evitar muitos erros comuns no manuseio da memória. Jens Gustedt, um dos principais colaboradores do padrão C, tem sua própria proposta Modular C, que dá a C um sistema de módulos semelhante aos encontrados em linguagens de alto nível.

O atual roteiro para o C2x prevê pelo menos mais dois anos para que as propostas sejam aprovadas. O WG14 está buscando “um padrão revisado até o final de 2021, com uma data de publicação de 2022”.

Recent Posts

Cohesity obtém patente para aplicar IA diretamente em dados de backup corporativos

A Cohesity anunciou a concessão da Patente Nº 12.619.501 pelo Escritório de Patentes e Marcas…

5 horas ago

Para Diogo Cortiz, maior desafio da IA é a falta de capacidade crítica para questionar suas respostas

Diogo Cortiz, professor da PUC-SP e doutor em Tecnologias da Inteligência e Design Digital, tem…

7 horas ago

Agentes de IA vão dar “superpoderes” a profissionais de TI, diz DJ Sampath, da Cisco

DJ Sampath chegou aos Estados Unidos há 30 anos com oito dólares no bolso e…

7 horas ago

Chatbots de bancos e fintechs não entendem as emoções dos clientes, aponta estudo

A evolução da inteligência artificial nos serviços financeiros ainda esbarra em desafios relacionados à experiência…

7 horas ago

Motorola Solutions compra D-Fend por US$ 1,5 bilhão

A Motorola Solutions anunciou a assinatura de um acordo definitivo para adquirir a D-Fend Solutions,…

8 horas ago

Meta amplia controle para adolescentes

Nesta terça-feira (2), a Meta anunciou a expansão global de configurações de conteúdo para contas…

11 horas ago