-
Melhorias óbvias no C
- Padrão C23: A linguagem C é aprimorada regularmente e agora chegou ao C23. No entanto, ainda existem problemas que continuam sem solução.
- Esforço da comunidade Dlang: Ao incorporar um compilador C (ImportC) ao compilador da linguagem de programação D, surgiu uma oportunidade de resolver esses problemas.
-
Avaliação de expressões constantes
- Problema: C consegue calcular expressões simples em tempo de compilação, mas não pode executar funções.
- Solução do ImportC: O ImportC permite executar funções em tempo de compilação, superando essa limitação.
-
Testes unitários em tempo de compilação
- Problema no C: Em código C, testes unitários exigem um alvo de build separado, o que é inconveniente.
- Vantagem do ImportC: O ImportC facilita a execução de testes unitários por meio da avaliação de funções em tempo de compilação.
-
Referência antecipada de declarações
- Limitação do C: C é sensível à ordem das declarações e não permite referências antecipadas.
- Vantagem do ImportC: O ImportC não depende da ordem das declarações e permite declarações globais em qualquer ordem.
-
Importação de declarações
- Problema da abordagem existente: Há o incômodo de precisar escrever arquivos
.h para cada módulo externo.
- Solução do ImportC: O ImportC permite importar declarações sem arquivos
.h, tornando o processo mais eficiente.
-
Materiais de referência
- Documentação do ImportC: Fornece informações detalhadas sobre o ImportC.
- Documentação da linguagem D: Fornece informações adicionais sobre a linguagem D.
1 comentários
Comentários do Hacker News
Os arquivos de cabeçalho da linguagem C são bons porque permitem separar claramente o que é público do que é privado, e a interface da implementação. Pelo arquivo
.h, é fácil entender como usar uma biblioteca.h, então ele parece diferente do arquivo.c.c, mas isso torna a interface mais difícil de lerHá quem defenda que a linguagem C deveria permitir executar funções em tempo de compilação, mas funções com tempo de execução longo podem ser problemáticas
busybeaverHá curiosidade sobre soluções para problemas como avaliação de expressões constantes, testes unitários em tempo de compilação, referência antecipada de declarações e importação de declarações
Escrever testes unitários para código C é possível com um bom sistema de build e um pouco de boilerplate
npyQuando a avaliação de expressões constantes fica complexa, a velocidade do compilador pode cair, e pode ser necessário usar uma VM
Testes unitários em tempo de compilação tiram o controle do desenvolvedor e exigem procedimentos desnecessários para concluir o trabalho
Discussão sobre se definir funções de forma "de cima para baixo" é melhor
Recursos que alguns gostariam de ver adicionados à linguagem C
deferde Go e ZigA implementação simples de C é uma vantagem, e expandir muito o escopo não parece uma boa ideia
Razões pelas quais definir funções de cima para baixo pode ser melhor