Nach einer weiteren Hausaufgaben Frage so weiter . Es scheint, dass die große Mehrheit der Studenten keine Ahnung hat, was ein Debugger ist oder wie man einen benutzt. Ich bin der Meinung, dass das Wissen über die Verwendung eines Debuggers fast genauso wichtig ist wie andere Grundlagen der Programmierung.
- Die Frage ist, ob das Debuggen und die Verwendung moderner Debugging-Tools nicht neben den Programmiergrundlagen vermittelt werden sollten. Wenn nein, warum nicht?
education
language-agnostic
debugging
Wiederholung
quelle
quelle
Antworten:
Es ist nicht so sehr der Fall, dass der Einsatz von Debuggern gelehrt werden muss, sondern die allgemeineren Techniken des Debuggens . Dies würde natürlich auch das Erlernen der Verwendung eines Debuggers einschließen, aber auch verschiedene andere wichtige Techniken, z
Als zusätzlicher Vorteil können viele der Techniken auch zur Problemlösung in anderen Bereichen als der Programmierung angewendet werden.
Es gibt ein ziemlich gutes Buch zu diesem Thema, das wahrscheinlich von allen Studenten und jedem, der die Grundlagen des Programmierens lernt, gelesen werden muss: Debugging von David J Agans .
quelle
Tertiäre Informatikkurse sind , wie Sie bereits erwähnt haben, auf das Unterrichten der Programmiergrundlagen der Schüler zugeschnitten. Diese Konzepte werden den Schülern in der Hoffnung vermittelt, dass sie die erforderlichen Konzepte erlernen und sie auf ein breiteres Spektrum von Programmiersprachen und Problemstellungen anwenden.
Debugging-Tools sind dagegen eine Teilmenge im Implementierungsbereich - jedes Tool ist für jede Sprache unterschiedlich (auch wenn die Konzepte identisch sind). Wir waren mit Debugging-Tools konfrontiert, haben sie aber nie wirklich vertieft. Wenn wir mehr als eine Woche mit dem Debuggen von Tools verbringen würden, würde ich - im Nachhinein - zurückblicken und dies als Zeitverschwendung betrachten. Ich möchte lieber etwas über die BigO-Notation oder den Polymorphismus lernen. Wenn den Schülern die Leistungsfähigkeit eines Debugging-Tools jedoch nicht (erfolgreich) vermittelt wurde, ist dies nicht erforderlich.
quelle
In den meisten Einführungskursen zum Programmieren ist der Programmstatus so einfach, dass Sie Fehler mit ein paar Druckanweisungen ausmerzen können. Es kann auch vorkommen, dass Schüler gezwungen werden, Dinge von Hand zu tun, um ein Gefühl dafür zu bekommen, wie und wo im Code bestimmte Arten von Fehlern auftreten. Wenn Sie keine Ahnung haben, wo Sie suchen sollen, wird ein Debugger ziemlich nutzlos sein.
quelle
grep
erledigt ein einfacher die Arbeit. Kein Treten, keine bedingten Haltepunkte - nur Grep.Es ist nicht so wichtig. Ich benutze so gut wie nie eines und habe es auch nie. Der beste Weg, um Code zu debuggen, ist:
Und für viele moderne Multithread-Programme haben Debugger den Effekt, Fehler zu verbergen, anstatt sie aufzudecken. Und sie sollten definitiv nicht auf Studienniveau "unterrichtet" werden, genauso wenig wie man unterrichten würde, wie man ein Textverarbeitungsprogramm benutzt.
quelle
Debugging sollte unterrichtet werden, da die Schüler Menschen sind und Menschen alle Arten von Fehlern machen, von denen einige experimentelle Daten (Debugging-Informationen) erfordern, bevor Aufschluss über einen bestimmten Fehler gegeben wird.
Das Debuggen wird nicht gelehrt, da davon ausgegangen wird (möglicherweise von der Mathematikabteilung geerbt), dass Programme vom Design her korrekt sein sollten, möglicherweise sogar nachweislich. Und deshalb sollten die Schüler nicht mit der richtigen Programmierung experimentieren. Dies ignoriert jedoch den realen Herstellungsprozess unvollkommener Menschen, die Software unter Zeitdruck usw. auf sich ändernde Spezifikationen ausschwenken.
quelle
Diese Frage ist mir fremd. An meiner Universität wurde die Verwendung des Debuggers (JDB und der Eclipse-Debugger) bereits im ersten Jahr der Informatik-Sequenz unterrichtet. Die Verwendung von Debuggern und anderen Testwerkzeugen wurde im Kurs über Softwaretests erneut unterrichtet.
Ich persönlich finde es unglaublich schwierig zu glauben, dass in jeder guten Schule, die versucht, die Menschen auf den Eintritt in die Belegschaft vorzubereiten, nicht die richtigen Debugging- und Testtechniken gelehrt werden. Sie können natürlich nicht alle Aspekte abdecken, aber sie können zumindest die Grundlagen im Klassenzimmer vermitteln.
quelle
Finde es selbst heraus
Ich brauchte und wollte nicht, dass sich ein Professor oder ein TA Zeit nahm, mir etwas beizubringen, was ich leicht selbst herausfinden konnte. Sie sind da, um mir die harten Konzepte beizubringen und das Lernen zu leiten. Sie sind und sollten nicht da sein, damit Sie nicht RTFM müssen.
Lernen Sie, wie man lernt
Im College sollte es darum gehen, zu lernen, wie man lernt, und nicht nur, dass man sich mit der Hand durch jedes Thema bewegt, das man nicht kennt. Wenn Sie Ihre Hand ständig durch diesen Prozess halten, werden Sie in der realen Welt kläglich scheitern.
Auf beiden Wegen bergauf durch den Schnee
Als ich zur Schule ging, haben sie sich auch nicht die Mühe gemacht, dir die Sprache beizubringen. Es wurde von Ihnen erwartet, dass Sie es zu Ihrer eigenen Zeit abholen. Sie würden Ihnen das Projekt und die Einrichtungen geben. Es lag an Ihnen, die Informationen aufzuspüren, die Sie zum Abschluss der Implementierung und zur Einreichung eines Arbeitsprogramms benötigten. Ziemlich ähnlich wie in der realen Welt, außer mit Bürozeiten.
quelle