2010-08-09 18 views
6

Estoy leyendo Codificadores en el trabajo.Sobre el papel de Dijkstra

Me encontré con este párrafo en la entrevista de Donald Knuth.

Seibel: Parece que muchas de las personas con las que he hablado tenían acceso directo a una máquina cuando estaban comenzando. Sin embargo, Dijkstra tiene un documento con el que estoy familiarizado, en el que básicamente dice que no debemos permitir que los estudiantes de ciencias de la computación toquen una máquina durante los primeros años de su formación; deberían pasar todo el tiempo manipulando símbolos.

Deseo un enlace para ese papel. ¿Cuál papel es ese? (Escribió demasiados :-)

Respuesta

7

Tal vez this one?

Extracto, desde cerca del final:

antes de separarnos, me gustaría invitarle a considerar la siguiente forma de hacer justicia a la novedad radical de la computación en un curso de introducción a la programación.

Por un lado, enseñamos lo que parece ser el cálculo de predicados, pero lo hacemos de manera muy diferente a los filósofos. Para entrenar al programador novato en la manipulación de fórmulas no interpretadas, lo enseñamos más como álgebra booleana, familiarizando al estudiante con todas las propiedades algebraicas de las conectivas lógicas. Para cortar aún más los enlaces a la intuición, cambiamos el nombre de los valores {verdadero, falso} del dominio booleano como {negro, blanco}.

Por otro lado, enseñamos un lenguaje de programación simple, limpio e imperativo, con un salto y una asignación múltiple como declaraciones básicas, con una estructura de bloques para variables locales, el punto y coma como operador para la composición de enunciados, una buena alternativa construir, una buena repetición y, si así lo desea, una llamada de procedimiento. A esto, agregamos un mínimo de tipos de datos, por ejemplo, booleanos, enteros, caracteres y cadenas. Lo esencial es que, para lo que sea que introduzcamos, la semántica correspondiente está definida por las reglas de prueba que la acompañan.

Desde el principio, y durante todo el curso, hacemos hincapié en que la tarea del programador no es solo escribir un programa, sino que su tarea principal es dar una prueba formal de que el programa que propone cumple con los requisitos especificacion funcional. Mientras diseña pruebas y programas de la mano, el alumno tiene amplias oportunidades de perfeccionar su agilidad manipulativa con el cálculo de predicados. Finalmente, para llevar a casa el mensaje de que este curso introductorio de programación es principalmente un curso de matemáticas formales, nos aseguramos de que el lenguaje de programación en cuestión no se haya implementado en el campus para que los estudiantes estén protegidos de la tentación de probar sus programas . Y esto concluye el boceto de mi propuesta para un curso introductorio de programación para estudiantes de primer año.

4

Encontré un manuscript de la conferencia "Cruelty" de Dijkstra.

+0

¡Buen trabajo amigo! Bienvenido a stackoverflow. :) –

Cuestiones relacionadas