Edsger W. Dijkstra


De Wikipedia, la enciclopedia libre
  (Redirigido desde EW Dijkstra )
Saltar a navegación Saltar a búsqueda

Edsger Dijkstra Wybe ( / d k s t r ə / DIQUE -strə ; holandesa:  [ɛtsxər ʋibə dɛikstra] ( escuchar )Sobre este sonido ; 11 mayo 1930 a 6 agosto 2002) era un holandés Informático , programador , ingeniero de software , científico sistemas , ensayista científico , [9] [10] y pionero en ciencias de la computación . [11] Un físico teórico de profesión, trabajó como programadoren el Mathematisch Centrum (Amsterdam) de 1952 a 1962. Profesor universitario durante gran parte de su vida, Dijkstra ocupó la Cátedra Centenario de Schlumberger en Ciencias de la Computación en la Universidad de Texas en Austin desde 1984 hasta su jubilación en 1999. Fue profesor de matemáticas en la Universidad Tecnológica de Eindhoven (1962-1984) y becario de investigación en Burroughs Corporation (1973-1984). En 1972, se convirtió en la primera persona que no era ni estadounidense ni británica en ganar el premio Turing .

Una de las figuras más influyentes de la generación fundadora de la ciencia de la computación, [2] [3] [5] [6] [12] [13] Dijkstra ayudó a dar forma a la nueva disciplina como ingeniero y teórico . [14] [15] Sus contribuciones fundamentales cubren diversas áreas de la ciencia de la computación, incluida la construcción de compiladores , sistemas operativos , sistemas distribuidos , programación secuencial y concurrente, paradigma y metodología de programación, investigación de lenguajes de programación., diseño de programas, desarrollo de programas, verificación de programas, principios de ingeniería de software, algoritmos gráficos y fundamentos filosóficos de la programación de computadoras y las ciencias de la computación. Muchos de sus trabajos son fuente de nuevas áreas de investigación. Varios conceptos y problemas que ahora son estándar en la informática fueron identificados por primera vez por Dijkstra o llevan nombres acuñados por él. [16] [17]

Hasta mediados de la década de 1960, la programación informática se consideraba más un arte (o un oficio) que una disciplina científica. En palabras de Harlan Mills (1986), "la programación [antes de la década de 1970] se consideraba una actividad privada de resolución de acertijos de escribir instrucciones informáticas para que funcionaran como un programa". A fines de la década de 1960, la programación de computadoras estaba en un estado de crisis . Dijkstra formaba parte de un pequeño grupo de académicos y programadores industriales que defendían un nuevo estilo de programación para mejorar la calidad de los programas . Dijkstra, que tenía experiencia en matemáticas y física, fue una de las fuerzas impulsoras detrás de la aceptación de la programación de computadoras como disciplina científica. [18] [19] Él acuñó la frase "programación estructurada "y durante la década de 1970 esto se convirtió en la nueva ortodoxia de programación. [20] [21] [22] Como creador del movimiento de programación estructurada (el primer movimiento notable en la historia de la programación de computadoras), sus ideas sobre la metodología de programación ayudaron sienta las bases para el nacimiento y desarrollo de la disciplina profesional de la ingeniería de software , permitiendo a los programadores organizar y gestionar proyectos de software cada vez más complejos. [23] [24] Como Bertrand Meyer(2009) señaló: "La revolución en las visiones de la programación iniciada por la iconoclasia de Dijkstra llevó a un movimiento conocido como programación estructurada, que defendía un enfoque sistemático y racional de la construcción de programas. La programación estructurada es la base de todo lo que se ha hecho desde entonces en programación metodología , incluida la programación orientada a objetos ". [25]

El estudio académico de la computación concurrente se inició en la década de 1960, y se le atribuye a Dijkstra (1965) ser el primer artículo en este campo, identificando y resolviendo el problema de la exclusión mutua . [5] [26] También fue uno de los primeros pioneros de la investigación sobre los principios de la computación distribuida . Su trabajo fundamental en concurrencia , semáforos , exclusión mutua, punto muerto (abrazo mortal), búsqueda de caminos más cortos en gráficos , tolerancia a fallas , autoestabilización, entre muchas otras contribuciones, comprende muchos de los pilares sobre los que se construye el campo de la computación distribuida. Poco antes de su muerte en 2002, recibió el premio ACM PODC Influential-Paper Award en computación distribuida por su trabajo en la autoestabilización de la computación de programas. Este premio anual pasó a llamarse Premio Dijkstra ( Premio Edsger W. Dijkstra en Computación Distribuida) al año siguiente. [27] Como premio, patrocinado conjuntamente por el Simposio de la Asociación de Maquinaria de Computación (ACM) sobre Principios de Computación Distribuida (PODC) y el Simposio Internacional de Computación Distribuida de la Asociación Europea de Informática Teórica (EATCS) (DISC), reconoce que "Ningún otro individuo ha tenido una mayor influencia en la investigación de los principios de la computación distribuida".

Biografía

Primeros años

Edsger W. Dijkstra nació en Rotterdam . Su padre era un químico que fue presidente de la Sociedad Química Holandesa ; enseñó química en una escuela secundaria y más tarde fue su superintendente. Su madre era matemática, pero nunca tuvo un trabajo formal. [28] [29]

Dijkstra había considerado una carrera en derecho y esperaba representar a los Países Bajos en las Naciones Unidas . Sin embargo, después de graduarse de la escuela en 1948, por sugerencia de sus padres, estudió matemáticas y física y luego física teórica en la Universidad de Leiden . [14]

A principios de la década de 1950, las computadoras electrónicas eran una novedad. Dijkstra tropezó con su carrera por accidente y, a través de su supervisor, el profesor A. Haantjes, conoció a Adriaan van Wijngaarden , director del Departamento de Computación del Centro Matemático de Ámsterdam , quien le ofreció un trabajo a Dijkstra; se convirtió oficialmente en el primer "programador" de los Países Bajos en marzo de 1952. [14]

Durante algún tiempo, Dijkstra mantuvo su compromiso con la física y trabajó en Leiden tres días a la semana. Sin embargo, con la creciente exposición a la informática, su enfoque comenzó a cambiar. Como recordó: [30]

Después de haber programado durante unos tres años, tuve una discusión con A. van Wijngaarden , que entonces era mi jefe en el Centro Matemático de Amsterdam , una discusión por la que le estaré agradecido mientras viva. El punto era que se suponía que debía estudiar física teórica en la Universidad de Leiden simultáneamente, y como encontraba las dos actividades cada vez más difíciles de combinar, tuve que tomar una decisión, o dejar de programar y convertirme en un verdadero y respetable teórico. físico , o llevar mi estudio de física a una finalización formal solamente, con un mínimo de esfuerzo, y llegar a ser ....., ¿sí qué? ¿Un programador ? ¿Pero era esa una profesión respetable? Porque después de todo, ¿qué era programar? ¿Dónde estaba el sólido cuerpo de conocimientos que podría respaldarlo como una disciplina intelectualmente respetable? Recuerdo muy vívidamente cómo envidiaba a mis colegas de hardware, quienes, cuando se les preguntó acerca de su competencia profesional, al menos pudieron señalar que sabían todo sobre válvulas de vacío, amplificadores y demás, mientras que yo sentía que, al enfrentarme a esa pregunta, yo se quedaría con las manos vacías. Lleno de recelos, llamé a la puerta del despacho de Van Wijngaarden y le pregunté si podía "hablar con él un momento"; cuando salí de su oficina varias horas después, era otra persona. Porque después de haber escuchado mis problemas con paciencia, estuvo de acuerdo en que hasta ese momento no había mucha disciplina de programación, pero luego pasó a explicar en voz baja que las computadoras automáticas llegaron para quedarse.que estábamos al principio y ¿no podría ser yo una de las personas llamadas a hacer de la programación una disciplina respetable en los próximos años? Este fue un punto de inflexión en mi vida y completé formalmente mis estudios de física lo más rápido que pude.

-  Edsger Dijkstra, The Humble Programmer (EWD340), Comunicaciones del ACM

Cuando Dijkstra se casó con Maria (Ria) C. Debets en 1957, se le exigió como parte de los ritos matrimoniales que declarara su profesión. Afirmó que era programador, lo que era inaceptable para las autoridades, ya que no existía esa profesión en los Países Bajos. [30] [31]

En 1959, recibió su doctorado de la Universidad de Amsterdam por una tesis titulada 'Comunicación con una computadora automática', dedicada a una descripción del lenguaje ensamblador diseñado para la primera computadora comercial desarrollada en los Países Bajos, la Electrologica X1 . Su director de tesis fue Van Wijngaarden. [dieciséis]

Mathematisch Centrum, Ámsterdam

Desde 1952 hasta 1962, Dijkstra trabajó en el Mathematisch Centrum en Amsterdam, [16] donde trabajó en estrecha colaboración con Bram Jan Loopstra y Carel S. Scholten , que habían sido contratados para construir una computadora. Su modo de interacción era disciplinado: primero decidirían sobre la interfaz entre el hardware y el software, escribiendo un manual de programación. Entonces, los diseñadores de hardware tendrían que ser fieles a su parte del contrato, mientras que Dijkstra, el programador, escribiría software para la máquina inexistente. Dos de las lecciones que aprendió de esta experiencia fueron la importancia de una documentación clara y que la depuración del programa se puede evitar en gran medida mediante un diseño cuidadoso. [14]Dijkstra formuló y resolvió el problema del camino más corto para una demostración en la inauguración oficial de la computadora ARMAC en 1956. Debido a la ausencia de revistas dedicadas a la computación automática, no publicó el resultado hasta 1959.

En el Centro Matemático, Dijkstra y su colega Jaap Zonneveld  [ nl ] desarrollaron el primer compilador para el lenguaje de programación ALGOL 60 en agosto de 1960, más de un año antes de que otro grupo produjera un compilador. [14] Tuvo una profunda influencia en su pensamiento posterior sobre la programación como actividad científica.

Universidad Tecnológica de Eindhoven

La Universidad Tecnológica de Eindhoven , ubicada en Eindhoven en el sur de los Países Bajos, donde Dijkstra fue profesor de matemáticas desde 1962 hasta 1984.

En 1962, Dijkstra se trasladó a Eindhoven , y más tarde a Nuenen , en el sur de los Países Bajos, donde se convirtió en profesor en el Departamento de Matemáticas de la Universidad Tecnológica de Eindhoven . [16] La universidad no tenía un departamento de ciencias de la computación separado y la cultura del departamento de matemáticas no le convenía particularmente. Dijkstra intentó formar un grupo de científicos informáticos que pudieran colaborar en la resolución de problemas. Este fue un modelo inusual de investigación para el Departamento de Matemáticas. [14] A finales de la década de 1960, construyó el sistema operativo THE (llamado así por la universidad, entonces conocida como Technische Hogeschool Eindhoven), que ha influido en los diseños de sistemas operativos posteriores mediante el uso de memoria virtual paginada basada en software. [32]

Corporación Burroughs

Dijkstra se unió a Burroughs Corporation , una empresa conocida entonces por producir computadoras basadas en una arquitectura de hardware innovadora, como su investigadoren agosto de 1973. Sus funciones consistían en visitar algunos de los centros de investigación de la firma unas cuantas veces al año y llevar a cabo su propia investigación, que hizo en la instalación de investigación más pequeña de Burroughs, a saber, su estudio en el segundo piso de su casa en Nuenen. . De hecho, Dijkstra era el único becario de investigación de Burroughs y trabajaba para él desde casa, viajando ocasionalmente a sus sucursales en los Estados Unidos. Como resultado, redujo su cita en la universidad a un día a la semana. Ese día, martes, pronto se conoció como el día del famoso 'Tuesday Afternoon Club', un seminario durante el cual discutió con sus colegas artículos científicos, mirando todos los aspectos: notación, organización, presentación, lenguaje, contenido, etc. En breve después de mudarse en 1984 a la Universidad de Texas en Austin(EE. UU.), Surgió una nueva 'sucursal' del Tuesday Afternoon Club en Austin, Texas . [dieciséis]

Los años de Burroughs lo vieron en su momento más prolífico en la producción de artículos de investigación. Escribió cerca de 500 documentos de la serie EWD (descritos a continuación), la mayoría de ellos informes técnicos, para circulación privada dentro de un grupo selecto. [14]

La Universidad de Texas en Austin

La Universidad de Texas en Austin , donde Dijkstra ocupó la Cátedra Centenario de Ciencias de la Computación de Schlumberger desde 1984 hasta 1999.

Dijkstra aceptó la Cátedra Centenario de Schlumberger en el Departamento de Ciencias de la Computación de la Universidad de Texas en Austin en 1984.

Últimos años

Dijkstra trabajó en Austin hasta su jubilación en noviembre de 1999. Para marcar la ocasión y celebrar sus más de cuarenta años de contribuciones fundamentales a las ciencias 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. [14]

Dijkstra y su esposa regresaron de Austin a su casa original en Nuenen (Países Bajos) donde descubrió que solo le quedaban meses de vida. Dijo que quería retirarse en Austin, Texas , pero morir en Holanda. Dijkstra murió el 6 de agosto de 2002 después de una larga lucha contra el cáncer. [33] A él y su esposa Maria (Ria) Debets les sobrevivieron sus tres hijos: Marcus, Femke y el científico informático Rutger M. Dijkstra.

