Después de otra pregunta de tarea sobre SO. Parece que la gran mayoría de los estudiantes no tienen idea de qué es un depurador o cómo usar uno. Siento que saber cómo usar un depurador es casi tan importante como otros aspectos fundamentales de la programación.
- La pregunta es si la depuración no se debe enseñar y cómo utilizar las herramientas modernas de depuración junto con los fundamentos de la programación. Si no, porque no.
education
language-agnostic
debugging
repetición
fuente
fuente
Respuestas:
No es tanto el caso del uso de depuradores que debe enseñarse, sino las técnicas más generales de depuración . Esto incluiría enseñar cómo usar un depurador, por supuesto, pero también varias otras técnicas importantes, por ejemplo
Como beneficio adicional, muchas de las técnicas también se pueden aplicar a la resolución de problemas en áreas distintas de la programación.
Hay un libro bastante bueno sobre todo este tema, que probablemente deba ser leído para todos los estudiantes universitarios y para cualquiera que esté aprendiendo los conceptos básicos de la programación: Depuración de David J Agans .
fuente
Los cursos de informática terciaria están diseñados para enseñar a los estudiantes los fundamentos de programación , como usted mencionó: estos conceptos se enseñan a los estudiantes con la esperanza de que asimilen los conceptos necesarios y los apliquen a una gama más amplia de lenguajes de programación y conjuntos de problemas.
Las herramientas de depuración, por otro lado, son un subconjunto en el área de implementación : cada herramienta es diferente para cada idioma (aunque los conceptos son los mismos). Estábamos expuestos a herramientas de depuración pero nunca las cubrimos en profundidad. Si pasamos más de una semana en herramientas de depuración, miraría hacia atrás, en retrospectiva, y consideraría que es una pérdida de tiempo. Prefiero aprender sobre notación BigO o polimorfismo. Sin embargo, si el poder de una herramienta de depuración no se ha transmitido (con éxito) a los estudiantes, entonces esa sería una necesidad ausente.
fuente
En la mayoría de los cursos de programación introductorios, el estado del programa es lo suficientemente simple como para que pueda eliminar cualquier error con algunas declaraciones impresas. También podría existir el problema de obligar a los estudiantes a hacer las cosas a mano para que tengan una idea de cómo y dónde en el código ocurren ciertos tipos de errores. Si no tiene idea de dónde buscar, entonces un depurador será bastante inútil.
fuente
grep
hace el trabajo. Sin pasos, sin puntos de interrupción condicionales, solo grep.No es tan importante Casi nunca uso uno, y nunca lo he hecho. La mejor forma de depurar código es:
Y para muchos softwares modernos y multiproceso, los depuradores tienen el efecto de ocultar errores en lugar de descubrirlos. Y definitivamente no deberían "enseñarse" a nivel de grado, como tampoco uno enseñaría cómo usar un procesador de textos.
fuente
La depuración debe enseñarse porque los estudiantes son humanos y los humanos cometen todo tipo de errores, algunos de los cuales requieren la adquisición de algunos datos experimentales (información de depuración) antes de que ocurra cualquier aclaración sobre un error determinado.
La depuración no se enseña debido a la premisa (tal vez heredada del departamento de matemáticas) de que los programas deben ser correctos por diseño, tal vez incluso de manera demostrable. Y por lo tanto, los estudiantes no deberían "experimentar" con la programación correctamente. Sin embargo, esto ignora el proceso de fabricación en el mundo real de humanos imperfectos que desarrollan software para cambiar las especificaciones bajo presiones programadas, etc.
fuente
Esta pregunta es extraña para mí. En mi universidad, el uso del depurador (JDB y el depurador Eclipse) se enseñó ya en la secuencia de ciencias de la computación del primer año. El uso de depuradores y otras herramientas de prueba se enseñó nuevamente en el curso sobre pruebas de software.
Personalmente, me resulta increíblemente difícil creer que cualquier buena escuela que esté tratando de preparar a las personas para ingresar a la fuerza laboral no esté enseñando sobre técnicas adecuadas de depuración y prueba. Obviamente, no pueden cubrir todos los aspectos, pero al menos pueden enseñar lo básico en el aula.
fuente
Averígualo por tu cuenta
No necesitaba y no quería que un profesor o un TA se tomaran el tiempo para enseñarme algo que pudiera resolver fácilmente por mi cuenta. Están allí para enseñarme los conceptos difíciles y guiar el aprendizaje. No están ni deberían estar allí para que no tenga que usar RTFM.
Aprende a aprender
La universidad debe consistir en aprender a aprender, no solo en tener a mano cada tema que no conoces. Si tienes tu mano constantemente a través de este proceso, fracasarás miserablemente en el mundo real.
Cuesta arriba, en ambos sentidos, a través de la nieve
Cuando fui a la escuela tampoco se molestaron en enseñarte el idioma. Se esperaba que lo recojas en tu propio tiempo. Te darían el proyecto y las instalaciones. Depende de usted rastrear la información que necesitaba para completar la implementación y presentar un programa de trabajo. Bastante similar al mundo real, excepto con horario de oficina.
fuente