stringtranslate.com

Sobre la crueldad de enseñar realmente informática

" Sobre la crueldad de enseñar realmente ciencias de la computación " es un artículo académico de 1988 de EW Dijkstra [1] que sostiene que la programación informática debe entenderse como una rama de las matemáticas y que la demostrabilidad formal de un programa es un criterio importante para su corrección.

A pesar del título, la mayor parte del artículo trata sobre el intento de Dijkstra de colocar la informática en una perspectiva más amplia dentro de la ciencia , y al final se aborda la enseñanza como corolario . Específicamente, Dijkstra hizo una “propuesta para un curso de introducción a la programación para estudiantes de primer año” que consistía en la lógica de Hoare como un sistema formal no interpretado .

Debate sobre la viabilidad

Desde que se acuñó el término "ingeniería de software", la verificación formal casi siempre se ha considerado que requiere demasiados recursos para ser factible. [ cita necesaria ] En aplicaciones complejas, la dificultad de especificar correctamente qué debe hacer el programa en primer lugar también es una fuente común de error. Generalmente se emplean otros métodos de prueba de software para tratar de eliminar errores y se consideran muchos otros factores en la medición de la calidad del software .

Hasta el final de su vida, Dijkstra sostuvo que los desafíos centrales de la informática no se habían cumplido a su satisfacción, debido a un énfasis insuficiente en la corrección del programa (aunque sin obviar otros requisitos, como la mantenibilidad y la eficiencia ). [2]

Legado pedagógico

La informática tal como se enseña hoy en día no sigue todos los consejos de Dijkstra. Los planes de estudio generalmente enfatizan técnicas para gestionar la complejidad y prepararse para cambios futuros, siguiendo los escritos anteriores de Dijkstra. Estos incluyen abstracción , programación por contrato y patrones de diseño . Se enseñan como requisitos básicos técnicas de programación para evitar errores y métodos convencionales de prueba de software, y los estudiantes están expuestos a ciertas herramientas matemáticas, pero los métodos de verificación formal no se incluyen en el plan de estudios, excepto quizás como un tema avanzado. [3] Así que, en cierto modo, se han seguido las ideas de Dijkstra; sin embargo, las ideas que más le interesaban no lo han sido.

Los planes de estudios recién formados en ingeniería de software han adoptado las recomendaciones de Dijkstra. El enfoque de estos programas es la especificación formal de los requisitos y el diseño del software para facilitar la validación formal de la corrección del sistema. En Canadá, suelen ser títulos de ingeniería acreditados con competencias básicas similares en ingeniería basada en la física. [4]

Referencias

  1. ^ 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)
  2. ^ Dijkstra, Edsger W. ¿ El fin de la informática? (EWD-1304) (PDF) . Archivo EW Dijkstra. Centro de Historia Estadounidense, Universidad de Texas en Austin .(transcripción)
  3. ^ Cursos del MIT:
    • Eric Grimson, Peter Szolovits y Trevor Darrell. 6.001 Estructura e Interpretación de Programas Informáticos . Primavera de 2005. Instituto de Tecnología de Massachusetts: MIT OpenCourseWare, https://ocw.mit.edu. Licencia: Creative Commons BY-NC-SA.
    • Robert Morris y Samuel Madden. 6.033 Ingeniería de Sistemas Computacionales . Primavera de 2009. Instituto de Tecnología de Massachusetts: MIT OpenCourseWare, https://ocw.mit.edu. Licencia: Creative Commons BY-NC-SA.
    • Ronitt Rubinfeld y Albert Meyer. 6.042J Matemáticas para la Informática . Otoño de 2005. Instituto de Tecnología de Massachusetts: MIT OpenCourseWare, https://ocw.mit.edu. Licencia: Creative Commons BY-NC-SA.
    • Daniel Jackson. 6.170 Estudio de software. Primavera 2013 . Instituto de Tecnología de Massachusetts: MIT OpenCourseWare, https://ocw.mit.edu. Licencia: Creative Commons BY-NC-SA.
  4. ^ "Los programas de ingeniería de software no son programas de informática" (PDF) . Archivado desde el original (PDF) el 27 de septiembre de 2013 . Consultado el 30 de octubre de 2012 .