Contribuciones pioneras e impacto en la ciencia de la computación

Aunque era físico teórico de formación, Dijkstra se convirtió en una de las figuras más influyentes de la generación fundadora de la ciencia de la computación. [2] [3] [5] [6] [7] [8] [12] [13] Como pionero en muchas áreas de investigación de la ciencia de la computación , ayudó a dar forma a la nueva disciplina tanto desde una perspectiva de ingeniería como académica.. Muchos de sus trabajos son fuente de nuevas áreas de investigación. Muchos conceptos que ahora son estándar en la informática fueron identificados por primera vez por Dijkstra o llevan nombres acuñados por él. También fue el primero en formular y resolver varios problemas importantes. En 1994 se realizó una encuesta de más de mil profesores de informática para obtener una lista de los 38 artículos académicos más influyentes en el campo, y Dijkstra es el autor de cinco artículos. [12] [34] [13] A la edad de 42 años, se convirtió en el primer ganador no estadounidense, no británico y europeo continental del Premio Turing .

Durante sus más de cuarenta años como científico de la computación, que incluyó posiciones tanto en la academia como en la industria, Dijkstra hizo numerosas contribuciones fundamentales en muchas áreas de la ciencia de la computación , incluida la construcción de compiladores , sistemas operativos , computación concurrente ( programación concurrente ), computación distribuida , programación. paradigma y la metodología , la programación de la investigación del lenguaje , el diseño del programa , el desarrollo de programas , la verificación de programas , principios de ingeniería de software , diseño de algoritmosy fundamentos filosóficos de la programación informática y la informática . Además, Dijkstra estaba muy interesado en la enseñanza de la informática y en las relaciones entre la informática académica y la industria del software .

Sus principales contribuciones pioneras (incluidas ideas, inventos e innovaciones) incluyen:

  • Conceptos, métodos, principios y teorías : compilador Dijkstra – Zonneveld ALGOL 60 (primer compilador ALGOL 60 completo en funcionamiento), pila de llamadas , concurrencia , programación concurrente , procesos secuenciales cooperantes , sección crítica , abrazo mortal ( punto muerto ), problema de los filósofos de comedor , nacional holandés problema de bandera , sistemas tolerantes a fallas , programación sin goto , lenguaje de comando protegido ( comandos protegidos ), estructura en capas enarquitectura de software , niveles de abstracción , programación multiproceso , exclusión mutua ( mutex o bloqueo ), problema productor-consumidor ( problema de búfer limitado ), familias de programas , semántica del transformador predicado , sincronización de procesos , sistemas distribuidos autoestabilizantes ( autoestabilización ), semáforo , separación de preocupaciones , problema del barbero dormido , análisis estructurado , programación estructurada, EL sistema de multiprogramación , no determinismo ilimitado , cálculo de condiciones previas más débil
  • Algoritmos : el algoritmo de Dijkstra , algoritmo DJP , algoritmo de Dijkstra-Scholten , el algoritmo de Dekker (generalización), el algoritmo de banquero , smoothsort , algoritmo yardas de maniobra , de tres colores algoritmo de marcado , algoritmos concurrentes , algoritmos distribuidos , de prevención de algoritmos de interbloqueo , algoritmos de exclusión mutua , auto -algoritmos estabilizadores

Trabajo algorítmico

Algoritmo de Dijkstra. Selecciona el vértice no visitado con la distancia más baja, calcula la distancia que lo atraviesa hasta cada vecino no visitado y actualiza la distancia del vecino si es menor. Marque como visitado (puesto en rojo) cuando termine con los vecinos.

El trabajo algorítmico de Dijkstra (especialmente algoritmos de gráficos , algoritmos concurrentes y algoritmos distribuidos ) juega un papel importante en muchas áreas de la ciencia de la computación. De acuerdo con Leslie Lamport (2002), Dijkstra "inició el campo de los algoritmos concurrentes y distribuidos con su artículo del CACM de 1965" Solución de un problema en el control de programación concurrente ", en el que primero planteó y resolvió el problema de exclusión mutua". Como explica Lamport, "ese artículo es probablemente la razón por la que existe el PODC (...). Sigue siendo hasta el día de hoy el artículo más influyente en el campo. Que no ganó un premio PODC Influential Paper Awardrefleja una separación artificial entre algoritmos concurrentes y distribuidos, una separación que nunca ha existido en el trabajo de Dijkstra ". [5]

En 1959, Dijkstra publicó en un artículo de 3 páginas "Una nota sobre dos problemas relacionados con los gráficos" el algoritmo para encontrar el camino más corto en un gráfico entre dos nodos dados, ahora llamado algoritmo de Dijkstra . Su impacto durante los próximos 40 años se resume en el artículo de Mikkel Thorup , 'Rutas más cortas no direccionadas de una sola fuente con pesos enteros positivos en tiempo lineal' (1999): "Desde 1959, todos los desarrollos teóricos en SSSP [Rutas más cortas de una sola fuente] para gráficos generales dirigidos y no dirigidos se han basado en el algoritmo de Dijkstra ". El algoritmo de Dijkstra se utiliza en SPF, Shortest Path First , que se utiliza en los protocolos de enrutamiento OSPF e IS-IS. Muchos autores han propuesto varias modificaciones al algoritmo de Dijkstra utilizando heurística para reducir el tiempo de ejecución de la búsqueda de ruta más corta . Uno de los algoritmos heurísticos más utilizados es el algoritmo de búsqueda A * (descrito por primera vez por Peter Hart , Nils Nilsson y Bertram Raphael del Stanford Research Institute en 1968), [35] el objetivo principal es reducir el tiempo de ejecución reduciendo el espacio de búsqueda. . Dijkstra pensó en el problema de la ruta más corta cuando trabajaba en el Mathematical Center en Amsterdam en 1956 como programador para demostrar las capacidades de un nuevocomputadora llamada ARMAC. Su objetivo era elegir tanto un problema como una respuesta (que sería producida por una computadora) que las personas no informáticas pudieran entender. Diseñó el algoritmo de ruta más corta en aproximadamente 20 minutos sin la ayuda de papel y lápiz y luego lo implementó para ARMAC para un mapa de transporte ligeramente simplificado de 64 ciudades en los Países Bajos (de modo que 6 bits serían suficientes para representar la ciudad en el algoritmo). [29] Como recordó, en una entrevista publicada en 2001: [36]

¿Cuál es el camino más corto para viajar de Rotterdam a Groningen , en general: de una ciudad determinada a una ciudad determinada? Es el algoritmo para el camino más corto., que diseñé en unos veinte minutos. Una mañana estaba de compras en Ámsterdam con mi joven prometida y, cansado, nos sentamos en la terraza del café a tomar una taza de café y estaba pensando si podía hacer esto, y luego diseñé el algoritmo para el camino más corto. . Como dije, fue un invento de veinte minutos. De hecho, se publicó en el 59, con tres años de retraso. La publicación todavía es legible, de hecho, es bastante agradable. Una de las razones por las que es tan bonito fue que lo diseñé sin lápiz y papel. Más tarde supe que una de las ventajas de diseñar sin lápiz y papel es que uno está casi obligado a evitar todas las complejidades evitables. Con el tiempo, ese algoritmo se convirtió, para mi gran asombro, en una de las piedras angulares de mi fama.

-  Edsger Dijkstra, en una entrevista con Philip L. Frana, Comunicaciones del ACM 53 (8), 2001.

Un año después, se encontró con otro problema de los ingenieros de hardware que trabajaban en la próxima computadora del instituto: minimizar la cantidad de cable necesario para conectar los pines en el panel posterior de la máquina. Como solución, redescubrió el algoritmo conocido como algoritmo de árbol de expansión mínimo de Prim . El algoritmo de Prim fue desarrollado originalmente en 1930 por el matemático checo Vojtěch Jarník . [37] y posteriormente redescubierto de forma independiente y reeditado por Robert C. Prim en 1957, [38] y Dijkstra en 1959. [39] Por lo tanto, a veces también se le llama algoritmo DJP . [40]

En 1961, Dijkstra describió por primera vez el algoritmo del patio de maniobras , un método para analizar expresiones matemáticas especificadas en notación infija , en el informe Mathematisch Centrum . [41] Se puede utilizar para producir resultados en notación polaca inversa (RPN) o como un árbol de sintaxis abstracta (AST). El algoritmo se denominó algoritmo del patio de maniobras porque su funcionamiento se asemeja al de un patio de maniobras de un ferrocarril . El algoritmo del campo de maniobras se usa comúnmente para implementar analizadores de precedencia de operadores .

En 1962 o 1963, Dijkstra propuso el mecanismo de semáforo para el algoritmo de exclusión mutua para n procesos (una generalización del algoritmo de Dekker ), que probablemente fue el primer algoritmo concurrente publicado y que introdujo una nueva área de investigación algorítmica. También identificó el problema del interbloqueo y propuso el algoritmo del banquero que evita el interbloqueo .

En 1974, Dijkstra presentó tres algoritmos de autoestabilización para la exclusión mutua en un anillo. Este trabajo se considera el primero en introducir y demostrar el concepto de autoestabilización. [42]

A mediados de la década de 1970, Dijkstra (junto con otros autores) introdujo dos abstracciones útiles (mutador y recolector) al estudio de la recolección de basura . El mutador abstrae el proceso que realiza el cálculo, incluida la asignación de una nueva celda de almacenamiento. El recolector es el proceso que recupera automáticamente la basura. Además, este documento proporciona una formalización del marcado tricolor que es básico para la recolección de basura incremental. [43] [44]

A principios de la década de 1980, Dijkstra y Carel S. Scholten propusieron el algoritmo Dijkstra-Scholten para detectar terminaciones en sistemas distribuidos .

En 1981, Dijkstra desarrolló smoothsort , un algoritmo de clasificación basado en comparaciones y una variación de heapsort .

Construcción de compiladores e investigación de lenguajes de programación

ALGOL 60 fue creado como resultado de la conferencia ALGOL de enero de 1960 en París. En agosto de 1960, Dijkstra y su colega Jaap Zonneveld pusieron en funcionamiento el primer compilador completo de ALGOL 60 (para la computadora Electrologica X1 ) del mundo. El compilador Dijkstra – Zonneveld es anterior al segundo compilador ALGOL 60 (de otro grupo) en más de un año. [14]

Dijkstra era conocido por ser un fanático del lenguaje de programación ALGOL y trabajó en el equipo que implementó el primer compilador para ALGOL 60 , en el que estuvo muy involucrado en el desarrollo, la realización y la popularización. Como comenta Peter Naur en el artículo 'El lado europeo de la última fase del desarrollo de ALGOL 60', en las Actas de la Primera Conferencia ACM SIGPLAN sobre Historia de los Lenguajes de Programación , enero de 1978, Dijkstra participó en el período 1958– 1959 en una serie de reuniones que culminaron con la publicación del informe que define el lenguaje ALGOL 60. El nombre de Dijkstra no aparece en la lista de 13 autores del informe final, pero era miembro oficial de laFederación Internacional para el Procesamiento de la Información (IFIP) IFIP Working Group 2.1 sobre Lenguajes y Cálculos Algorítmicos, [45] que especifica, apoya y mantiene ALGOL 60 y ALGOL 68 . [46] Finalmente abandonó el comité, aparentemente porque no estaba de acuerdo con las opiniones de la mayoría. Aún así, mientras estaba en el Mathematisch Centrum (Amsterdam), escribió junto con Jaap Zonneveld el primer compilador de ALGOL 60 . En agosto de 1960, él y Zonneveld pusieron en funcionamiento el primer compilador completo de ALGOL 60 (para la computadora Electrologica X1 ), más de un año antes de que otro grupo produjera un compilador.[14] Dijkstra y Zonneveld, que colaboraron en el compilador, acordaron no afeitarse hasta que se completara el proyecto. Zonneveld se afeitó poco después, pero Dijkstra mantuvo su barba por el resto de su vida. [47]

ALGOL fue el resultado de una colaboración de los comités estadounidenses y europeos. ALGOL 60 (abreviatura de ALGOrithmic Language 1960) es un miembro de la familia ALGOL de lenguajes de programación de computadoras. Siguió a ALGOL 58 e inspiró muchos idiomas que le siguieron. Que dio lugar a muchos otros idiomas, incluyendo el BCPL , B , Pascal , Simula , y C . [48] Algol 60 era un lenguaje informático de diseño sofisticado y proporcionaba una gran cantidad de desafíos de implementación desconocidos hasta ahora . Como Bjarne Stroustrupseñala, "un problema con Algol60 era que nadie sabía cómo implementarlo". [49] Un nuevo desafío importante en la implementación de Algol 60 fue la asignación y gestión de datos en tiempo de ejecución. En 1960, Dijkstra y Zonneveld mostraron cómo se podían ejecutar procedimientos recursivos utilizando una pila de registros de activación en tiempo de ejecución , y cómo acceder de manera eficiente a los identificadores de ámbitos de inclusión estática utilizando la llamada pantalla . [50] El compilador ALGOL 60 fue uno de los primeros en admitir la recursividad [51] empleando un método novedoso para hacerlo. Libro corto de Dijkstra Primer of Algol 60 Programming, publicado originalmente en 1962, fue la referencia estándar para el idioma durante varios años.

