Hace pocos días un empleado de Google dio a conocer que está desarrollando un nuevo lenguaje de programación llamado «Carbon», que se posiciona como un reemplazo experimental de C++, ampliando este lenguaje y eliminando las deficiencias existentes.
Según la presentación de Carruth, el lenguaje fue desarrollado para poder crear software donde el rendimiento es crítico. También querían permitir que los desarrolladores aprovecharan el diseño del lenguaje de programación moderno mediante el uso de Carbon.
Algunas de las cosas destacadas como puntos destacados de Carbon en comparación con C++ fueron, por ejemplo, una sintaxis más simple y las importaciones de API. Según Carruth, este nuevo lenguaje experimental debería ser interoperable bidireccionalmente con C++, lo que significa que los proyectos deberían poder migrar de un lenguaje a otro sin mucha dificultad.
Además, es un objetivo desarrollar aún más el lenguaje de forma abierta en Internet, donde cualquiera que lo desee puede contribuir con el código fuente. El proyecto está disponible públicamente en Github y está abierto para solicitudes de incorporación de cambios.
El lenguaje es compatible con la portabilidad básica de C++, puede integrarse con el código C++ existente y proporciona herramientas para simplificar la migración de proyectos existentes mediante la traducción automática de bibliotecas C++ a código Carbon.
Por ejemplo, puede reescribir una determinada biblioteca en Carbon y usarla en un proyecto C++ existente. El compilador Carbon está escrito usando desarrollos LLVM y Clang.
De las principales características de Carbon, se destacan las siguientes:
- El rendimiento del código resultante es comparable al de C++, al tiempo que mantiene la capacidad de acceder a direcciones de bajo nivel y datos a nivel de bits.
- Portabilidad con el código C++ existente, incluida la herencia de clases y las plantillas.
- Compilación rápida y capacidad de integración con los sistemas de compilación existentes para C++.
- Simplifique la migración entre diferentes versiones de Carbon.
- Proporciona herramientas seguras para la memoria que protegen contra las vulnerabilidades causadas por abordar un área de memoria después de que se haya liberado, desreferenciar punteros nulos y desbordamientos de búfer.
Por supuesto, tenemos a Rust como una alternativa propuesta a C y C++, pero este no es realmente un lenguaje de extensión, es más un lenguaje completo, comencemos de nuevo. Carbon está tratando de ser como Rust sin dejar de ser compatible con el mundo de C++, pues en su página de Github dice:
- Coincidencia de rendimiento de C++ mediante LLVM, con acceso de bajo nivel a bits y direcciones
- Interoperar con su código C++ existente, desde la herencia hasta las plantillas
- Compilaciones rápidas y escalables que funcionan con sus sistemas de compilación C++ existentes
Se afirma que Carbon es necesario porque la mejora incremental de C++ simplemente ya no es posible debido al bagaje histórico del que simplemente no puede deshacerse. Personalmente, iría más allá y sugeriría que las «mejoras» incrementales en C++ son parte de la razón por la que, en la práctica, es un lenguaje tan extenso.
“Siempre hay nuevos lenguajes que intentan ser los sucesores de C++. Doy la bienvenida a los experimentos con lenguajes de programación y estilos de programación, pero realmente no quiero generar controversias. Es fácil criticar los lenguajes establecidos (conocemos sus problemas), pero por lo general es difícil ofrecer alternativas sin crear conjuntos completamente nuevos de problemas en las reglas, bibliotecas y gobernanza del lenguaje. Carbon es tan nuevo y está subespecificado que realmente no puedo hacer comentarios técnicos significativos”, dijo en un correo electrónico el inventor de C++, Bjarne Stroustrup.
Si bien Carbon comenzó como un proyecto interno de Google, el equipo de desarrollo finalmente quiere reducir las contribuciones de Google, o de cualquier otra compañía individual, a menos del 50 % para fin de año. En última instancia, quieren entregar el proyecto a una fundación de software independiente, donde su desarrollo estará a cargo de voluntarios.
Finalmente si estás interesado en poder conocer más al respecto debes saber que los desarrollos del proyecto se distribuyen bajo la licencia Apache 2.0 y puedes consultarlos en el siguiente enlace.