Edsger Wybe Dijkstra


“El esfuerzo de utilizar las máquinas para emular el pensamiento humano siempre me ha parecido bastante estúpido. Preferiría usarlas para emular algo mejor.”  E.W.Dijkstra.

Edsger Wybe Dijkstra (1930 – 2002) nació en 1930 en Rotterdam, Holanda. Era hijo de Wybe Douwe Dijkstra y Brechtje Cornelia Kruyper, y tenia tres hermanos más. Su padre era professor de fisica en la escuela secundaria de Rotterdam, mientras que su madre era matemática.

De joven, asistió a la escuela secundaria de Rotterdam. Djikstra quería estudiar Derecho y asi poder representar a los Paises Bajos en las Naciones Unidas. Pero, en 1948 realizó los exámenes finales de su etapa en la escuela secundaria y sacó notas excelentes en matematicas, física, química y biología, y tanto sus padres como sus profesores intentaron persuadirle para que se decantara por una carrera de ciencias. Finalmente, decidió estudiar física teórica en la universidad de Leyden.

Tres años después, en 1951, Dijkstra vio un anuncio de la Universidad de Cambridge sobre un curso de tres semanas que trataba la programación en computadores. Se interesó mucho por este curso y decidió apuntarse, ya que lo veía como una oportunidad esta actividad, que consideraba muy ligada a su campo, la física teórica.

Fue una experiencia espantosa: era la primera vez que salía de los Países Bajos, la primera vez que tuve  que entender a la gente de habla inglesa y de inmediato me vi, tratando de seguir un curso sobre un tema totalmente nuevo. Pero me gustó mucho.”

Aad van Wijngaarden, que era el director del Departamento de Ciencia de la Computación del Centro Matemático en Amsterdam, había hecho el mismo curso en Cambridge en el año anterior y cuando se enteró de que Dijkstra había terminado, le ofreció un puesto como programador del Centro de Matemáticas. Dijkstra aceptó el cargo desde marzo de 1952, pero sólo como una posición a tiempo parcial, ya que seguía siendo estudiante de física teórica en la Universidad de Leyden. A pesar de esto, Dijkstra empezaba a decantarse más por la programación que por la física teorica, ya que le suponía un reto mayor, al ser una rama del saber prácticamente nueva, con mucho por descubrir.

Después de haber tomado la decisión, Dijkstra completó sus estudios en física teórica en la universidad, graduándose en 1956. También en 1956, el Centro de Matemáticas  de Amsterdam, en el que trabajaba completó la construcción de una nueva computadora y quería hacer una demostración pública. Para ello, Dijkstra, planteó el problema de encontrar el camino mas corto entre dos ciudades de los Países Bajos. Publicó su algoritmo, muy eficaz, que ha perdurado hasta nuestros días, y conocido popularmente como “el algoritmo de Djikstra” (o algoritmo de caminos mínimos). La idea de este algoritmo consiste en ir explorando todos los caminos más cortos que parten del vértice origen y que llevan a todos los demás vértices; cuando se obtiene el camino más corto desde el vértice origen, al resto de vértices que componen el grafo, el algoritmo se detiene.

También en 1959 fue galardonado con el doctorado de la Universidad de Amsterdam por su tesis La comunicación con un equipo automático.

Como curiosidad, destacar que en 1957 se casó con María Debets , y tuvo dos hijos y una hija. Sin embargo, tuvo un problema en su boda porque el Juez de Paz no aceptaba “programador” como profesión para los registros, por lo que tuvo que decir que era “físico teórico” en el formulario.

Dijkstra también colaboró con el equipo de desarrollo del lenguaje de programación ALGOL-60. Hizo varias contribuciones importantes: la introducción explícita de la recursividad y la noción de ‘pila’. Dijkstra, junto con uno de sus colegas en el Centro de Matemáticas, escribió el primer compilador de ALGOL-60, que se completó en agosto de 1960.

Ejemplo de código en ALGOL-60

procedure Absmax(a) Dimensiones: (n, m) Resultado: (y) Subíndices: (i, k);

value n, m; array a; integer n, m, i, k; real y;

comment De la matriz a se toma el elemento con el valor absoluto mayor y se coloca en y.

Los subíndices del elemento se colocan en i y k;

begin integer p, q;

y:= 0; i:= k:= 1;

for p:= 1 step 1 until n do

for q:= 1 step 1 until m do

if abs(a[p, q]) > y then

begin y:= abs(a[p, q]);

i:= p; k:= q

end

end Absmax

Muy parecido a C, que fue uno de los sucesores de este lenguaje, además de Ada y Pascal.

En 1962 Dijkstra fue nombrado profesor de Matemáticas en la Universidad de Tecnología de Eindhoven. En este momento esta universidad no tenia Departamento de Informática, asi que él construyó un equipo de científicos de la computación en el departamento de Matemáticas, y desarrolló el sistema operativo “THE” (Technische Hogeschool te Eindhoven). Muchas de las funciones de este sistema operativo se han convertido en características estándar en todos los sistemas operativos futuros. Entre ellas destaca el concepto de “deadlock” (interbloqueo). Su solución fue 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. 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.

Dijkstra acuño personalmente el término “crisis del software”, y desde los años 1970, el principal interés de Dijkstra fue la verificación formal (encontrar una demostración o prueba de corrección de un programa). La opinión que prevalecía entonces era que uno debe primero escribir un programa y seguidamente proporcionar una prueba matemática de su corrección. Dijkstra objetó que las pruebas que resultan son largas e incómodas, y que la prueba no da ninguna comprensión de cómo se desarrolló el programa. Un método alternativo es la derivación de programas, «desarrollar prueba y programa conjuntamente». Uno comienza con una especificación matemática del programa que se supone va a hacer y aplica transformaciones matemáticas a la especificación hasta que se transforma en un programa que pueda ser ejecutado. El programa que resulta entonces es sabido correcto por la construcción. Muchos de los últimos trabajos de Dijkstra tratan sobre las maneras de hacer llevadera la argumentación matemática.

En 1972 recibió el premio Turing, y su discurso fue publicado en un artículo titulado “The Humble Programmer” (el programador humilde).

En 1984 se le ofreció un puesto en el Burroughs Research Center de Austin, Texas, donde permaneció hasta retirarse en 1999.

Finalmente murió en el año 2002 en Nuenen, Holanda, tras una larga enfermedad de cáncer.

“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”.

E.W.Dijkstra

Documento Original : Clic aquí

Biografía.

http://es.wikipedia.org/wiki/Edsger_Dijkstra

http://www.thocp.net/biographies/dijkstra_edsger.htm

http://www-groups.dcs.st-and.ac.uk/~history/Biographies/Dijkstra.html

http://www.dcc.uchile.cl/~rbaeza/inf/dijkstra.html

http://www.cs.utexas.edu/users/EWD/index01xx.html

Alberto Benetó.

 

Etiquetado con: ,