Articulo de referencia

Cómo diseñar programas

How to Design Programs ( HtDP ) es un libro de texto de Matthias Felleisen , Robert Bruce Findler , Matthew Flatt y Shriram Krishnamurthi sobre el diseño sistemático de programa...

How to Design Programs ( HtDP ) es un libro de texto de Matthias Felleisen , Robert Bruce Findler , Matthew Flatt y Shriram Krishnamurthi sobre el diseño sistemático de programas informáticos . MIT Press publicó la primera edición en 2001 y la segunda edición en 2018, que está disponible gratuitamente en línea e impresa. El libro presenta el concepto de una receta de diseño , un proceso de seis pasos para crear programas a partir de un enunciado del problema. Si bien el libro se utilizó originalmente junto con el proyecto educativo TeachScheme! (rebautizado como ProgramByDesign ), se ha adoptado en muchas universidades para enseñar principios de diseño de programas.

Según HtDP, el proceso de diseño comienza con un análisis minucioso del enunciado del problema con el objetivo de extraer una descripción rigurosa de los tipos de datos que el programa deseado consume y produce. La estructura de estas descripciones de datos determina la organización del programa.

A continuación, el libro presenta cuidadosamente formas de datos de complejidad cada vez mayor. Comienza con datos de formas atómicas y luego avanza hacia formas compuestas , incluidos datos que pueden ser arbitrariamente grandes. Para cada tipo de definición de datos, el libro explica cómo organizar el programa en principio, lo que permite que un programador que se encuentre con una nueva forma de datos aún construya un programa de manera sistemática.

Al igual que Structure and Interpretation of Computer Programs (SICP), HtDP se basa en una variante del lenguaje de programación Scheme . Incluye su propio entorno de desarrollo integrado (IDE) de programación, llamado DrRacket , que proporciona una serie de lenguajes de programación. El primer lenguaje solo admite funciones, datos atómicos y estructuras simples. Cada lenguaje agrega poder expresivo al anterior. A excepción del lenguaje de enseñanza más grande, todos los lenguajes para HtDP son lenguajes de programación funcionales .

Base pedagógica

En el artículo de 2004, The Structure and Interpretation of the Computer Science Curriculum [1] , los mismos autores compararon y contrastaron el enfoque pedagógico de How to Design Programs (HtDP) con el de Structure and Interpretation of Computer Programs (SICP). En el artículo de 14 páginas, los autores distinguen el enfoque pedagógico de HtDP del de SICP, y muestran cómo HtDP fue diseñado como un libro de texto para abordar algunos problemas que algunos estudiantes y profesores tenían con SICP.

El artículo presenta el panorama pedagógico que rodea la publicación de SICP. El artículo comienza con una historia y crítica de SICP, seguida de una descripción del objetivo del plan de estudios de informática . Luego describe los principios de enseñanza detrás de HtDP; en particular, la diferencia entre la enseñanza implícita y explícita de los principios de diseño. Luego continúa describiendo el papel de Scheme y la importancia de un entorno de programación ideal , y concluye con una evaluación exhaustiva del contenido y la reacción de los estudiantes y profesores a la experiencia con SICP en comparación con HtDP.

Uno de los principales puntos de atención del artículo es el énfasis en la diferencia en el conocimiento del dominio requerido entre SICP y HtDP. En un cuadro del artículo se comparan los ejercicios principales en SICP y HtDP, y el texto relacionado describe cómo los ejercicios en el primero requieren un conocimiento del dominio considerablemente más sofisticado que los de HtDP. El artículo continúa explicando por qué esta diferencia en el conocimiento del dominio requerido ha dado lugar a que algunos estudiantes confundan el conocimiento del dominio con el conocimiento de diseño de programas.

El artículo destaca los cuatro esfuerzos principales que los autores de HtDP han realizado para abordar los problemas percibidos con el SICP:

  1. HtDP aborda explícitamente, en lugar de implícitamente, cómo deben construirse los programas.
  2. Para facilitar la programación, el libro guía a los estudiantes a través de cinco niveles de conocimiento diferentes correspondientes a los niveles de complejidad de la definición de datos.
  3. Los ejercicios del libro se centran en las pautas de diseño de programas, más que en el conocimiento del dominio.
  4. El libro supone un conocimiento del dominio menor que el del SICP.

El artículo luego distingue entre recursión estructural , donde la definición de datos relacionados resulta ser autorreferencial , requiriendo usualmente un proceso de diseño sencillo, y recursión generativa, donde nuevos datos del problema se generan en medio del proceso de resolución del problema y el método de resolución del problema se reutiliza, requiriendo a menudo una visión matemática ad hoc , y enfatiza cómo esta distinción hace que su enfoque sea escalable al mundo orientado a objetos (OO).

Finalmente, el artículo concluye con una descripción de las respuestas de varios profesores y estudiantes después de haber utilizado HtDP en el aula.

Referencias

  1. ^ La estructura y la interpretación del currículo de informática. Journal of Functional Programming, volumen 14, número 4 (julio de 2004) Páginas: 365 - 378 (PDF) , NEU, 2004, archivado (PDF) desde el original el 11 de mayo de 2008un artículo en el que los autores comparan y contrastan HtDP con SICP.
  • Sitio web oficial , 2.ª edición de 2018, 1.ª edición de 2003
  • Una crítica a Abelson y Sussman - o - Por qué calcular es mejor que planear
Obtenido de "https://es.wikipedia.org/w/index.php?title=Cómo_diseñar_programas&oldid=1251901750"