Papel de la metodología de programación y el nacimiento del movimiento de programación estructurada

En 1965, Dijkstra escribió sus famosas Notas sobre programación estructurada y declaró la programación como una disciplina en contraste con un oficio . También en 1965 Hoare publicó un importante artículo sobre la estructuración de datos. Estas ideas tuvieron una profunda influencia en el nuevo lenguaje de programación , en particular Pascal . Los lenguajes son los vehículos en los que se iban a expresar estas ideas. La programación estructurada pasó a ser compatible con un lenguaje de programación estructurado .

-  Niklaus Wirth , IEEE Annals of the History of Computing (2008) [3]

La revolución en las visiones de la programación iniciada por la iconoclasia de Dijkstra condujo a un movimiento conocido como programación estructurada, que defendía un enfoque sistemático y racional de la construcción de programas. La programación estructurada es la base de todo lo que se ha hecho desde entonces en la metodología de programación , incluida la programación orientada a objetos .

-  Bertrand Meyer , Toque de clase: aprender a programar bien con objetos y contratos (2009) [25]

La programación de computadoras en las décadas de 1950 a 1960 no fue reconocida como una disciplina académica y, a diferencia de las ciencias maduras, no había conceptos teóricos ni sistemas de codificación. La programación como actividad profesional era poco conocida en esos años. A finales de la década de 1960, la programación informática estaba en crisis. La crisis del software es un término utilizado en los primeros días de la informática para referirse a la dificultad de escribir programas informáticos útiles y eficientes en el tiempo requerido. La crisis del software se debió al rápido aumento de la potencia de las computadoras y a la complejidad de los problemas que se podían abordar. Con el aumento de la complejidad del software, muchos problemas de software surgieron porque los métodos existentes eran insuficientes. El término "crisis del software" fue acuñado por algunos asistentes a la primera de las Conferencias de Ingeniería de Software de la OTAN en 1968 en Garmisch , Alemania. [52] [53] [54] Su conferencia del premio ACM Turing de 1972 hace referencia a este mismo problema: "La principal causa de la crisis del software es que las máquinas se han vuelto varios órdenes de magnitud más poderosas. Para decirlo sin rodeos: como mientras no hubiera máquinas, la programación no fue un problema en absoluto; cuando teníamos algunas computadoras débiles, la programación se convirtió en un problema leve, y ahora tenemos computadoras gigantes, la programación se ha convertido en un problema igualmente gigantesco ". [30]

Si bien Dijkstra había programado extensamente en código máquina en la década de 1950, llegó a la conclusión de que en los lenguajes de alto nivel el uso frecuente de la declaración GOTO solía ser sintomático de una estructura deficiente. En 1968 escribió un artículo privado "Un caso contra la declaración GO TO", [55] que luego se publicó como una carta en el CACM. [56] El editor Niklaus Wirth dio a esta carta el título " Ir a la declaración considerada perjudicial ", que introdujo la frase " considerada perjudicial " en la informática.

Dijkstra argumentó que la declaración de programación GOTO, que se encuentra en muchos lenguajes de programación de alto nivel, es una fuente importante de errores y, por lo tanto, debería eliminarse. Esta carta provocó un gran debate en la comunidad de programación. Algunos fueron a la longitud de equiparar la programación buena con la eliminación de GO TO . Dijkstra se negó a mencionar el debate, o incluso la declaración GO TO, en su artículo "Notas sobre programación estructurada". El debate se ha calmado hace mucho tiempo; Los lenguajes de programación brindan alternativas al GO TO, pocos programadores lo usan libremente y la mayoría nunca lo usa. [14]

La tesis de Dijkstra era que las desviaciones del flujo de control lineal eran más claras si se permitían solo en estructuras disciplinadas de nivel superior, como la declaración if-then-else y el bucle while . Esta metodología se desarrolló en el movimiento de programación estructurada , el título de su libro de 1972, en coautoría con Tony Hoare y Ole-Johan Dahl . Considerada por muchos como el primer movimiento significativo en la historia de la programación de computadoras, la programación estructurada se convirtió en la nueva ortodoxia de la programación durante la década de 1970. [57] [58] [59]

La programación estructurada se considera a menudo como "programación sin goto". Pero como señala Bertrand Meyer, "Como muestra el primer libro sobre el tema [ Programación estructurada de Dijkstra, Dahl y Hoare], la programación estructurada es mucho más que estructuras de control y el goto . Su mensaje principal es que la programación debe ser considerada un disciplina científica basada en el rigor matemático ". [25] Como paradigma de programación , la programación estructurada, especialmente en las décadas de 1970 y 1980, influyó significativamente en el nacimiento de muchos lenguajes de programación modernos como Pascal , [2] [3] [60] C , Modula-2 yAda . [61] La versión Fortran 77 que incorpora los conceptos de programación estructurada, fue lanzada en 1978. El lenguaje C ++ era una versión considerablemente ampliada y mejorada del popular lenguaje de programación estructurado C (ver también: lista de lenguajes de programación basados ​​en C ). Dado que C ++ se desarrolló a partir de un lenguaje estructurado más tradicional , es un ' lenguaje híbrido ', en lugar de un lenguaje de programación orientado a objetos puro . [62]

En su artículo Programación estructurada: retrospectiva y perspectiva (1986), Harlan Mills escribe: " El artículo de Programación estructurada de 1969 de Edsger W. Dijkstra precipitó una década de intenso enfoque en las técnicas de programación que ha alterado fundamentalmente las expectativas y los logros humanos en el desarrollo de software.. Antes de esta década de intenso enfoque, la programación se consideraba una actividad privada de resolución de acertijos que consistía en escribir instrucciones informáticas para que funcionaran como un programa. Después de esta década, la programación podría considerarse como una actividad pública basada en las matemáticas de reestructuración de especificaciones en programas. Antes, el desafío era conseguir que los programas se ejecutaran y luego depurarlos más para hacer las cosas correctas. Después, se puede esperar que los programas se ejecuten y hagan las cosas correctas con poca o ninguna depuración. Antes, era de conocimiento común que ningún programa de tamaño considerable podía estar libre de errores. Después, muchos programas importantes se ejecutaron durante un año o más sin que se detectaran errores. Estas expectativas y logros no son universales debido a la inercia de las prácticas industriales.Pero están lo suficientemente bien establecidos como para anunciar un cambio fundamental en el desarrollo de software ".

El libro Concise Encyclopedia of Computer Science (2004), editado por Edwin D. Reilly, señala que "las principales contribuciones de la programación estructurada han sido dobles: la elevación de la técnica de programación a algo menos que un arte y más una ciencia, y la demostración de que los programas cuidadosamente estructurados pueden ser obras creativas de mérito literario suficiente para merecer ser leídas por humanos y no solo por computadora ". [63]

Investigación sobre diseño y desarrollo de programas en los albores de la ingeniería de software

Las ideas de Dijkstra sobre la metodología de programación (especialmente el movimiento de programación estructurada) ayudaron a sentar las bases para el nacimiento y desarrollo de la disciplina profesional de la ingeniería de software (en particular, el diseño y desarrollo de software), permitiendo a los programadores organizar y gestionar proyectos de software cada vez más complejos. [64] [65] A finales de la década de 1960, Dijkstra discutió el concepto de familias de programas. A mediados de la década de 1970, David Parnas y otros aclararon la idea y mostraron cómo aplicarla en los principios de la ingeniería de software.

El surgimiento del movimiento de programación estructurada condujo a muchos otros enfoques estructurados aplicados al diseño de software . Las técnicas de análisis estructurado y diseño estructurado son consecuencia de conceptos y técnicas de programación estructurada y de las primeras ideas sobre diseño modular. Los principios de modularidad fueron reforzados por los conceptos de acoplamiento (que se minimizará entre módulos) y cohesión (que se maximizará dentro de los módulos) de Larry Constantine , por las técnicas de ocultación de información de David Parnas y por tipos de datos abstractos . [66]Una serie de herramientas y métodos que emplean conceptos estructurados se han desarrollado, tales como diseño estructurado , programación estructurada de Jackson , Ross ' Structured Análisis y Diseño Técnica (TDAA), estructurado método de Yourdon , Análisis De Sistemas Estructurados y método Diseño (SSADM), y James Martin de la información ingeniería tecnológica . El campo de las métricas de software a menudo se considera una influencia directa del movimiento de programación estructurada en la ingeniería de software en la década de 1970.

La separación de preocupaciones (SoC), uno de los principios básicos en la ingeniería de software , es un principio de diseño para separar un programa de computadora en distintas secciones, de modo que cada sección aborde una preocupación separada . El término separación de preocupaciones fue acuñado por Dijkstra en su artículo de 1974 "Sobre el papel del pensamiento científico". [67]

Investigación del sistema operativo

En la década de 1960, Dijkstra y sus colegas de Eindhoven diseñaron e implementaron el sistema operativo THE (que significa ' Technische Hogeschool Eindhoven ') , que estaba organizado en capas de abstracción claramente identificadas . [68] Su artículo de 1968 sobre este tema sentó las bases para los diseños posteriores de los sistemas operativos. David Alan Grier de la IEEE Computer Societyescribe: "Por lo general, la idea de construir sistemas informáticos en capas se remonta a un artículo de 1967 que el científico informático holandés Edsger Dijkstra dio en una conferencia conjunta de IEEE Computer Society / ACM. Antes de este artículo, los ingenieros habían luchado con el problema de cómo para organizar el software. Si observa los primeros ejemplos de programas, y puede encontrar muchos en la biblioteca electrónica de la Computer Society, encontrará que la mayor parte del código de esa época es complicado, difícil de leer, difícil de modificar y desafiante de En su artículo de 1967, Dijkstra describió cómo se podía construir el software en capas y dio un ejemplo de un sistema operativo simple que usaba cinco capas. Admitió que este sistema podría no ser una prueba realista de sus ideas, pero argumentó que " ¡Cuanto mayor sea el proyecto, más esencial será la estructuración! "La idea de utilizar capas para controlar la complejidad se ha convertido en un pilar de la arquitectura de software. Lo vemos de muchas formas y lo aplicamos a muchos problemas. Lo vemos en la jerarquía de clases en la programación orientada a objetos y en la estructura deArquitectura orientada a servicios (SOA). SOA es una aplicación relativamente reciente de capas en informática. Se articuló en 2007 como un medio para controlar la complejidad de los sistemas comerciales, especialmente los sistemas distribuidos que hacen un uso sustancial de Internet. Al igual que el plan de Dijkstra para el desarrollo de sistemas, su sistema de capas se llama SOA Solution Stack o S3. Las nueve capas del S3 son: 1) sistemas operativos, 2) componentes de servicio, 3) servicios, 4) procesos comerciales, 5) acciones del consumidor, 6) integración del sistema, 7) control y garantía de calidad, 8) arquitectura de la información y 9) gobernanza y políticas del sistema ". [69]

Dijkstra organizó el diseño del sistema en capas para reducir la complejidad general del software. Aunque el término 'arquitectura' aún no se había utilizado para describir el diseño de software , ciertamente se consideró el primer vistazo a la arquitectura de software . [70] Introdujo una serie de principios de diseño que se han convertido en parte del vocabulario de trabajo de todo programador profesional: niveles de abstracción, programación en capas, el semáforo y procesos secuenciales cooperativos.. Su artículo original sobre el sistema operativo THE se reimprimió en la edición del 25 aniversario de Communications of the ACM, en enero de 1983. A modo de introducción, el Editor en Jefe dice: "Este proyecto inició una larga línea de investigación en sistemas multinivel arquitectura - una línea que continúa hasta el día de hoy porque la modularidad jerárquica es un enfoque poderoso para organizar grandes sistemas ". [14]

Computación concurrente (programación concurrente)

Si bien la ejecución concurrente de programas se había considerado durante años, la informática de la concurrencia comenzó con el artículo seminal de 1965 de Edsger Dijkstra que introdujo el problema de la exclusión mutua . (...) El segundo problema fundamental de programación concurrente a estudiar fue la sincronización productor-consumidor. Esta forma de sincronización se utilizó a nivel de hardware en las primeras computadoras, pero fue identificado por primera vez como un problema de concurrencia por Dijkstra en 1965, aunque no se publicó en esta formulación hasta 1968. (...) Después de los sistemas distribuidos , el siguiente gran problema paso en algoritmos concurrentes fue el estudio de la tolerancia a fallas. El primer examen científico de la tolerancia a fallas fue el artículo seminal de 1974 de Dijkstra sobre la autoestabilización . Sin embargo, como sucede a veces con trabajos que se adelantan a su tiempo, ese documento recibió poca atención y fue esencialmente olvidado durante una década. (...) Las décadas siguientes han visto un gran crecimiento del interés en la concurrencia, particularmente en los sistemas distribuidos. Mirando hacia atrás en los orígenes del campo, destaca el papel fundamental desempeñado por Edsger Dijkstra, a quien está dedicada esta historia.

-  Leslie Lamport , Turing Lecture: The Computer Science of Concurrency: The Early Years (junio de 2015) [6]
Un semáforo ( holandés : seinpaal ), el término utilizado en el artículo original de Dijkstra. [71] A principios de la década de 1960, Dijkstra propuso el primer mecanismo de sincronización para procesos concurrentes, el semáforo con sus dos operaciones, P y V.

