Breve historia de la informática

Un repaso desde los orígenes de la informática hasta los años 2000, que nos ayudará a comprender mejor qué es y como se originó la informáticas.

Introducción

La informática es una mezcla entre ciencia e ingeniería. Como ciencia estudia los algoritmos, estructuras de datos, computadores abstractos y otros modelos matemáticos necesarios tanto para el desarrollo de máquinas como de programas. Desde este punto de vista, el nombre anglosajón “computer sciences” parece ser mas adecuado que “informática”. La ingeniería informática es la puesta en práctica de la ciencia informática. La ingeniería informática se dedica a al diseño o arquitectura de computadores, a su programación (desarrollo de software) y al uso, tanto del hardware como del software. Las aplicaciones de la informática son muy variadas, entre ellas pueden destacarse las siguientes:

Precursores de la informática

El origen de la informática está en las matemáticas, pues sin ellas no habría existido la razón misma que hizo necesaria la informática, que fue la necesidad de calcular. La primera aportación importante para simplificar los métodos de cálculo, fue introducida por John Neper con la invención de los logaritmos. Los logaritmos permiten realizar cálculos complejos de forma mas sencilla, en concreto, reduce productos y divisiones a sumas y restas. Por ejemplo, la operación p = xy equivale a log(p) = log(xy) = log(x) + log(y).

La segunda gran aportación fueron las calculadoras mecánicas, que convirtieron el cálculo en un problema para las máquinas, y permitieron al hombre poder concentrarse únicamente en los razonamientos.

En tercer lugar, se encontrarían los computadores primitivos, que permitieron el uso de iteraciones, de esta forma en determinados cálculos repetitivos se podía evitar la presencia de un operador humano, que atenta contra la velocidad y la fiabilidad de los cálculos. Esos cálculos iterativos automatizados podrían considerarse como una forma primitiva de programación. En 1812 Charles Babbage diseñó una máquina que calculaba funciones matemáticas. Posteriormente, en 1832 ideó la máquina analítica, un computador mecánico de uso general capaz de ejecutar programas que le permitirían realizar cualquier tipo de operación. Según su diseño, la máquina debía constar de un lugar donde almacenar datos (memória), una calculadora aritmética y lógica, i.e. capaz de realizar las cuatro operaciones aritméticas y las tres operaciones lógicas básicas (y, o, no) y dispositivos de entrada y salida, por donde recibiría información y devolvería resultados. Nunca terminó esa máquina. Sus ideas han llegado a nuestros días gracias a Lady Ada Augusta Byron (1815-1852), hija de Lord Byron que trabajaba con Babbage. El lenguaje de programación ADA (1980) recibe este nombre en su honor.

Historia actual

En 1958 se sustituyeron los tubos de vacío por transistores electrónicos, lo que provocó un importante incremento en la velocidad de proceso. A partir de entonces se desarrollaron también instrumentos de almacenamiento magnéticos: discos y cintas. Se desarrollaron los lenguajes ensambladores, que consistieron en mnemotécnicos de las instrucciones de lenguaje máquina y se crearon los primeros lenguajes de programación de alto nivel, el COBOL, el ALGOL y el LISP.

Durante 1964, fue desarrollado en los laboratorios Bell de New Jersey (Bell Telephone Laboratories AT&T) el sistema operativo UNIX. Empezó como proyecto personal de Ken Thompson y Dennis Ritchie, la idea que los motivó fue la de crear un sistema simple para programación, que soportara multiprogramación (permitir varios programas en memoria) y tiempo compartido (poder ejecutar varios programas al mismo tiempo). Estas dos características establecen las bases de lo que es un sistema multiusuario (compartido por varios usuarios). Unos años después, diversos fabricantes ofrecieron sistemas UNIX como producto comercial: Solaris (de Sun Microsystems), AIX (de IBM), HP-UX (de Hewlett Packard), IRIX (de Silicon Graphics). En el mundo del PC se han introducido mucho después sistemas UNIX gratuítos como son FreeBSD, 386BSD y mas recientemente Linux.

A mediados de la década de 1960 se abordó el problema de la portabilidad, un programa escrito en un ordenador debería poder ejecutarse en cualquier otro sin ninguna modificación, o como máximo, unos pocos cambios. Este hecho llevó a estandarizar los lenguajes de programación de alto nivel, entre otros, se crearon los estándares para COBOL, ALGOL Y FORTRAN. En 1964 los profesores John Kemeny y Thomas Kurtz crearon el lenguaje BASIC (Beginners All-purpose Symbolic Instruction Code), un lenguaje de programación de uso general para principiantes, pensado especialmente para aprender a programar.

Durante los años sesenta, se inició un movimiento en el mundo de la programación, que defendía que el uso de los saltos incondicionales y condicionales (instrucción goto), es una mala técnica de programación, porque genera programas innecesariamente complejos y difíciles de leer, comprender y mantener. En 1968, Edsger Dijkstra demostró matemáticamente que todo programa puede escribirse usando solo tres estructuras de control: la secuencia, la condicional alternativa y la iteración condicional. Un lenguaje es estructurado si soporta estas tres estructuras, lenguajes como C, Pascal y Ada están especializados en programación estructurada. Hay que mencionar que se pueden escribir programas estructurados, incluso con lenguajes no estructurados como ensamblador. Después de que Dijkstra demostrara su teorema, la progamación estructurada se extendió rápidamente y sigue siendo la forma correcta de escribir programas. El posterior paradigma de la orientación a objetos, es una técnica de programación, no tiene nada que ver con las estructuras de control, es mas una forma de organizar subprogramas y datos. No invalida ni sustituye a la programación estructurada.

