Volver al inicio

Evolución de C++: epochs y estándares

El artículo propone mecanismos para el desarrollo a largo plazo de C++: especificaciones técnicas para estándares realistas, epochs para compatibilidad mixta y zero-cost exceptions. Esto permitirá que el lenguaje evolucione sin la carga del legado.

C++ del futuro: epochs, TS y nuevas excepciones
Advertisement 728x90

Propuestas de evolución de C++: Eras, estándares realistas y excepciones renovadas

Los desarrolladores de C++ lidian con tres versiones del lenguaje: la descrita en el estándar pero inaccesible; la experimental en compiladores de vanguardia; y la real en versiones ampliamente usadas. Esta brecha entre teoría y práctica urge una solución. La propuesta: una vez aprobada una característica, pasarla a una especificación técnica para su implementación en compiladores. Solo entra en el estándar completo tras soporte en al menos dos compiladores principales.

Este enfoque detecta problemas durante la implementación, permite ajustes sin modificar el estándar y garantiza que las características estén disponibles en compiladores cuando se publique el estándar. Los experimentadores acceden tempranamente a novedades justo tras su llegada a GCC o Clang.

Mecanismo de eras para eliminar compatibilidad legacy

Introducir 'eras' al inicio de archivos .cpp declararía la versión de C++ para ese módulo. Esto permite eliminar décadas de acumulaciones innecesarias: conversiones automáticas de tipos numéricos, trampas en comparaciones signed/unsigned, degradaciones implícitas de array a puntero y múltiples sintaxis de inicialización.

Google AdInline article slot

Beneficios clave:

  • Mezclar archivos de diferentes eras en un proyecto sin reescribir código legacy.
  • Transpilar código moderno a estándares antiguos para preservar compatibilidad ABI.
  • Evolucionar un C++ mejorado sin la compatibilidad hacia atrás con C frenándolo.

Las eras evitan que el lenguaje se hinche como un monstruo bajo el peso del lastre histórico.

Repensando las excepciones en C++

Las excepciones en C++ fueron un fracaso de los 80: costosas, impredecibles y vetadas en la mitad de los proyectos. Alternativas como std::expected no resuelven problemas de fiabilidad. Necesitamos excepciones de coste cero integradas con eras: las nuevas solo en archivos de eras recientes.

Google AdInline article slot

Mezclar código viejo y nuevo genera dolores de cabeza en integración, pero el statu quo es insostenible. La división comunitaria entre 'con excepciones' y 'sin ellas' frena el progreso.

Lecciones clave

  • Los estándares deben codificar características implementadas, no adelantarse vía especificaciones técnicas.
  • Las eras permiten mezclar código legacy y moderno mientras limpian el nuevo de errores históricos.
  • Nuevas excepciones de coste cero se despliegan por era, reduciendo sobrecarga y mejorando predictibilidad.
  • Sin estos cambios, C++ arriesga el destino de PL/I: complejidad explosiva sin beneficios.
  • El comité debe priorizar mecanismos estratégicos sobre minucias tácticas.

Conclusión y perspectivas

Para que C++ prospere otros 40 años, necesita cambios audaces: estándares pragmáticos, eras para la evolución y un reinicio de excepciones. Esto unifica el ecosistema, simplifica el código nuevo y preserva el legacy. El comité debe pasar de declaraciones a documentar la práctica real, permitiendo que el lenguaje se adapte sin cargas del pasado.

— Editorial Team

Google AdInline article slot
Advertisement 728x90

Leer después