En un artículo de una página de 1965, Dijkstra presentó el " problema de exclusión mutua " para n procesos y discutió una solución. Probablemente fue el primer algoritmo concurrente publicado . [6] [16] En este documento también se introdujo la noción, estándar ahora, de una " sección crítica ". Per Brinch Hansen , un pionero en el campo de la computación concurrente , considera que Cooperating Sequential Processes (1965) de Dijkstra es el primer artículo clásico en programación concurrente. Como señala Brinch Hansen, "Dijkstra sienta las bases conceptuales para la programación concurrente abstracta" con ese artículo. [72]

Un ejemplo simple de dos procesos que modifican una lista enlazada al mismo tiempo provocando un conflicto. El requisito de exclusión mutua fue identificado y resuelto por primera vez por Dijkstra en su artículo seminal de 1965 titulado Solución de un problema en el control de programación concurrente , y se le atribuye el crédito como el primer tema en el estudio de algoritmos concurrentes .

En 1968 Dijkstra publicó su artículo seminal ' Cooperando procesos secuenciales ', un ensayo de 70 páginas que originó el campo de la programación concurrente . En él discutió la noción de exclusión mutua ( mutex ) y los criterios que debe satisfacer una solución satisfactoria. También corrigió la perspectiva histórica que quedó fuera de su artículo de 1965 al incluir la primera solución correcta conocida al problema de la exclusión mutua , para dos procesos, debida a Theodorus Dekker . Posteriormente, Dijkstra generalizó la solución de Dekker en n procesos. [73] [74] Además, propuso el primer mecanismo de sincronizaciónpara procesos concurrentes, [75] el semáforo con sus dos operaciones, P y V. También identificó el ' problema del punto muerto ' (llamado allí 'el problema del abrazo mortal ') [76] y propuso un elegante ' algoritmo de banquero ' que previene el punto muerto . La detección y prevención de puntos muertos se convirtieron en problemas de investigación perennes en el campo de la programación concurrente.

Ilustración del problema de los filósofos gastronómicos

El problema de los filósofos de la cena es un problema de ejemplo que se utiliza a menudo en el diseño de algoritmos concurrentes para ilustrar problemas de sincronización y técnicas para resolverlos. Fue formulado originalmente en 1965 por Dijkstra como un ejercicio de examen para estudiantes, presentado en términos de computadoras que compiten por el acceso a periféricos de unidades de cinta . Poco después, Tony Hoare dio al problema su formulación actual. [77] El problema del peluquero dormido también se atribuye a Dijkstra.

Michel Raynal (2012) escribe: "Desde los primeros trabajos de EW Dijkstra (1965), quien introdujo el problema de la exclusión mutua, el concepto de proceso, el objeto semáforo, la noción de una precondición más débil y los comandos guardados (entre muchos otros contribuciones), la sincronización ya no es un catálogo de trucos, sino un dominio de la informática con sus propios conceptos, mecanismos y técnicas cuyos resultados se pueden aplicar en muchos dominios. Esto significa que la sincronización de procesos tiene que ser un tema importante de cualquier informática. plan de estudios." [78]

John W. McCormick y col. (2011) señala: "La noción de programa concurrente como un medio para escribir programas paralelos sin tener en cuenta el hardware subyacente fue introducida por primera vez por Edsger Dijkstra (1968). Moti Ben-Ari(1982) resumió elegantemente la idea de Dijkstra en tres frases: “Programación concurrente es el nombre que se le da a la notación de programación y a las técnicas para expresar el paralelismo potencial y resolver los problemas de sincronización y comunicación resultantes. La implementación del paralelismo es un tema en los sistemas informáticos (hardware y software) que es esencialmente independiente de la programación concurrente. La programación concurrente es importante porque proporciona un entorno abstracto en el que estudiar el paralelismo sin atascarse en los detalles de implementación '". [79]

Computación distribuida (programación distribuida)

Dijkstra fue uno de los pioneros de la investigación sobre los principios de la computación distribuida . [27] Los patrocinadores del Premio Dijkstra reconocen que "ningún otro individuo ha tenido una mayor influencia en la investigación de los principios de la computación distribuida". [27] Incluso se considera que algunos de sus artículos son los que establecieron el campo. El artículo de 1965 de Dijkstra, Solution of a Problem in Concurrent Programming Control, fue el primero en presentar la solución correcta al problema de exclusión mutua . Leslie Lamport escribe que este trabajo "es probablemente la razón por la que existe PODC " y que "inició el campo de los algoritmos concurrentes y distribuidos". [5]

En particular, su artículo "Sistemas de autoestabilización a pesar del control distribuido" (1974) inició el subcampo de la autoestabilización . También se considera como el primer examen científico de sistemas tolerantes a fallas . [6] El artículo de Dijkstra no se notó ampliamente hasta la charla invitada de Leslie Lamport en el Simposio ACM sobre Principios de Computación Distribuida ( PODC ) en 1983. En su informe sobre el trabajo de Dijkstra sobre sistemas distribuidos autoestabilizantes , Lamport lo considera como 'un hito en el trabajo sobre tolerancia a fallas 'y' un campo muy fértil para la investigación '. [80]

Especificación y verificación formales

Desde la década de 1970, el principal interés de Dijkstra fue la verificación formal . En 1976, Dijkstra publicó un libro seminal, A Discipline of Programming , que presentó su método de desarrollo sistemático de programas junto con sus pruebas de corrección. En su exposición usó su ' Lenguaje de comando cauteloso '. El lenguaje, con su dependencia del no determinismo, la semántica de precondición más débil adoptada y el método de desarrollo propuesto, ha tenido un impacto considerable en el campo hasta el día de hoy. El cálculo de refinamiento , propuesto originalmente por Ralph-Johan Back [81] y desarrollado por Carroll Morgan , [82]es una extensión del cálculo de condiciones previas más débil de Dijkstra , donde los enunciados del programa se modelan como transformadores de predicados . [83]

En 1984, para agregar más apoyo a este enfoque de la programación, publicó junto con Wim Feijen un libro de texto introductorio para estudiantes de primer año de ciencias de la computación. El libro, publicado por primera vez en holandés, se tituló Een methode van programmeren . La edición en inglés apareció en 1988 como A Method of Programming .

Sobre la naturaleza de la informática y la programación informática

Muchas de las opiniones de Dijkstra sobre la informática y la programación se han generalizado. Por ejemplo, a veces se le atribuye la frase de programación "dos o más, use un para" (una regla general para usar un bucle). [84]

Fue el primero en afirmar que la programación es tan intrínsecamente compleja que, para administrarla con éxito, los programadores deben aprovechar todos los trucos y abstracciones posibles.

Dijkstra fue uno de los oponentes más famosos de la visión de la ingeniería de la ciencia de la computación. Al igual que Peter Naur y Kristen Nygaard , a Dijkstra no le gustaba el término "informática". La informática , como señaló Dijkstra, merece un mejor nombre. Sugiere que se puede llamar "ciencia de la computación". En lugar de la computadora, o tecnología informática, Dijkstra quería enfatizar los mecanismos abstractos que utiliza la ciencia de la computación para dominar la complejidad. Al expresar la naturaleza abstracta de la ciencia de la computación , escribió:

Una confusión aún más antigua vino del hecho de que los que no estaban preparados incluían a los ingenieros electrónicos que se suponía que debían diseñar, construir y mantener las máquinas. En realidad, el trabajo estaba más allá de la tecnología electrónica de la época y, como resultado, la cuestión de cómo conseguir y mantener el equipo físico más o menos en condiciones de funcionamiento se convirtió en los primeros días en la principal preocupación. Como resultado, el tema se conoció prematuramente, principalmente en los EE. UU., Como ' ciencias de la computación ', que, en realidad, es como referirse a la cirugía como 'ciencia del cuchillo', y se implantó firmemente en la mente de las personas que la ciencia de la computaciónse trata de máquinas y sus equipos periféricos. Quod non [latín: "Lo que no es cierto"]. Ahora sabemos que la tecnología electrónica no tiene más que contribuir a la informática que el equipo físico. Ahora sabemos que la computadora programable es ni más ni menos que un dispositivo extremadamente útil para realizar cualquier mecanismo concebible sin cambiar un solo cable, y que el desafío central para la ciencia de la computación es, por lo tanto, conceptual, a saber, qué mecanismos (abstractos) podemos concebir sin perdernos en las complejidades de nuestra propia creación. [85]

En The Humble Programmer (1972), Dijkstra escribió: "No debemos olvidar que no es nuestro negocio [los científicos informáticos] hacer programas, es nuestro negocio diseñar clases de cálculos que muestren un comportamiento deseado".

Dijkstra también se opuso a la inclusión de la ingeniería de software bajo el paraguas de la informática académica. Escribió que, "Como la economía se conoce como" La ciencia miserable ", la ingeniería de software debería conocerse como" La disciplina condenada ", condenada al fracaso porque ni siquiera puede acercarse a su objetivo, ya que su objetivo es contradictorio". Y "la ingeniería de software ha aceptado como estatuto 'Cómo programar si no se puede'" [86].

Personalidad y estilo de trabajo

Dijkstra en la pizarra durante una conferencia en la ETH de Zúrich en 1994. Una vez comentó: " Una imagen puede valer mil palabras , una fórmula vale mil imágenes". [87]

La sencillez es una gran virtud pero requiere mucho trabajo para lograrla y educación para apreciarla. Y para empeorar las cosas: la complejidad se vende mejor. La industria de la computación no es la única que ha descubierto esa dolorosa verdad: también lo ha hecho el mundo académico. Si dices una conferencia que es clara como el cristal de principio a fin, tu audiencia se siente engañada y murmura al salir de la sala de conferencias "Eso fue bastante trivial, ¿no?"

-  EW Dijkstra, "Sobre la naturaleza de la ciencia de la computación" (EWD896), agosto de 1984

Difícilmente se puede culpar al MIT por no prestar atención a un científico informático desconocido en una pequeña ciudad de los Países Bajos.

-  Dijkstra solía describirse ingeniosamente a sí mismo en Nuenen a mediados de la década de 1960. [88] [18]

En el mundo de las ciencias de la computación, Dijkstra es bien conocido como un "personaje". En el prefacio de su libro A Discipline of Programming (1976) afirmó lo siguiente: "Por la ausencia de una bibliografía, no ofrezco explicación ni disculpa". De hecho, la mayoría de sus artículos y libros no tienen ninguna referencia. [16] Algunos investigadores deploraron este enfoque de las referencias. Pero Dijkstra eligió esta forma de trabajar para preservar su autosuficiencia.

Como profesor universitario durante gran parte de su vida, Dijkstra vio la enseñanza no solo como una actividad requerida, sino como un esfuerzo de investigación serio. [14] Su enfoque de la enseñanza no era convencional. [89] Su estilo de conferencias ha sido descrito como idiosincrásico. Al dar una conferencia, las largas pausas entre oraciones a menudo se han atribuido al hecho de que el inglés no es el primer idioma de Dijkstra. Sin embargo, las pausas también le sirvieron como una forma de pensar con rapidez y fue considerado un pensador rápido y profundo mientras participaba en el acto de dar una conferencia. Sus cursos para estudiantes en Austin tenían poco que ver con la informática, pero se ocupaban de la presentación de pruebas matemáticas. [16] Al comienzo de cada semestretomaría una foto de cada uno de los estudiantes, para poder memorizar sus nombres. Nunca siguió un libro de texto , con la posible excepción del suyo mientras estaba en preparación. Al dar una conferencia, escribía pruebas con tiza en una pizarra en lugar de usar láminas de aluminio. Invitó a los estudiantes a sugerir ideas, que luego exploró, o se negó a explorar porque violaban algunos de sus principios. Asignaba problemas de tarea desafiantes y estudiaba a fondo las soluciones de sus alumnos. Realizó sus exámenes finales oralmente, durante toda una semana. Cada estudiante fue examinado en la oficina o en el hogar de Dijkstra, y el examen duró varias horas. [14]

No es tarea de la Universidad ofrecer lo que la sociedad pide, sino dar lo que la sociedad necesita. [Las cosas que pide la sociedad generalmente se entienden, y no se necesita una Universidad para eso; la universidad tiene que ofrecer lo que nadie más puede ofrecer].

-  EW Dijkstra, "Respuestas a las preguntas de los estudiantes de Ingeniería de Software" (EWD1305), noviembre de 2000

Dijkstra también fue muy original en su forma de evaluar la capacidad de las personas para un trabajo. Cuando Vladimir Lifschitz llegó a Austin en 1990 para una entrevista de trabajo, Dijkstra le dio un acertijo. Vladimir lo resolvió y ha estado trabajando en Austin desde entonces. [dieciséis]

A pesar de haber inventado gran parte de la tecnología del software, evitó el uso de computadoras en su propio trabajo durante muchas décadas. Incluso después de sucumbir al estímulo de sus colegas de UT y adquirir una computadora Macintosh , la usó solo para correo electrónico y para navegar por la World Wide Web . [90] Dijkstra nunca escribió sus artículos usando una computadora. Prefirió confiar en su máquina de escribir y luego en su bolígrafo Montblanc . [16] El instrumento de escritura favorito de Dijkstra era la pluma estilográfica Montblanc Meisterstück . Probó repetidamente con otros bolígrafos, pero ninguno desplazó al Montblanc.

