Stroustrup: la complejidad es el motor de la innovación en software
Bjarne Stroustrup, el creador de C++, insiste: la búsqueda de la simplicidad absoluta en los lenguajes de programación es una quimera contraproducente. En medio de un debate constante sobre cuál es el mejor lenguaje para cada tarea, el científico de la computación danés defiende una postura que desafía las tendencias actuales: la complejidad, en el contexto de la ingeniería de software, no es un problema a evitar, sino una necesidad inherente al poder.
El control vs. la abstracción: dos vías para el software
La clave, según Stroustrup, reside en el nivel de control que se requiere. La industria del software, lejos de converger hacia un único lenguaje milagroso, se divide en dos grandes categorías, cada una con sus propias fortalezas y debilidades. Por un lado, encontramos los lenguajes que otorgan al programador un control granular sobre el hardware y la memoria, permitiendo optimizaciones extremas y la construcción de sistemas de alto rendimiento. C++ se ubica, lógicamente, en este grupo. Por otro lado, están los lenguajes de más alto nivel, que abstraen gran parte de la complejidad subyacente, facilitando el desarrollo rápido y la prototipación, pero a costa de flexibilidad y eficiencia.
La idea de que los programadores puedan evitar escribir código a través de la generación automática o herramientas de bajo código es, a su juicio, “inaceptable y vergonzosa”. Stroustrup, con su habitual contundencia, argumenta que la verdadera maestría reside en comprender los mecanismos internos del software, no en delegar esa responsabilidad a una capa de abstracción.

“Solo dos tipos de lenguajes: los que se critican y los que nadie usa”
La observación de Stroustrup, que califica a los lenguajes de programación en función de su popularidad y el nivel de quejas que generan, es reveladora. C++, Java y Python, pese a sus complejidades inherentes y a las críticas que inevitablemente suscitan, son herramientas indispensables en la industria. En contraste, los lenguajes “perfectos” y “prácticos” en teoría, aquellos que se proclaman como la solución definitiva a todos los problemas, suelen languidecer en el ámbito académico o experimental.
El propio C++, a pesar de no ser el lenguaje más extendido en términos de líneas de código (superado por C# o Java), mantiene su reputación de “alta complejidad”. Stroustrup explica que su diseño original buscaba un equilibrio entre simplicidad y versatilidad, ofreciendo una superficie técnica extensa para abordar problemas complejos en sistemas a gran escala. El lenguaje ha evolucionado para resolver desafíos que no existían hace tres décadas, aunque la percepción de su complejidad persiste.
Los lenguajes modernos, a menudo elogiados por su facilidad de uso, a menudo dependen excesivamente de bibliotecas externas y entornos de ejecución pesados, lo que, paradójicamente, los vuelve menos eficientes y flexibles que C++. La dependencia de estas herramientas externas introduce nuevas capas de complejidad ocultas, que pueden comprometer el rendimiento y la estabilidad del software.
Stroustrup no es solo un experto en la evolución de la programación; es un estratega. Sus reflexiones sobre la importancia de la formación, como su insistencia en que “es imposible aprender a programar por internet”, y su advertencia de que “no debes ser demasiado listo” para triunfar en la industria, son un llamado a la humildad y la perseverancia. La verdadera innovación, según él, no reside en la búsqueda de la simplicidad a toda costa, sino en la capacidad de dominar la complejidad inherente al mundo del software.
Como bien apunta el propio Stroustrup, “la perfección es enemiga de la utilidad”. Y en la ingeniería de software, la utilidad, la fiabilidad y la capacidad de resolver problemas reales, son mucho más valiosas que la búsqueda de una elegancia teórica.