Depois de mais uma pergunta de lição de casa no SO. Parece que a grande maioria dos estudantes não tem idéia do que é um depurador ou como usá-lo. Eu sinto que saber usar um depurador é quase tão importante quanto outro fundamental da programação.
- A questão não deve ser a depuração e como usar as ferramentas modernas de depuração, além dos princípios básicos de programação? Se não, por que não?
education
language-agnostic
debugging
reexecutar
fonte
fonte
Respostas:
Não é tanto o caso que o uso de depuradores que precisa ser ensinado, mas as técnicas mais gerais de depuração . Isso incluiria o ensino de como usar um depurador, é claro, mas também várias outras técnicas importantes, por exemplo
Como um benefício adicional, muitas das técnicas também podem ser aplicadas à solução de problemas em outras áreas além da programação.
Há um livro bastante bom sobre esse assunto, que provavelmente deve ser uma leitura obrigatória para todos os estudantes de graduação e para todos que aprendem o básico da programação: Depuração por David J. Agans .
fonte
Os cursos terciários de ciência da computação são adaptados para ensinar aos alunos os fundamentos de programação , como você mencionou - esses conceitos são ensinados aos alunos na esperança de que eles coloquem os conceitos necessários e os apliquem a uma ampla variedade de linguagens de programação e conjuntos de problemas.
As ferramentas de depuração, por outro lado, são um subconjunto na área de implementação - cada ferramenta é diferente para cada idioma (mesmo que os conceitos sejam os mesmos). Fomos expostos a ferramentas de depuração, mas nunca as abordamos em profundidade. Se passássemos mais de uma semana em ferramentas de depuração, eu olharia para trás - em retrospectiva - e consideraria isso uma perda de tempo. Prefiro aprender sobre a notação BigO ou polimorfismo. No entanto, se o poder de uma ferramenta de depuração não foi (com sucesso) transmitido aos alunos, isso seria uma necessidade ausente.
fonte
Na maioria dos cursos introdutórios de programação, o estado do programa é simples o suficiente para eliminar todos os erros com algumas instruções de impressão. Também pode haver a questão de forçar os alunos a fazer as coisas manualmente, para que tenham uma idéia de como e onde no código ocorrem certos tipos de erros. Se você não tem idéia de onde procurar, um depurador será bastante inútil.
fonte
grep
faz o trabalho. Sem pisar, sem pontos de interrupção condicionais - apenas grep.Não é tão importante. Eu quase nunca uso um e nunca o usei. A melhor maneira de depurar código é:
E, para muitos softwares modernos e multithread, os depuradores têm o efeito de ocultar bugs, em vez de descobri-los. E eles definitivamente não deveriam ser "ensinados" no nível de graduação, assim como ninguém ensinaria a usar um processador de texto.
fonte
A depuração deve ser ensinada porque os estudantes são humanos e os seres humanos cometem todos os tipos de erros, alguns dos quais requerem a aquisição de alguns dados experimentais (informações de depuração) antes que ocorra qualquer esclarecimento sobre um determinado erro.
A depuração não é ensinada por causa da premissa (talvez herdada do departamento de matemática) de que os programas devem estar corretos por design, talvez até de maneira provável. E, portanto, os alunos não devem "experimentar" a programação corretamente. No entanto, isso ignora o processo de fabricação no mundo real de seres humanos imperfeitos, acionando o software para alterar as especificações sob pressões programadas etc.
fonte
Esta questão é estranha para mim. Na minha universidade, o uso do depurador (JDB e Eclipse) foi ensinado desde a primeira seqüência de ciências da computação no primeiro ano. O uso de depuradores e outras ferramentas de teste foi ensinado novamente no curso sobre teste de software.
Pessoalmente, acho incrivelmente difícil acreditar que qualquer boa escola que esteja tentando preparar pessoas para ingressar na força de trabalho não esteja ensinando sobre técnicas adequadas de depuração e teste. Obviamente, eles não podem cobrir todos os aspectos, mas podem pelo menos ensinar o básico na sala de aula.
fonte
Descobrir por conta própria
Eu não precisava e não queria que um professor ou AT se desse tempo para me ensinar algo que eu poderia descobrir facilmente por conta própria. Eles estão lá para me ensinar os conceitos difíceis e orientar o aprendizado. Eles não estão e não devem estar lá para que você não precise RTFM.
Aprenda como aprender
A faculdade deve aprender a aprender, e não apenas cuidar de todos os tópicos que você não conhece. Se você tem a mão constantemente nesse processo, irá falhar miseravelmente no mundo real.
Subindo, de duas maneiras, através da neve
Quando eu fui para a escola, eles também não se deram ao trabalho de ensinar o idioma. Você deveria buscá-lo em seu próprio tempo. Eles dariam a você o projeto e as instalações. Cabia a você rastrear as informações necessárias para concluir a implementação e enviar um programa de trabalho. Muito parecido com o mundo real, exceto no horário comercial.
fonte