No tenía ningún uso para los procesadores de texto , creyendo que uno debería poder escribir una carta o un artículo sin borradores, reescritura o edición significativa. Lo resolvería todo en su cabeza antes de poner la pluma en el papel, y una vez mencionó que cuando era estudiante de física, resolvía mentalmente sus problemas de tarea mientras caminaba por las calles de Leiden . [14] La mayoría de las publicaciones de Dijkstra fueron escritas por él solo. Nunca tuvo secretaria y se ocupaba solo de toda su correspondencia. [16] Cuando sus colegas prepararon un Festschrift para su sexagésimo cumpleaños, publicado por Springer-Verlag, se tomó la molestia de agradecer a cada uno de los 61 colaboradores por separado, en una carta escrita a mano. [dieciséis]

A lo largo de la carrera de Dijkstra, su trabajo se caracterizó por la elegancia y la economía. [16] Escritor prolífico (especialmente como ensayista), Dijkstra fue autor de más de 1300 artículos, muchos escritos a mano con su guión preciso. Eran ensayos y parábolas; cuentos de hadas y advertencias; explicación integral y pretexto pedagógico. La mayoría trataban de matemáticas e informática; otros eran informes de viajes que son más reveladores sobre su autor que sobre las personas y lugares visitados. Tenía la costumbre de copiar cada artículo y distribuirlo entre un pequeño grupo de colegas que copiarían y enviarían los artículos a otro grupo limitado de científicos. [91] Su historia de amor con la sencillezllegó a una edad temprana y bajo la guía de su madre. Una vez dijo que le había preguntado a su madre si la trigonometría era un tema difícil. Ella respondió que debía aprender todas las fórmulas y que, además, si necesitaba más de cinco líneas para probar algo, estaba en el camino equivocado. [92]

Dijkstra era famoso por su ingenio, elocuencia, rudeza, brusquedad y, a menudo, crueldad con sus compañeros profesionales, y su manera de hablar, como en su comentario, "La cuestión de si las máquinas pueden pensar (...) es tan relevante como la cuestión de si Los submarinos pueden nadar ". [93] Su consejo para un investigador prometedor, que preguntó cómo seleccionar un tema para la investigación, fueron las sabias palabras: "Haz solo lo que solo tú puedes hacer". [14] Dijkstra también era conocido por su crítica vocal y su ausencia de habilidades sociales al interactuar con sus colegas. Como visionario abierto y crítico, se opuso firmemente a la enseñanza de BASIC . [94]

En muchos de sus ensayos más ingeniosos, Dijkstra describió una empresa ficticia de la que se desempeñó como presidente. La empresa se llamaba Mathematics, Inc., empresa que imaginó habiendo comercializado la producción de teoremas matemáticos de la misma forma que las empresas de software habían comercializado la producción de programas informáticos. Inventó una serie de actividades y desafíos de Mathematics Inc. y los documentó en varios artículos de la serie EWD. La compañía imaginaria había producido una prueba de la Hipótesis de Riemann, pero luego tuvo grandes dificultades para cobrar regalías a los matemáticos que habían probado los resultados asumiendo la Hipótesis de Riemann. La prueba en sí misma era un secreto comercial . [95]Muchas de las pruebas de la compañía se apresuraron a salir por la puerta y luego gran parte del esfuerzo de la compañía tuvo que dedicarse al mantenimiento . [96] Un esfuerzo más exitoso fue la Prueba estándar para el teorema de Pitágoras , que reemplazó las más de 100 pruebas existentes incompatibles. [97] Dijkstra describió Mathematics Inc. como "el negocio más emocionante y miserable jamás concebido". [95] EWD 443 (1974) describe que su empresa ficticia tiene más del 75 por ciento de la cuota de mercado mundial. [98] [99]

Manuscritos EWD

Dijkstra era bien conocido por su hábito de componer cuidadosamente manuscritos con su pluma estilográfica . Los manuscritos se llaman EWD, ya que Dijkstra los numeró con EWD , sus iniciales, como prefijo. Según el propio Dijkstra, los EWD comenzaron cuando se mudó del Centro Matemático de Ámsterdam a la Universidad Tecnológica de Eindhoven (entonces Technische Hogeschool Eindhoven). Después de ir a Eindhoven , Dijkstra experimentó un bloqueo de escritor.durante más de un año. Dijkstra distribuyó fotocopias de un nuevo EWD entre sus colegas. Muchos destinatarios fotocopiaron y enviaron sus copias, por lo que los EWD se difundieron por toda la comunidad informática internacional. Los temas fueron ciencias de la computación y matemáticas, e incluyeron informes de viaje, cartas y discursos. Estos breves artículos abarcan un período de 40 años. Casi todos los EWD que aparecieron después de 1972 fueron escritos a mano. Rara vez tienen más de 15 páginas y están numeradas consecutivamente. El último, el No. 1318, es del 14 de abril de 2002. Dentro de la informática se conocen como informes EWD, o simplemente EWD. Se han escaneado más de 1300 EWD, con un número creciente de transcripciones para facilitar la búsqueda, y están disponibles en línea en el archivo Dijkstra de la Universidad de Texas. [100]

Vida personal y muerte

Dijkstra llevó un estilo de vida modesto , hasta el punto de ser espartano. [16] La casa de él y de su esposa en Nuenen era simple, pequeña y sin pretensiones. No tenía televisión, videograbadora ni teléfono móvil, y no iba al cine. [16] Tocaba el piano y, mientras estaba en Austin , le gustaba ir a conciertos . Un oyente entusiasta de la música clásica , el compositor favorito de Dijkstra era Mozart . [14]

Dijkstra murió el 6 de agosto de 2002. Según funcionarios de la Universidad de Texas, la causa de la muerte fue el cáncer. [101] [102] [103]

Influencia y reconocimiento

La diferencia entre un programador de computadoras y un científico de la computación es una cuestión de título de trabajo. Edsger Dijkstra quiere con orgullo que lo llamen "programador de computadoras", aunque no ha tocado una computadora desde hace algunos años. (...) Su gran fortaleza es que es intransigente. Le pondría físicamente enfermo pensar en programar en C ++.

-  Donald Knuth (1996), una entrevista con Donald Knuth por Jack Woehr del Dr. Dobb's Journal . [104]

En 1972, la Association for Computing Machinery (ACM) reconoció las contribuciones fundamentales de Dijkstra al campo otorgándole el distinguido premio Turing. La cita para el premio dice: [105]

Edsger Dijkstra fue uno de los principales contribuyentes a finales de la década de 1950 en el desarrollo de ALGOL , un lenguaje de programación de alto nivel que se ha convertido en un modelo de claridad y rigor matemático. Es uno de los principales exponentes de la ciencia y el arte de los lenguajes de programación en general, y ha contribuido enormemente a nuestra comprensión de su estructura, representación e implementación. Sus quince años de publicaciones abarcan desde artículos teóricos sobre teoría de grafos hasta manuales básicos, textos expositivos y contemplaciones filosóficas en el campo de los lenguajes de programación.

La introducción dada en la ceremonia de premiación es un homenaje a Dijkstra: [105]

El vocabulario de trabajo de los programadores de todo el mundo está plagado de palabras originadas o promulgadas con fuerza por EW Dijkstra: visualización, abrazo mortal , semáforo, programación sin acceso, programación estructurada . Pero su influencia en la programación es más generalizada de lo que cualquier glosario pueda indicar. El precioso regalo que reconoce este premio Turing es el estilo de Dijkstra: su enfoque de la programación como un gran desafío intelectual; su elocuente insistencia y demostración práctica de que los programas deben componerse correctamente, no solo depurarse para que sean correctos ; y su iluminadora percepción de los problemas en los cimientos del diseño de programas. (…) Hemos llegado a valorar los buenos programas de la misma manera que valoramos la buena literatura. Y en el centro de este movimiento, creando y reflejando patrones no menos hermosos que útiles, se encuentra EW Dijkstra.

En palabras de Sir Tony Hoare , FRS , pronunciadas por él en el funeral de Dijkstra: [14]

Edsger es ampliamente reconocido como un hombre que ha pensado profundamente en muchas cuestiones profundas; y entre las preguntas más profundas está la de la filosofía moral tradicional: ¿Cómo es que una persona debe vivir su vida? Edsger encontró la respuesta a esta pregunta temprano en su vida: decidió que viviría como un científico académico, investigando una nueva rama de la ciencia, la ciencia de la computación. Él sentaría las bases que establecerían la informática como una disciplina científica rigurosa; y en su investigación, en su enseñanza y en su escritura, buscaría la perfección excluyendo todas las demás preocupaciones. Nunca se desvió de estos compromisos, y es así como ha hecho a su sujeto de estudio elegido la mayor contribución que una persona podría hacer en una vida.

En marzo de 2003, se envió el siguiente correo electrónico a la comunidad de computación distribuida : [106]

Esto es para anunciar que el premio anteriormente conocido como " PODC Influential-Paper Award " ha sido rebautizado como " Premio Edsger W. Dijkstra en Computación Distribuida " en honor al fallecido Edsger W. Dijkstra, un pionero en el área de la computación distribuida. Su trabajo fundamental sobre primitivas de concurrencia (como el semáforo), problemas de concurrencia (como exclusión mutua y punto muerto ), razonamiento sobre sistemas concurrentes y autoestabilización comprende uno de los soportes más importantes sobre los que se construye el campo de la computación distribuida. Ningún otro individuo ha tenido una mayor influencia en la investigación de los principios de la computación distribuida.

El ex presidente de ACM , Peter J. Denning, escribió sobre Dijkstra: [107]

Edsger Dijkstra, uno de los gigantes de nuestro campo y un apasionado creyente en la visión matemática de los programas y la programación (...) Durante el cuarto de siglo anterior, había formulado muchos de los grandes desafíos intelectuales del campo como programación: el instrucción goto, programación estructurada, procesos concurrentes, semáforos, interbloqueos, programación recursiva en Algol y derivación de programas correctos.

Premios y honores

Entre los premios y distinciones de Dijkstra se encuentran: [90]

  • Miembro de la Real Academia de las Artes y las Ciencias de los Países Bajos (1971) [108]
  • Miembro distinguido de la British Computer Society (1971)
  • La Association for Computing Machinery 's Premio AM Turing (1972) [109]
  • Premio en memoria de Harry H. Goode de la IEEE Computer Society (1974). [110]
  • Miembro honorario extranjero de la Academia Estadounidense de Artes y Ciencias (1975)
  • Doctor en Ciencias Honoris Causa de la Queen's University de Belfast (1976)
  • Recipiente de la carta pionero de la informática de la IEEE Computer Society (1982)
  • Premio ACM / SIGCSE por contribuciones destacadas a la educación en ciencias de la computación (1989)
  • Miembro de la Asociación de Maquinaria de Computación (1994) [111]
  • Doctorado honorario de la Universidad de Economía y Negocios de Atenas , Grecia (2001).

En 1969, la British Computer Society (BCS) recibió la aprobación para un premio y una beca, Distinguished Fellow de la British Computer Society (DFBCS), que se otorgaría en virtud del estatuto 7 de su estatuto real . En 1971, se hizo la primera elección, a Dijkstra. [112]

En 1990, con motivo del 60 cumpleaños de Dijkstra, el Departamento de Ciencias de la Computación (UTCS) de la Universidad de Texas en Austin organizó un seminario de dos días en su honor. Vinieron oradores de todo Estados Unidos y Europa, y un grupo de científicos informáticos contribuyó con artículos de investigación que se editaron en un libro. [14] [113]

En 2002, la Fundación C&C de Japón reconoció a Dijkstra "por sus contribuciones pioneras al establecimiento de la base científica del software informático a través de la investigación creativa en teoría básica del software, teoría de algoritmos, programación estructurada y semáforos". Dijkstra estaba vivo para recibir la notificación del premio, pero fue aceptado por su familia en una ceremonia de entrega de premios después de su muerte.

Poco antes de su muerte en 2002, Dijkstra recibió el premio ACM PODC Influential-Paper Award en computación distribuida por su trabajo sobre la autoestabilización de la computación de programas. Este premio anual pasó a llamarse Premio Dijkstra ( Premio Edsger W. Dijkstra en Computación Distribuida ) al año siguiente, en su honor.

El Premio Dijkstra al Logro Académico Sobresaliente en Ciencias de la Computación ( Departamento de Ciencias de la Computación de la Universidad Loyola de Chicago ) lleva el nombre de Edsger W. Dijkstra. A partir de 2005, este premio reconoce el mejor desempeño académico de un graduado de ciencias de la computación. La selección se basa en el GPA en todos los cursos principales y la elección por parte de la facultad del departamento. [114]

El Departamento de Ciencias de la Computación (UTCS) de la Universidad de Texas en Austin acogió la conferencia inaugural Edsger W. Dijkstra Memorial el 12 de octubre de 2010. Tony Hoare , profesor emérito de Oxford e investigador principal de Microsoft Research, fue el orador del evento. Esta serie de conferencias fue posible gracias a una generosa donación de Schlumberger para honrar la memoria de Dijkstra.

