La Singularidad Desnuda

Un universo impredecible de pensamientos y cavilaciones sobre ciencia, tecnología y otros conundros

Adios a John Backus

Posted by Carlos en marzo 21, 2007

John BackusCreo que los lenguajes de programación convencionales son para los pájaros. Son sólo extensiones de la máquina de von Neumann, y mantienen nuestras narices a ras de suelo, tratando con palabras individuales y direcciones de memoria, y todo tipo de estupideces como esas.

John Warner Backus (1924-2007) , matemático e informático estadounidense

El pasado sábado 17 de marzo nos dejó John Backus, unas de las personas que más ha contribuido a que la informática en general, y la programación en particular sean lo que hoy en día conocemos. Y es que ni más ni menos fue la persona que ideó el primer lenguaje de programación de alto nivel, diseño el primer compilador, y formalizó la notación que hoy en día empleamos para describir lenguajes de programación.

Backus nació en 1924 en el seno de una familia acomodada. Empezó a estudiar química sin mucho éxito, y tras la II Guerra Mundial intentó estudiar medicina, de nuevo sin éxito. Según él, los estudios de medicina se basaban exclusivamente en la memorización, y se penalizaba el pensamiento propio. La afirmación era sin duda exagerada, pero dejaba patente el tipo de estudios que prefería Backus: las ciencias exactas. De hecho, no tardaría en matricularse en matemáticas, y pocos meses antes de graduarse, en la primavera de 1949, ocurrió una de esas anécdotas que cambian el curso de la Historia.

Backus visitó las oficinas centrales de IBM en Nueva York para ver el SSEC (Selective Sequence Electronic Calculator), un computador electromecánico recién construido, y puntero para la época. Durante la visita le comentó a la guía que era estudiante de matemáticas y que buscaba trabajo. La guía insistió entonces en que fuera a ver a Rex Seeber, uno de los inventores del SSEC. Backus se negaba, ya que como luego recordaría:

No llevaba corbata, mi chaqueta tenía un agujero en la manga, y no sabía nada de computadores.

La insistencia de la guía hizo que finalmente fuera recibido por Seeber que le sometió a un interrogatorio a base de -según diría el propio Backus- rompecabezas matemáticos, como si de un examen oral se tratara. Dicho examen fue realmente satisfactorio, ya que fue contratado de inmediato. “¿Para qué puesto?” -preguntó Backus- “De programador” fue la respuesta.

La programación del SSEC no era simple, y se realizaba a base de tarjetas perforadas. Durante los tres años que permaneció en ese puesto, Backus perfeccionó un programa llamado Speedcoding que permitía usar un factor de escala para manipular números grandes o pequeños (el punto flotante). A finales de 1953 preparó una propuesta para el nuevo computador que iba a sacar IBM (el 704): un lenguaje de programación que permitiera sacar el máximo partido de él. IBM aceptó la propuesta, y Backus creó un equipo para llevarla a cabo. No sólo había que diseñar el lenguaje, sino también un mecanismo para que los programas escritos en ese lenguajes fueran traducidos a algo que la máquina entendiera. Ambas cosas fueron conseguidas. El lenguaje diseñado fue llamado FORTRAN (FORmula TRANslating System), el primer lenguaje de programación de alto nivel (o al menos, el primero que tuvo popularidad). En cuanto al mecanismo de traducción, fue un programa de 25,000 líneas en código máquina que se distribuía con cada unidad IBM 704: había nacido el primer compilador.

El resto es historia. Participó en el desarrollo de los lenguajes de programación ALGOL 58 y ALGOL 60, y junto con Peter Naur propuso una notación para la representación de las gramáticas usadas en la definición de un lenguaje de programación (las llamadas gramáticas libres de contexto): la notación BNF. Poco a poco creció en él el rechazo hacia el paradigma de programación imperativo, hasta el punto de que cuando en 1977 le fue concedido el Premio Turing (el Nobel de la informática), el título de su disertación fue “¿Es posible liberar a la programación del estilo de von Neumann?“. Hay quien interpreta esto como una especie de disculpa por haber creado FORTRAN, uno de los baluartes de la programación imperativa. La propuesta alternativa de Backus nunca tuvo éxito, pero renovó el interés por la programación funcional en general.

Con Backus se ha ido no uno de los grandes, sino uno de los gigantes de la informática. Su legado permanecerá sin embargo siempre con nosotros.

Enviar a Blog Memes Enviar a del.icio.us Enviar a digg Enviar a fresqui Enviar a menéame

Anuncios

4 comentarios to “Adios a John Backus”

  1. Juan David said

    Muy interesante el artículo.

  2. Carlos said

    Gracias, Juan David.

  3. iabal said

    Me ha gustado mucho leer esta entrada, no conocía a este hombre y la verdad es que sí que es una gran figura dentro de las ciencias de la computación.

    Curiosamente son los matemáticos, en general, los más concienciados en que el paradigma imperativo (y a mi ver también el de los lenguajes OO) debe empezar a desaparecer, yo soy uno de los que piensa así pero soy informático, caso raro, por desgracia.

    El modelo que se usa para construir los computadores y el que se usa para programarlos deberían ser distintos. Los lenguajes funcionales proveen una abstracción MUY formal y BIEN fundamentada (en el lambda calculo de Alonso Church) que evita las tremendas pifias que se comenten con la programación imperativa, entre otras ventajas que tiene.

    Eso quitando que si los informáticos dejaramos de empeñarnos en sacar lenguajes imperativos mejores y se dedicase la gente a investigar paradigmas como el funcional o el lógico, seguramente se habría avanzado todavía más.

    Un saludo y felicidades por tu blog.

  4. Carlos said

    Gracias Iabal. Sin duda, la programación declarativa es más elegante y expresiva que la imperativa, y no es extraño que los matemáticos puros lo aprecien mejor. Aparte de accidentes históricos, y la inercia que décadas de predominio del paradigma imperativo conllevan, creo que en el fondo quizás haya de todas formas algún motivo de tipo didáctico para que los lenguajes imperativos sean los más usados como entrada a la programación. La programación declarativa está muy ligada a conceptos matemáticos que, aunque elementales, requieren hacer uso de mucha abstracción. La programación imperativa es menos problemática para eso, lo cual puede ser una ventaja dado que cada vez la enseñanza de las matemáticas se descuida más en las escuelas primarias.

Sorry, the comment form is closed at this time.

 
A %d blogueros les gusta esto: