Pequeños y grandes hitos en la historia de la informática y el software

por Jose


Publicado 03/10/2019


Pequeños y grandes hitos en la historia de la informática y el software

El hombre siempre ha tenido desde siempre la necesidad de hacer más en menos tiempo. Desde que la humanidad inició su camino hasta hoy, no se ha dejado de automatizar todo aquello que era necesario repetir. Nos remontaremos en el tiempo para entender cómo ha sido esta evolución y hemos llegado al momento actual. Huelga decir que todo se ha acelerado extraordinariamente. En la antigüedad, de un descubrimiento significativo a otro podían pasar siglos. En las últimas décadas la evolución es constante, explosiva, casi exponencial.  El pasado es un escenario de miles de años, en el que han ocurrido hechos extraordinarios. Aquí no están todos los que son, pero sí son todos los que están. ¿Me acompañas en este viaje?

Antes de llegar al término software definamos que es, en lenguaje sencillo: son los programas que utilizamos todos. Los sistemas operativos, la inteligencia que controla nuestros ordenadores, móviles o lavadoras. Una definición más formal del software sería el soporte lógico, el código, de un sistema informático que permite realizar las tareas demandadas, como ordenar y procesar datos, por tanto hablamos de lógica y automatización, en procesos que se repiten continuamente.. 

Para iniciar este viaje nos remontamos hasta los primeros escritos de Herón de Alejandría, en los que aparece la palabra automatización, hacia el siglo I después de Cristo. Este sabio dejó extensos tratados sobre geometría y física aplicada. Así como inventos tan peculiares para la época, como la primera máquina expendedora o unas puertas automáticas. Aunque sus inventos encajan mejor en la categoría de hardware, no cabe duda de que son dos buenos ejemplos de automatización.

Damos un salto ahora hasta el siglo XII, el mecánico e inventor Al-Jazari construyó lo que se considera la primera máquina programable. Se trataba de una una especie de orquesta autómata, compuesta por figuras que mediante engranajes, ejes de levas y la energía de una pequeña noria de agua, permitía imitar los sonidos, haciendo música. Sin embargo, lo característico de este objeto era que se podía configurar para modificar el ritmo y la forma de tocar, era programable.

En el siglo XV, Güttemberg, orfebre alemán, también aportó su granito de arena con la imprenta de piezas móviles, que supuso un avance brutal para la época. Aunque se le atribuye su invención, los chinos en el siglo XI ya diseñaron un sistema de letras móviles con piezas de porcelana. Y se asegura que los romanos en el siglo V antes de Cristo ya imprimían inscripciones en objetos de barro. Aunque el ejemplo más antiguo de un objeto con inscripciones mediante sellos se remonta probablemente al siglo XV a. C, se trata del disco de Festo o Faístos.

En el mismo siglo, el extraordinario y clarividente Leonardo Da Vinci inventaba y experimentaba entre otras cosas, con la ingeniería y construía un autómata humanoide, un guerrero que podía reproducir muchos de los movimientos de un humano. 

Fue en el XVI, cuando Giovani Torriani, conocido como Juanelo Turriano, diseñó el Ingenio de Toledo, que permitía llevar agua desde el Tajo hasta el Alcázar, situado a más altitud que el cauce. Aprovechando la fuerza del propio río, un sistema de brazos de madera iba pasando el agua de uno a otro, salvando el desnivel. El sistema funcionó hasta principios del siglo XVII.

Damos un paso más. En 1642, Blaise Pascal, diseñó y construyó la primera calculadora mecánica de trabajo, que funcionaba a base de ruedas y engranajes, la Máquina aritmética o Pascalina. Con ella se podía sumar y restar dos números de forma directa y multiplicar y dividir por repetición.

En 1673 Gottfried Leibniz diseñó una máquina aritmética, con la que se podían realizar multiplicaciones moviendo una parte móvil hacia la izquierda. Era una versión mejorada de la de Pascal. El sistema era tan bueno que se ha utilizado hasta 1960 en las calculadoras mecánicas. Leibniz propuso un sistema binario para hacer cálculos de forma más sencilla, que al parecer ya se utilizaba en algunas sociedades ancestrales. Concretamente por los nativos de Mangareva, una pequeña isla de la Polinesia, que se adelantaron al genio en varios siglos. Ellos crearon sistemas binarios para llevar una contabilidad rudimentaria de los productos agrícolas y animales. Al parecer, estos habitantes polinesios, aún desarrollaron más sus matemáticas a partir de este sistema de cálculo.

