Monday, September 16, 2019

En Búsqueda de la Simplicidad: Symposium en Honor a Edsger Wybe Dijkstra

Department of Computer SciencesThe University of Texas at Austin 
Presents:
"In Pursuit of Simplicity"
A Symposium Honoring: Professor Edsger Wybe Dijkstra
May 12-13, 2000
Original Document: https://www.cs.utexas.edu/users/EWD/symposiumProgram.pdf

Capítulos traducidos:
Capítulo:  "Selected Citations" Pags 5-6
Capítulo: "Insights to the Life and Times of Edsger W. Dijkstra" Pags 7-8
Capítulo: "In Edsger's Words" Pags. 9-10
Capítulo: "Blackboard Commentary". Pag. 11-12
Para el resto: Documento Original en inglés. (1 a 4, y 13 a 24)

(El documento original tiene 24 páginas)

En Búsqueda de la Simplicidad:
Citas Seleccionadas: (pag 5-6) 

1. Del Premio ACM Turing:
El vocabulario de trabajo de los programadores está repleto de palabras originadas o promulgadas con fuerza por E. W. Dijkstra: exhibición, abrazo mortal, semáforo, eliminación del GOTO, programación estructurada. Pero su influencia en la programación es más dominante de lo que cualquier glosario puede 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 estar cnstruidos correctamente, no solo depurados en la corrección; y su percepción iluminadora de los problemas han sido fundamentales para el diseño de programas. Ha publicado alrededor de una docena de artículos, tanto técnicos como de pensamiento, entre los que destacan especialmente su discurso filosófico en la IFIP, sus artículos ya clásicos sobre procesos secuenciales cooperativos y su acusación memorable a la sentencia GOTO. Una serie influyente de cartas de Dijkstra ha surgido recientemente como una monografía pulida sobre el arte de componer 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 reflexionando sobre patrones no menos hermosos que útiles, se encuentra EW Dijkstra. 

De una cita leída por MD McIlroy, presidente del Comité de Premios ACM Turing, el 14 de agosto de 1972, en la conferencia anual de ACM en Boston, MA, cuando Edsger presentó su charla "El programador humilde" y recibió el Premio ACM AM Turing de 1972.



2. Del Premio ACM/Fellows 
Edsger Dijkstra fue uno de los principales contribuyentes a fines 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 en gran medida a nuestra comprensión de su estructura, representación e implementación. Sus quince años [sic] de publicaciones abarcan desde artículos teóricos sobre teoría de grafos hasta manuales básicos, textos expositivos y observaciones filosóficas en el campo de los lenguajes de programación.

Aparece en http://www.acm.org/awards/fellows_citations/dijkstra.html



3. La edición del 25º aniversario de Comunicaciones de la ACM

Al planificar el contenido de este tema, se decidió dejar que las Comunicaciones hablen por sí mismas y mantener la pontificación, la opinión, etc. a un mínimo ... En consecuencia, el cuerpo del problema consiste en reimpresiones de las Comunicaciones de días anteriores. Todos son papeles (o, en algunos casos, cartas) que parecen haber presentado ideas que luego demostraron ser significativas y fundamentales para el campo de la computación
(indicado en muchos casos por alta frecuencia de citas). ... El conjunto final consta de 21 artículos que aparecieron entre 1960 y 1978. ...
Los párrafos adjuntos fueron generados por los esfuerzos del futuro editor en jefe P. J. Denning y sus colegas en la Universidad de Purdue
CACM, enero de 1983, Vol. 26, N ° 1 [La última portada de CACM con el fondo negro acentuado con letras y bocetos en blanco y azul ...]


Introducción a la "Solución de un problema en el control de programación concurrente" en el número 25 del CACM
Este breve artículo marca el comienzo de una larga era de interés en expresar la sincronización de procesadores concurrentes utilizando lenguajes de programación ordinarios. Este documento considera el problema de implementar una operación indivisible por exclusión mutua de secciones críticas de código. Documentos posteriores de Dijkstra introdujeron los conceptos de semáforos; una de las motivaciones de los semáforos reducían la complejidad de la programación requerida para implementar la exclusión mutua. (Una carta al editor por Don Knuth, publicado en mayo de 1966, señala que la solución de Dijkstra es susceptible al "hambre", lo que significa que un particular procesador puede ser bloqueado para siempre para que no ingrese a la sección crítica. La solución libre de "hambre" de Knuth es aún más complejo que la solución de aquí.) 
- P. J. D. [Reimpreso de CACM, septiembre de 1965, Vol. 8, No. 9, p. 569]

Introducción a "La estructura del sistema 'THE' de multiprogramación" en el número 25 del CACM
Este fue otro de los documentos presentados en el primer simposio sobre principios de sistemas operativos (SOSP-1) en 1967. Dijkstra informó sobre su enfoque para estructurar el sistema de multiprogramación en la Technische Hoogeschool Eindhoven (THE) como jerarquía de máquinas abstractas anidadas. La jerarquía se implementó como una serie de capas de software: cada una extendió el conjunto de instrucciones de las máquinas debajo de él y oculta los detalles de su gestión de recursos de los niveles superiores. Este proyecto inició una larga línea de investigación en arquitectura de sistemas multinivel, una línea que continúa hasta nuestros días porque la modularidad jerárquica es un enfoque poderoso para organizar grandes sistemas. (A sugerencia del editor, Dijkstra agregó un breve apéndice sobre las operaciones P y V en semáforos, otro de sus conceptos de cuando estaba allí, en las etapas formativas).
- P. J. D. [Reimpreso de CACM, mayo de 1968, Vol. 11, No. 5, págs. 341-346]


4. Clásicos mensuales de la ACM

El sitio web de ACM incluye los resultados de un proyecto durante 1965 y 1996 para seleccionar artículos clásicos entre los publicados por ACM.
Si bien hay poca información disponible sobre este proyecto, el sitio web enumera ocho clásicos mensuales, que cubren artículos publicados en Communications of the ACM, en los años 1968 a 1984. Los clásicos con las primeras fechas de publicación son ambos de E. W. Dijkstra.


ACM Classic del mes, octubre de 1995:
Declaración GOTO considerada perjudicial, reimpreso de Comunicaciones de la ACM, vol. 11, núm. 3, marzo de 1968, págs. 147-148. Copyright (c) 1968, Association for Computing Machinery, Inc. En Internet: http://info.acm.org/classics/oct95/


 ACM Classic del mes, marzo de 1996:
La estructura del apéndice del sistema de multiprogramación "THE", reimpreso de Communications of the ACM, vol. 11, N ° 5, Mayo de 1968, págs. 345-346. Copyright (c) 1968, Association for Computing Machinery Inc. 

En Internet: http://info.acm.org/classics/mar96/


 5. Citas Clásicas del ISI

El ISI (Institute for Scientific Information) es un editor de bases de datos con un enfoque en productos basados ​​en la Web que ofrecen investigación académica, información en ciencias, ciencias sociales y artes y humanidades. Entre sus productos se encuentran el "Science Citation Index" y el "Social Science Citation Index". A medida que ISI recopila estadísticas de citas, periódicamente identifican trabajos que se han convertido en "clásicos de citas". La elección de un clásico de citas es sensible al contexto con respecto a la disciplina académica, teniendo en cuenta diferentes umbrales de frecuencia de citas para diferentes campos. Una vez que se elige un papel o libro como un clásico de citas, se invita al autor del trabajo a crear un comentario de 500 palabras que describa la investigación del autor, su génesis y las circunstancias que afectaron su progreso y publicación. Se alienta al autor a incluir el tipo de datos personales que rara vez se encuentran en publicaciones científicas formales como: obstáculos encontrados y caminos tomados. También les pedimos que mencionen las contribuciones de los coautores, cualquier premio u honor que haya recibido por su investigación, y cualquier nueva terminología derivada de su trabajo. Finalmente, les pedimos que especulen sobre los motivos por los que su escrito o libro haya sido citado tan a menudo ". 
[del Prefacio de E. Garfield, ISI Current Contents]
 

Un artículo y un libro de E. W. Dijkstra han alcanzado el estado de clásicos de citas, cada uno con más de 900 citas en la Web de la Base de datos de ciencias durante el período de 1945 a 2000. 
A continuación se presentan extractos de los dos ensayos sobre estos trabajos.

* Un ensayo de E. W. Dijkstra, fechado el 8 de diciembre de 1982, que reflexiona sobre el clásico de citas "Una nota sobre dos problemas en relación con los gráficos"
[Numr. Mates. 1: 269-71, 1959] en Current Contents, "This Week's Citation Classic", CC / Numero 7, 14 de febrero de 1983 [EWD 841A].


