Carbon, el lenguaje de programación que pretende reemplazar a C++

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.