En 1804, Joseph Marie Jacquard, tejedor y comerciante Frances, creó un telar programable basado en un sistema de tarjetas perforadas, que permitían el paso de las agujas y conseguía que se pudiera repetir el modelo tantas veces como se quisiera. Se considera la más antigua forma de programación.

Su trabajo inspiró a Charles Babbage, considerado padre de la moderna computación. Diseñó máquinas que ya podían realizar operaciones complejas. Estas máquinas de cálculo se hicieron muy populares a finales del siglo XIX. 

Ada Lovelace colaboró con Babbage, creó un algoritmo para calcular los números de Bernoulli. Se considera como el primer programa de ordenador para  la Máquina Analítica diseñada por Babbage, aunque nunca llegó a construirse y el programa no estuvo en funcionamiento. 

En 1847, George Boole da un paso más y utiliza el álgebra para expresar, manipular y simplificar problemas de lógica proposicional cuyos argumentos admiten dos estados, verdadero o falso, representados por el 1 y el 0. Por ello se le considera uno de los fundadores en el campo de las Ciencias de la Computación. Su contribución se conoce como el Álgebra de Boole y a los valores lógicos se les denomina booleanos.

En 1885 Herman Hollerith inventó un tabulador electromagnético, que funcionaba con tarjetas perforadas que resumían todo tipo de  información y tiempo, para más tarde usarse en contabilidad y el proceso de las nóminas. Es un hito que marcó el comienzo de la semi-automatización del procesamiento de datos de sistemas, en lo que se basó todo lo que se creó hasta un siglo después. Se le considera el primer informático, por tratar la información de forma automática. No en vano su empresa acabó formando parte de la archifamosa IBM.

Charles Xavier Thomas de Colmar inventó el aritmómetro en 1887. Era una versión mejorada de las anteriores, ya que tenía capacidad de realizar sumas, restas, multiplicaciones y divisiones que no tuvieran resultados de más de 12 cifras. En un principio no podía programarse para cálculos en sucesión. Tampoco tenía memoria para conservar un resultado parcial, aunque mejoras posteriores fueron solucionando estas cuestiones, acercándolo a lo que entendemos en la actualidad por una calculadora. Fue un éxito ya que se convirtió en la primera calculadora comercial.

Ya en el siglo XX, Howard Aiken desarrolló un dispositivo electromecánico de computación, inspirado en la Máquina Diferencial de Babbage, basado en tarjetas perforadas y una unidad central de cálculo que le permitía resolver ecuaciones diferenciales. Se llamó Automatic Sequence Controlled Calculator (ASCC) y más tarde Harvard Mark I. Recibió financiación de IBM, y con la ayuda de Grace Hopper se terminó de construir en 1944. Como se puede ver, el software ocupa un papel cada vez más relevante.

Claude Elwood Shannon sentó las bases de la teoría del diseño del ordenador digital y el circuito digital en 1937, así como uno de los ladrillos básicos sobre los que se ha desarrollado el software y el mundo digital. Desarrolló el método para expresar la información de forma cuantitativa cuya magnitud principal es el bit. Trabajando con Vannevar Bush en el analizador diferencial, ordenador analógico, se le ocurrió aplicar al álgebra de Boole el sistema binario, para simplificar el proceso. Demostró cómo usar interruptores eléctricos con dos opciones, apagado 0, encendido 1, para resolver operaciones aritmético-lógicas utilizando el álgebra de Boole. Con esto consiguió pasar del procesamiento analógico al digital y sentar las bases de la moderna informática. 