En aquel momento, era completamente consciente de haber encontrado dos gemas: en el momento del descubrimiento estaba debidamente emocionado y recuerdo habiéndolos presentado en una conferencia. En retrospectiva, parece extraño que haya esperado otros dos años antes de enviarlos para publicación. La razón principal fue la ausencia de revistas dedicadas a la informática automática, algo que la Fundación de Numerische Mathematik buscó remediar. Escribí y envié mi pequeño artículo - el segundo - tratando de ayudar al novato. Además, el síndrome de 'publicar o morir' aún no había llegado a los Países Bajos.
Este artículo ha sido citado por la siguiente razón. Las soluciones, tan elegantes como efectivas, ahora pertenecen al equipaje intelectual de cualquier informático bien educado, y el primero en publicarlos recibe el crédito y "recoge" las referencias. Me complace ver que ahora la comunidad informática comienza a considerarlos como "propiedad común" y se refieren a ellos sin mencionar mi nombre: su nacimiento se ha convertido en historia (como debe ser).


* Un ensayo de E. W. Dijkstra, fechado el 8 de mayo de 1988, que reflexiona sobre el clásico de citas A Discipline of Programming [Englewood Cliffs, NJ: Prentice-Hall, 1976] en Current Contents, "This Week's Citation Classic", CC / Numero 40, 3 de octubre de 1988.
 

A principios de la década de 1970 supe que tenía que forjar la programación en una disciplina matemática efectiva y tuve mi primera intuición de cómo hacer eso. Esta visión chocó con la de mi Departamento de Matemáticas en la Universidad Tecnológica de Eindhoven, que dejé en 1973 para convertirme en miembro de investigación de Burroughs (con la generosa carta de "hacer lo mío"). Entonces las cosas cambiaron rápidamente.

En la reunión de Blanchland del Grupo de Trabajo 2.3 de la Federación Internacional para el Procesamiento de la Información sobre "Metodología de Programación”, durante la noche del 23 al 24 de octubre de 1973, todas las piezas encajaron. Esa noche no pude dormir y me encontré a mí mismo preparando mi conferencia; Con mi cerebro ardiendo, salí de la cama a las 2:30 a.m. y escribí durante más de una hora.


No solo mi antiguo departamento no estaba preparado para ello. Cuando, ocho meses después, presenté un artículo bajo el título: "Comandos guardados, no determinación y un cálculo para la derivación de programas" a las "Communications of the ACM", un
árbitro se opuso tan fuertemente que tuve que eliminar "un cálculo" del título [cambiándolo a "Comandos guardados, no determinación y derivación formal de programas "]. Este documento: [CACM 18: 453-8. 1975, citado 85 veces)] presentó los ingredientes desnudos. La monografía "Una disciplina de programación" desarrolló la metodología y la aplicó a muchos problemas de programación.



Introducción en la vida y los tiempos de Edsger W. Dijkstra: (pag 7-8)


Habiendo elegido estudiar física teórica, Dijkstra observó que muchos problemas en el campo requerían un cálculo extenso, por lo que decidíó aprender a programar. Gracias a su trabajo de descifrado de códigos en tiempos de guerra, los británicos lideraron el desarrollo de la informática europea en las décadas de 1940 y 1950. En 1951, Dijkstra asistió a una escuela de verano en programación en la Universidad de Cambridge. En marzo de 1952 obtuvo un trabajo de media jornada en el Centro de Matemáticas en Amsterdam, donde se involucró progresivamente en la programación de computadoras. ...Los diseñadores de hardware ... "nunca incluirían algo en la máquina a menos que yo pensara que estaba bien. Tenía que escribir la especificación funcional que era el manual de referencia de la máquina. Se referían a ella como "La prosa espantosa", era tan rigurosa como un documento legal ".

Dijkstra todavía no se había comprometido con una carrera en programación, un campo que era prácticamente desconocido en los Países Bajos. "Yo terminé mis estudios en Leiden lo más rápido posible. La física era una disciplina intelectual muy respetable. Le expliqué a [Aad] van Wijngaarden [su asesor y uno de los primeros pioneros de la informática holandesa] mi duda de ser programador. Le dije que extrañaba la disciplina intelectual subyacente de la física. Estuvo de acuerdo en que hasta ese momento no había mucha disciplina de programación, pero luego explicó que las computadoras automáticas estaban aquí para quedarse, que estábamos al principio y porque no podía ser una de las personas llamadas a hacer de la programación una disciplina respetable en los años venideros ". Las dudas de Dijkstra reflejaban la generalizada ignorancia sobre la programación. Cuando Dijkstra solicitó una licencia para casarse con M. C. Debets, una colega que también era programadora, los burócratas no reconocieron al programador como una profesión, por lo que de mala gana se autodenominó "físico teórico".

Fuente: "Edsger W. Dijkstra: "Appalling Prose and the Shortest Path", en Out of their Minds, The Lives and Discoveries of 15 Great Computer Scientists, D. Shasha y C. Lazere, Copernicus, 1995

                                           ----------------------------------------------------

Al mirar hacia atrás en cualquier tipo de movimiento o revolución, a uno siempre le gusta señalar el comienzo: "Todo comenzó allí, todo comenzó con el famoso discurso de tal y tal ... "Si la programación estructurada puede considerarse una revolución, entonces seguramente el hito de Dijkstra: El artículo, "Programación considerada como una actividad humana" ("Programming Considered as a Human Activity"), publicado en 1965, marca su comienzo. Prácticamente todo el evangelio de la programación estructurada está contenida en algunas pocas páginas: los argumentos en contra de las declaraciones GOTO, la noción de diseño de arriba hacia abajo, el énfasis en la corrección y calidad del programa (o "elegancia", como Dijkstra prefiere llamarlo), y el fuerte argumento en contra de los programas que se modifican a sí mismos.

Además de estos conceptos fundamentales, hay algunas frases bastante clásicas que aparecieron por primera vez en este documento y que han aparecido
en docenas de artículos y libros posteriores. Por ejemplo, cuando se discute el enfoque de "divide y vencerás" que caracteriza al diseño de arriba a abajo. Dijkstra admite que "tengo una cabeza muy pequeña y debo vivir con ella". Lo que nos parece obvio hoy en día era una idea bastante novedosa en 1965: la idea de que mientras las computadoras eran, y siguen siendo, cada vez más rápidas y poderosas, los seres humanos no lo eran. 

El tema se repite una y otra vez, y es esencialmente el tema principal del discurso de Dijkstra de 1972, "El programador humilde".