Ver también

  • Algoritmo de Dijkstra
  • Problema de los filósofos gastronómicos
  • Lenguaje de comando protegido
  • Semántica del transformador de predicados
  • Cálculo de condiciones previas más débiles
  • Semáforo
  • Smoothsort
  • Ir a la declaración considerada nociva
  • Sobre la crueldad de enseñar realmente informática
  • Lista de pioneros en informática
  • Lista de publicaciones importantes en informática
  • Lista de publicaciones importantes en informática teórica
  • Lista de publicaciones importantes en computación concurrente, paralela y distribuida

Publicaciones Seleccionadas

Libros
  • - (1962). Introducción a la programación de ALGOL 60: junto con el informe sobre el lenguaje algorítmico ALGOL 60 . Prensa académica. ISBN 978-0122162503.
  • -; Dahl, Ole-Johan ; Hoare, CAR (1972). Programación estructurada . Prensa académica . ISBN 978-0-12-200550-3.
  • - (1976). Una disciplina de programación . Prentice Hall. ISBN 978-0132158718.
  • - (mil novecientos ochenta y dos). Escritos seleccionados sobre informática: una perspectiva personal . Monografías en Informática. Saltador. ISBN 978-0387906522.
  • -; Feijen, WHJ; Sterringa, Broma (1988). Un método de programación . Addison-Wesley. ISBN 978-0201175363.
  • -; Scholten, Carel S. (1990). Cálculo de predicados y semántica de programas . Textos y monografías en informática. Springer-Verlag. ISBN 978-0387969572.
Artículos seleccionados
  • - (1959). "Una nota sobre dos problemas relacionados con los gráficos" (PDF) . Numerische Mathematik . 23 (3): 269-271. CiteSeerX  10.1.1.165.7577 . doi : 10.1007 / BF01386390 . S2CID  123284777 .
  • - (1962). "Algunas meditaciones sobre programación avanzada". Proc. Congreso IFIP . Amsterdam: Holanda Septentrional. págs. 535–8.
  • - (1965). Procesos secuenciales cooperativos (informe técnico). Technische Hogeschool Eindhoven. EWD-123 . Consultado el 20 de septiembre de 2020 .Reimpreso en Genuys, F., ed. (1968). Lenguajes de programación: Escuela de verano avanzada de la OTAN celebrada en Villard-de-Lans en 1966 . Prensa académica. págs. 43–112. OCLC 499952053 . Publicado como Dijkstra, EW (1968). "Cooperación de procesos secuenciales". En Hansen, PB (ed.). El origen de la programación concurrente . Nueva York: Springer. págs. 65-138. doi : 10.1007 / 978-1-4757-3472-0_2 . ISBN 978-1-4419-2986-0.
  • - (1965). "Solución de un problema en el control de programación concurrente". Comm. ACM . 8 (9): 569. doi : 10.1145 / 365559.365617 . S2CID  19357737 .
  • - (1965). "La programación considerada como una actividad humana". Proc. Congreso IFIP . págs. 213–7.
  • - (1968). "Ir a declaración considerada nociva". Cartas al editor. Comm. ACM . 11 (3): 147–8. doi : 10.1145 / 362929.362947 . S2CID  17469809 .
  • - (1968). "Un enfoque constructivo al problema de la corrección del programa". BIT Matemáticas numéricas . 8 (3): 174–186. doi : 10.1007 / bf01933419 . S2CID  62224342 .
  • - (mayo de 1968). "La estructura del sistema de multiprogramación 'EL'". ACM Symp. en sistemas operativos. Comm. ACM . 11 (5): 341–346. doi : 10.1145 / 363095.363143 . S2CID  2021311 .
  • - (abril de 1970). Notas sobre programación estructurada (PDF) (Informe). 70-WSK-03: a través de EW Dijkstra Archive. Centro de Historia Estadounidense, Universidad de Texas en Austin.
  • - (1971). Una breve introducción al arte de la programación informática . Eindhoven: Technische Hogeschool. OCLC  3474242 . EWD316.
  • - (1971). "Orden jerárquico de procesos secuenciales". Acta Inform . 1 (2): 115-138. doi : 10.1007 / bf00289519 . S2CID  31573213 .
  • - (1972). "El humilde programador" . Comm. ACM . 15 (10): 859–866. doi : 10.1145 / 355604.361591 .
  • - (junio-julio de 1974). "La programación como disciplina de naturaleza matemática". American Mathematical Monthly . 81 (6): 608–612. doi : 10.2307 / 2319209 . JSTOR  2319209 .
  • - (1974). "Sobre el papel del pensamiento científico". Archivo EW Dijkstra, Centro de Historia Estadounidense, Universidad de Texas en Austin . EWD447.
  • - (1974). "Sistemas de autoestabilización a pesar del control distribuido". Comm. ACM . 17 (11): 643–4. doi : 10.1145 / 361179.361202 . S2CID  11101426 .
  • - (1975). "¿Cómo decimos verdades que pueden doler?". Escritos seleccionados sobre informática: una perspectiva personal . Monografías en Informática. Springer (publicado en 1982). págs. 129-131. ISBN 978-0387906522.
  • - (1975). "Artesano o científico". ACM Pacífico 1975 . págs. 217-223.
  • - (1975). "Sobre la enseñanza de la programación, es decir, sobre la enseñanza del pensamiento". Jerarquías e interfaces lingüísticas . 1975 : 1-10.
  • - (1977). "Programación: del oficio a la disciplina científica". Simposio Internacional de Computación . 1977 : 23-30.
  • - (1978). "Sobre la interacción entre las matemáticas y la programación" . Construcción del programa . Apuntes de conferencias en Ciencias de la Computación. 69 . págs. 35–46. doi : 10.1007 / BFb0014649 . ISBN 978-3-540-09251-3. S2CID  26233314 .
  • - (1975). "Preocupaciones sobre la corrección y, entre otras cosas, por qué se resienten". (ACM) Actas de la Conferencia internacional sobre software confiable. 21 a 23 de abril de 1975, Los Ángeles, California, EE . UU .: 546–550.
  • - (1975). "Comandos vigilados, no determinación y derivación formal de programas". Comm. ACM . 18 (8): 453–7. doi : 10.1145 / 360933.360975 . S2CID  1679242 .
  • - (1978). "Encontrar la prueba de la exactitud de un programa concurrente". Construcción del programa . 1978 : 24–34.
  • - (1984). "Las amenazas a la informática". Archivo EW Dijkstra, Centro de Historia Estadounidense, Universidad de Texas en Austin . EWD898.
  • - (1986). "En una brecha cultural". El inteligente matemático . 8 (1): 48–52. doi : 10.1007 / BF03023921 . S2CID  120847834 .
  • - (1987). "Matemáticos y científicos de la computación: la brecha cultural". Abacus . 4 (4): 26–31.
  • - (1989). "Sobre la crueldad de enseñar realmente informática" . Un debate sobre la enseñanza de la informática. Comm. ACM . 32 (12): 1398–1404. doi : 10.1145 / 76380.76381 . S2CID  16961489 .
  • - (1999). "Ciencias de la Computación: logros y desafíos". Revisión de Computación Aplicada ACM SIGAPP . 7 (2): 2–9. doi : 10.1145 / 335527.335528 . S2CID  34430415 .
  • - (2001). "¿El fin de la ciencia de la computación?". Comm. ACM . 44 (3): 92. doi : 10.1145 / 365181.365217 . S2CID  31142279 .
  • - (2001). "Lo que llevó a Notas sobre programación estructurada ". Archivo EW Dijkstra, Centro de Historia Estadounidense, Universidad de Texas en Austin .