No acabó aquí su contribución ya que en su paso por los Laboratorios Bell, compartió conocimientos con William Shockley, inventor del transistor, precursor del chip, o George Stibitz, que creó los primeros ordenadores basados en relés. También contribuyó a desarrollar el campo del criptoanálisis. En aquellos años los Bell Laboratories eran una de las principales fuentes del conocimiento mundial. Su contribución al desarrollo de la industria del software es inmensa, y al de la tecnología digital, en general.

Alan Turing definió en 1937 la conocida como máquina de Turing, una máquina calculadora de capacidad infinita, que funcionaba con unas instrucciones lógicas básicas, lo que podría considerarse el concepto moderno de algoritmo. Un sistema automático con reglas muy simples que podían realizar cualquier operación matemática, expresada en un lenguaje formal. Las anteriores a la máquina de Turing no eran de propósito general, estaban ideadas para cumplir una sola función con un conjunto de variables dadas. También desarrolló un test para comprobar si una máquina era capaz de pensar como un humano, que aún se utiliza en la actualidad.

Hablemos de la International Business Machine. IBM construyó su imperio, sobre todo, alrededor de la tabuladora de Hollerit que se menciona anteriormente. Durante más de 30 años desarrollaron el producto hasta un nivel de sofisticación que solo pudo superarse con la llegada de los ordenadores digitales. Esa fue la base del enorme crecimiento e influencia de IBM, hasta que Thomas John Watson Jr. se pone al frente, sucediendo a su padre. Tras su llegada transforma la compañía, hace de los ordenadores su línea de negocio principal, reemplazando las tarjetas perforadas, por dispositivos de almacenamiento magnético. Entramos en la era de la informática moderna.

En los años 40, John Von Neumann desarrolla una arquitectura de computadoras, pensando en la reconfiguración permanente de los primeros ordenadores ENIAC, que ha perdurado hasta nuestros días. Esta es otro de los pilares sobre los que se asienta la moderna informática. En ella los programas se almacenan en una única memoria que permite que los comandos se ejecuten de la misma manera que los datos. Cada celda de la máquina tiene una dirección, que es un número único. Los comandos y los datos tienen distintos modos de uso, pero la estructura no se representa en memoria de manera codificada. Los programas se ejecutan de forma secuencial, y salvo otra orden, comienzan con la primera instrucción. Los controles de transferencia condicional, el IF famoso, los bloques repetitivos, los FOR o WHILE, forman parte de cualquier lenguaje de programación actual.

Grace Murray Hopper participa en el proyecto del ordenador Mark I en 1944. Y en 1957 crea el primer compilador de lenguajes de ordenador, que se llamó Flow-Matic. En la actualidad, los compiladores siguen siendo una herramienta esencial en la programación con muchos lenguajes. También tuvo un papel importante en el desarrollo del lenguaje COBOL.

William Shockley recibió junto a John Bardeen y Walter Houser Brattain el Premio Nobel de Física en 1956 por sus investigaciones y por la construcción de semiconductores que sustituirían a los tubos de vacío. Estos semiconductores, utilizados inicialmente en los transistores y más tarde en dispositivos como los circuitos integrados, permitieron que los ordenadores pasaran de centenares o miles de operaciones por segundo, a los miles de millones de operaciones de los dispositivos actuales. Gracias a ellos se miniaturizaron circuitos de radio, televisión y equipos de ordenadores, lo que contribuyó al desarrollo de la electrónica y la informática.

Pongamos en contexto las implicaciones del cambio que se crea a partir del invento de Shockley. La potencia de ordenador se mide en FLOPS. Un FLOP es una operación de coma flotante por segundo. El ordenador más potente de la actualidad, el Summit de IBM, puede alcanzar los 122 petaFLOPS, esto es 122.000 billones de operaciones por segundo. Para hacernos una idea, un ordenador de válvulas de los años 50 apenas alcanzaba los miles de FLOPS, en algunos casos incluso cientos. Por hacer una comparativa, el coste por teraFLOP hoy es de unos pocos dólares, menos de 30, para un ordenador no excesivamente sofisticado. En 1961, basado en la potencia de cálculo y coste de un IBM 7030, hubiera costado la friolera de 156,8 billones de dólares. 156 billones frente a 30 ¿Te haces una idea de porqué los ordenadores hacen cada vez cosas más complejas? El software, con esa potencia de procesamiento puede conseguir cosas inimaginables hace un par de décadas.

