2010-05-19 4 views
10

que estaba disfrutando "The Humble Programmer" el día de hoy y corrió a través de esta cita elección:¿Mejores documentos de Dijkstra para explicar esta cita?

Por lo tanto, por el momento, y tal vez para siempre, las reglas del segundo tipo se presentan como elementos de la disciplina que se requiere para el programador. Algunas de las reglas que tengo en mente son tan claras que se pueden enseñar y que nunca es necesario discutir si un programa dado las viola o no. Algunos ejemplos son los requisitos de que ningún bucle deba anotarse sin proporcionar una prueba de terminación ni establecer la relación cuya invarianza no será destruida por la ejecución de la declaración repetible.

Estoy buscando cuál de las 1300+ escrituras de Dijkstra se describen mejor con más detalle reglas como las que describía arriba.

Respuesta

7

Página 5 a 18: http://userweb.cs.utexas.edu/users/EWD/ewd02xx/EWD249.PDF
Medio. página 3 al final: http://userweb.cs.utexas.edu/users/EWD/ewd04xx/EWD473.PDF
End página 5 al final: http://userweb.cs.utexas.edu/users/EWD/ewd06xx/EWD641.PDF
Todos: http://userweb.cs.utexas.edu/users/EWD/transcriptions/EWD02xx/EWD261.html(holandesa, traducción = a continuación)

Nota: Los números de Dijkstra sus páginas que comienzan en 0. Los números de página indicados son a partir de 1, el número de página PDF, y no los números de página escritos.


Mi traducción de EWD261 en Inglés:

cómo programar matemáticamente

Un programa (bien definido) está estructurado como un (bien definido) teoría matemática. El trabajo de los programadores no es diferente al de un matemático creativo.

hay pequeñas pero importantes diferencias, sin embargo:

  1. No hay muchas conceptos básicos de la programación y no son difíciles de comprender (aunque engañosamente sencilla); esta es la razón por la cual es un ideal para la práctica del desarrollo. (Además de esto, existe el hecho de que una demanda de corrección, ¡el programa realmente debería funcionar!)
  2. Con la mayor parte de la educación matemática, uno aprende acerca de los teoremas existentes, a saber. equipar a un estudiante con un conjunto específico (detallado) de conceptos; un programador, sin embargo, tiene que desarrollar el concepto necesario por sí mismo. La programación requiere las abstracciones que conducen a un tipo de creatividad, mientras que lo mismo en matemáticas se limita a aplicar teoremas existentes.
  3. Debido a que los programas son grandes y, sin embargo, tienen que funcionar, los programadores aprenderán cómo desarrollarse cuidadosa y conscientemente. ¡Esto es exactamente lo que uno debería enseñar! Enseñar un amplio conocimiento es, para mí, no justificado.
+0

Impreso EWD249, todo el documento parecía interesante. Lea EWD473, que fue interesante, pero creo que me olvidé de la relevancia del lenguaje de programación. – jemfinch

+1

@jemfinch Traduciré la página holandesa aquí (soy holandés nativo). – Pindatjuh

+0

Eso sería increíble, en realidad estaba pensando en tuitear con la esperanza de que alguien escriba una traducción :) – jemfinch

Cuestiones relacionadas