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.