¿Cuál fué tu inspiración para crear C++?
En tiempos realmente antiguos, la gente tenía que escribir código que debía trabajar directamente con el hardware. Escribían instrucciones de carga y almacenamiento para que trabajaran directamente en la memoria y tenían que manipular cosas como bits y bytes. Se podía hacer un buen trabajo con ello, pero era muy especializado. Entonces se dieron cuenta que se pueden crear lenguajes de programación adaptados para humanos en áreas específicas. Así crearon FORTRAN para ingenieros y científicos, e hicieron COBOL para hombres de negocios.
Y entonces, a mediados de la década de los 60, un grupo de noruegos, encabezados por Ole-Johan Dahl y Kristen Nygaard, pensaron: ¿por qué no tener un lenguaje que sea apto para humanos para todos los dominios, no solo para el álgebra lineal y los negocios? Y construyeron algo llamado SIMULA. Y es allí donde introdujeron la clase como lo que tienes en el programa para representar un concepto en el mundo de tu aplicación. Entonces, si eres matemático, una matriz se convertirá en una clase, si es un hombre de negocios, un registro de personal puede convertirse en una clase, en telecomunicaciones un buffer de marcado puede convertirse en una clase. Puedes representar casi cualquier cosa como una clase.
Ellos fueron un poco más lejos, representaron las relaciones entre las clases; cualquier relación jerárquica podría representarse como un grupo de clases. De esta forma, podría decirse que un camión de bomberos es una especie de camión, que es como un automóvil, que es una especie de vehículo y organizar cosas como esas. Esto se hizo conocido como programación orientada a objetos o también en alguna variación de ella como abstracción de datos.
Mi idea era muy simple: tomar las ideas de SIMULA para la abstracción general en beneficio de la representación de cosas humanas, a través de herramientas de bajo nivel. En ese momento C era el mejor lenguaje para eso. Fue hecho en Bell Labs por Dennis Ritchie. Y tomé estas dos ideas y las traje juntas, de tal forma que pudiera tener abstracción de alto nivel, pero suficientemente eficiente y lo más cercana al hardware, para tareas computacionales realmente demandantes. Así C++ tiene clases como SIMULA pero funcionan tan rápido como el código de C por lo que la combinación se vuelve muy útil.
¿Qué hace que C ++ sea un lenguaje tan utilizado?
Si tuviera que caracterizar la fortaleza de C++, esta proviene de la capacidad de tener abstracciones y tenerlas tan eficientes que permite costearse la infraestructura. Y puedes acceder al hardware directamente, ya que a menudo tiene que ver con los sistemas operativos con control en tiempo real: dispositivos pequeños como teléfonos celulares y cosas por el estilo, por lo que la combinación es algo que es bueno para la infraestructura en general.
Otro aspecto que es necesario para la infraestructura es la estabilidad, cuando construyes una infraestructura, esta puede estar en el nivel mas bajo de un mainframe IBM comunicandose con el hardware para el un nivel alto de software, este es un lugar donde se usa C++. O el inyector de combustible para un motor diesel marítimo, o un navegador web. Tiene que ser estable durante una década más o menos porque no puedes darte el lujo de ajustarla todo el tiempo.
No puedes permitirte rescribir código, llevar todos los barcos a un puerto costaría mucho dinero. Por eso necesitas un lenguaje que no solo sea bueno en lo que está haciendo, debe poder contar con que estará disponible durante décadas, en una variedad de hardware diferente y que los programadores lo utilicen al menos durante más de una o dos décadas. C ++ no tiene más de tres décadas de antigüedad. Si ese no es el caso, debe volver a escribir su código todo el tiempo. Y eso ocurre principalmente con lenguajes experimentales y con lenguajes comerciales propieratios, que cambian para terminar, para satisfacer las modas pasajeras.
El problema de C ++ es la parte de complejidad. No hemos podido limpiarlo. Todavía hay un código escrito en los años 80 que se está ejecutando y a la gente no le gusta que se rompan sus códigos de ejecución. Podría costarles millones o más.