Referencias

  1. ^ Hoare, CAR (12 de octubre de 2010). "La conferencia conmemorativa de Edsger W. Dijkstra de 2010: ¿Qué podemos aprender de Edsger W. Dijkstra?" . Departamento de Ciencias de la Computación, Universidad de Texas en Austin . Consultado el 12 de agosto de 2015 .
  2. ^ a b c d Niklaus Wirth (2005): "De gran influencia para Pascal fue la Programación Estructurada , presentada por EW Dijkstra. Este método de proceder en un diseño sería inconscientemente alentado por el uso de un Lenguaje Estructurado , un lenguaje con un conjunto de construcciones que pueden combinarse y anidarse libremente. La estructura textual de un programa debe reflejar directamente su flujo de control ".
  3. ↑ a b c d e Wirth, Niklaus (julio-septiembre de 2008). "Una breve historia de la ingeniería de software" (PDF) . IEEE Annals of the History of Computing . 30 (3): 32–39. doi : 10.1109 / MAHC.2008.33 . S2CID 9035976 . Consultado el 22 de septiembre de 2020 . En 1965, Dijkstra escribió sus famosas Notas sobre programación estructurada y declaró la programación como una disciplina en contraste con un oficio. También en 1965 Hoare  publicó un artículo importante sobre la estructuración de datos. Estas ideas tuvieron una profunda influencia en los nuevos lenguajes de programación, en particular Pascal . Los lenguajes son los vehículos en los que se iban a expresar estas ideas. La programación estructurada pasó a ser compatible con un lenguaje de programación estructurado .
  4. En sus memorias de 2004, "A Programmer's Story: The Life of a Computer Pioneer", Brinch Hansen escribió que utilizó "Cooperating Sequential Processes" para guiar su trabajo en la implementación de la multiprogramación en el RC 4000, y lo describió diciendo: "Uno de los grandes obras en programación de computadoras, esta obra maestra sentó las bases conceptuales para la programación concurrente ".
  5. ↑ a b c d e f Lamport, Leslie (2002). "Premio PODC Influential Paper 2002" . Simposio ACM sobre Principios de Computación Distribuida . Consultado el 22 de septiembre de 2020 . Edsger W. Dijkstra inició el campo de los algoritmos concurrentes y distribuidos con su artículo del CACM de 1965 "Solución de un problema en el control de programación concurrente", en el que primero planteó y resolvió el problema de exclusión mutua. Ese documento es probablemente la razón por la que existe PODC ; ciertamente inspiró la mayor parte de mi trabajo.
  6. ↑ a b c d e f Lamport (2015)
  7. ^ Un b Dolev, Shlomi : auto-estabilización . (Cambridge, MA: MIT Press, 2000) ISBN 978-0-262-04178-2 
  8. ↑ a b Lo Russo, Graziano (1997). "Una entrevista con A. Stepanov (Edizioni Infomedia srl.)" . STLport.org . Consultado el 21 de diciembre de 2017 . Alexander Stepanov : "... También descubrí libros de dos grandes informáticos de cuyo trabajo aprendí la base científica de mi oficio: Donald Knuth y Edsger Dijkstra. Knuth me enseñó las respuestas. Dijkstra me enseñó las preguntas. Una y otra vez Vuelvo a sus trabajos en busca de nuevas percepciones ".
  9. ^ "Edsger Dijkstra | Científico informático holandés" .
  10. ^ Istrail (2008). "Un escritor prolífico, él [Dijkstra] fue autor de más de 1300 artículos, muchos escritos a mano con su escritura precisa y elegante. Eran ensayos y parábolas; cuentos de hadas y advertencias; explicación completa y pretexto pedagógico. La mayoría eran sobre matemáticas e informática ; otros eran reportajes de viaje que son más reveladores sobre su autor que sobre las personas y lugares visitados. Este “estilo Dijkstraniano” de escritura floreció en la frontera entre la ciencia técnica de la computación y la filosofía que sustenta su distinguido desarrollo. Tenía la costumbre de copiar cada uno de ellos. y distribuirlo entre un pequeño grupo de colegas que copiarían y enviarían los artículos a otro grupo limitado de científicos (...) Los leo con alegría y entusiasmo y mi amor por las matemáticas y la informática se ha visto influido en gran medida por sus obras ".
  11. ^ Hoare, Tony (marzo de 2003). "Obituario: Edsger Wybe Dijkstra". La física hoy . 56 (3): 96–98. Código Bibliográfico : 2003PhT .... 56c..96H . doi : 10.1063 / 1.1570789 .
  12. ↑ a b c Laplante (1996) .
  13. ↑ a b c Laplante (2008) .
  14. ^ a b c d e f g h i j k l m n o p q r s Faulkner, Larry R .; Durbin, John R. (19 de agosto de 2013). "In Memoriam: Edsger Wybe Dijkstra" (PDF) . Universidad de Texas en Austin . Consultado el 20 de agosto de 2015 .
  15. ^ O'Regan, Gerard (2013). Gigantes de la informática: un compendio de pioneros selectos y fundamentales . Saltador. págs. 91–92.
  16. ^ a b c d e f g h i j k l m n o Apt (2002)
  17. ^ Gries, David (1978). Metodología de programación: una colección de artículos de miembros de IFIP WG2.3 . Saltador. pag. 7. ISBN 978-1-4612-6315-9.
  18. ↑ a b Markoff, John (10 de agosto de 2002). "Edsger Dijkstra: físico que dio forma a la era informática" . New York Times . Consultado el 10 de abril de 2015 .
  19. ^ Schofield, Jack (19 de agosto de 2002). "Edsger Dijkstra: programador informático pionero que hizo su tema intelectualmente respetable" . The Guardian . Consultado el 19 de abril de 2015 .
  20. ^ Knuth, Donald (1974). "Programación estructurada con declaraciones Ir a". Encuestas de Computación . 6 (4): 261-301. CiteSeerX 10.1.1.103.6084 . doi : 10.1145 / 356635.356640 . S2CID 207630080 . Se está produciendo una revolución en la forma en que escribimos programas y enseñamos programación, porque estamos comenzando a comprender los procesos mentales asociados con mayor profundidad. Es imposible leer el reciente libro Programación estructurada [de Dijkstra, Ole-Johan Dahl y Tony Hoare  (1972)], sin que cambie tu vida. EW Dijkstra ha descrito acertadamente la razón de esta revolución y sus perspectivas futuras en su conferencia del premio Turing de 1972, The Humble Programmer .
  21. ^ Broy y Denert (2002) , p. 19.
  22. ^ Nakagawa, Toru (18 de julio de 2005). "Ingeniería de software y TRIZ (1) - Programación estructurada revisada con TRIZ" . Diario TRIZ . Consultado el 18 de agosto de 2015 .
  23. ^ Hashagen, Ulf; Keil-Slawik, Reinhard; Norberg, A., eds. (2002). Historia de la Computación: Problemas de Software (Conferencia Internacional sobre la Historia de la Computación, ICHC 2000 del 5 al 7 de abril de 2000 Foro de los Museos Heinz Nixdorf) . Paderborn, Alemania: Springer. pag. 106.
  24. ^ Henderson, Harry (2009). Enciclopedia de Ciencias de la Computación y Tecnología (ed. Revisada). Hechos en archivo. pag. 150. ISBN 978-0-816-06382-6.
  25. ↑ a b c Meyer, Bertrand (2009). Toque de clase: aprender a programar bien con objetos y contratos . Saltador. pag. 188. ISBN 978-3540921448.
  26. ^ Lamport (2015) . "Si bien la ejecución simultánea de programas se había considerado durante años, la informática de la concurrencia comenzó con el artículo seminal de 1965 de Edsger Dijkstra que introdujo el problema de la exclusión mutua. (...) El primer examen científico de la tolerancia a fallas fue el artículo seminal de 1974 de Dijkstra sobre estabilización. (...) Las décadas siguientes han visto un enorme crecimiento del interés en la concurrencia, particularmente en los sistemas distribuidos. Mirando hacia atrás en los orígenes del campo, lo que se destaca es el papel fundamental desempeñado por Edsger Dijkstra, para quien esta historia es dedicado."
  27. ^ a b c "Premio Edsger W. Dijkstra en Computación distribuida" . Simposio ACM sobre Principios de Computación Distribuida.
    - "Premio Dijkstra" . Asociación Europea de Ciencias de la Computación Teórica (EATCS).
    - "Premio Dijkstra" . Simposio Internacional de Computación Distribuida (DISC).
    - "El Premio Edsger W. Dijkstra en Computación Distribuida lleva el nombre de Edsger Wybe Dijkstra (1930-2002), un pionero en el área de la computación distribuida. Su trabajo fundamental sobre primitivas de concurrencia (como el semáforo), problemas de concurrencia (como exclusión mutua y punto muerto), el razonamiento sobre sistemas concurrentes y la autoestabilización constituyen uno de los soportes más importantes sobre los que se construye el campo de la computación distribuida. Ningún otro individuo ha tenido una mayor influencia en la investigación de los principios de la computación distribuida ".
  28. ^ "Edsger Wybe Dijkstra" . Stichting Digidome . 3 de septiembre de 2003. Archivado desde el original el 6 de diciembre de 2004.
  29. ^ a b O'Connor, JJ; Robertson, EF (julio de 2008). "Biografía de Dijkstra" . MacTutor . Escuela de Matemáticas y Estadística, Universidad de St Andrews, Escocia. Archivado desde el original el 11 de octubre de 2013 . Consultado el 18 de enero de 2014 .
  30. ↑ a b c Dijkstra, Edsger W. (1972). "El humilde programador" . Conferencia ACM Turing 1972 . EWD340.
  31. ^ James, Mike (1 de mayo de 2013). "Edsger Dijkstra - la poesía de la programación" . i-programmer.info . Consultado el 12 de agosto de 2015 .
  32. ^ Silberschatz, Abraham; Peterson, James L. (1988). Conceptos del sistema operativo . pag. 512.
  33. ^ Goodwins, Rupert (8 de agosto de 2002). "Muere el pionero de la informática Dijkstra" . Consultado el 22 de diciembre de 2010 .
  34. ^ Chen, Peter P. (2002). "De Goto-less a la programación estructurada: el legado de Edsger W. Dijkstra". Software IEEE . 19 (5): 21. doi : 10.1109 / MS.2002.1032847 . S2CID 29320163 . 
  35. ^ Hart, PE; Nilsson, Nueva Jersey; Rafael, B. (1968). "Una base formal para la determinación heurística de rutas de costo mínimo". Transacciones IEEE sobre ciencia de sistemas y cibernética SSC4 . 4 (2): 100–107. doi : 10.1109 / TSSC.1968.300136 .
  36. ^ Frana, Philip L (2001). "Una entrevista con Edsger W. Dijkstra (OH 330)" . Comm. ACM . 53 (8): 41–47. doi : 10.1145 / 1787234.1787249 .
  37. Jarník, V. (1930), "O jistém problému minimálním" [Acerca de cierto problema mínimo], Práce Moravské Přírodovědecké Společnosti (en checo), 6 : 57–63
  38. ^ Prim, RC (noviembre de 1957), "Redes de conexión más cortas y algunas generalizaciones", Bell System Technical Journal , 36 (6): 1389–1401, Bibcode : 1957BSTJ ... 36.1389P , doi : 10.1002 / j.1538-7305.1957 .tb01515.x
  39. ^ Dijkstra, EW (1959), "Una nota sobre dos problemas relacionados con los gráficos" (PDF) , Numerische Mathematik , 1 : 269-271, CiteSeerX 10.1.1.165.7577 , doi : 10.1007 / BF01386390 , S2CID 123284777   
  40. ^ Pettie, Seth; Ramachandran, Vijaya (2002), "Un algoritmo de árbol de expansión mínimo óptimo" (PDF) , Journal of the ACM , 49 (1): 16–34, doi : 10.1145 / 505241.505243 , MR 2148431 , S2CID 5362916   
  41. ^ Dijkstra, Edsger (1961). Traducción de Algol 60: Un traductor de Algol 60 para el X1 y la creación de un traductor para Algol 60 (Informe). Stichting Mathematisch Centrum.
  42. ^ Dolev (2000) , pág. dieciséis.
  43. ^ "Glosario 'Recolección de basura ' " . Gente detrás de la informática . Universidad de Klagenfurt . Consultado el 12 de agosto de 2015 .
  44. ^ Hudson, Richard (31 de agosto de 2015). "Go GC: Priorizar la baja latencia y la simplicidad" . Ir al blog de lenguajes de programación . Consultado el 21 de septiembre de 2015 .
  45. ^ Jeuring, Johan; Meertens, Lambert ; Guttmann, Walter (17 de agosto de 2016). "Perfil del Grupo de Trabajo 2.1 de IFIP" . Foswiki . Consultado el 2 de septiembre de 2020 .
  46. ^ Swierstra, Doaitse; Gibbons, Jeremy ; Meertens, Lambert (2 de marzo de 2011). "ScopeEtc: IFIP21: Foswiki" . Foswiki . Consultado el 2 de septiembre de 2020 .
  47. ^ van Emden, Maarten (6 de mayo de 2008). "Recuerdo a Edsger Dijkstra (1930-2002)" . Consultado el 22 de diciembre de 2010 .
  48. ^ Hoare, CAR (diciembre de 1973). "Sugerencias sobre el diseño de lenguajes de programación" (PDF) . pag. 27.
  49. ^ Stroustrup, Bjarne (2014). Programación: Principios y práctica con C ++ (2ª ed.). Addison-Wesley Professional. pag. 827.
  50. ^ Sestoft, Peter (2015). "Primeros compiladores nórdicos y códigos automáticos". En Gram, Christian; Rasmussen, Per; Østergaard, Søren Duus (eds.). Historia de la Computación Nórdica 4, artículos seleccionados revisados . 4ª Conferencia IFIP WG 9.7, HiNC 4, Copenhague, Dinamarca, 13-15 de agosto de 2014. Springer. pag. 358.
  51. ^ Luz del día, EG (2011). "Grito de guerra de Dijkstra para la generalización: el advenimiento del procedimiento recursivo, finales de 1950 - principios de 1960" . The Computer Journal . 54 (11): 1756-1772. doi : 10.1093 / comjnl / bxr002 .
  52. ^ Haigh, Thomas (abril-junio de 2010). "Computación al estilo estadounidense: contextualización de la industria informática de los Estados Unidos primitiva" (PDF) . IEEE Annals of the History of Computing . 32 (2): 8-20. doi : 10.1109 / MAHC.2010.33 . S2CID 10691009 . Consultado el 19 de septiembre de 2020 .  
  53. ^ Randell, Brian. Los informes de ingeniería de software de la OTAN de 1968/69 . Dagstuhl-Seminar 9635: "Historia de la ingeniería de software" Schloss Dagstuhl, 26-30 de agosto de 1996.
  54. ^ Peter Naur; Brian Randell, eds. (Enero de 1969). Informe sobre una conferencia patrocinada por el Comité Científico de la OTAN Garmisch, Alemania, del 7 al 11 de octubre de 1968 (PDF) (Informe).
  55. ^ Dijkstra, Edsger W. Un caso contra la declaración GO TO (EWD-215) (PDF) . Archivo EW Dijkstra. Centro de Historia Estadounidense, Universidad de Texas en Austin . ( transcripción )
  56. ^ Dijkstra, EW (marzo de 1968). "Cartas al editor: ir a la declaración considerada nociva". Comm. ACM . 11 (3): 147–8. doi : 10.1145 / 362929.362947 . S2CID 17469809 . 
  57. ^ Knuth (1974) .
  58. ^ Molinos, Harlan D. (1986). Programación estructurada: retrospectiva y prospectiva . (IEEE Software 3 (6): 58–66, noviembre de 1986).
  59. ^ Reilly, Edwin D. (2004). Enciclopedia Concisa de Ciencias de la Computación . John Wiley e hijos. pag. 734. ISBN 978-0-470-09095-4.
  60. Ryder, Barbara G .; Soffa, Mary Lou; Burnett, Margaret (octubre de 2005). "Impacto de la investigación en ingeniería de software en lenguajes de programación modernos". Transacciones ACM sobre Ingeniería y Metodología de Software . 14 (4): 431–477. CiteSeerX 10.1.1.216.7772 . doi : 10.1145 / 1101815.1101818 . S2CID 8593990 .  
  61. ^ Reilly (2004) , p. 734. "El primer lenguaje SP [Programación Estructurada] significativo fue Algol 60 (qv). Los lenguajes SP desarrollados posteriormente en uso actual son Ada , C (qv), C ++ (qv), Pascal y Java (qv)".
  62. ^ Graba, enero (1998). En funcionamiento con C ++ . Saltador. pag. 1. ISBN 978-3-540-76234-8.
  63. ^ Reilly (2004) , p. 734.
  64. ^ Broy y Denert (2002) , p. [ página necesaria ] .
  65. ^ Henderson (2009) , p. [ página necesaria ] .
  66. ^ Selby, Richard W. (2007). Ingeniería de software: las contribuciones de toda la vida de Barry W. Boehm al desarrollo, la gestión y la investigación de software . (IEEE Computer Society), págs. 701–702
  67. ^ Dijkstra, Edsger W (1982). "Sobre el papel del pensamiento científico" . Escritos seleccionados sobre informática: una perspectiva personal . Nueva York, NY, EE.UU .: Springer-Verlag. págs. 60–66. ISBN 978-0-387-90652-2.
  68. ^ Brown, Kyle; Craig, Gary; Hester, Greg; Amsden, Jim; Pitt, David; Jakab, Peter M .; Berg, Daniel; Stinehour, Russell; Weitzel, Mark (2003). Programación Java empresarial con IBM WebSphere (2ª ed.). IBM Press. pag. 5. ISBN 978-0-321-18579-2. Los profesionales de TI más experimentados estarán de acuerdo en que desarrollar y adherirse a una arquitectura estándar es clave para el éxito del desarrollo de software a gran escala. El pionero informático Edsger Dijkstra validó esta noción cuando desarrolló EL sistema operativo en 1968. Desde entonces, las arquitecturas en capas han demostrado su viabilidad en dominios tecnológicos, como el hardware y las redes. La creación de capas ha demostrado su eficacia en el dominio del sistema operativo; sin embargo, los mismos beneficios están disponibles cuando se aplican al comercio electrónico oa aplicaciones orientadas a clientes ligeros. Las arquitecturas en capas se han vuelto esenciales para respaldar el proceso de desarrollo iterativo al promover la reutilización, la escalabilidad y la capacidad de mantenimiento.
  69. ^ Grier, David Alan. "Más cerca de lo que podría pensar: capas sobre capas" . Sociedad de Informática IEEE . Consultado el 12 de agosto de 2015 .
  70. ^ Albin, Stephen T. (2003). El arte de la arquitectura de software: métodos y técnicas de diseño . Wiley. pag. 3. ISBN 978-0-471-46829-5.
  71. ^ Dijkstra, Edsger W. Over seinpalen (EWD-74) (PDF) . Archivo EW Dijkstra. Centro de Historia Estadounidense, Universidad de Texas en Austin . ( transcripción )
  72. ^ Brinch Hansen (2002) , p. 8.
  73. ^ Anderson, JH; Kim, Y.-J .; Herman, T. (2003). "Exclusión mutua de memoria compartida: principales tendencias de investigación desde 1986". Computación distribuida . 16 (2-3): 75-110. CiteSeerX 10.1.1.74.3990 . doi : 10.1007 / s00446-003-0088-6 . S2CID 17615199 .  
  74. ^ Alagarsamy, K. (2003). "Algunos mitos sobre algoritmos de exclusión mutua famosos" (PDF) . Noticias ACM SIGACT . 34 (3): 94–103. CiteSeerX 10.1.1.113.3361 . doi : 10.1145 / 945526.945527 . S2CID 7545330 .   
  75. ^ Raynal, Michel (2012). Programación concurrente: algoritmos, principios y fundamentos . Saltador. pag. vi. ISBN 978-3-642-32027-9.
  76. ^ James, Mike (1 de mayo de 2013). "Edsger Dijkstra - la poesía de la programación" . i-programmer.info . Consultado el 12 de agosto de 2015 .
  77. ^ Hoare, COCHE (2004). "Comunicación de procesos secuenciales" (PDF) . Prentice Hall International.
  78. ^ Raynal, Michel (2012). Programación concurrente: algoritmos, principios y fundamentos . Saltador. ISBN 978-3-642-32027-9.[ página necesaria ]
  79. ^ McCormick, John W .; Singhoff, Frank; Hugues, Jérôme (2011). Creación de aplicaciones paralelas, integradas y en tiempo real con Ada . Prensa de la Universidad de Cambridge. pag. 5.
  80. ^ Dolev (2000) , pág. 3.
  81. ^ Atrás, Ralph-Johan; von Wright, Joakim (2012) [1978]. Cálculo de refinamiento: una introducción sistemática . Textos en Informática. Saltador. ISBN 978-1-4612-1674-2.
  82. ^ Morgan, Carroll; Vickers, Trevor, eds. (2012) [1992]. Sobre el cálculo de refinamiento . Saltador. ISBN 978-1-4471-3273-8.
  83. ^ Back y von Wright (2012) , p. v.
  84. ^ Más estable, Edward P. (2014). "Recursión en Gramática y Performance". En Roeper, Tom; Speas, Margaret (eds.). Recursión: complejidad en la cognición . Estudios de Psicolingüística Teórica. 43 . Springer International Publishing. págs. 159-177. doi : 10.1007 / 978-3-319-05086-7_8 . ISBN 978-3-319-05085-0.
  85. ^ Dijkstra, Edsger W. Sobre una brecha cultural (EWD-924) (PDF) . Archivo EW Dijkstra. Centro de Historia Estadounidense, Universidad de Texas en Austin . ( transcripción )
    - Dijkstra, EW (1986). "Sobre una brecha cultural" . El inteligente matemático . 8 (1): 48–52. doi : 10.1007 / bf03023921 . S2CID 120847834 . 
  86. ^ Dijkstra, Edsger W. Sobre la crueldad de enseñar realmente ciencias de la computación (EWD-1036) (PDF) . Archivo EW Dijkstra. Centro de Historia Estadounidense, Universidad de Texas en Austin . ( transcripción )
  87. ^ Dijkstra, EW (julio de 1996), Una primera exploración del razonamiento efectivo [EWD896]. (Archivo EW Dijkstra, Centro de Historia Estadounidense, Universidad de Texas en Austin )
  88. ^ Shasha, Dennis; Lazere, Cathy: Fuera de sus mentes: Las vidas y los descubrimientos de 15 grandes científicos informáticos . (Nueva York, NY: Springer, 1998, ISBN 978-0-387-98269-4 ), pág. 64 
  89. ^ Irfan Hyder, Syed (2013) [ cita completa necesaria ]
  90. ^ a b In Memoriam Edsger Wybe Dijkstra (memorial) , Universidad de Texas
  91. ^ Istrail (2008) .
  92. ^ Dijkstra, Edsger. "Denken als Discipline" . VPRO . Noorderlicht . Consultado el 21 de junio de 2016 .
  93. ^ Dijkstra, Edsger W. Las amenazas a la informática (EWD-898) (PDF) . Archivo EW Dijkstra. Centro de Historia Estadounidense, Universidad de Texas en Austin . ( transcripción )
  94. ^ Dijkstra, Edsger W. ¿Cómo decimos verdades que pueden doler? (EWD-498) (PDF) . Archivo EW Dijkstra. Centro de Historia Estadounidense, Universidad de Texas en Austin . ( transcripción )
  95. ↑ a b Dijkstra, Edsger W. EWD-475 (PDF) . Archivo EW Dijkstra. Centro de Historia Estadounidense, Universidad de Texas en Austin . ( transcripción )
  96. ^ Dijkstra, Edsger W. EWD-539 (PDF) . Archivo EW Dijkstra. Centro de Historia Estadounidense, Universidad de Texas en Austin . ( transcripción )
  97. ^ Dijkstra, Edsger W. EWD-427 (PDF) . Archivo EW Dijkstra. Centro de Historia Estadounidense, Universidad de Texas en Austin . ( transcripción )
  98. ^ Dijkstra, Edsger W. EWD-443 (PDF) . Archivo EW Dijkstra. Centro de Historia Estadounidense, Universidad de Texas en Austin . ( transcripción )
  99. ^ Dijkstra, Edsger W (1982). Escritos seleccionados sobre informática: una perspectiva personal . Berlín: Springer-Verlag. ISBN 978-0-387-90652-2.
  100. ^ "Los manuscritos de Edsger W. Dijkstra" . Archivo EW Dijkstra . Universidad de Texas.
  101. ^ "Muere el científico informático de renombre mundial de la Universidad de Texas en Austin Edsger Dijkstra" . Noticias de UT . 7 de agosto de 2002 . Consultado el 4 de agosto de 2020 .
  102. ^ Dale, Nell; Lewis, John (31 de diciembre de 2014). Informática Iluminada . Editores Jones & Bartlett. pag. 316. ISBN 978-1-284-05592-4.
  103. ^ "Fallece Edsger Dijkstra" . Diario del Dr. Dobb . 27 : 14. 2002.
  104. ^ Woehr, Jack (1 de abril de 1996). "Una entrevista con Donald Knuth" . Diario del Dr. Dobb . Consultado el 12 de agosto de 2015 .
  105. ^ a b Edsger W. Dijkstra - Ganador del premio - Premios ACM (Extracto de la Citación del premio Turing preparado por M. Doug McIlroy, presidente del Comité del Premio ACM Turing, en la presentación de su conferencia el 14 de agosto de 1972, en el ACM Annual Conferencia en Boston.)
  106. ^ Dale, Nell; Lewis, John (2011). Computer Science Illuminated , cuarta edición (Jones y Barlett Publishers, LLC.), P. 313
  107. ^ Denning, Peter J. (2004). "El mito del campo de los programadores" (PDF) . Comm. ACM . 47 (7): 15-20. doi : 10.1145 / 1005817.1005836 . S2CID 415372 .  
  108. ^ "Edsger Wybe Dijkstra (1930-2002)" . Real Academia de las Artes y las Ciencias de los Países Bajos . Consultado el 17 de julio de 2015 .
  109. ^ "Premio AM Turing" . Asociación de Maquinaria Informática . Consultado el 5 de febrero de 2011 .
  110. ^ "Edsger W. Dijkstra 1974 Destinatario del premio en memoria de Harry H. Goode" . Sociedad de Informática IEEE . Consultado el 17 de enero de 2014 .
  111. ^ "Becarios de ACM - D" . Asociación de Maquinaria Informática . Archivado desde el original el 24 de enero de 2011 . Consultado el 15 de febrero de 2011 .
  112. ^ "Rol de becarios distinguidos" . Sociedad Británica de Computación . Archivado desde el original el 4 de marzo de 2016 . Consultado el 10 de septiembre de 2014 .
  113. ^ Feijen y Gries (1990) .
  114. ^ "Premios" . Universidad Loyola de Chicago.

