¿Cómo hacemos que las máquinas nos obedezcan?
La programación de máquinas es más antigua de lo que pensabas...
Desde la mitología antigua los seres humanos han imaginado aparatos que obedecen sus órdenes. Como la mujer hecha de oro que aparece en el Kalevala nórdico, o las estatuas mecánicas que auxiliaban a Hefesto, el dios griego de la invención. Ahora tenemos a nuestro servicio no sólo robots industriales, sino computadoras que pueden hacer tareas muy complejas como dirigir cohetes espaciales u ofrecernos mundos virtuales donde podemos jugar a nuestro gusto. Todas estas máquinas necesitan una serie de instrucciones, un “programa” para hacer lo que necesitamos.
Primeras máquinas
Herón de Alejandría, conocido inventor griego del año 60, creó un carro que podía moverse en un escenario, cambiando de dirección a distancias predefinidas. Su fuente de propulsión era una pesa que colgaba y jalaba un par de cuerdas enrolladas entre una serie de clavos incrustados en el eje de manera tal que, mientras se desenrollaba, el carro podía avanzar, girar hacia ambos lados o ir en reversa. La manera en la que se enrollaba la cuerda constituía el programa del autómata: se podría decir que es el primer lenguaje de programación de la historia.
En el año 800, los hermanos Banu Musa, persas, escribieron el “Libro de los mecanismos ingeniosos” donde describen aparatos como una lámpara de aceite que se rellena sola, ¡o las primeras cajitas musicales! Éstas funcionan con cilindros cuyas protuberancias pulsan láminas metálicas que suenan con diferentes notas para crear melodías. Disponer el orden de las protuberancias constituye otro ejemplo de programación.
Primera máquina programable
Fue hasta 1801 cuando se inventó una máquina verdaderamente útil y programable: el “Telar de Jacquard” usaba tarjetas perforadas para crear diseños en los tejidos. La pianola usa un sistema similar para producir melodías.
Ese mismo sistema de tarjetas perforadas fue el propuesto por Charles Babbage para dar instrucciones a su Máquina Analítica, la primera computadora mecánica… que nunca llegó a construirse. Eso no impidió que Ada Lovelace escribiera un programa para la computadora hipotética: un algoritmo capaz de calcular una secuencia de los números de Bernoulli. Por eso Lovelace es considerada la primera programadora de computadoras de la historia.
Computadoras
Para finales del siglo XIX, las tarjetas perforadas se usaban como medio para guardar información. Herman Hollerith, empresario especializado en estadísticas, las usó para el censo de Nueva York de 1890. Thomas Watson se apropió de la empresa de Hollerith y le puso por nombre International Business Machines, o IBM…
Las primeras computadoras electrónicas programables fueron las llamadas Colossus: se usaban para descifrar códigos secretos durante la Segunda Guerra Mundial. En 1947, mientras trabajaba en una computadora Mark II Aiken, la programadora Grace Murray Hopper, vio algo que no funcionaba. Buscando entre los cables se encontró un bicho: una mariposa interfería con su programa. “Bicho” en inglés se dice “bug”, y desde entonces, a los errores de programación se les llama así. “Bugs”.
En sus inicios, las computadoras se debían programar en el lenguaje de interruptores “apagados y encendidos”: secuencias de ceros y unos. Este lenguaje se llama “código máquina”, y se clasifica como lenguaje de bajo nivel ¡es tremendamente complicado de aprender! Para facilitar el trabajo, y ya gracias al uso de teclados y monitores electrónicos, se inventó el “lenguaje ensamblador”, en el que se reemplazaban las instrucciones expresadas en secuencias de unos y ceros por abreviaturas en inglés. Era más o menos lo mismo, pero con comandos más fáciles de recordar. Finalmente, mientras más crecía la complejidad de los programas, se hizo necesario crear lenguajes más comprensibles para los humanos: se les llama lenguajes de tercera generación o “lenguajes de alto nivel”. El primero de estos lenguajes se llamó FORTRAN.
Uno de los lenguajes de alto nivel más usados para enseñar programación se llama LOGO. En él, se escribe una serie de instrucciones que hacen que una tortuguita se mueva en cualquier dirección y haga dibujos. Le podemos decir que avance 100 unidades… que rote 45 grados y avance otras 100 unidades… y que lo haga 8 veces ¡dibujamos un octágono!
Además de órdenes o “comandos”, un lenguaje de programación usa variables: espacios con nombre que almacenan algún valor. Por ejemplo, podemos usar una variable para contar cuántos lados ha dibujado la tortuga.
Otro elemento son los operadores, como “if”, que nos sirven para cambiar la conducta del programa dependiendo del valor de una variable. Por ejemplo, este programa hace que la tortuga avance poco a poco, y que se repita el ciclo hasta que el número de pasos sea igual a 10.
Hay muchos elementos más: operadores booleanos, subrutinas, funciones, bucles… y hay muchos lenguajes de programación. El que se usa para programar los robots que se hacen con Lego Mindstorms usa una interfaz gráfica y se llama RoboLab. Pero hay más serios, como el COBOL, especializado en finanzas… o el BASIC, un lenguaje multipropósito con énfasis en la facilidad de uso que popularizó la programación en los años 80. Más tarde surgirían C++ (Ce plus plus) Python, u otros que añaden funcionalidad a la web como SQL y PHP. Con todos ellos es posible programar útiles aplicaciones y divertidos videojuegos, y ahora, hasta Inteligencias Artificiales.
¡CuriosaMente!