Volvamos a 1957 cuando IBM anunció oficialmente el lenguaje de programación Fortran. Desarrollado por John Backus, con un brillante equipo de ingenieros y científicos, será el precursor de los modernos lenguajes de programación. Antes de Fortran casi todo era código ensamblador. Es a finales de los 50 cuando confluyen muchos de los elementos, de hardware y software, que hemos heredado en la informática actual.

El término software parece que se lo debemos a John W. Tukey. Aparece en 1958, en un artículo en el American Mathematical Monthly. Tukey fue un brillante matemático, creador de conocidos algoritmos como el de la Transformada Rápida de Fourier, FFT en inglés.

También sobre 1958, aparece el lenguaje de programación ALGOL. Es uno de los vario lenguajes que surgieron del Reporte Preliminar de la IAL celebrada en Zurich aquel mismo año. A partir de este informe y del lenguaje se desarrollarán en años venideros Pascal, C, C++ o Java, entre otros.

En un final de década portentoso, COBOL llega en 1958. Es el primer lenguaje que tiene la vocación de correr en diferentes plataformas. Fue diseñado por un consorcio de empresas informáticas y el Departamento de Defensa de Estados Unidos. Se inspira en los lenguajes Flow-Matic de Grace Hopper y el IBM COMTRAM, desarrollado por Bob Berner. En la actualidad aún se utiliza y forma parte de la informática de bancos, aseguradoras y grandes corporaciones.

Joseph Licklider, fue un visionario que en 1962 describió la Galactic Network, básandose en un trabajo previo de Leonard Kleinrock. Describió una red de ordenadores interconectados que permitiría el acceso a cualquier persona desde cualquier lugar del mundo. Lo que entraba prácticamente en el terreno de la ciencia ficción en aquel momento, hoy es Internet. Trabajó en ARPA, donde se establecieron las bases de ARPANET el germen de Internet, y también para BBN, empresa que suministró los primeros ordenadores conectados a ella.

BASIC surge en 1964, creado por John Kemeny y Kurtz Thomas. Desde entonces se desarrollaron centenares de variantes para todas las plataformas informática. Hoy está en desuso, pero Visual Basic sigue siendo el corazón de muchas aplicaciones.

Niklaus Wirth crea Pascal en 1968, con el objetivo de contar con un buen lenguaje de programación orientado a la enseñanza. Pascal era un compendio de las mejores características de los lenguajes usados en aquella época, se basa en COBOL, FORTRAN y ALGOL. Es el puente entre los antiguos lenguajes y los de tercera generación.

A partir de los años 70 los lenguajes de tercera generación aparecen con fuerza: C, C++, Smaltalk, Delphi, Java o PHP entre otros. Algunos lenguajes incorporan características de la cuarta generación, entre otros Python o Ruby. No dejes que las generaciones te engañen, aunque cada una beben de las anteriores, son una evolución, pueden llevar con nosotros mucho tiempo. Por ejemplo entre los lenguajes de cuarta generación tendríamos todas la variantes tipo Dbase: Dataflex, Xbase, Clipper o Foxpro, entre otros. Son todos lenguajes que surgen en los 80. ABAP, R o PL/SQL forman parte de este grupo de lenguajes.

El lenguaje C, uno de los más icónicos de la historia de la informática, fue creado por Dennis Ritchie y Ken Thompson entre 1969 y 1972. Se desarrolla como herramienta para la creación de sistemas operativos, pensando en UNIX, que será concebido por el mismo equipo en paralelo. Tanto en el desarrollo del lenguaje como del sistema operativo también participaron Brian Kernighan y Douglas Mcllroy.

Y en este punto entra en escena Vinton Cerf, que lideró el desarrollo del protocolo TCP/IP e Internet. TCP/IP aparece en 1972 de la mano de Cerf y Robert Kahn. Pese al ingente trabajo previo de muchos otros, desde los 60, se les considera los padres de Internet.

En 1973, la red global se hace realidad. El University College of London y la Royal Radar Establishment en Noruega se conectan a ARPANET

