-
Mejoras obvias para C
- Estándar C23: El lenguaje C mejora de forma regular y actualmente ha llegado a C23. Sin embargo, todavía existen problemas sin resolver.
- Esfuerzo de la comunidad de Dlang: Al integrar un compilador de C (ImportC) en el compilador del lenguaje de programación D, se abre una oportunidad para resolver estos problemas.
-
Evaluación de expresiones constantes
- Problema: C puede calcular expresiones simples en tiempo de compilación, pero no puede ejecutar funciones.
- Solución de ImportC: ImportC permite ejecutar funciones en tiempo de compilación, superando esta limitación.
-
Pruebas unitarias en tiempo de compilación
- Problema en C: En código C, las pruebas unitarias requieren un objetivo de compilación separado, lo que resulta engorroso.
- Ventaja de ImportC: ImportC permite ejecutar fácilmente pruebas unitarias mediante la evaluación de funciones en tiempo de compilación.
-
Referencia anticipada de declaraciones
- Limitación de C: C es sensible al orden de las declaraciones y no permite referencias anticipadas.
- Ventaja de ImportC: ImportC no depende del orden de las declaraciones y permite declaraciones globales en cualquier orden.
-
Importación de declaraciones
- Problema del método existente: Existe la molestia de tener que escribir archivos
.h para cada módulo externo.
- Solución de ImportC: ImportC puede importar declaraciones sin archivos
.h, por lo que es más eficiente.
-
Material de referencia
- Documentación de ImportC: Proporciona información detallada sobre ImportC.
- Documentación del lenguaje D: Proporciona información adicional sobre el lenguaje D.
1 comentarios
Comentarios de Hacker News
Los archivos de encabezado en C son buenos porque permiten distinguir con claridad entre lo público y lo privado, y entre interfaz e implementación. A través de los archivos
.hse puede entender fácilmente cómo usar una biblioteca.h, por lo que se ven distintos de los archivos.c.c, pero eso hace más incómodo leer la interfazHay quienes opinan que C debería permitir ejecutar funciones en tiempo de compilación, pero las funciones con tiempos de ejecución largos podrían ser problemáticas
busybeaverHay curiosidad por soluciones para problemas como la evaluación de expresiones constantes, las pruebas unitarias en tiempo de compilación, las referencias anticipadas en declaraciones y la importación de declaraciones
Es posible escribir pruebas unitarias para código en C con un buen sistema de build y un poco de boilerplate
npyCuando la evaluación de expresiones constantes se vuelve compleja, la velocidad del compilador puede degradarse y podría hacer falta una VM
Las pruebas unitarias en tiempo de compilación le quitan control al desarrollador y exigen procedimientos innecesarios para completar el trabajo
Se discute si es mejor definir funciones de manera "de arriba hacia abajo"
Funciones que les gustaría que se añadieran a C
deferde Go y ZigLa simplicidad de implementación de C es una ventaja, y ampliar mucho su alcance no parece una buena idea
Razones por las que definir funciones de arriba hacia abajo puede ser mejor