... [Una vez que lo lees, puedes ver por qué Dijkstra tiene la reputación que tiene. Su escritura es sucinta y sin embargo convincente. Leer a Dijkstra, dijo alguien, se ha comparado con comer mazapán: es mejor comer bocados muy pequeños, masticar lentamente y digerir bocado antes de pasar al siguiente bocado.
Fuente: Classics in Software Engineering, editado por E. Y. Yourdin, Yourdin Press, 1979.
                                      ------------------------------------------------------------

En 1967, habiendo estado en Eindhoven cinco años, la vida profesional de Dijkstra se estaba desmoronando. Sus colegas en el Departamento de matematicas, que aún despreciaban la informática, habían rechazado esencialmente la tesis de su primer doctorado. Con su Sistema  Operativo completo, se hundió en una depresión, y la depresión empeoró. "Me di cuenta de que mis proyectos anteriores solo habían sido ejercicios de agilidad. Ahora tenía que enfrentar la complejidad en sí misma y tratar de encontrar la mejor manera de hacer cosas difíciles. Pero me llevó mucho tiempo reunir el coraje para hacer eso. Alan Turing se suicidó; Kurt Gödel estaba internándose en un hospital psiquiátrico. Estaba terriblemente asustado".

“Admiro mucho a mi esposa por la forma en que me guió durante ese período. Estaba esencialmente incomunicado, apenas hablaba, no trabajaba. Me sentaba toda la noche en silencio mirando las paredes blancas de nuestra sala de estar. Finalmente, una noche a las dos y media, mi esposa me recogió llorando en la alfombra de esa habitación".

“Desde ese momento me di cuenta de que había que hacer algo. Empecé a escribir "Notas sobre programación estructurada" por una razón terapéutica. Cuando el texto estuvo escrito, sabía lo que tenía que hacer, y sabía cómo iba a atacarlo".


“La historia de ese texto también es muy sorprendente. Envié una copia a todos mis colegas en el departamento, y la reacción fue el silencio o comentarios mordaces. Pero para entonces me había recuperado y sus comentarios no me hicieron daño. Entonces envié 20 copias a mis colegas, la mitad en Europa, la mitad en los Estados Unidos. Ahora, gracias a la máquina Xerox ese texto ha sido copiado miles de veces. Se ha extendido por elmundo como un incendio forestal. Años más tarde, todavía me encuentro con personas que dicen que tienen una copia de cuarta o quinta generación, apenas legible."
Fuente: "The Sage of Software", S. Olson, Science, enero / febrero de 1984.


                                     -----------------------------------------------------------


Entre los aproximadamente 50 participantes [en la Conferencia de Trabajo sobre Ingeniería de Software, celebrada del 7 al 10 de octubre de 1968, en Garmisch, Alemania], E. W. Dijkstra dominó la reunión. Realmente no solo hizo comentarios cínicos como "la difusión de errores cargados en el software es aterrador" y "no está claro que se deba culpar a las personas que fabrican software. Creo que los fabricantes se merecen usuarios mejores y más comprensivos". También dijo ya en esta fecha temprana:" Si la corrección en el funcionamiento de un software puede estar garantizado o no depende en gran medida de la estructura de lo concebido", y él había llamado muy apropiadamente a su documento:" Complejidad Controlada por ordenes jerárquicas de función y variabilidad ", presentando un tema que siguió a su vida en los siguientes 20 años. Algunas de sus palabras se han convertido en proverbios en informática como "Los tests son una forma muy ineficiente de convencerse a uno mismo de la corrección de un programa."
Fuente: prólogo de Friedrich L. Bauer a "Software Engineering — A European Perspective", editado por R. H. Thayer y A. D. McGettrick, pag. vi, IEEE, 1993.

                                ---------------------------------------------------------------

Desde el verano de 1973, cuando me convertí en investigador investigador de Burroughs, mi vida pasó a ser muy diferente de lo que había sido antes. La rutina diaria cambió; en lugar de ir a la universidad todos los días, donde solía pasar la mayor parte de mi tiempo en compañía de otros, ahora iba allí solo un día a la semana y pasaba la mayor parte del tiempo, es decir, ¡cuando no viajaba! - Solo en mi estudio. En mi La soledad, el correo y la palabra escrita en general se hicieron cada vez más importantes. La circunstancia de que mi empleador y yo tuvimos el el Océano Atlántico entre nosotros fue un incentivo adicional para mantener un registro bastante completo de lo que estaba haciendo. La parte pública de esa producción encontró su lugar en lo que se conoció como "las series EWD", que puede verse como una forma de correspondencia científica, posible desde el advenimiento de la fotocopiadora. (Esa misma fotocopiadora hace que sea difícil estimar su distribución real; yo mismo hago alrededor de dos docenas de copias de mis textos, y además sus destinatarios fueron alentados para actuar como nodos adicionales del árbol de distribución.) ...
Nuenen, 19 de julio de 1981 Edsger W. Dijkstra
Fuente: Prefacio a escritos seleccionados sobre computación: una perspectiva personal, E. W. Dijkstra, Springer-Verlag, 1982.

                                -----------------------------------------------------------------------

Los funcionarios de la Universidad de Texas en Austin creen que han logrado un éxito significativo al persuadir a Edsger W. Dijkstra de [ser el primero en ocupar una] cátedra en informática. Ganador del prestigioso premio Premio M. Turing de la Asociación de Maquinaria para Computación en 1972 [sic]  por su trabajo en lenguajes de programación y estructura, el Sr. Dijkstra ha sido, durante los últimos 11 años, el único investigador de Burroughs Corporation -- su trabajo ha sido pensar.
Fuente: The Chronicle of Higher Education, J. A. T., 4 de abril de 1984, p. 12)


                             ----------------------------------------------------------------------------

Edsger es, con todo lo que la palabra implica, un perfeccionista. Su programación y sus matemáticas están fuertemente guiadas por su preocupación por la claridad de notación y exposición, y de hecho por lo que él justifica con justicia: belleza. Así sus descripciones de problemas y soluciones, tanto en sus conferencias y trabajos publicados, como en su serie de documentos EWD, distribuidos a través de una red de amigos y colegas que recuerdan una reminiscencia de la literatura rusa "samizdat" suelen ser vívidos y convincentes.
Fuente: Brian Randell, prólogo de Beauty is Our Business, editado por W. H. J. Feijen, A. J. M. Van Gasteren, D. Gries y J. Misra,
Springer-Verlag, 1990.


                       -------------------------------------------------------------------------------- 


La influencia de Dijkstra puede atribuirse a una mente penetrante; una rara honestidad intelectual que no le permite comprometer sus principios; y una forma de usar las palabras  que pocos informáticos pueden igualar. Estos factores lo hacen parecer cáustico, a veces, como diciendo lo que él cree pero no lo que queremos escuchar. (Un colega dijo una vez: "Dijkstra tiene razón, pero usted no diga esas cosas").
Fuente: Nota histórica 10.1, Un enfoque lógico para las matemáticas discretas, D. Gries y F. B. Schneider, Springer-Verlag, 1993.



En palabras de Edsger: (Dijkstra) (pag 9-10)

Una selección de citas favoritas recopiladas de Vicki Almstrum, Tony Hoare, Niklaus Wirth, Wim Feijen y Rajeev Joshi.
La información complementaria entre corchetes después de muchas citas indica las fechas en que se habló o publicó la declaración, las traducciones, u otra información aclaratoria conocida por la persona que envía la cita:


Consejo para un investigador prometedor: "Solo haz lo que solo tú puedes hacer".
 
"Los problemas del mundo real son los que quedan cuando ignoras sus soluciones conocidas".

 
"Diseñe siempre su programa como miembro de toda una familia de programas, incluidos los que tienen probabilidades de tener éxito".


"Evite el razonamiento operacional como la peste".