El próximo gran paso fue la creación de microprocesadores, que dieron lugar a los microordenadores (que son todos los que contienen uno o mas microprocesadores). Este hecho permitió la masificación de la informática y pronto llegaron los primeros ordenadores personales: los MITS Altair, en 1975. Durante la década de 1980, se lanzaron al mercado gran cantidad de ordenadores personales. Destacan empresas como Apple, Hewlett Packard, Texas Instruments, Epson, Atari, Nec, Olivetti, IBM, Casio o Sinclair, que fomentaron la irrupción de la informática en los hogares y las oficinas.

El segundo gran movimiento en el mundo de la programación fue la POO o programación orientada a objetos. Ésta consistente en una ampliación de la programación estructurada para permitir una mayor abstracción del código fuente, añadiendo los conceptos de objeto, clase, herencia, etc. El primer lenguaje orientado a objetos fue SmallTalk (1976), rápidamente se desarrollaron ampliaciones para incorporar esta nueva técnica a algunos lenguajes ya existentes como C, que dio lugar a C++.

El objetivo final de la informática, es crear un ordenador como HAL9000, de la obra “2001 Una odisea en el espacio” de Arthur C. Clarke. Este ordenador (no existe en la actualidad), debería ser capaz de comunicarse directamente con el hombre y autoprogramarse para realizar las tareas que éste le solicite. Crear un ordenador así es como crear un ser inteligente, tanto o seguramente mucho más que un ser humano, lo que ha generado mucha literatura y cine de ciencia ficción. Es posible que tal hazaña entrañe mas problemas que ventajas para el ser humano, especialmente si el ser inteligente en cuestión fuera capaz de tener sentimientos del estilo de los humanos, como el miedo, la envidia o el odio. Si se logra, será también el primer ser consciente e inteligente con quien pueda comunicarse la especie humana.

Evolución y desarrollo de UNIX y de GNU/Linux

Posteriormente, el nuevo sistema se trasladó a un PDP-11 y en 1973 fue reescrito en el lenguaje C de Dennis Ritchie, originariamente se había escrito en el ensamblador del PDP.

Actualmente existen multitud de sistemas UNIX de diversos fabricantes y para diversas plataformas, destacan el Solaris (de Sun Microsystems), AIX (de IBM), HP-UX (de Hewlett Packard) o IRIX (de Silicon Graphics).

Pero uno de los fenómenos mas curiosos e interesantes es la creación del sistema GNU/Linux. Existen desde hace algunos años sistemas UNIX gratuitos para ordenadores IBM PC, tales como FreeBSD. El proyecto GNU de la Free Software Foundation de Cambridge (Massachusetts) ha desarrollado gran cantidad de software que funciona en estos y otros sistemas UNIX, y lo cede de forma gratuita a cualquiera que quiera usarlo a través de Internet. Su intención original fue la de crear un sistema operativo completo para distribuirlo libremente. El sistema se desarrolló, pero una parte fundamental del mismo estaba por hacer, se trataba del núcleo o kernel, la parte del sistema operativo que se comunica directamente con la máquina.

Linus Torvalds, de la universidad de Helsinki (Finlandia), inició de forma individual el desarrollo de un núcleo (kernel) para un sistema UNIX, inspirado y con la intención de mejorar el sistema MINIX. Pronto se le unieron gran cantidad de programadores del mundo entero que, comunicándose a través de Internet, desarrollaron y siguen desarrollando el núcleo Linux y gran cantidad de software que funciona en Linux, cediéndolo gratuitamente a todos nosotros también por Internet.

El foro de debate donde Linus anunció su sistema fue comp.os.minix, en 1991 aparecía anunciado:

“¿Suspirais al recordar aquellos días de Minix 1.1, cuando los hombres eran hombres y escribían sus propios drivers? ¿Os sentís sin ningún proyecto interesante y os gustaría tener un verdadero S.O. que pudiérais modificar a placer? ¿Os resulta frustrante tener solo a Minix? Entonces, este artículo es para vosotros. Como dije hace un mes, estoy trabajando en una versión gratuita de algo parecido a Minix para ordenadores 386. He alcanzado la etapa en la que puede ser utilizable y voy a poner el código fuente para su distribución. Es solo la versión 0.02, pero he conseguido ejecutar bash, gcc, gnu-make, gnu-sed, compress...”

En Marzo de 1992 se finalizó la versión 1.0, y empezó a usarse por todo el mundo. Al software de GNU, funcionando sobre un núcleo Linux, se lo llama sistema GNU/Linux, es importante diferenciar entre el núcleo Linux y el software que se ejecuta sobre él (desarrollado por la gente de GNU y otros), pues son cosas independientes, el software GNU puede funcionar sobre un núcleo diferente, y el núcleo Linux puede funcionar con software que no sea el de GNU.

Notas