Otras lecturas

  • Altisen, Karine; Devismes, Stéphane; Dubois, Swan; Petit, Franck; Raynal, Michel (2019). Introducción a los algoritmos distribuidos de autoestabilización . San Rafael, CA : Morgan & Claypool Publishers. ISBN 9781681735375.
  • Apt, Krzysztof R. (2002). "Edsger Wybe Dijkstra (1930-2002): un retrato de un genio". Aspectos formales de la informática . 14 (2): 92–98. arXiv : cs / 0210001 . Bibcode : 2002cs ....... 10001A . doi : 10.1007 / s001650200029 . S2CID  12482128 .
  • Brinch Hansen, Per (2002). El origen de la programación concurrente: de los semáforos a las llamadas a procedimientos remotos . Saltador. ISBN 978-0-387-95401-1.
  • Ben-Ari, M. (2006). Principios de programación concurrente y distribuida (2ª ed.). Addison-Wesley. ISBN 978-0-321-31283-9.
  • Broy, M .; Denert, Ernst, eds. (2002). Pioneros del software: contribuciones a la ingeniería del software . Saltador. ISBN 978-3-540-43081-0.
  • Chen, Peter P. (2002). "De Goto-less a la programación estructurada: el legado de Edsger W. Dijkstra". Software IEEE . 19 (5): 21. doi : 10.1109 / MS.2002.1032847 . S2CID  29320163 .
  • Luz del día, Edgar G. (2012). El amanecer de la ingeniería de software: de Turing a Dijkstra . Erudito solitario. ISBN 9789491386022.
  • Luz del día, Edgar G. (2011). "Grito de guerra de Dijkstra para la generalización: el advenimiento del procedimiento recursivo, finales de 1950-principios de 1960". The Computer Journal . 54 (11): 1756–72. doi : 10.1093 / comjnl / bxr002 .
  • Dolev, Shlomi (2000). Autoestabilización . Prensa del MIT. ISBN 978-0-262-04178-2.
  • Feijen, WHJ; Gries, David, eds. (1990). La belleza es nuestro negocio: Un saludo de cumpleaños a Edsger W. Dijkstra . Saltador. ISBN 978-0-387-97299-2.
  • Istrail, Sorin (otoño-invierno de 2008). "Narración de faros: criticar al profesor Dijkstra considerado inofensivo " (PDF) . Conducto . Vol. 17 no. 2. Departamento de Ciencias de la Computación de la Universidad de Brown. págs. 10-17.
  • Istrail, Sorin (primavera-verano de 2010). "Contar historias sobre los faros: cuando el profesor Dijkstra me abofeteó en la búsqueda de un código hermoso" (PDF) . Conducto . Vol. 19 no. 1. Departamento de Ciencias de la Computación de la Universidad de Brown. págs. 10-12.
  • James, Mike (2013). "Edsger Dijkstra - la poesía de la programación" . I-programmer.info .
  • Lamport, Leslie (junio de 2015). "Conferencia de Turing: la informática de la concurrencia: los primeros años" . Comm. ACM . 58 (6): 71–76. doi : 10.1145 / 2771951 . S2CID  19164754 .
  • Laplante, Phillip A. (1996). Grandes trabajos en informática . Prensa IEEE. ISBN 978-0-7803-1112-1.
  • Laplante, Phillip A. (2008). "Grandes artículos en informática: una retrospectiva" (PDF) . Revista de Computación Científica y Práctica . 2 (1): 31–35. CiteSeerX  10.1.1.559.2457 . Archivado desde el original (PDF) el 5 de mayo de 2018.
  • Lee, ENE (1991). "Fronteras de la informática: un tributo a Edsger W. Dijkstra con motivo de su 60 cumpleaños". Ana. Hist. Comp . 13 (1): 91–96. doi : 10.1109 / MAHC.1991.10000 .
  • Markoff, John (2002). "Edsger Dijkstra, 72, físico que dio forma a la era informática" . The New York Times .
  • Milone, Lorenzo (2009). "EW Dijkstra, una vita da informatico [en italiano]" (PDF) . Mondo Digitale . 9 (2).
  • O'Regan, Gerard (2013). Gigantes de la informática: un compendio de pioneros selectos y fundamentales . Saltador. ISBN 978-1-4471-5340-5.
  • Payette, Sandy (2014). "Hopper y Dijkstra: crisis, revolución y el futuro de la programación". IEEE Annals of the History of Computing . 36 (4): 64–73. doi : 10.1109 / MAHC.2014.54 . S2CID  9029390 .
  • Shasha, Dennis; Lazere, Cathy (2 de julio de 1998). Fuera de sus mentes: las vidas y los descubrimientos de 15 grandes científicos informáticos . Saltador. ISBN 978-0-387-98269-4.

enlaces externos

  • "Archivo EW Dijkstra" . Centro de Historia Estadounidense, Universidad de Texas en Austin .
  • "Grito de guerra de Dijkstra para la generalización" . Un sitio dedicado a las obras y pensamientos de Dijkstra, creado y mantenido por el historiador de la informática Edgar Graham Daylight.

Obtenido de " https://en.wikipedia.org/w/index.php?title=Edsger_W._Dijkstra&oldid=1044274043 "