Po kolejnym pytaniu do pracy domowej na SO. Wygląda na to, że zdecydowana większość studentów nie ma pojęcia, czym jest debugger ani jak go używać. Uważam, że umiejętność korzystania z debuggera jest prawie tak samo ważna, jak inne podstawy programowania.
- Pytanie brzmi: czy nie należy uczyć debugowania i jak korzystać z nowoczesnych narzędzi do debugowania wraz z podstawami programowania? Jeśli nie to dlaczego nie.
education
language-agnostic
debugging
ponownie odtwarzać
źródło
źródło
Odpowiedzi:
Nie chodzi o to, że należy uczyć korzystania z debuggerów , ale o bardziej ogólne techniki debugowania . Obejmowałoby to oczywiście nauczenie korzystania z debuggera, ale także różne inne ważne techniki, np
Dodatkową korzyścią jest to, że wiele technik można również zastosować do rozwiązywania problemów w obszarach innych niż programowanie.
Jest całkiem niezła książka na ten temat, która prawdopodobnie powinna wymagać przeczytania dla wszystkich studentów i wszystkich osób uczących się podstaw programowania: Debugowanie autorstwa Davida J Agansa .
źródło
Kursy informatyczne trzeciego stopnia są dostosowane do nauczania studentów programowania podstaw , jak wspomniałeś - pojęcia te są uczone w nadziei, że zapoznają się z niezbędnymi pojęciami i zastosują je w szerszej gamie języków programowania i zestawów problemów.
Z drugiej strony narzędzia do debugowania stanowią podzbiór w obszarze implementacji - każde narzędzie jest inne dla każdego języka (nawet jeśli pojęcia są takie same). Byliśmy narażeni na narzędzia do debugowania, ale nigdy tak naprawdę nie obejmowaliśmy ich dogłębnie. Gdybyśmy spędzili ponad tydzień na narzędziach do debugowania, spojrzałbym wstecz - z perspektywy czasu - i uważam to za stratę czasu. Wolałbym dowiedzieć się o notacji BigO lub polimorfizmie. Jeśli jednak moc narzędzia do debugowania nie została (pomyślnie) przekazana uczniom, byłaby to nieobecna konieczność.
źródło
W większości wprowadzających kursów programowania stan programu jest na tyle prosty, że można usunąć wszelkie błędy za pomocą kilku instrukcji drukowania. Może również występować problem z zmuszaniem uczniów do robienia rzeczy ręcznie, aby mieli pojęcie o tym, jak i gdzie w kodzie występują pewne rodzaje błędów. Jeśli nie masz pojęcia, gdzie szukać, debugger będzie całkiem bezużyteczny.
źródło
grep
zadanie działa. Żadnych kroków, żadnych warunkowych punktów przerwania - po prostu grep.To nie jest takie ważne. Prawie nigdy nie używam i nigdy nie mam. Najlepszym sposobem debugowania kodu jest:
W przypadku znacznie nowoczesnego, wielowątkowego oprogramowania debuggery powodują raczej ukrywanie błędów niż ich wykrywanie. I zdecydowanie nie należy ich „uczyć” na poziomie studiów, tak jak nikt nie nauczyłby obsługiwać edytora tekstu.
źródło
Debugowania należy uczyć, ponieważ uczniowie są ludźmi, a ludzie popełniają wszelkiego rodzaju błędy, z których niektóre wymagają gromadzenia danych eksperymentalnych (informacji debugowania) przed wystąpieniem jakiegokolwiek oświecenia dotyczącego danego błędu.
Debugowanie nie jest nauczane z powodu założenia (być może odziedziczonego po wydziale matematyki), że programy powinny być poprawne z założenia, być może nawet możliwe. Dlatego uczniowie nie powinni „eksperymentować” z programowaniem poprawnie. Ignoruje to jednak rzeczywisty proces produkcji niedoskonałych ludzi rozwijających oprogramowanie do zmieniających się specyfikacji pod presją harmonogramu itp.
źródło
To pytanie jest mi obce. Na moim uniwersytecie nauczono korzystania z debuggera (JDB i debugera Eclipse) już w pierwszym roku informatyki. Korzystanie z debuggerów i innych narzędzi testowych zostało ponownie nauczone w trakcie testów oprogramowania.
Bardzo trudno mi uwierzyć, że każda dobra szkoła, która próbuje przygotować ludzi do wejścia na rynek pracy, nie uczy o prawidłowych technikach debugowania i testowania. Oczywiście nie są w stanie objąć wszystkich jego aspektów, ale mogą przynajmniej uczyć podstaw w klasie.
źródło
Sam to wymyśl
Nie potrzebowałem i nie chciałem, aby profesor lub pracownik naukowy poświęcił trochę czasu na nauczenie mnie czegoś, co mógłbym łatwo samemu wymyślić. Są tam, aby nauczyć mnie trudnych koncepcji i prowadzić naukę. Nie ma ich i nie powinno ich tam być, więc nie musisz RTFM.
Dowiedz się, jak się uczyć
Kolegium powinno polegać na nauce uczenia się, a nie tylko na trzymaniu ręki przez każdy nieznany temat. Jeśli przez cały ten czas trzymasz rękę w ręku, poniesiesz żałosną porażkę w prawdziwym świecie.
Pod górę, w obie strony, przez śnieg
Kiedy poszedłem do szkoły, nie zadali sobie trudu, aby nauczyć cię języka. Oczekiwano, że odbierzesz go we własnym czasie. Dadzą ci projekt i udogodnienia. Twoim zadaniem było wyśledzenie informacji potrzebnych do ukończenia wdrożenia i przesłania działającego programu. Całkiem podobny do prawdziwego świata, z wyjątkiem godzin pracy.
źródło