Se empieza a usar el término Internet, que aparecerá en diciembre de 1974 en el RFC 675: Internet Transmission Control Program. En el mismo año aparece el primer Internet Service Provider, Telenet.

También en 1974 se publica SEQUEL: A Structured English Query Language, que se considera la puesta de largo de lo que sería SQL, el lenguaje de base de datos más extendido de la actualidad. Considerado en buena medida un estándar, debemos agradecer su existencia a Donald Chamberlain y Raymond F. Boyce, que comenzaron a desarrollarlo para los sistemas de la empresa a principios de los 70. Hijas de SQL son bases de datos tan conocidas como DB2, Oracle, MS Sql Server, MySql o PostgreSql, entre muchas otras.

Dan Bricklin y Bob Frankston, desarrollan la hoja de cálculo VisiCalc en 1979. Aunque hay conceptos previos, fue la primera implementación eficiente de una herramienta imprescindible hoy en día. Marcas como Apple probablemente no habrían crecido como lo hicieron, si VisiCalc no tuviera una versión para Apple II. Se comenta que un 25% de las ventas de Apple, de un ordenador de 2.000$, se debían a VisiCalc, un software de 100$. El competidor Multiplan apareció en 1982, pero quien les dejó fuera del mercado fue Lotus 1-2-3, probablemente el software de hoja de cálculo más popular, hasta la llegada de Excel. 

En 1979, Bjarne Stroustup, que trabaja también en el entonces ATT&Bell Labs, empieza a desarrollar en un lenguaje C con clases, tomando elementos del lenguaje Simula. En 1983 nace oficialmente C++, el estándar de programación de facto en UNIX y todos sus derivados Open Source, incluyendo las decenas de variantes de Linux.

En 1982 se publica el RFC del protocolo SMTP sobre el que se basa el servicio de email. Aunque el primer programa de email lo crea en 1971 Ray Tomlinson en ARPANET, no será hasta la llegada del SMTP que el correo electrónico empiece a desarrollarse en serio.

En 1983, a partir de los desarrollos de Cerf, Kahn y muchos otros, ARPANET, la precursora de Internet, implanta el protocolo TCP/IP, como el estándar del sistema.

En 1983 la revista BYTE dice de Wordstar “sin duda el programa de procesamiento de texto más conocido y probablemente el más usado en PC”. ¿Te acuerdas de él? Pues Wordstar fue ideado por John Robbins Barnaby en 1979, sobre desarrollos previos como WordMaster.

Mitch Kapor, empleado de Visicorp, creadores de VisiCalc, lanza en 1983 el software de hoja de cálculo Lotus 1-2-3. Cofundó la Electronics Frontier Foundation en 1990 y participó en el lanzamiento de la Mozilla Foundation en 2003.

Durante 1987 John McAfee fundará la más importante empresa de antivirus en aquel momento. El papel del antivirus McAfee en los años sucesivos es otro hito muy importante de esta pequeña historia. La guerra de virus y antivirus se mantiene hasta nuestros días, siendo los sistemas de Microsoft primero y los de Android después, los favoritos de los piratas informáticos. Apple va salvando la cara, en general.

Con todo lo sucedido en las tres décadas anteriores, parece que en la vertiginosa década de los ochenta no hubiera pasado nada sustancial, y así es, al menos en términos de lenguajes o técnicas relevantes. Pero no debemos olvidar que en estos años está desarrollándose la informática personal, sobre la que se asentará el mundo digital.

Por ejemplo, Tim Berners-Lee publica en 1989 su propuesta sobre el protocolo de transmisión de internet, que estuvo desarrollando los años anteriores. Crea URL, HTTP, la World Wide Web, HTML y el primer navegador. En un ratito como quien dice, ha transformado el mundo. Probablemente sea la persona que ha creado las piezas informáticas más importantes de la historia.

La primera versión de Linux vio la luz en marzo de 1991. Fue y es, el trabajo de otro visionario de la informática y el software: Linus Torvalds. Además de crear uno de los sistemas operativos cruciales sobre el que descansa todo el ecosistema digital, es uno de los precursores e impulsores del movimiento Open Source. Sobre variantes de Linux corren la mayor parte de servidores y sistemas que gestionan Internet, las comunicaciones y hasta los teléfonos móviles. Android es otra variante que utiliza el kernel de Linux.

