EDSGER WYBE DIJKSTRA
Netherlands – 1972
By: Hamilton Richards
Por contribuciones fundamentales a la programación como un gran desafío intelectual; por insistencia elocuente y demostración práctica de que los programas deben estar compuestos correctamente, no solo depurados en la corrección; para iluminar la percepción de problemas en los fundamentos del diseño del programa.
Edsger W. Dijkstra nació en 1930 en Rotterdam, Países Bajos. Su padre, profesor de química en la escuela secundaria, fue presidente de la Sociedad Química Holandesa. Su madre, que nunca tuvo un trabajo formal, tuvo una influencia duradera en su enfoque de las matemáticas y su énfasis en la elegancia.
Graduado de la escuela secundaria en 1948 y con la intención de convertirse en un físico teórico, Dijkstra pensó que la capacidad de usar una computadora electrónica podría ser ventajosa. Tres años de programación en el Centro de Matemáticas de Amsterdam lo convencieron de que el desafío intelectual de la programación excedía al de la física teórica, pero ¿dónde estaba el sólido cuerpo de conocimiento que podría apoyar la programación como una disciplina intelectualmente respetable? Su jefe, A. van Wijngaarden, lo convenció de que en los años venideros podría ser una de las personas para hacer de la programación una disciplina respetable. Completando su estudio de física lo más rápido que pudo, Dijkstra abandonó la física para programar.
En el Centro de Matemáticas, un proyecto importante fue construir la computadora ARMAC. Para su inauguración oficial en 1956, Dijkstra ideó un programa para resolver un problema interesante para un público no técnico: dada una red de carreteras que conectan las ciudades, ¿cuál es la ruta más corta entre dos ciudades designadas? Los algoritmos más conocidos tenían tiempos de ejecución que crecían como el cubo del tamaño de la red; el tiempo de ejecución del algoritmo de Dijkstra creció solo como el cuadrado. Desarrollado en 20 minutos mientras Dijkstra se relajaba en la terraza de un café con su prometida, Maria (Ria) C. Debets, su algoritmo de ruta más corta todavía se usa en aplicaciones como el software de cambio de paquetes para las comunicaciones por computadora.
Casi al mismo tiempo, Dijkstra inventó otro algoritmo de red muy eficiente para usar en el diseño de la computadora X1. Conocido como el algoritmo de árbol de expansión mínimo, encuentra la longitud de cable más corta necesaria para conectar un conjunto dado de puntos en un panel de cableado. Publicó ambos algoritmos de red en un solo artículo en 1959. [3]
Cuando Dijkstra y Maria Debets se casaron en 1957, los ritos matrimoniales requerían que declarara su profesión. Cuando declaró que era un programador, las autoridades objetaron que no existía tal profesión, y el certificado de matrimonio lo identifica como un físico teórico.
Mientras estaba en el Centro de Matemáticas, Dijkstra trabajó en el muy importante problema de "interrupción en tiempo real", que se convirtió en el tema de su Ph.D. tesis [2]. Varios fabricantes de computadoras de la época se enfrentaban al mismo problema, pero no habían abordado el problema con el rigor que Dijkstra le aplicaba.
En el Centro de Matemáticas, Dijkstra y J.A.Zonneveld desarrollaron el primer compilador para Algol-60, un lenguaje de programación de alto nivel diseñado por un comité internacional. Completado en agosto de 1960, su compilador es anterior al segundo compilador Algol-60 en más de un año. Una de las grandes innovaciones de Algol-60, para la cual Dijkstra fue instrumental, fue la introducción explícita de la recursividad. Probablemente fue el primero en introducir la noción de una "pila" para traducir programas recursivos, informando este trabajo seminal en un breve artículo [4]. En el Oxford English Dictionary, los términos "vector" y "stack" en un contexto informático se atribuyen a Dijkstra.
En 1962, Dijkstra fue nombrado profesor de matemáticas en la Universidad Tecnológica de Eindhoven. Allí construyó el sistema operativo THE (llamado así por la universidad, entonces conocida como Technische Hogeschool te Eindhoven), que ha influido en el diseño de muchos sistemas operativos posteriores. Introdujo una serie de principios de diseño que se han convertido en parte del vocabulario de trabajo de cada programador profesional. Al presentar la reimpresión del artículo de Dijkstra sobre EL sistema operativo en la edición del 25 aniversario de Communications of the ACM, el Editor en Jefe escribió: “Este proyecto inició una larga línea de investigación en arquitectura de sistemas multinivel, una línea que continúa hasta el hoy en día porque la modularidad jerárquica es un enfoque poderoso para organizar sistemas grandes ".
En 1968, Dijkstra publicó una breve carta al editor en Comunicaciones de ACM, titulada “GOTO es dañino” [5], argumentando que la declaración GOTO, que se encuentra en muchos lenguajes de programación de alto nivel, es una fuente importante de errores , y por lo tanto debe ser eliminado. Se produjo una conmoción gigante en la comunidad informática, con combatientes tomando posiciones en todos los lados del problema. El debate ha remitido desde hace mucho tiempo; Los lenguajes de programación ahora ofrecen alternativas al GOTO. Pocos programadores de hoy lo usan libremente, y la mayoría nunca lo usa en absoluto.
Alrededor de este tiempo, Dijkstra comenzaba a formular algunas de sus primeras ideas sobre la programación como disciplina matemática. Señaló que la productividad y la confiabilidad del software están estrechamente relacionadas con el rigor en el diseño, lo que elimina las fallas del software en una etapa temprana. Estaba particularmente impresionado por la inmensidad de la llamada "crisis del software" cuando asistió a la famosa Conferencia de la OTAN de 1968 sobre Ingeniería del Software, la primera conferencia dedicada a la creciente epidemia de software entregada tarde, por encima del presupuesto y llena de fallas. Convencido de que la metodología de programación debería convertirse en una disciplina científica, decidió estudiar cómo evitar la complejidad en los diseños de software.
Las "Notas sobre Programación Estructurada" de Dijkstra circularon a algunos amigos por sus comentarios y pronto se convirtieron en una sensación, y las grandes corporaciones iniciaron programas basados en sus ideas para integrar prácticas rigurosas en sus proyectos de programación. Posteriormente publicado [1] y aún impreso después de casi 40 años, este trabajo ha tenido un gran impacto en todas las áreas de la informática, desde la enseñanza de los primeros cursos de programación hasta el diseño de software complejo. Los análisis matemáticos del diseño y las especificaciones del programa se han convertido en actividades centrales en la investigación en ciencias de la computación.
El discurso de aceptación de Dijkstra para el Premio ACM Turing de 1972, titulado "El humilde programador" [6], incluye una gran cantidad de observaciones sobre la evolución de la programación como disciplina y prescripciones para su continuo crecimiento. Se requiere lectura para cualquier aspirante a informático.
En agosto de 1973, Dijkstra se unió a Burroughs Corporation como investigador asociado. Sus deberes consistían en consultar en algunos de los centros de investigación de la compañía varias veces al año y realizar su propia investigación. Entre sus contribuciones significativas de este período está el desarrollo de una teoría de la no determinación [7], un concepto fuera de las matemáticas tradicionales. Dijkstra fue el primero en observar que no solo la no determinación es central en los cálculos cuyos componentes interactúan de forma asíncrona, sino que incluso cuando no hay asincronía, la no determinación es una herramienta efectiva para razonar sobre los programas y simplificar el diseño del programa.
Su otra contribución importante durante este período fue el desarrollo de "transformadores de predicados" como base para definir la semántica de los programas y como una herramienta para derivar programas. Sus ideas refinaron las ideas anteriores de C. A. R. Hoare para una base axiomática de la programación de computadoras. Expuso estas ideas junto con la no determinación en A Discipline of Programming [8], que ha sido identificado por el Science Citation Index como un "clásico de referencia".
Los años de Burroughs fueron los más prolíficos de Dijkstra en términos de artículos de investigación. Escribió casi 500 documentos en la serie EWD, la mayoría de ellos informes técnicos, para circulación privada dentro de un grupo selecto.
Como visitante frecuente del Centro de Investigación Burroughs en Austin, Texas, a fines de la década de 1970, Dijkstra se había familiarizado con el Departamento de Informática de la Universidad de Texas en Austin. En 1984, Dijkstra aceptó un nombramiento como Presidente del Centenario de Schlumberger del Departamento.
Durante sus dieciocho años en Austin, Dijkstra continuó como un investigador prolífico. Habiéndose embarcado anteriormente en un proyecto a largo plazo para "Racionalizar argumentos matemáticos", en Austin fue coautor de un libro sobre cálculo de predicados [9] que aboga por un "estilo de prueba de cálculo" para argumentos matemáticos. Continuó aplicando su método en varias áreas diversas: geometría coordinada, álgebra lineal, teoría de grafos, diseños de programas secuenciales y distribuidos, y muchos otros.
Los años en Austin vieron a Dijkstra en su mejor momento como maestro y mentor para una generación de estudiantes de pregrado y posgrado. Desde sus días en la Universidad Tecnológica de Eindhoven, había pensado profundamente en cómo se debía enseñar la informática, y Austin le brindó la oportunidad de probar sus ideas [10]. Disfrutó de la experiencia, apreciando "... estudiantes brillantes que lo convirtieron en un desafío y un privilegio dar conferencias para ellos" [11]. Instó a las universidades a no retroceder ante el desafío de enseñar novedades radicales.
Con motivo del 60 cumpleaños de Dijkstra en 1990, el Departamento de Ciencias de la Computación organizó un seminario de dos días en su honor. Vinieron oradores de todos los Estados Unidos y Europa, y un grupo de informáticos contribuyó con artículos de investigación que fueron editados en un libro [12].
Dijkstra se retiró de la enseñanza activa en noviembre de 1999. Para conmemorar la ocasión y celebrar sus más de cuarenta años de contribuciones fundamentales a la ciencia de la computación, el Departamento de Ciencias de la Computación organizó un simposio, que tuvo lugar en su 70 cumpleaños en mayo de 2000. El simposio Asistieron una gran cantidad de destacados informáticos, así como estudiantes actuales y antiguos.
Al regresar a los Países Bajos en febrero de 2002, Dijkstra murió en Nuenen el 6 de agosto de 2002.
Aforismos y epigramas de Dijkstra
Dijkstra fue famoso por su ingenio y elocuencia, como en su comentario:
"La pregunta sobre si las computadoras pueden pensar es como preguntar de si los submarinos pueden nadar"
O su consejo a un investigador prometedor, que preguntó cómo seleccionar un tema para la investigación:
"Haz solo lo que solo tú puedes hacer"
Y su comentario en su discurso de aceptación del Premio Turing:
"En su calidad de herramienta, las computadoras no serán más que una onda en la superficie de nuestra cultura. En su calidad de desafío intelectual, no tienen precedentes en la historia cultural de la humanidad".
A continuación se recopilan algunos más de los otros epigramas memorables de Dijkstra.
"Las herramientas que utilizamos tienen una influencia profunda y tortuosa en nuestros hábitos de pensamiento y, por lo tanto, en nuestras habilidades de pensamiento".
"La capacidad intelectual es, con mucho, nuestro recurso más escaso".
"Las pruebas del programa pueden, en el mejor de los casos, mostrar la presencia de errores, pero nunca su ausencia".
"El programador competente es plenamente consciente del tamaño estrictamente limitado de su propio cráneo; por lo tanto, aborda la tarea de programación con total humildad y, entre otras cosas, evita trucos ingeniosos como la peste".
"El llamado lenguaje natural es maravilloso para los fines para los que fue creado, como ser grosero, contar chistes, engañar o hacer el amor (y los teóricos de la crítica literaria incluso pueden estar libres de contenido), pero es irremediablemente inadecuado cuando tenemos que lidiar inequívocamente con situaciones de gran complejidad, situaciones que surgen inevitablemente en actividades tales como legislación, arbitraje, matemáticas o programación." (prólogo de Métodos formales de enseñanza y aprendizaje, editado por C. N. Dean y M. G. Hinchey, Academic Press, 1996)
"La informática no va de computadoras de la misma forma que la astronomía no va de telescopios".
"Ser abstracto es algo profundamente diferente de ser impreciso".
"Nada es tan caro como cometer errores".
"En la práctica de la informática, donde tenemos tanta libertad para hacer un lío, la elegancia matemática no es un lujo prescindible, sino una cuestión de vida o muerte".
"Si dentro de 10 años, cuando estás haciendo algo rápido y sucio, de repente te imaginas que estoy mirando por encima de tus hombros y te dices a ti mismo, a Dijkstra no le hubiera gustado esto, bueno, eso sería suficiente inmortalidad para mí".
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.