Ask HN: ¿Todavía disfrutas programar en C++?
Ask HN: Do you still enjoy coding in C++?
En los últimos años, C++ ha recibido muchas críticas por su complejidad y la (percibida) acumulación de características. Sin embargo, desde C++11 realmente he disfrutado escribir C++ con su sistema de tipos estricto (incluyendo const), bucles for basados en rangos, punteros inteligentes y lo mucho que se puede hacer con templates. Por otro lado, sé que puede ser muy complicado escribir, por ejemplo, un iterador correcto, manejar correctamente las referencias a rvalue o leer mensajes de error que involucran templates. Entonces, ¿disfrutas o no escribir código fuente en C++ y por qué?
Disfruto C++ porque me permite expresar ideas complejas con un control preciso sobre el rendimiento y los recursos. La verbosidad y las trampas son un precio que estoy dispuesto a pagar por la potencia que ofrece.
C++ se ha vuelto demasiado complicado. Echo de menos la simplicidad de C, pero con clases. Ahora paso más tiempo lidiando con errores de compilación crípticos que escribiendo lógica de negocio.
Para mí, C++ es como una navaja suiza: peligrosa si no sabes usarla, pero increíblemente útil en manos expertas. La clave está en seguir las guías centrales y usar las herramientas modernas.
Prefiero lenguajes con recolector de basura como Java o Go para la mayoría de las aplicaciones. C++ solo lo uso cuando necesito rendimiento extremo o interactuar con hardware.
La comunidad de C++ está trabajando duro para mejorar la seguridad y la facilidad de uso. Con C++20 y los módulos, muchas de las quejas sobre la complejidad están siendo abordadas.
- simonask
Oh, C++.
C++ se siente como un viejo amor que recuerdo con cariño. Estuvimos juntos muchos años, hasta aproximadamente C++20, en las buenas y en las malas. Era emocionante: increíblemente rápido, quizás irresponsablemente rápido, pero caramba, el viaje fue salvaje. Me enseñó muchísimas cosas y me moldeó hasta convertirme en el programador que soy hoy. Pero tomamos caminos separados cuando sus defectos se volvieron demasiado grandes para soportarlos, y su comportamiento —demasiado a menudo indefinido— ya no era excusable.
Me mantengo al día con él porque todavía le tengo cariño, pero tengo que admitir que me preocupan profundamente muchas de las decisiones de vida que está tomando. Debería haber visto lo problemático que era, porque conocía su historia, pero tenía la esperanza de que pudiera cambiar, y parece que nunca lo hará.
Sigo apoyando a C++, aunque estoy muy feliz con mi nuevo lenguaje principal, Rust. Espero que cambie para mejor, porque realmente quiero lo mejor para él, pero ahora mismo no lo veo. Sigue repitiendo viejos errores (por ejemplo, más trampas de comportamiento indefinido con cada nueva característica), sin abordar ninguno de sus grandes defectos (herramientas insuficientes para construir software robusto).
A veces todavía escribo C++, pero no me emociona como antes. Cuando escribo C++, es porque tengo que hacerlo. Cuando tengo la opción, Rust es simplemente una mejor elección para casi todo lo que hago. Ahora mismo, no veo un futuro para C++ y para mí.
- chris_j
Estoy realmente dividido respecto a C++. Me encanta C++, pero también hay cosas que realmente no me gustan de él. Es un lenguaje fantástico en muchos sentidos, pero arrastra más de 40 años de lastre, de cosas que no harías así si estuvieras inventando un lenguaje de programación hoy.
No he escrito C++ profesionalmente desde hace muchos años, y mis recuerdos de usarlo profesionalmente (antes de C++11) no son felices: tener que ponernos de acuerdo en un subconjunto estricto del lenguaje que se nos permitía usar, que evitaba características que ningún compilador soportaba bien, o que a mis compañeros de equipo no les gustaban. Lamentablemente, en aquel entonces la lista de características prohibidas incluía templates y namespaces.
Pero usar C++ en proyectos personales hoy en día, y poder elegir qué partes del lenguaje usar —y cuáles evitar— es mucho más agradable. Y, sinceramente, el lenguaje mejoró muchísimo a partir de C++11.
- adev_
En una palabra: Poder.
C++ es, con diferencia, el lenguaje más poderoso que existe. Y eso es lo mejor y (a menudo) también lo peor.
En términos de programación genérica, control sobre el hardware, capacidad de abstracción y, más en general, expresividad: nada, ni siquiera hoy, se le acerca a C++.
Es un lenguaje lleno de trampas y tiene su buena cuota de problemas heredados.
Pero si aprendes a evitarlas (a través de la experiencia y el dolor), puedes alcanzar una productividad y un nivel de rendimiento en C++ que es muy difícil de superar con cualquier otra cosa, incluido Rust.
Irónicamente, encuentro que esto es particularmente cierto en la era de la I.A.
Porque la cantidad de C++ que hay por ahí es tan tremenda que los agentes actualmente son bastante buenos en él si se les guía adecuadamente.
- mort96
Disfruto escribiendo código C++.
Reconozco que C++ es un mal lenguaje en muchos sentidos, pero es un mal lenguaje que conozco realmente bien, y encaja con cómo pienso sobre el código. Y me permite hacer sin esfuerzo cosas "ingeniosas" con la gestión de memoria para evitar asignaciones innecesarias, etc. Ya he aprendido la mayoría de sus idiosincrasias, el manejo de referencias rvalue/semántica de movimiento, cómo implementar contratos como iteradores y contenedores, etc.
También me gusta escribir Rust, y me gusta cómo Rust se asegura de que no cometa errores. Creo que Rust es un mejor lenguaje en muchos sentidos y creo que es el futuro de la programación de bajo nivel (¡y me parece una locura que hayan pasado tantas décadas para tener un competidor digno de C++!). Pero también me gusta que a C++ no le importe y me deje hacer lo que quiera sin actuar como una niñera. Nunca jamás me atrevería a escribir un servidor web expuesto públicamente en C++, ¿pero un juego? ¡Claro!