Hace ahora un mes, la Oficina de su Director Nacional de Ciberseguridad (ONCD) de la Casa Blanca hacía público un llamamiento para la industria del software diera el salto a lenguajes "seguros para la memoria" (como C#, Go, Java, Python y Rust) y abandonasen de una vez dos clásicos del desarrollo: C y C++ (que son la base, sin ir más lejos, de Windows, macOS o Linux); el documento achacaba a estos últimos el auge de las vulnerabilidades que exponen la seguridad de los sistemas críticos.
Sin embargo, Bjarne Stroustrup, el creador de C++, no sólo no está de acuerdo con el punto de vista de la Casa Blanca, sino que tampoco ha querido quedarse callado, y recientemente contestaba al informe de marras en una entrevista en la que ha salido en defensa de su creación:
"Me sorprende que los redactores de esos documentos gubernamentales parezcan ignorar tanto las fortalezas del C++ contemporáneo como los esfuerzos que se han hecho para proporcionar garantías de seguridad".
"Por otro lado, sí parecen haberse dado cuenta de que un lenguaje de programación es sólo una parte de una cadena de herramientas, por lo que sería esencial mejorar las herramientas y los procesos de desarrollo".
Stroustrup ya había contestado a la Casa Blanca incluso antes de que dijera nada
En realidad, Stroustrup ya había contestado a varios de los argumentos de la ONCD varios meses antes de que se publicase (no es que sea Nostradamus, es que la Casa Blanca bebe del posicionamiento de un informe previo de la NSA). Lo hizo durante la última 'CppCon' (la gran conferencia anual de desarrolladores de C++) en octubre de 2023:
- No todo es la 'seguridad de memoria': "A menudo cuando hablan de seguridad se refieren sólo a la seguridad de la memoria; pero esa no es la única que tenemos que tener en cuenta".
- Nosotros o el caos: "¿Por qué otro lenguaje quieren apostar? Según las argumentaciones que he ido viendo, vamos a reemplazar C++ por aproximadamente siete lenguajes diferentes. Para cuando esto suceda, dentro de 40 años, probablemente tendremos 20 diferentes y tendrán que interoperar [...] eso tiende a no mencionarse".
- El caos también somos nosotros: "Muchos de los llamados "lenguajes seguros" subcontratan todas las labores de bajo nivel a C o C++, por ejemplo, para acceder a recursos de hardware o incluso al sistema operativo, también programado en C++".
- Ah, y la pasta: "Y el costo de la conversión puede ser enorme. Eso rara vez se menciona".
"Esta idea de limitarse a construir un nuevo sistema al margen del anterior y sin ninguno de los problemas de éste, es una fantasía. Pero es una fantasía muy popular". Stroustrup apuesta, en este contexto, por un enfoque "evolutivo, en lugar de simplemente ir hacia algo completamente nuevo".
La evolución de C++ hasta hoy
Volviendo a su reciente entrevista para InfoWorld, Stroustrup reivindica que C++ es un lenguaje que ha evolucionado significativamente desde su creación en 1979, y que dicha evolución de C++ ha estado marcada, precisamente, por su enfoque en ampliar las garantías de seguridad:
"Simplemente, compara el lenguaje K&R C [nota: la versión del lenguaje C expuesta en el famosísimo manual de 1978] con el C++ de los comienzos, y éste a su vez con el C++ de hoy en día. Gran parte del código C++ de calidad se escribe utilizando técnicas basadas en RAII (Resource Acquisition Is Initialization), contenedores y punteros de gestión de recursos, en lugar de basarse en los líos de punteros convencionales de estilo C".
"Hay dos problemas relacionados con la seguridad" de C++, reconoce Stroustrup:
- "De los miles de millones de líneas escritas con C++, pocas siguen completamente las pautas modernas".
- "Las nociones de la gente sobre qué aspectos de la seguridad son importantes difieren".
Para ello, ha estado colaborando con el Comité de Estándares de C++ en una solución denominada 'Profiles',
"un marco para especificar qué garantías requiere un fragmento de código y permitir que las implementaciones las verifiquen [e] introducirlas gradualmente en grandes bases de código a través de análisis estáticos locales y comprobaciones mínimas de tiempo de ejecución".
Imagen | Marcos Merino mediante IA
Ver 2 comentarios