lunes, 10 de septiembre de 2012

Edsger Dijkstra Wybe


Edsger Wybe Dijkstra nació el 11 de mayo de 1930 en Rotterdam, Holanda, hijo de un químico y una matemática. Estudio física y matemáticas en la Univ. de Leyden  terminando en 1951. Más tarde, un doctorado en física teórica en la misma universidad en 1956,  seguido de un Ph.D. en 1959 en la Univ. de Amsterdam. En 1952 comenzó a trabajar en el Centro Matemático de Amsterdam donde aprendió a programar, siendo el primer programador en Holanda. En 1962 pasó a ser profesor en la Univ. Tecnológica de Eindhoven hasta 1984. En paralelo, desde 1973 a 1984 fue investigador para Burroughs. Finalmente, en 1984 aceptó la cátedra Schlumberger en la Univ. de Texas at Austin, hasta que jubiló en 1999. Finalmente, el mes pasado, enfermo de cáncer, murió en Nuenen, Holanda. Dijkstra se casó en 1957 con Maria Debets (más conocida como Ria) y tuvo tres hijos: Marcus, Femke y Rutger, el único que siguió sus pasos en la computación. 

Poco después de su muerte en el 2002, recibió la distinción ACM PODC Influential Paper Award en computación distribuida por su trabajo en la auto-estabilización en programas computacionales. Este premio fue renombrado a Premio Dijkstra el siguiente año en su honor.

El trabajo de Dijkstra siempre se ha caracterizó por su elegancia y simplicidad, sin comprometer el rigor de su investigación con consideraciones económicas, políticas o administrativas. Contaba el mismo que al preguntarle a su madre cuán difícil eran las matemáticas, ella le contestó: "aprende todas las fórmulas y que si alguna vez necesitaba 
más de cinco líneas para demostrar algo, estaba en el camino equivocado". En 1972 recibió el premio Turing, y su discurso fue publicado en un artículo titulado "The Humble Programmer" (el programador humilde) ese mismo año en Communications of the ACM. Recientemente, en esta misma revista, publicaba un artículo corto titulado "The End of Computing Science?" (El Fin de la Computación), donde recalcaba que el objetivo principal de la computación, ¿Cómo no convertir un programa en un caos?, todavía no se había logrado.

A veces Dijkstra criticaba en forma franca y directa, para muchos de manera arrogante, incluso en público. Para los que lo conocían mejor, sabían que no era nada personal, sólo su forma de ser. Por dar un ejemplo, según el, la pregunta de si los computadores podían aprender a pensar, era como preguntar si los submarinos podían aprender a nadar. Dijkstra gustaba de viajar por parques nacionales en un bus que llamaba el Touring Machine junto a su familia y tocar a Mozart en el piano. Para terminar, otra cita de Dijkstra (introducción a un curso de cálculo en 1995):  “Si en 10 años más, cuando ustedes estén haciendo algo rápido y sucio, repentinamente visualizan que yo estoy mirando por sobre sus hombros y se dicen a si mismos, - a Dijkstra no le hubiera gustado esto -, eso sería suficiente inmortalidad para mi". 

El premio Turing otorgado por la ACM (Association for Computing Machinery, EEUU) es considerado el equivalente al premio Nobel de la computación. El primero de ellos fue entregado en 1966 y hasta la fecha diez de nuestros próceres 
ya no nos acompañan. Casualmente, cuatro de ellos fallecieron en un lapso menor a 45 días: el 29 de Junio, Ole-Johan Dahl; el 16 de Julio, John Cocke; el 6 de Agosto, Dijkstra; y el 10 de Agosto, Kristen Nygaard. John Cocke fue uno de los principales diseñadores de las arquitecturas RISC. Ole-Johan y Kristen fueron los desarrolladores de Simula, el precursor de los lenguajes de programación orientados a objetos,  tema del próximo mes. Hoy dedicaremos estas líneas a Dijkstra, quién contribuyó al desarrollo de la computación en muchas áreas distintas.

Dijkstra escribió más de 1300 artículos, pero indudablemente hay tres contribuciones cuyo impacto está presente en numerosos ámbitos de la computación moderna:

Algoritmo para encontrar el camino más corto en un grafo: este fue el primer problema de grafos que resolvió Dijkstra en 1956 y publicado en 1959 por que en esa época un algoritmo era difícilmente considerado un logro científico. Hoy en día, este algoritmo ha sido usado como la base para protocolos de enrutamiento en Internet, sistemas de posicionamiento global o simplemente para itinerarios de viaje.
 
El concepto de abrazo mortal (deadlock) y su solución a través de semáforos y regiones de código con acceso exclusivo. Dijkstra describió el problema con la cena de los famosos cinco filósofos que sólo tenían cinco palillos para comer arroz (ver figura). Si ellos no se ponían de acuerdo y tomaban un palillo cada uno, creaban un deadlock y morían de hambre pues se necesitaban dos palillos para comer. Esta es la base de la programación concurrente y una parte fundamental de cualquier sistema operativo.

Su aporte a la programación estructurada. Dijkstra participó en el comité que diseño Algol 60, el primer lenguaje de programación estructurado, y lo promovió intensamente fomentando la verificación formal de programas y la eliminación del goto. En este tema fue autor y coautor de varios libros, además de su artículo corto  "Go To statement considered harmful" (La instrucción go to es considerada dañina) publicado en Communications of ACM en 1968, que es legendario.
Referencias:
  • "Edsger Dijkstra." - Wikipedia, La Enciclopedia Libre. N.p., n.d. Web. 10 Sept. 2012. <http://es.wikipedia.org/wiki/Edsger_Dijkstra>.
  • "Edsger Wybe Dijkstra (1930-2002)." Edsger Wybe Dijkstra (1930-2002). N.p., n.d. Web. 10 Sept. 2012. <http://users.dcc.uchile.cl/~rbaeza/inf/dijkstra.html>. 
    Imagen obtenida 
    • "Edsger Wybe Dijkstra (1930-2002)." Edsger Wybe Dijkstra (1930-2002). N.p., n.d. Web. 10 Sept. 2012. <http://users.dcc.uchile.cl/~rbaeza/inf/dijkstra.html>. 

    No hay comentarios:

    Publicar un comentario