[NT: Piaget: "Operational Stage": 
https://en.wikipedia.org/wiki/Piaget%27s_theory_of_cognitive_development ]
 
"Separar importa".

[NT. Ver: https://en.wikipedia.org/wiki/Separation_of_concerns ] 
[NT: Se trata de un chiste de Dijkstra]
 
"El prisionero se enamora de sus cadenas".


"Un lenguaje de programación es una herramienta que tiene una profunda influencia en nuestros hábitos de pensamiento".
 
"Rezo a diario para que más de mis compañeros programadores encuentren los medios para liberarse de la maldición de la compatibilidad".
[1972, conferencia
adjudicación del premio Turing]
 
"El programa y la prueba de corrección crecen de la mano". 

[1972, conferencia de adjudicación del premio Turing]
 

"La inteligencia es, con mucho, nuestro recurso más escaso". 
[1972, conferencia de adjudicación del premio Turing]
 

“En su calidad de herramienta, las computadoras no serán más que una onda en la superficie de nuestra cultura. En su calidad de desafío intelectual, no tienen precedentes en la historia cultural de la humanidad ". 
[1972, conferencia de adjudicación del premio Turing]

“El programador competente es plenamente consciente del tamaño estrictamente limitado de su propio cráneo; Por tanto, se acerca a la tarea de programación con total humildad y, entre otras cosas, huye de los trucos ingeniosos como de la peste ". 
[1972, conferencia de adjudicación del premio Turing]
 

"Por la ausencia de una bibliografía, no ofrezco explicación ni disculpa". 
[Prólogo de A Discipline of Programming, Prentice-Hall, 1976]
 

"El progreso solo es posible si nos entrenamos para pensar en programas sin pensar en ellos como piezas de código ejecutable".
[23 de agosto de 1979]
 

"Esta solución es gloriosamente no determinista". 
[23 de agosto de 1979]
[NT: imposible conocer el contexto de la frase y poder ajustar mejor la traducción]
 
"Mi hija y yo duchándonos con igual frecuencia es un pensamiento aterrador para los dos". [21 de febrero de 1984; comentando un algoritmo de exclusión mutua en el que los dos componentes tienen acceso alternativo a la sección crítica.]



"De plichten van een docent zijn divers, die van het gehoor ook". 
["Los deberes de un maestro son varios, pero los de la audiencia también ".]
 
"Ik hou van wiskunde, maar spaar me de mathematen". 

["Me encantan las matemáticas, no puedo soportar a los matemáticos".]
 

"Si en algún lugar lees "en profundidad", ignóralo".
 
"Nada es tan caro como cometer errores".

 
"Las pruebas del programa pueden, en el mejor de los casos, mostrar la presencia de errores, pero nunca su ausencia".

 
"La ingeniería de software está programando cuando no puedes".
 

"Debemos darle a la industria no lo que quiere, sino lo que necesita".

"Esperar es una actividad muy divertida: no puedes esperar el doble de rápido". 
[28 de febrero de 1984]
 

"Ayuda a la coordinación mano-ojo si, al hacer sus fórmulas, canta suavemente la notación". [1 de septiembre de 1992]
 

“No intentes cambiar el mundo. Dale al mundo la oportunidad de cambiarse a sí mismo”. [21 de abril de 2000]

"Si bien los planes de estudio actuales enseñan ampliamente las matemáticas existentes, prestan poca atención a las matemáticas, es decir, a la pregunta de cómo diseñar y presentar soluciones. Si en algun momento se llega a prestar alguna atención a estos problemas, se tratan por separado: diseño de soluciones, es decir, "resolución de problemas" o "invención matemática", y es visto como un problema psicológico, como una cuestión de intuición matemática, mientras que la presentación es vista como una cuestión de estilo personal o como una cuestión de educación. La mayoría de los matemáticos consideran psicología y la pedagogía como ciencias demasiado blandas para ser respetables y, en consecuencia, el tema de cómo hacer matemáticas casi ha sido tabú”.
[prólogo de Sobre la forma de los argumentos matemáticos, A. J. M. Van Gasteren, Lecture notes in Computer Science, editado por G. Goos y J. Hartmanis, Springer-Verlag, 1987]


“Enseñar a los jóvenes desprevenidos el uso efectivo de métodos formales es una de las alegrías de la vida porque es extremadamente gratificante. En unos pocos meses, encuentran su camino hacia un mundo nuevo con un grado de confianza justificado que es radicalmente nuevo para ellos; En pocos meses, su concepto de cultura intelectual ha adquirido una dimensión radicalmente nueva. Para mi gusto y estilo, eso es lo que
Se trata de la educación. Las universidades no deberían tener miedo de enseñar novedades radicales; por el contrario, es su llamado a dar la bienvenida a la
oportunidad de hacerlo. ”

[“ Sobre la crueldad de enseñar realmente ciencias de la computación ”, CACM, 32 (12), diciembre de 1989, página 1404]

"El llamado "lenguaje natural" es maravilloso para los fines para los que fue creado, como ser grosero, contar chistes, hacer trampa o amar (y los teóricos de la crítica literaria pueden incluso no decir nada al respecto), pero es irremediablemente inadecuado cuando tenemos que lidiar inequívocamente con situaciones de gran complejidad, situaciones que surgen inevitablemente en actividades tales como legislación, arbitraje, matemáticas o programación ". 
[prólogo de Métodos formales de enseñanza y aprendizaje, editado por C. N. Dean y M. G. Hinchey, Prensa académica, 1996]

"Quiero decir, si dentro de 10 años, cuando estés haciendo algo rápido y sucio, de repente te imaginas que estoy mirando por encima de tu hombros y te dices a ti mismo, "A Dijkstra no le hubiera gustado esto", bueno, eso sería suficiente inmortalidad para mí".
"Introducción al Curso de cálculo" (EWD 1213), agosto de 1995]


“Muchos matemáticos obtienen parte de su autoestima al sentirse orgullosos herederos de una larga tradición de pensamiento racional; Me temo que idealizan a sus ancestros culturales".
["Una notación estúpida" (EWD 782)]


 “El matemático tradicional reconoce y aprecia la elegancia matemática cuando la ve. Propongo ir un paso más allá, y considerar la elegancia como un ingrediente esencial de las matemáticas: si es torpe, no es matemática". 
[" En la economía del hacer Matemáticas ”(EWD 1130), junio de 1992]

"No compitan conmigo: en primer lugar, tengo más experiencia, y en segundo lugar, he elegido las armas". 
[Durante la primera conferencia en "Capita Selecta ", 29 de agosto de 1996]

"Busca la brevedad, evitando la jerga". 
[Conferencia en "Capita Selecta", 5 de septiembre de 1996]
 

“Mantener una amplia gama de agilidades —mentales y físicas— requiere ejercicio regular [...]. Por eso los capaces siempre están ocupados".
[Conferencia, "Capita Selecta", 10 de octubre de 1996]
 


"Los matemáticos son como gerentes: quieren mejorar sin cambios". 
[Durante una reunión del Austin Tuesday Afternoon Club, Otoño de 1996] 

"Incluso ahora, mi primera reacción a las fórmulas, escritas por otra persona, es de repulsión - en particular cuando se utiliza una convención notacional desconocida -  cuando leo un artículo, mi reacción natural es saltarme las fórmulas ". 
[" Mis esperanzas de la informática" (EWD 709)] 

"Muestren a cualquier matemático un argumento realmente elegante que sea nuevo para él: en el momento en que se convierte en su propiedad intelectual, comienza a reír!”
[“ Mis esperanzas de la informática ”(EWD 709)]

".. Ya había llegado a la conclusión de que en la práctica de la informática, donde tenemos tanta libertad para hacer un lío, la elegancia matemática no es un lujo prescindible, sino una cuestión de vida o muerte ". 
[" Mis esperanzas de la informática "(EWD 709)]

“Para mí, el primer desafío para la ciencia de la computación es descubrir cómo mantener el orden en un universo finito, pero muy grande y discreto que está intrincadamente entrelazado. Y un segundo desafío, pero no menos importante, es cómo moldear lo que has logrado al resolver el primer problema, en una disciplina que se pueda enseñar: no es suficiente perfeccionar tu propio intelecto (que se unirá a ti en tu tumba), debes enseñar
a los otros otros cómo pulir los suyos. Cuanto más te concentres en estos dos desafíos, más claro verás que son solo dos lados de la misma moneda: enseñar a uno mismo es descubrir lo que se puede enseñar
". 

[" Mis esperanzas de la informática "(EWD 709)]


Comentarios desde la pizarra: (pag 11-12)

Al ser una selección de citas publicadas por EWD al comienzo de varias conferencias, recopiladas por Vicki Almstrum, Pete Manolios, Tony Hoare, Wim Feijen, Rajeev Joshi y Rustan Leino. Las fechas entre corchetes son ocasiones en las que las la cita fue publicada.

Árabe ("Algol") = "demonio"

Astronómico ("Algol") = "estrella intermitente" 

[23 de agosto de 1979]

"Más que cualquier otra cosa, las matemáticas son un método ”. 
Morris Kline [24 de agosto de 1979]

"Siempre es difícil, y no es poca cosa, cambiar los neumáticos de un vehículo en movimiento ”. 

Kolodzei

"Académico: un término de oprobio aplicado a aquellos que hacen bien su trabajo mediante aquellos que no pueden".
Sir Ernest Gowers en The Complete Plain Words

[NT Traducción arriesgada, pero que creo que capta el significado original]

"Cuando uno no puede inventar, al menos debe mejorar". 

Galleta de la fortuna [9 de septiembre de 1992] 

"No trates de enseñarle a un cerdo a cantar. Pierdes el tiempo y molesta al cerdo".
Anónimo [29 de septiembre de 1994]

"Cállate y codifica"
Aviso en la pared de la oficina de un administrador de software industrial, 
1970 [6 de octubre de 1994]

"Elegante: [...] ingeniosamente simple y efectivo" 

Concise Oxford Dictionary [11 de noviembre de 1994]

"Inteligente:1 [...]; 2 [...]; 3: capaz de realizar algunas de las funciones de una computadora [...] 
"Webster’s Collegiate Dictionary [1 de diciembre de 1994]

"Un cuerpo sobre el que no se ejercen fuerzas persiste en su estado de reposo o movimiento uniforme". 

Después de I. Newton:
[21 de febrero de 1984; Edsger expresa su "aborrecimiento" del análisis de casos superfluo.]

"De fluit herwint terrein". 

Hubert Bahrwasser (1950) 
[Literalmente: "La flauta recupera los terrenos perdidos"] [28 de febrero de 1984]

"¡Oh, esa sería una gran idea!" 

Mahatma Gandhi (cuando se le preguntó qué pensaba de la civilización occidental) 
[20 de marzo de 1984]

“Siempre es difícil pensar y razonar en un nuevo idioma; y esa dificultad desanimó a todos menos a los hombres de mentes enérgicas ". Charles
Babbage [27 de marzo de 1984]

“¡También tengo un Bosendorfer!” 

Donald E. Knuth [24 de abril de 1984]
[NT. Un Bösendorfer es un piano: https://www.boesendorfer.com/en]

"Ziezo, Die hangt weer". Jo Vincent
 [Aproximadamente: "Está bien, lo colgamos a él de nuevo"] 
[1984.05.08; Jo Vincent, una soprano, dijo una vez esto después de ella.
Enésima actuación (N >>> 0) de la Pasión de San Mateo de Bach]


"Characteristica Universalis". 

G. W. Leibniz [5 de octubre de 1982]
[NT: https://en.wikipedia.org/wiki/Characteristica_universalis ]
[NT: a universal and formal language imagined by Gottfried Leibniz able to express mathematical, scientific, and metaphysical concepts. Leibniz thus hoped to create a language usable within the framework of a universal logical calculation or calculus ratiocinator. ]
[NT: calculus ratiocinator: is a theoretical universal logical calculation framework],

"Pero todo genio es propenso a ser un asno a veces". 

Dame Rebecca West

"No puedo imaginar por qué las religiones elegantes deberían tener un efecto tan horrible en la gramática de uno mismo". 

Dorothy L. Sayers

"Laat dan de linkerhand niet weten wat de rechter doet". 

["Que la mano izquierda no sepa lo que hace la mano derecha"]. Mattheus 6: 3

"Su ópera 'Palestrina' y su elaborada cantata romántica: 'Von Deutscher Seele' son obras que llevan a sus admiradores a la reverencia".
Percy A. Scholes re: Hans Pfitzner

[NT:  Opera 'Palestrina': Auth: Hans Pfitzner: 
https://www.youtube.com/watch?v=o-_oGOv4q3c  
Opera 'Von Deutscher Seele' Auth: Hand Pfitzner:
https://www.youtube.com/watch?v=ZntUKY_rFyk ]

"Omitir palabras innecesarias". 
Strunk & White, Elements of Style (Elementos de Estilo)

"El Director es el General en el campo de batalla de la música". 

Percy A. Scholes
[NT: Percy Scholes: https://en.wikipedia.org/wiki/Percy_Scholes ] 

“Muchas personas morirían antes de lo que piensan. De hecho lo hacen". 

Bertrand Russell
[NT: Original quote: 
"We all have a tendency to think that the world must conform to our prejudices. The opposite view involves some effort of thought, and most people would die sooner than think—in fact, they do so. But the fact that a spherical universe seems odd to people who have been brought up on Euclidean prejudices is no evidence that it is impossible".
Bertrand Russell 
Todos tenemos una tendencia a pensar que el mundo debe ajustarse a nuestros prejuicios. La visión opuesta implica cierto esfuerzo de pensamiento, y la mayoría de las personas morirían antes de pensarlo, de hecho, lo hacen. Pero el hecho de que parece un universo esférico extraño para las personas que han sido criadas con prejuicios euclidianos no hay evidencia de que sea imposible ".Bertrand Russell ] 

"Nunca 2 cosas pueden ser más iguales" 

Robert Recorde, 1557, en "Piedra de afilar de Witte", símbolo de defensa ‘=’ para la igualdad
[NT: ver: https://en.wikipedia.org/wiki/Equals_sign ]

"Al het honden waren, zou je ze niet naar de tentoonstelling sturen". 

El padre de Edsger [Literalmente: "Si fueran perros, no los enviarías a la exposición".]

“Los símbolos matemáticos cruzan las fronteras lingüísticas con menos facilidad que las ideas matemáticas [...]. De hecho, ningún símbolo matemático estadounidense,excepto quizás el dólar ($), ha encontrado aceptación en Europa ". 
Florian Cajori, 1929
[NT. Florian Cajori: https://en.wikipedia.org/wiki/Florian_Cajori 

"Nunca leí un libro antes de escribir su crítica, eso perjudica a uno". 

Sidney Smith
[NT: "I never read a book I must review, it prejudices you so" es un aforismo generalmente atribuido a Oscar Wilde.En realidad fue acuñado por Sydney Smith (1771–1845) Que dijo: "I never read a book before reviewing it; it prejudices a man so".Pero antes de esto, fue: Georg Christoph Lichtenberg (1742 - 1799), que dijo "one of the greatest creations of the human mind is the art of reviewing books without having read them." esta escrito en su: 'Sudelbuch'. Extraido de: http://www.artandpopularculture.com/I_never_read_a_book_I_must_review%2C_it_prejudices_you_so ]




"Zorg dat je formules kent en onthoud dat, als je meer dan vijf regels nodig hebt, je op de verkeerde weg bent". 

La madre de Edsger ["Se trata de conocer las fórmulas y recuerda que si necesitas más de cinco líneas, es que estás en el camino equivocado ". 
[La madre aconsejando al niño Edsger en sus primeras lecciones de trigonometría.]

“Si las palabras pudieran curar los males de nuestra profesión de programación, cuán saludable y altamente respetada sería nuestra profesión ahora”. 

C.A.R. Hoare
[NT: C.A.R. Hoare: https://es.wikipedia.org/wiki/C._A._R._Hoare]

"Ella hizo lo mejor que pudo, pero su mejor esfuerzo no fue demasiado bueno". 

Inscripción en una tumba


"El truco brillante ya no se considera matemática respetable". 
E.T. Bell (en El desarrollo de las matemáticas)
"Algunos problemas se evaden mejor que se resuelven". 
C.A.R. Hoare
 
"Vooruitgang pappa, daar helpt niets tegen". 
Rutger M. Dijkstra ["Progreso, papi, no hay cura para eso".]
 
"La nostalgia no es lo que solía ser". 
Anónimo
 
"Das Publikum ist wie ein Schwein: es frisst alles, sogar das Gute". 
Arthur Schnabel ["Su audiencia es como un cerdo; se lo traga todo incluso las cosas buenas".
[NT: Arthur Schnabel: Pianist: https://en.wikipedia.org/wiki/Artur_Schnabel ]

"En un triángulo rectángulo, la suma de los cuadrados es la misma" 
Teorema de Pitágoras según Anon.
[NT: Anon ? ]

"El hombre no es realmente malvado, no tiene sentido". 
W. Faulkner

"El uso de terminología antropomórfica cuando se trata de sistemas informáticos es un síntoma de inmadurez profesional". 
EWD 498

"25 periodistas asesinados en 26 países" 
Titular, International Herald Tribune

"Y, mientras enfrentamos hechos, tomamos nota de la opinión de muchos observadores que desde los días de Aquino la ciencia ha sido temida y secretamente odiado por nueve seres humanos de cada diez que tienen suficiente ánimo para odiar o temer cualquier cosa". 
Eric Temple Bell en El desarrollo de las matemáticas
 
"Las máquinas no piensan y por lo tanto pueden ser mucho más fiables que los humanos ". F. L. Bauer "Marktoberdorf proceedings", 1996 [septiembre 3, 1996]


“Alabada sea la humanidad, mi muchacho. Eso les hará pensar que eres de mente abierta".
El consejo de Winston Churchill a R. V. Jones (que acababa de ser nombrado profesor de física) [septiembre 19 de 1996]
[NT: In 1993 he was first recipient of the R. V. Jones Intelligence Award, which the CIA created in his honour.]
[NT: RV Jones and the Birth of Scientific Intelligence:  https://ore.exeter.ac.uk/repository/bitstream/handle/10871/10661/GoodchildJ.pdf ]

"Un gobierno conservador es una hipocresía organizada."
Benjamin Disraeli (1804-1881) [noviembre 7, 1996]

"Las contribuciones deben ser en inglés o americano".
IPL [12 de noviembre de 1996]




"Capita Selecta"
[Otoño de 1994]
[NT: Lecture in Capita Selecta 1994] 












[NT: Don’t compete with me: firstly, I have more experience, and secondly, I have chosen theweapons. 
(During first lecture in Capita Selecta, August 29, 1996) 

Maintaining a large range of agilities mental and physical requires regular exercise [..]. Thatis why the capable are always busy. 
(Lecture, Capita Selecta, October 10, 1996)
From: "In Memoriam: Edsger Wybe Dijkstra (1930-2002)  https://www.cs.utexas.edu/users/EWD/MemRes(USLtr).pdf ]











Monday, September 9, 2019

1972 A.M. Turing Award: Edsger Wybe Dijkstra

Original: https://amturing.acm.org/award_winners/dijkstra_1053701.cfm

EDSGER WYBE DIJKSTRA
Netherlands – 1972

By: Hamilton Richards


Por contribuciones fundamentales a la programación como un gran desafío intelectual; por insistencia elocuente y demostración práctica de que los programas deben estar compuestos correctamente, no solo depurados en la corrección; para iluminar la percepción de problemas en los fundamentos del diseño del programa.

Edsger W. Dijkstra nació en 1930 en Rotterdam, Países Bajos. Su padre, profesor de química en la escuela secundaria, fue presidente de la Sociedad Química Holandesa. Su madre, que nunca tuvo un trabajo formal, tuvo una influencia duradera en su enfoque de las matemáticas y su énfasis en la elegancia.

Graduado de la escuela secundaria en 1948 y con la intención de convertirse en un físico teórico, Dijkstra pensó que la capacidad de usar una computadora electrónica podría ser ventajosa. Tres años de programación en el Centro de Matemáticas de Amsterdam lo convencieron de que el desafío intelectual de la programación excedía al de la física teórica, pero ¿dónde estaba el sólido cuerpo de conocimiento que podría apoyar la programación como una disciplina intelectualmente respetable? Su jefe, A. van Wijngaarden, lo convenció de que en los años venideros podría ser una de las personas para hacer de la programación una disciplina respetable. Completando su estudio de física lo más rápido que pudo, Dijkstra abandonó la física para programar.


En el Centro de Matemáticas, un proyecto importante fue construir la computadora ARMAC. Para su inauguración oficial en 1956, Dijkstra ideó un programa para resolver un problema interesante para un público no técnico: dada una red de carreteras que conectan las ciudades, ¿cuál es la ruta más corta entre dos ciudades designadas? Los algoritmos más conocidos tenían tiempos de ejecución que crecían como el cubo del tamaño de la red; el tiempo de ejecución del algoritmo de Dijkstra creció solo como el cuadrado. Desarrollado en 20 minutos mientras Dijkstra se relajaba en la terraza de un café con su prometida, Maria (Ria) C. Debets, su algoritmo de ruta más corta todavía se usa en aplicaciones como el software de cambio de paquetes para las comunicaciones por computadora.

Casi al mismo tiempo, Dijkstra inventó otro algoritmo de red muy eficiente para usar en el diseño de la computadora X1. Conocido como el algoritmo de árbol de expansión mínimo, encuentra la longitud de cable más corta necesaria para conectar un conjunto dado de puntos en un panel de cableado. Publicó ambos algoritmos de red en un solo artículo en 1959. [3]

Cuando Dijkstra y Maria Debets se casaron en 1957, los ritos matrimoniales requerían que declarara su profesión. Cuando declaró que era un programador, las autoridades objetaron que no existía tal profesión, y el certificado de matrimonio lo identifica como un físico teórico.
 
 
 


Mientras estaba en el Centro de Matemáticas, Dijkstra trabajó en el muy importante problema de "interrupción en tiempo real", que se convirtió en el tema de su Ph.D. tesis [2]. Varios fabricantes de computadoras de la época se enfrentaban al mismo problema, pero no habían abordado el problema con el rigor que Dijkstra le aplicaba.

En el Centro de Matemáticas, Dijkstra y J.A.Zonneveld desarrollaron el primer compilador para Algol-60, un lenguaje de programación de alto nivel diseñado por un comité internacional. Completado en agosto de 1960, su compilador es anterior al segundo compilador Algol-60 en más de un año. Una de las grandes innovaciones de Algol-60, para la cual Dijkstra fue instrumental, fue la introducción explícita de la recursividad. Probablemente fue el primero en introducir la noción de una "pila" para traducir programas recursivos, informando este trabajo seminal en un breve artículo [4]. En el Oxford English Dictionary, los términos "vector" y "stack" en un contexto informático se atribuyen a Dijkstra.


En 1962, Dijkstra fue nombrado profesor de matemáticas en la Universidad Tecnológica de Eindhoven. Allí construyó el sistema operativo THE (llamado así por la universidad, entonces conocida como Technische Hogeschool te Eindhoven), que ha influido en el diseño de muchos sistemas operativos posteriores. Introdujo una serie de principios de diseño que se han convertido en parte del vocabulario de trabajo de cada programador profesional. Al presentar la reimpresión del artículo de Dijkstra sobre EL sistema operativo en la edición del 25 aniversario de Communications of the ACM, el Editor en Jefe escribió: “Este proyecto inició una larga línea de investigación en arquitectura de sistemas multinivel, una línea que continúa hasta el hoy en día porque la modularidad jerárquica es un enfoque poderoso para organizar sistemas grandes ".  

 En 1968, Dijkstra publicó una breve carta al editor en Comunicaciones de ACM, titulada “GOTO es dañino” [5], argumentando que la declaración GOTO, que se encuentra en muchos lenguajes de programación de alto nivel, es una fuente importante de errores , y por lo tanto debe ser eliminado. Se produjo una conmoción gigante en la comunidad informática, con combatientes tomando posiciones en todos los lados del problema. El debate ha remitido desde hace mucho tiempo; Los lenguajes de programación ahora ofrecen alternativas al GOTO. Pocos programadores de hoy lo usan libremente, y la mayoría nunca lo usa en absoluto.

Alrededor de este tiempo, Dijkstra comenzaba a formular algunas de sus primeras ideas sobre la programación como disciplina matemática. Señaló que la productividad y la confiabilidad del software están estrechamente relacionadas con el rigor en el diseño, lo que elimina las fallas del software en una etapa temprana. Estaba particularmente impresionado por la inmensidad de la llamada "crisis del software" cuando asistió a la famosa Conferencia de la OTAN de 1968 sobre Ingeniería del Software, la primera conferencia dedicada a la creciente epidemia de software entregada tarde, por encima del presupuesto y llena de fallas. Convencido de que la metodología de programación debería convertirse en una disciplina científica, decidió estudiar cómo evitar la complejidad en los diseños de software.

Las "Notas sobre Programación Estructurada" de Dijkstra circularon a algunos amigos por sus comentarios y pronto se convirtieron en una sensación, y las grandes corporaciones iniciaron programas basados en sus ideas para integrar prácticas rigurosas en sus proyectos de programación. Posteriormente publicado [1] y aún impreso después de casi 40 años, este trabajo ha tenido un gran impacto en todas las áreas de la informática, desde la enseñanza de los primeros cursos de programación hasta el diseño de software complejo. Los análisis matemáticos del diseño y las especificaciones del programa se han convertido en actividades centrales en la investigación en ciencias de la computación.

El discurso de aceptación de Dijkstra para el Premio ACM Turing de 1972, titulado "El humilde programador" [6], incluye una gran cantidad de observaciones sobre la evolución de la programación como disciplina y prescripciones para su continuo crecimiento. Se requiere lectura para cualquier aspirante a informático.

En agosto de 1973, Dijkstra se unió a Burroughs Corporation como investigador asociado. Sus deberes consistían en consultar en algunos de los centros de investigación de la compañía varias veces al año y realizar su propia investigación. Entre sus contribuciones significativas de este período está el desarrollo de una teoría de la no determinación [7], un concepto fuera de las matemáticas tradicionales. Dijkstra fue el primero en observar que no solo la no determinación es central en los cálculos cuyos componentes interactúan de forma asíncrona, sino que incluso cuando no hay asincronía, la no determinación es una herramienta efectiva para razonar sobre los programas y simplificar el diseño del programa.
  
Su otra contribución importante durante este período fue el desarrollo de "transformadores de predicados" como base para definir la semántica de los programas y como una herramienta para derivar programas. Sus ideas refinaron las ideas anteriores de C. A. R. Hoare para una base axiomática de la programación de computadoras. Expuso estas ideas junto con la no determinación en A Discipline of Programming [8], que ha sido identificado por el Science Citation Index como un "clásico de referencia".

Los años de Burroughs fueron los más prolíficos de Dijkstra en términos de artículos de investigación. Escribió casi 500 documentos en la serie EWD, la mayoría de ellos informes técnicos, para circulación privada dentro de un grupo selecto.

Como visitante frecuente del Centro de Investigación Burroughs en Austin, Texas, a fines de la década de 1970, Dijkstra se había familiarizado con el Departamento de Informática de la Universidad de Texas en Austin. En 1984, Dijkstra aceptó un nombramiento como Presidente del Centenario de Schlumberger del Departamento.

Durante sus dieciocho años en Austin, Dijkstra continuó como un investigador prolífico. Habiéndose embarcado anteriormente en un proyecto a largo plazo para "Racionalizar argumentos matemáticos", en Austin fue coautor de un libro sobre cálculo de predicados [9] que aboga por un "estilo de prueba de cálculo" para argumentos matemáticos. Continuó aplicando su método en varias áreas diversas: geometría coordinada, álgebra lineal, teoría de grafos, diseños de programas secuenciales y distribuidos, y muchos otros.

Los años en Austin vieron a Dijkstra en su mejor momento como maestro y mentor para una generación de estudiantes de pregrado y posgrado. Desde sus días en la Universidad Tecnológica de Eindhoven, había pensado profundamente en cómo se debía enseñar la informática, y Austin le brindó la oportunidad de probar sus ideas [10]. Disfrutó de la experiencia, apreciando "... estudiantes brillantes que lo convirtieron en un desafío y un privilegio dar conferencias para ellos" [11]. Instó a las universidades a no retroceder ante el desafío de enseñar novedades radicales. 

Con motivo del 60 cumpleaños de Dijkstra en 1990, el Departamento de Ciencias de la Computación organizó un seminario de dos días en su honor. Vinieron oradores de todos los Estados Unidos y Europa, y un grupo de informáticos contribuyó con artículos de investigación que fueron editados en un libro [12].

Dijkstra se retiró de la enseñanza activa en noviembre de 1999. Para conmemorar la ocasión y celebrar sus más de cuarenta años de contribuciones fundamentales a la ciencia de la computación, el Departamento de Ciencias de la Computación organizó un simposio, que tuvo lugar en su 70 cumpleaños en mayo de 2000. El simposio Asistieron una gran cantidad de destacados informáticos, así como estudiantes actuales y antiguos.

Al regresar a los Países Bajos en febrero de 2002, Dijkstra murió en Nuenen el 6 de agosto de 2002.




Aforismos y epigramas de Dijkstra

Dijkstra fue famoso por su ingenio y elocuencia, como en su comentario:

"La pregunta sobre si las computadoras pueden pensar es como preguntar de si los submarinos pueden nadar"


O su consejo a un investigador prometedor, que preguntó cómo seleccionar un tema para la investigación:

"Haz solo lo que solo tú puedes hacer"

Y su comentario en su discurso de aceptación del Premio Turing:

"En su calidad de herramienta, las computadoras no serán más que una onda en la superficie de nuestra cultura. En su calidad de desafío intelectual, no tienen precedentes en la historia cultural de la humanidad".

A continuación se recopilan algunos más de los otros epigramas memorables de Dijkstra.

"Las herramientas que utilizamos tienen una influencia profunda y tortuosa en nuestros hábitos de pensamiento y, por lo tanto, en nuestras habilidades de pensamiento".

"La capacidad intelectual es, con mucho, nuestro recurso más escaso".

"Las pruebas del programa pueden, en el mejor de los casos, mostrar la presencia de errores, pero nunca su ausencia".

"El programador competente es plenamente consciente del tamaño estrictamente limitado de su propio cráneo; por lo tanto, aborda la tarea de programación con total humildad y, entre otras cosas, evita trucos ingeniosos como la peste".
"El llamado lenguaje natural es maravilloso para los fines para los que fue creado, como ser grosero, contar chistes, engañar o hacer el amor (y los teóricos de la crítica literaria incluso pueden estar libres de contenido), pero es irremediablemente inadecuado cuando tenemos que lidiar inequívocamente con situaciones de gran complejidad, situaciones que surgen inevitablemente en actividades tales como legislación, arbitraje, matemáticas o programación." (prólogo de Métodos formales de enseñanza y aprendizaje, editado por C. N. Dean y M. G. Hinchey, Academic Press, 1996)

"La informática no va de computadoras de la misma forma que la astronomía no va de telescopios".

"Ser abstracto es algo profundamente diferente de ser impreciso".

"Nada es tan caro como cometer errores".

"En la práctica de la informática, donde tenemos tanta libertad para hacer un lío, la elegancia matemática no es un lujo prescindible, sino una cuestión de vida o muerte".

"Si dentro de 10 años, cuando estás haciendo algo rápido y sucio, de repente te imaginas que estoy mirando por encima de tus hombros y te dices a ti mismo, a Dijkstra no le hubiera gustado esto, bueno, eso sería suficiente inmortalidad para mí".
 
 
 
 


   

Friday, September 6, 2019

ACAB.BASIC

2 REM "DADES ENTRADES A MA"
10 PRINT "Humanitat:"
20 DIM A$(4,6)
100 A$(0,0)="ESSER_HUMA"
110 A$(0,1)="Adam"
120 A$(0,2)=""
130 A$(0,3)=""
140 A$(0,4)=""
150 A$(0,5)=""

200 A$(1,0)="ESSER_HUMA"
210 A$(1,1)="Eva"
220 A$(1,2)=""
230 A$(1,3)=""
240 A$(1,4)=""
250 A$(1,5)=""

300 A$(2,0)="CIUTADA"
310 A$(2,1)="Abel"
320 A$(2,2)="Adam"
330 A$(2,3)="Eva"
340 A$(2,4)="Escola del Paradis"
350 A$(2,5)=""

400 A$(3,0)="POLI"
410 A$(3,1)="Caim"
420 A$(3,2)=""
430 A$(3,3)="Eva"
440 A$(3,4)="Escola del Paradis"
450 A$(3,5)="1"

460 REM " Bucle que no existeix a OOP:"

480 V=0
500 FOR N=0 TO 3 STEP 1
505 V=N
510 IF A$(N,0)="ESSER_HUMA" THEN GOSUB 1990
520 IF A$(N,0)="CIUTADA" THEN GOSUB 2990
530 IF A$(N,0)="POLI" THEN GOSUB 3990
540 NEXT
1000 END

1990 REM "Print EsserHuma"
2000 PRINT USING " "; A$(V,1);"  "; A$(V,2);"  "; A$(V,3)
2010 RETURN

2990 REM "Print Ciutada"
3000 PRINT USING " "; A$(V,1);"  "; A$(V,2);"  "; A$(V,3);"  "; A$(V,4)
3010 RETURN

3990 REM "Print Poli"
4000 PRINT USING " "; A$(V,2);"  ";  A$(V,5)
4010 RETURN

5000 REM "//////////////////MÓN REAL/////////////////////////////////"
5500 REM "
///////Primera referència al Twitter sobre aquest arxiu:"
5501 REM "//////https://twitter.com/macajo/status/1170044137510461441?s=20" 
6000 REM "///////////////////////////////////////////////////////////"

Thursday, September 5, 2019

Acab2.java

/* By: Maurici Carbó of nummolt apps Sept 2019
Convenció de Colors:
Comanaments de les Classes de Java
Classes de Java Prefabricades
@anotacions
Paraules Clau de Java
Cadenes de paraules
////Comentaris  */


//////////////////////Acab2.java////////////////  


import java.time.LocalTime;
import org.eclipse.jdt.annotation.Nullable;


public class EsserHuma {
    public LocalTime m_dataNaixement;
    public EsserHuma m_papa;
    public EsserHuma m_mama;
    public String m_nom;

    public EsserHuma(){/*buit*/}
    public EsserHuma(LocalTime datanaixement,@Nullable EsserHuma papa,
                            EsserHuma mama, @Nullable String nom){
        m_dataNaixement=datanaixement;
        m_papa=papa;
        m_mama=mama;
        m_nom=nom;
    }
    public void print() {
        if(m_papa != null || m_mama != null) {
        System.out.println(m_dataNaixement+ " nom propi: "+ m_nom +"Pare: "+ m_papa.m_nom+ " Mare: "+m_mama.m_nom);
        }
        else {
            System.out.println(m_dataNaixement+" nom propi: "+ m_nom);
        }
    }
}




public class Ciutada extends EsserHuma{
    Escola m_escola;
   
    public Ciutada(LocalTime datanaixement,@Nullable EsserHuma papa,
                EsserHuma mama, @Nullable String nom, Escola escola){
        super(datanaixement, papa, mama, nom);
        m_escola= escola;
    }
  
    static Poli nomenarPoli(Ciutada ciutada){
        return Poli.nomenarPoli(ciutada);
    }
    public void print() {
        System.out.println(m_dataNaixement+ " nom propi: "+m_nom +" Pare: "+ m_papa.m_nom+ " Mare: "+m_mama.m_nom);
    }
}


public final class Poli extends Ciutada{
    int m_numeroPlaca;

    private Poli(LocalTime datanaixement, EsserHuma mama, Escola escola){
        super(datanaixement, null, mama, "-", escola);
        Humanitat.m_darrerNumPlaca++;
        m_numeroPlaca=Humanitat.m_darrerNumPlaca;
    }      

     static Poli nomenarPoli(Ciutada ciutada){
        return new Poli(ciutada.m_dataNaixement, ciutada.m_mama, ciutada.m_escola);
    }
    
     public void print() {
         System.out.println(m_dataNaixement+ " nom propi: "+ m_nom + " Mare: "+m_mama.m_nom + " Poli num Placa: "+ m_numeroPlaca);
     }
}



public class Escola {
    String m_nomEscola;
    EsserHuma m_director;
    ArrayList<Ciutada> m_arlExAlumnes;
 
    public Escola(String nomEscola,EsserHuma director){
        m_arlExAlumnes=new ArrayList<Ciutada>();
        m_nomEscola= nomEscola;
        m_director= director;
    }

    public Ciutada ensenyar(EsserHuma esserhuma){
        Humanitat.m_arlHumanitat.remove(esserhuma);
        EsserHuma alumne=esserhuma;
        Ciutada alumneEnsenyat=new Ciutada(alumne.m_dataNaixement, alumne.m_papa,
                                        alumne.m_mama, alumne.m_nom, this);
        Humanitat.m_arlHumanitat.add(alumneEnsenyat);
        m_arlExAlumnes.add(alumneEnsenyat);
        return alumneEnsenyat;
    }
}


public class  Humanitat {
    static ArrayList<Escola> m_arlEscoles;
    static ArrayList<EsserHuma> m_arlHumanitat;
    static int m_darrerNumPlaca=0;
  
    public Humanitat() {
        m_arlEscoles = new ArrayList<Escola>();
        m_arlHumanitat= new ArrayList<EsserHuma>();
    }
  
    static public void nouMembreHumanitat(EsserHuma nouesserhuma){
        m_arlHumanitat.add(nouesserhuma);
    }

    public static void ferEscola(String nomEscola, EsserHuma director){
        m_arlEscoles.add(new Escola(nomEscola, director));
    }
  
    public static Ciutada ensenyar(EsserHuma esserhuma, Escola escola){
        return escola.ensenyar(esserhuma);
    }

    public static void nomenarPoli(Ciutada ciutada){
        m_arlHumanitat.remove(ciutada);
        Ciutada anticCiutada=ciutada;
        Poli nouPoli=Poli.nomenarPoli(anticCiutada);
        m_arlHumanitat.add(nouPoli);
    }
    public static void llistatHumanitat() {
        for(EsserHuma esserhuma: m_arlHumanitat) {
            esserhuma.print();
        }
    }
}


public class Acab {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
            new Humanitat();
            EsserHuma adam=new EsserHuma(); ////buit
            EsserHuma eva=new EsserHuma();  ////buit
            adam.m_dataNaixement= LocalTime.now();
            eva.m_dataNaixement=  LocalTime.now();
            adam.m_nom="Adam";
            eva.m_nom="Eva";
            Humanitat.nouMembreHumanitat(adam);
            Humanitat.nouMembreHumanitat(eva);
            Humanitat.ferEscola("EscolaDelParadís", adam);
            EsserHuma caim= new EsserHuma(LocalTime.now(),adam, eva, "Caim");
            EsserHuma abel= new EsserHuma(LocalTime.now(),adam, eva, "Abel");
            Humanitat.nouMembreHumanitat(caim);      
            Humanitat.nouMembreHumanitat(abel);
            Ciutada caimEnsenyat= Humanitat.ensenyar(caim, Humanitat.m_arlEscoles.get(0));
            Ciutada abelEnsenyat= Humanitat.ensenyar(abel, Humanitat.m_arlEscoles.get(0));
            Humanitat.nomenarPoli(caimEnsenyat);
            Humanitat.llistatHumanitat();
    }
}




////////////////////////////MÓN REAL/////////////////////////////////
///////Primera referència al Twitter sobre aquest arxiu:
///// https://twitter.com/macajo/status/1169660828087402498https://twitter.com/macajo/status/1169660828087402498://twitter.com/macajo/status/1169660828087402498?s=20
/////////////////////////////////////////////////////////////////////






Sunday, September 1, 2019

Acab.java

/* By: Maurici Carbó of nummolt apps Sept 2019
Convenció de Colors:
Comanaments de les Classes de Java
Classes de Java Prefabricades
@anotacions
Paraules Clau de Java
////Comentaris  */

//////////////////////Acab.java////////////////   

    class EsserHuma{
        Date m_data;
        EsserHuma m_papa;
        EsserHuma m_mama;
        String m_nom;

        public EsserHuma(){/*buit*/};
        public EsserHuma(Date datanaixement,@Nullable EsserHuma papa,
                                EsserHuma mama, @Nullable String nom){
            m_data=datanaixement;
            m_papa=papa;
            m_mama=mama;
            m_nom=nom;
        }
    }

    class Ciutada extends EsserHuma{
        Escola m_escola;
       
        public Ciutada(Date datanaixement,@Nullable EsserHuma papa,
                    EsserHuma mama, @Nullable String nom, Escola escola){
            super(data, papa, mama, nom);
            m_escola= escola;
        }
       
        Poli nomenarPoli(Ciutada ciutada){
            return Poli.nomenarPoli(Ciutada ciutada);
        }
    }

    static class Poli extends Ciutada{
        int m_numeroPlaca;

        private Poli(Date datanaixement, EsserHuma mama, Escola escola){
            super(datanaixement, null, mama, null, escola);
            Humanitat.m_darrerNumPlaca++;
            m_numeroPlaca=Humanitat.m_darrerNumPlaca;
        }       
   
        static Poli nomenarPoli(Ciutada ciutada){
            return new Poli(ciutada.m_data, ciutada.m_mama, ciutada.m_escola);
        }
    }

    class Humanitat{
        static ArrayList<Escola> m_arlEscoles;
        static ArrayList<EsserHuma> m_arlHumanitat;
        static int m_darrerNumPlaca=0;
       
        public Humanitat() {
            m_arlEscoles = new ArrayList<Escola>();
            m_arlHumanitat= new ArrayList<EsserHuma>();
        }
       
        static public nouMembreHumanitat(EsserHuma nouesserhuma){
            m_arlHumanitat.add(nouesserhuma);
        }

        public static ferEscola(String nomEscola, EsserHuma director){
            m_arlEscoles.add(new Escola(nomEscola, director);
        }
       
        public static Ciutada ensenyar(EsserHuma esserhuma, Escola escola){
            return escola.ensenyar(esserhuma);
        }

        public static void nomenarPoli(Ciutada ciutada){
            Ciutada anticCiutada=m_arlHumanitat.remove(ciutada);
            Poli nouPoli=anticCiutada.nomenarPoli();
            m_arlHumanitat.add(nouPoli);
        }
    }   

    class Escola{
        String m_nomEscola;
        EsserHuma m_director;
        ArrayList<Ciutada> m_arlExAlumnes;
       
        public Escola(String nomEscola,EsserHuma director){
            m_arlExAlumnes=new ArrayList<Ciutada>();
            m_nomEscola= nomEscola;
            m_director= director;
        }

        public Ciutada ensenyar(EsserHuma esserhuma){
            EsserHuma alumne= Humanitat.m_arlHumanitat.remove(esserhuma);
            Ciutada alumneEnsenyat=new Ciutada(alumne.m_data, alumne.m_papa,
                                            alumne.m_mama, alumne.m_nom, this)
            Humanitat.m_arlHumanitat.add(alumneEnsenyat);
            m_arlExAlumnes.add(alumneEnsenyat);
            return alumneEnsenyat;
        }
    }

    ////////////////////AL Paradís//////////////////////////////////
    public Main(String genesi){
        new Humanitat();
        EsserHuma adam=new EsserHuma(); ////buit
        EsserHuma eva=new EsserHuma();  ////buit
        adam.m_dataNaixement=new Date();
        eva.m_dataNaixement=new Date();
        adam.m_nom="Adam";
        eva.m_nom="Eva";
        Humanitat.nouMembreHumanitat(adam);
        Humanitat.nouMembreHumanitat(eva);
        Humanitat.ferEscola("EscolaDelParadís", adam);
        EsserHuma caim= new EsserHuma(new Date(),adam, eva, "Caim");
        EsserHuma abel= new EsserHuma(new Date(),adam, eva, "Abel");
        Humanitat.nouMembreHumanitat(caim);       
        Humanitat.nouMembreHumanitat(abel);
        Ciutada caimEnsenyat= Humanitat.ensenyar(caim, Humanitat.m_arlEscoles.get(0);
        Ciutada abelEnsenyat= Humanitat.ensenyar(abel, Humanitat.m_arlEscoles.get(0);
        Humanitat.nomenarPoli(caimEnsenyat);
        ////I aquí comencen els problemes de la humanitat
    }


////////////////////////////MÓN REAL/////////////////////////////////
///////Primera referència al Twitter sobre aquest arxiu:
///////https://twitter.com/macajo/status/1168522925554753536
/////////////////////////////////////////////////////////////////////
 https://twitter.com/macajo/status/1168522925554753536?s=20 https://twitter.com/macajo/status/1168522925554753536?s=20
thttps://twitter.com/macajo/status/1168522925554753536?s=20tps://twitter.com/macajo/status/1168522925554753536?s=20
https://twitter.com/macajo/status/1168522925554753536?s=20