Aunque C++ sigue siendo un pilar de la programación de sistemas debido a su inigualable control del hardware, un número creciente de desarrolladores expresa una relación de 'amor-odio' con la historia de 40 años de complejidad acumulada del lenguaje. Este sentimiento es particularmente agudo a medida que la comunidad sopesa los beneficios de las abstracciones de alto nivel de C++ frente al creciente atractivo de la seguridad de memoria y las herramientas modernas de Rust.

La consulta original

La discusión fue iniciada por un usuario que señaló que, si bien C++ ha recibido críticas por la 'acumulación de funciones' (feature creep), a él personalmente le gustaba el sistema de tipos estricto y las capacidades de plantillas introducidas desde C++11.

El autor destacó la dificultad de escribir iteradores correctos o manejar referencias de valor r (rvalue references) como principales puntos de dolor y preguntó a la comunidad si todavía disfrutaban escribir código fuente en C++.

La consulta provocó una amplia gama de anécdotas personales sobre experiencias profesionales, proyectos personales y las compensaciones de usar C++ moderno frente a otros lenguajes.

Argumentos sobre el poder y el dominio de C++

Varios comentaristas argumentaron que el principal atractivo de C++ es su pura potencia. Un comentarista, escribiendo como adev_, afirmó que nada se acerca actualmente a C++ en términos de programación genérica o control de hardware, sugiriendo que, aunque tiene problemas heredados, permite un nivel de rendimiento y productividad difícil de superar.

Otros, como mort96, argumentaron que el disfrute de C++ proviene del dominio de sus idiosincrasias. Señalaron que saber cómo manejar la semántica de movimiento y la gestión de memoria permite optimizaciones 'astutas' que evitan asignaciones innecesarias, una capacidad que sintieron que era menos 'protectora' (nanny-like) que en otros lenguajes.

Por el contrario, algunos usuarios expresaron una preferencia por la simplicidad de C o las capacidades de alto nivel de Python. Un comentarista, adg001, afirmó que nunca disfrutó de la sintaxis original de C++ y su enfoque de programación orientada a objetos, prefiriendo la sensación de C.

La migración a Rust

Un tema recurrente en la discusión fue la migración de C++ a Rust. El comentarista gignico informó que, aunque todavía aprecia los méritos de C++, le resultó difícil mirar atrás después de cambiarse a Rust, citando específicamente la ausencia de tipos de datos algebraicos y el emparejamiento de patrones (pattern matching) en C++ como una desventaja importante.

Otros comentaristas señalaron que C++ ha perdido su atractivo porque ya no ofrece un buen equilibrio entre rendimiento y esfuerzo. Sugirieron que incluso los LLM son ahora más competentes programando en Rust que en C++ para proyectos nuevos.

Algunos desarrolladores, como ketzu, señalaron que, aunque disfrutaban de C++ por sus bucles y funciones, la complejidad de las especificaciones de plantillas finalmente los llevó a cambiarse a Rust.

Residuos heredados y mejoras modernas

La discusión también abordó los 'residuos' (cruft) del lenguaje. El comentarista chris_j señaló que C++ arrastra 40 años de funciones que no se incluirían si el lenguaje se inventara hoy, aunque admitió que el lenguaje se volvió mucho más agradable después de la actualización C++11.

El papel de la IA en el desarrollo moderno surgió como un ángulo inesperado. El comentarista logicchains afirmó preferir C++ porque agentes de IA como Claude pueden hacer la mayor parte del trabajo, y un C++ bien estructurado a veces puede compilarse más rápido que el código en Rust.

Esto resalta una compensación donde la enorme base de código existente de C++ proporciona una ventaja significativa para la programación asistida por IA, incluso cuando los desarrolladores humanos se mueven hacia lenguajes con garantías de seguridad más estrictas.

Preguntas sin resolver y compensaciones

La discusión reveló que el disfrute de C++ a menudo depende de la experiencia; los expertos pueden usarlo para realizar una gestión de memoria 'astuta', mientras que otros consideran que la sintaxis y los sistemas de plantillas son 'molestos' o 'incomprensibles'.

Un punto importante de controversia sigue siendo el futuro del desarrollo de C++ liderado por comités. El comentarista gignico expresó dudas sobre la capacidad del comité para implementar propuestas de larga data como el emparejamiento de patrones en medio de los desafíos organizativos actuales.

En última instancia, la elección entre C++ y Rust implica una compensación entre la expresividad 'sin tutores' de C++ y el ecosistema de herramientas modernas con seguridad primero de Rust.