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.
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.
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
Aún no hay comentarios.