Guido van Rossum es el creador de Python, otro lenguaje icónico en la tecnosfera actual. Publicó la versión 0.9.0 en 1991. La versión 1.0 vio la luz en 1994. En los últimos años ha ganado una enorme tracción y es cada vez más popular por su flexibilidad.

Y como también hay que divertirse, hay que destacar la llegada de Doom, uno de los primeros juegos FPS, first-person shooter, que también representó un hito en la historia informática. Los juegos ya no fueron iguales a partir de 1993, cuando se lanzó Doom al mercado. El director del proyecto fue John Carmack.

Yukihiro Matsumoto crea en 1993 Ruby. Y lo presenta públicamente en 1995. Ruby ganó la atención de los profesionales con la aparición de Ruby on Rails, conocido como RoR. Fue desarrollado por David Heinemeier Hansson, durante su trabajo en el proyecto Basecamp, en 37signals. La aparición de Basecamp y otros productos de la compañía supusieron un revulsivo en el sector. La primera versión de RoR se liberó en 2004.

Marc Andreesen, creó Netscape en 1994. Este navegador es el sucesor de Mosaic, una versión previa que estuvo poco tiempo en el mercado. Y a partir de ellos surgiría el actual Firefox. Responsable también de la llegada del lenguaje de programación JavaScript, el más popular de la actualidad y de piezas críticas para la programación de Internet como las CSS.

El lenguaje PHP apareció el mismo año. De ser poco más que un experimento de Rasmus Lerdorf, su creador, se ha convertido en el lenguaje que gestiona la mayor parte de los sitios de Internet. PHP es utilizado en cerca del 80% de los proyectos, a mucha distancia de Java o los lenguajes de Microsoft.

La primera versión pública de Java se conoció también en 1994. Fue desarrollado en Sun Microsystems por un equipo liderado por James Gosling. Java es el lenguaje de los sitios de los proyectos grandes, aunque su uso no está tan extendido. En España Hacienda y las instituciones públicas son muy de Java. Un auténtico peñazo, con perdón, por la forma en que lo implantan.

En 1995 Brendan Eich, incorporación que se hizo en Netscape, desarrolla lo que primero se llamó Mocha, después LiveScript y más tarde JavaScript. Es curioso el fenómeno de este lenguaje que de ser considerado como menor, con demasiadas debilidades, ha evolucionado en otros mucho más sólidos y potentes, que se han convertido en el corazón de las aplicaciones del lado del cliente.

Y saltamos hasta 2011. No es que en años anteriores no haya habido novedades, C# o Swift por ejemplo, son muy importantes en sus correspondientes ecosistemas. Pero en un entorno dominado por la web, son los lenguajes que tienen que ver con ella los que tienen más posibilidades y la mayoría son interpretados, no compilados. ¿Por qué hasta 2011? Por Dart. El lenguaje multiplataforma y multidispositivo de Google. Tienen mucha papeletas para estar entre los triunfadores en los próximos años. Y en esto he acertado un par de veces.

Desde la llegada del nuevo siglo, el software y los lenguajes de programación no han dejado de evolucionar. Pero probablemente nada ha avanzado tanto como los entornos de programación, los IDEs y los frameworks. La auténtica revolución a lo largo del siglo XXI se está produciendo ahí. Veremos cosas muy interesantes, pero si este repaso nos deja alguna lección es que algunos productos por fantásticos que nos parezcan no llegan a popularizarse y, en otros casos, debe pasar bastante tiempo para que ganen la atención de los profesionales. 

Veremos lo que nos deparan la IoT, el Big Data y la AI, los nuevos dispositivos que llegarán y como interactuaremos con ellos. Será necesario crear toneladas de software. La próxima década promete.

Artículo escrito conjuntamente por Jose Valle y Pilar Everss

Imagen: Kolossos


Categorías: Tecnología
Tags: AutomatizaciónInformáticaSoftware