¿Por qué debería leer el libro Cómo diseñar programas? ¿Qué le ofrece a un programador con experiencia? Llevo 5 años programando. Tengo experiencia en C ++, Java y Python.

Cómo diseñar programas intenta hacer dos cosas muy diferentes. Una de ellas es enseñar a las personas que no saben programar. Esto claramente no es algo que necesitas. Pero también hace algo más, que incluso los programadores profesionales, al menos aquellos que están dispuestos a tener una mente abierta y trabajar en un libro que no está realmente escrito a su nivel, han encontrado muy valioso.

Lo que enseña HtDP es el principio del diseño basado en datos. Esta es la filosofía que subyace a la programación tanto funcional como orientada a objetos, pero rara vez se articula de manera clara o bien. Muestra una metodología de diseño de varios pasos que comienza con el análisis de datos, ejemplos de datos, una comprensión abstracta de la funcionalidad, comprensión concreta en forma de ejemplos (también conocidos como casos de prueba ) y una construcción de plantilla de programa a partir de los datos. Usando este principio de diseño estructural, también da una idea del corazón de los algoritmos : qué partes son rutinarias y qué partes requieren saltos de información.

La segunda edición muestra cómo estas ideas se aplican también a la escritura de programas interactivos, a través de pequeños juegos. Incluso los juegos más grandes tienen un modelo de datos enriquecidos subyacentes y transformaciones sobre ellos, y separan de esto las partes “gráficas”. Entonces, una vez que el problema se descompone en estas partes, las mismas ideas pueden aplicarse al modelo. Por lo tanto, la separación de vista de modelo surge de una manera que es natural, liviana e inmediatamente útil.

Todas estas son ideas que los desarrolladores profesionales deberían encontrar útiles en su práctica, y muchas tienen. Incluso los programadores experimentados que conozco tienen esa experiencia de quedar atrapados en medio de algo, dar un paso atrás, aplicar la receta HtDP y salir del caos.

Finalmente, HtDP también te enseñará a pensar como un programador funcional. Incluso si elige no programar de esa manera posteriormente, (a) notará que sus ideas infectan muchas cosas que hace, incluso en el mundo Python / Java / C ++, y (b) aprenderá una nueva forma de hacer las cosas, uno que será útil en muchos contextos que puede encontrar a lo largo de los años.

Por lo tanto, creo que HtDP tiene algo que ofrecer a los desarrolladores mostrándoles estas ideas reducidas a su esencia. Sin embargo, será un poco lento porque está escrito para personas que nunca han programado.

Mi primer encuentro con la metodología HtDP fue en mi primer semestre de posgrado. Había estado programando durante más de 15 años en ese momento, y esta forma de programación se sentía rígida y infantil. No podía ver el punto, y me molestaba.

Mi conversión ocurrió gradualmente. Algo de esto era de mi entorno, ya que estaba rodeado de personas que enseñaban HtDP , pero enseñar con él mismo es lo que me dejó la impresión más profunda. Estaba acostumbrado a los cursos tradicionales de programación introductoria para nadar o nadar, donde se espera que la mitad inferior de cada clase se elimine, porque esas personas simplemente no pueden programar . Bueno, resulta que pueden, pero les hemos estado enseñando a todos mal. Fue sorprendente ver cómo la gran mayoría de los estudiantes aprendieron a programar cuando se les dieron las herramientas de razonamiento adecuadas y una metodología racional para hacerlo.

Entonces, ¿cómo se aplica esto a usted, ya no es un principiante? Bueno, 10 años después (y hace unas dos semanas) estaba escribiendo JavaScript por primera vez en varios años, y me di cuenta de que sin pensarlo, ¡estaba aplicando la receta de diseño de HtDP ! Antes de HtDP , podía producir código razonablemente bien estructurado mediante un proceso un tanto al azar, pero el uso de un proceso estructurado da como resultado un código mejor estructurado y más claro. Si bien esto es especialmente valioso en los idiomas que proporcionan poca estructura por sí solos, también lo uso en lenguajes de tipo rico como Haskell y Rust. No lo noto necesariamente a menos que lo piense explícitamente, pero lo uso cuando escribo Java y lo uso cuando escribo scripts de shell. Si eres un programador experimentado, leer y participar con HtDP requerirá algo de humildad, pero como resultado pensarás más claramente sobre tu programación y escribirás mejores programas.

Simplemente porque cuando comienza a elaborar una arquitectura o implementa bibliotecas críticas, no puede simplemente usar el enfoque de bricolaje. Leer algunos libros le proporcionará tácticas para abordar fácilmente algunos problemas y escribir código limpio y fácil de mantener. Demasiados programadores creen que saben programar porque saben cómo usar Visual Studio / eclipse depurador. Después de unos meses, es posible que tenga que desechar su código porque ya no puede actualizarlo.

Si no sabes por qué, entonces espera. Encuentre artículos en línea relacionados con lo que le interesa y compre los libros que amplíen su interés. Empecé Racket hace dos o tres semanas. Las funciones integradas son tan ricas que pasaré algún tiempo con ellas. No quiero pensar en arquitectura hasta que tenga una base sólida. Mis intereses son amplios. CS teórico, álgebra abstracta, QFT, lenguaje e idiomas y, por supuesto, música, batería, cocina y lo que sea que mi GF esté leyendo.