Google anuncio el nuevo lenguaje que remplazará a C++. Según google, es muy difícil que Rust remplace a C++, por lo tanto él invento Carbon. Por ahí, se olvida que hace varios años, google había dicho que Go remplazaría a C++, pero bueno. A mi entender, estas cosas suceden no se pueden planear, es decir, veo muy difícil que de forma planeada, un lenguaje remplace a otro, porque esto depende mucho de las personas que usan el lenguaje y no del lenguaje en sí. De esta manera, un lenguaje toma el lugar de otro, no porque una empresa lo diga, sino porque programador a programador deciden migrar.
Si van a el github de Carbon, no vamos a encontrar mucha información. Solo algunos ejemplos, veamos uno :
Como objetivos del lenguaje, el principal es remplazar a C++. C++ sigue siendo el lenguaje de programación dominante para el software de rendimiento crítico, con bases de código e inversiones masivas y crecientes. Sin embargo, está luchando por mejorar y satisfacer las necesidades de los desarrolladores, en gran parte debido a la acumulación de décadas de deuda técnica. Mejorar gradualmente C++ es extremadamente difícil, tanto por la deuda técnica en sí misma como por los desafíos con su proceso de evolución. La mejor manera de abordar estos problemas es evitar heredar el legado de C o C++ directamente y, en su lugar, comenzar con bases de lenguaje sólidas, como un sistema genérico moderno, una organización de código modular y una sintaxis simple y coherente.
Los lenguajes modernos existentes ya brindan una excelente experiencia de desarrollador: Go, Swift, Kotlin, Rust y muchos más. Los desarrolladores que pueden usar uno de estos lenguajes existentes deberían hacerlo. Desafortunadamente, los diseños de estos lenguajes presentan barreras significativas para la adopción y migración desde C++. Estas barreras van desde cambios en el diseño idiomático del software hasta gastos generales de rendimiento.
Carbon es fundamentalmente un enfoque de lenguaje sucesor, en lugar de un intento de evolucionar gradualmente a C++. Está diseñado en torno a la interoperabilidad con C++, así como a la adopción y migración a gran escala para las bases de código y los desarrolladores de C++ existentes. Un lenguaje sucesor de C++ requiere:
- Coincidencia de rendimiento con C++, una propiedad esencial para nuestros desarrolladores.
- Interoperabilidad bidireccional transparente con C++, de modo que una biblioteca en cualquier parte de una pila de C++ existente puede adoptar Carbon sin portar el resto.
- Una curva de aprendizaje suave con una familiaridad razonable para los desarrolladores de C++.
- Expresividad comparable y compatibilidad con el diseño y la arquitectura del software existente.
- Migración escalable, con cierto nivel de traducción de fuente a fuente para código C++ idiomático.