Hace poco leí un artículo donde enfatizaba la importancia de conocer la historia de una ciencia para poder entenderla mejor y no cometer los mismos errores del pasado o bien aprovechar lo que se hizo y que no quede en el olvido. (El que quiera leer el texto, es parte del libro “La piedra de Toque” de Jean-Marc Lévy-Leblond [aquí está un resumen del libro, por si te interesa]). En parte por esta razón voy a narrar una breve historia del lenguaje de programación C++ (lo cual, forzosamente, tiene que pasar por el lenguaje C).
Tal vez debería hacer una historia de todos los lenguajes de programación, sin embargo, creo que es una tarea demasiado extenso para este post de mi blog (que no es tan breve). Sin embargo, para aquellos interesados pueden encontrar este dibujo que resume la historia de la programación (de forma muy esquemática y sin los chismes pertinentes, pero en fin).
Lenguaje C: comenzando bien
Antes de C, los lenguajes de programación generalmente se creaban con fines académicos o por comités burocráticos (como el COBOL que está hecho por administradores de negocios donde tienes que escribir chorrocientos mil líneas de código para hacer una simple suma). C fue diseñado, implementado y desarrollado por programadores que trabajaban en problemas reales, lo cual lo hizo muy usado por programadores en todos lados y durante los 1980s y parte de los 90s.
Un gran avance de C era debido a que es un lenguaje estructurado (al igual que el Pascal), lo cual permite hacer programas grandes (cosa casi imposible con ensamblador u otros) y en su tiempo, era una innovación tremenda.
Lenguaje C++: la evolución
Saliendo del ámbito computacional, la teoría de la evolución de Darwin, pese a la que piensan algunos radicales religiosos, rifa y explica muchas cosas que el creacionismo no puede. Básicamente nos dice que la especies sufren modificaciones aleatorias en sus genes (bueno, lo de los genes fue aportación de Dobzhansky porque la genética no existía en tiempos de Darwin) y solo subsisten los que mejor se adaptan a su medio ambiente.
¿Y para qué les digo esto? Uno, para ampliar un poco la cultura de algunos lectores en materia de biología, pero principalmente porque con el C sucedió algo similar. Los sistemas se iban haciendo cada vez más complejos y hacerlos en C implicaba mucho trabajo, así que C++ es el siguiente paso de la “evolución” que va desde BCPL hasta C++.
¿Pero en qué consistía esta “evolución”? Principalmente en encontrar otra manera de hacer las cosas. Algunos llaman a esto “paradigmas” de programación (nota cultura: el término paradigma fue acuñada por Thomas Kuhn en su libro La estructura de las revoluciones científicas. En el texto usa la palabra paradigma para significar cosas diferentes, o sea que nadie realmente sabe lo que significa esa palabra, jeje). Escribí algo sobre paradigmas de programación en mi post Paradigmas de Programación y muchos objetos en C++. Como dije antes, el C es programación estructurada. Básicamente en este tipo de programación, se ejecuta un programa línea por línea en orden. El programa se ejecuta de principio a fin. Sin embargo, en la programación orientada a objetos la idea es solucionar problemas de forma similar a como resolvemos problemas en el mundo “real”, es decir, contamos con muchos objetos, cada uno con sus características y acciones que puede realizar (por ejemplo, mi mano tiene ciertas características: número de dedos, tamaño, color, etc., y cosas que puede hacer: cerrar dedos, agarrar algo, etc.). Resolvemos problemas al tomar objetos y ponerlos a funcionar (siguiendo con el ejemplo de mi mano, si mi problema consiste en escribir, puedo usar mi objeto mano y ejecutar acciones que me permiten agarrar un objeto lápiz y colocarlo sobre un objeto papel y moverlo de tal manera que escriba). Este paradigma ayuda a reducir la complejidad de sistemas grandes
Realmente no existen lenguajes 100% orientados a objetos (el único que conozco es SmallTalk), pero lenguajes como C++ o Java combinan lo orientado a objetos con un poco de programación estructurada.
C++ fue inventada por Bjarne Stroustrup en 1979. Al inicio lo llamó C con clases, pero en el 83 lo cambió a C++. Lo hizo basándose en C, incluyendo todas sus características, atributos y beneficios. Lo que agregó fue el soporte a programación orientada a objetos. Esto hacía que la transición hacia la programación orientada a objetos (o OOP por sus siglas en inglés, o POO por su acrónimo en castellano) sea fácil y sencilla.
Pero aquí no termina nuestra historia feliz. C++ fue sujeta a revisiones y en 1994 un comité de ANSI e ISO desarrollaron el C++ “estándar” que es el que se usa en todos los compiladores. Algunas compañías agregan librerías y funciones, pero todos deben respetar el C++ como fue definida por el comité ANSI/ISO (por esta razón no me gusta el Dev-Cpp porque tiene muchas cosas que no son estándares y no funciona en otros compiladores).
Una nota final. El C++ no hizo que el C cayera en desuso. Todavía hay muchas aplicaciones donde se usa el C, por ejemplo en el campo de la robótica y otros usos en la industria manufacturera.
Por esta vez, aquí le dejamos. Espero que les haya parecido interesante o por lo menos útil. ¡Saludos!