Hay avances en la historia de la humanidad que resultan más evidentes que otros y que tienen su sitio en los grandes y generalistas libros de historia. Sin embargo, hay otros que son más parecidos a pequeños engranajes que impulsan dichos avances importantes. Hoy, en nuestro repaso por las diez tecnologías que cambiaron el mundo, vamos a hablar de uno de esos engranajes: los lenguajes de programación.
Meterse a examinar la historia de los lenguajes de programación es algo que nos termina desembocando en un enorme laberinto de influencias e influenciadores. Ya desde los primeros días, las innovaciones de unos eran modificadas por otros y aplicadas en un desarrollo completamente nuevo. Pero si empezamos a seguir sus raíces nos daremos cuenta de que ha habido ciertos desarrollos que han contribuido en mayor medida a su avance.
Para entender bien el avance que significó la aparición y evolución de los distintos lenguajes de programación, debemos comenzar por comprender que un ordenador sólo entiende dos cosas: encendido y apagado; es decir, el 0 y el 1, o código máquina.
<h2>Los niveles de los lenguajes</h2>
La manera más directa de comunicarle órdenes a un ordenador es hablarle en su idioma. Sin embargo, eso no significa que sea la manera más práctica ni la más rápida para un ser humano; por lo tanto, pronto se empezaron a desarrollar lenguajes que permitieran comunicarse con la máquina de una manera más rápida y eficiente. El primer paso en este sentido fue el lenguaje ensamblador, un lenguaje cuya estructura es muy parecida a la del código máquina sólo que con letras y palabras. Tanto el ensamblador como el código máquina son denominados lenguajes de bajo nivel.
Los lenguajes de bajo nivel son muy simples, pero con ellos resulta muy complicado y laborioso estructurar programas. Por eso se crearon los lenguajes de alto nivel, que es prácticamente a los que nos referimos actualmente al hablar de “lenguajes de programación”. En resumidas cuentas, se tratan de lenguajes pensados para ser entendidos con más facilidad por humanos.
Cuando se elabora un programa en un lenguaje de alto nivel, para poder hacerlo funcionar debemos traducirlo al código máquina; es decir, a unos y ceros. A este proceso se le conoce como compilación.
<h2>Los primeros lenguajes</h2>
Básicamente, los lenguajes nacen y evolucionan por dos razones: para aprovechar los avances tecnológicos y para facilitar el trabajo de los programadores.
El que se considera en la práctica como el primer lenguaje de alto nivel es Fortran, creado por el equipo de John W. Backus en IBM. Vio la luz a mediados de 1954 y aunque se recibió con escepticismo entre la comunidad de desarrolladores de entonces (que preferían seguir utilizando ensamblador), pronto probó su utilidad y su adopción se extendió ampliamente.
Otros lenguajes como LISP y COBOL vinieron después. Pero lo que tenían todos en común es que estaban principalmente orientados a unas ciertas tareas específicas y su uso estaba restringido a científicos y matemáticos
Sin embargo, con la reducción del tamaño y coste de las máquinas, los ordenadores se empezaron a popularizar en las empresas. Esto hizo surgir la necesidad de elaborar lenguajes que fueran más sencillos y que permitiesen el aprovechamiento de los ordenadores para tareas más generales.
El primero en aparecer con estas características fue BASIC, creado en 1964 por John George Kemeny y Thomas Eugene Kurtz con el propósito de ser un lenguaje fácil de usar y que pudiera utilizarse para cualquier cosa. Desde su creación, surgieron multitud de variantes que se siguen utilizando hasta la actualidad.
BASIC tenía en parte una cierta orientación educativa, como también lo tuvo el lenguaje que apareció seis años más tarde: PASCAL, que fue desarrollado principalmente para enseñar programación y luego creció hasta convertirse en una herramienta comercial. Su creador fue Niklaus Wirth que lo publicó en 1970. Por cierto, fue el lenguaje de alto nivel principal que se usó para el desarrollo del Apple Lisa.
Sin embargo, el lenguaje que sin duda más impactó no sólo en esta época sino en las siguientes fue uno con un nombre mucho más simple que todos los anteriores: C. Desarrollado entre 1969 y 1973 por el recientemente fallecido Dennis Ritchie, es considerado como uno de los lenguajes más influyentes en la historia de la informática. A su vez, fue por medio de él que Ritchie y Ken Thompson escribieron uno de los sistemas operativos también más influyentes en su campo: Unix. En realidad, C no es considerado como un lenguaje de alto nivel, sino de medio nivel, pues tiene algunas parte de ensamblador.
<h2>La evolución</h2>
Los años ochenta son una época en las que se consolidan ideas ya existentes y se toman elementos e ideas de las décadas anteriores como bases para construir nuevos lenguajes. En 1980 se crea uno de los lenguajes más utilizados desde entonces: C++, una modificación de C hecha por Bjarne Stroustrup. Se le considera el lenguaje de programación más popular de la historia y muchos de los programas más conocidos y usados están escritos en él, como por ejemplo MS Office o Firefox. De entre los lenguajes aparecidos en esta década, también cabe destacar la creación por parte de Larry Wall de Perl en 1987, el cual coge características de otros lenguajes como C o Lisp.
En los noventa hacen su aparición también un buen número de lenguajes que son muy utilizados en la actualidad, como Python (1991), Ruby (1993) o Java (1995). Éste último llamó mucho la atención por ser capaz de correr en diferentes equipos y sistemas operativos a través de su máquina virtual, encargada de ejecutar el bytecode resultante de compilar el código Java.
Aunque con la entrada en el nuevo siglo (y milenio) la aparición de nuevos lenguajes se ha visto reducida, eso no quiere decir que no se haya producido. Por ejemplo, tenemos C# y Visual Basic .NET (ambos de Microsoft) o, más recientemente (en el 2009), Go, desarrollado por Google.
<h2>Addendum: los nombres</h2>
No quisiera finalizar este artículo sin hacer mención de un aspecto bastante curioso de los lenguajes de programación: sus nombres. Y es que bautizar una creación no siempre es una tarea fácil. Muchas veces simplemente se optó por un acrónimo más o menos sonoro, o unas siglas que sonasen bien a las que luego poner un significado. Pero en otros casos, las decisiones son tomadas… de otra manera.
De los mencionados en este texto, podemos encontrarnos con que Fortran es una contracción de The IBM Mathematical Formula Translating System, quedándose tan sólo con el For de Formula y el tran de Translating. Por su parte, COBOL es el acrónimo de COmmon Business-Oriented Language, debido a que estaba orientado a negocios, finanzas e instituciones gubernamentales.
C sin duda es el epítome de la simplicidad. ¿El por qué de su nombre? Porque muchas de sus características provenían de un lenguaje anterior llamado… Sí: B. Pura lógica.
Nombres prácticos, que reflejan lo nombrado. Pero… ¿Lo hacen también otros como Python? Pues sí: Python proviene de Monty Python, el conocido grupo de humoristas británicos. ¿Y que tienen que ver estos con un lenguaje para programar? Fácil: los desarrolladores del lenguaje tenían como objetivo que usar este lenguaje fuese divertido.
En el caso de Perl, su creador quería un nombre de connotaciones positivas, por lo tanto lo sacó de la parábola de la perla, del evangelio de San Mateo, que dice: “El Reino de los Cielos es semejante a un mercader que busca perlas preciosas. Cuando encuentra una de gran valor, va, vende todo lo que tiene y la compra”. Pero resultó que ya había un lenguaje llamado PEARL, así que ni corto ni perezoso simplemente alteró el nombre y terminó con el que conocemos: Perl, que no significa absolutamente nada (por muchos acrónimos que le achaquen después).
<h2>Amplía información</h2>
Este artículo apenas es tan sólo un breve esbozo divulgativo acerca de la historia de los lenguajes de programación. Se han quedado muchas cosas fuera y, en el caso de querer profundizar un poco más, nada mejor que daros una vuelta por Genbeta Dev, donde, por ejemplo, podréis conocer más acerca de algunas de las personalidades que han influido en el mundo de la programación o sobre los paradigmas de programación, algo que os puede ayudar a diferenciar entre los diferentes lenguajes y conocer más sobre este fascinante mundillo.
Muy recomendable también es el póster creado por la editorial O’Really hace ya un tiempo y que contiene una línea de tiempo con más de 50 lenguajes y su relación entre ellos. También resulta interesante una infografía creada por Rackspace que resume bastante la evolución de los lenguajes y que también podéis encontrar en español. Por último, recomendaros también este listado de lenguajes de programación en orden alfabético (en inglés) bastante completo.
En Genbeta | Especial Diez tecnologías que cambiaron el mundo
Imágenes | Peter Hamer | Gabriel Saldana | Josuka Díaz Labrador
Ahora es tu turno de cambiar el mundo con Imagine Cup. La competición de Diseño de Software de Imagine Cup 2012 se basa en el desarrollo de aplicaciones y soluciones que puedan lograr convertir el mundo en un lugar mejor. La final mundial que se celebrará a principios de Julio en Sidney, Australia.