SO に関するさらに別の宿題の質問の後。大部分の学生は、デバッガーとは何か、またはデバッガーの使い方を知らないようです。デバッガの使用方法を知ることは、他のプログラミングの基礎とほぼ同じくらい重要だと思います。
- 問題はデバッグするべきではなく、プログラミングの基礎と一緒に最新のデバッグツールを使用する方法を教えますか?そうでない場合、なぜそうではない。
SO に関するさらに別の宿題の質問の後。大部分の学生は、デバッガーとは何か、またはデバッガーの使い方を知らないようです。デバッガの使用方法を知ることは、他のプログラミングの基礎とほぼ同じくらい重要だと思います。
回答:
デバッガーの使用を教える必要があるのではなく、デバッグのより一般的なテクニックです。これには、もちろんデバッガの使用方法を教えることも含まれますが、他のさまざまな重要なテクニックも含まれます。
追加の利点として、これらの手法の多くは、プログラミング以外の分野の問題解決にも適用できます。
この主題に関する非常に良い本があります。おそらく、すべての学部生とプログラミングの基礎を学んでいる人のために読む必要があるはずです:デビッドJアガンスによるデバッグ。
あなたが言及したように、第三次コンピューターサイエンスコースは、学生にプログラミングの基礎を教えることに合わせて調整されています-これらの概念は、必要な概念を理解し、それを幅広いプログラミング言語と問題セットに適用することを期待して学生に教えられます。
一方、デバッグツールは実装領域のサブセットです。各ツールは言語ごとに異なります(概念は同じですが)。デバッグツールに触れましたが、それらを詳細に説明することはありませんでした。デバッグツールに1週間以上費やした場合、後から振り返ってみると、それは時間の無駄だと思います。私はむしろBigO表記法またはポリモーフィズムについて学びたいです。しかし、ffデバッグツールの能力が学生に(成功して)伝えられていないのであれば、それは必要ではないでしょう。
ほとんどの入門プログラミングコースでは、プログラムの状態は非常に単純なので、いくつかの印刷ステートメントでバグを取り除くことができます。また、生徒に手で物事を行わせて、特定の種類のバグが発生するコードのどこでどのように感じているのかを把握する問題もあります。どこを探すべきかわからない場合、デバッガはほとんど役に立たないでしょう。
grep
ものが仕事をします。ステップなし、条件付きブレークポイントなし-grepのみ。
それほど重要ではありません。私はほとんど使用しませんし、使用したこともありません。コードをデバッグする最良の方法は次のとおりです。
また、最新のマルチスレッドソフトウェアの場合、デバッガーはバグを発見するのではなく、隠すという効果があります。そして、彼らは間違いなく学位レベルで「教えられる」べきではありません。ワードプロセッサの使用方法を教えるのは1人以上です。
学生は人間であり、人間はあらゆる種類の間違いを犯すため、特定の間違いに関する啓発が行われる前にいくつかの実験データ(デバッグ情報)を取得する必要があるため、デバッグを教える必要があります。
デバッグは、プログラムが設計上正しいはずであるという前提(おそらく数学部門から継承されている可能性がある)のために、おそらく証明されていても教えられていません。したがって、学生はプログラミングを正しく「実験」してはなりません。しかし、これは、スケジュールのプレッシャーなどで仕様を変更するためにソフトウェアを開発する不完全な人間の現実世界の製造プロセスを無視します。
この質問は私には異質です。私の大学では、デバッガー(JDBおよびEclipseデバッガー)の使用が最初の1年のコンピューターサイエンスシーケンスと同じくらい早く教えられました。デバッガーやその他のテストツールの使用は、ソフトウェアテストのコースで再び教えられました。
私は個人的に、労働力に就くために人々を準備しようとしている良い学校が適切なデバッグとテスト技術について教えていないと信じることは信じられないほど難しいと思います。彼らは明らかにそれのすべての側面をカバーすることはできませんが、少なくとも教室で基本を教えることができます。
自分で解決する
教授やTAが私に自分で簡単に理解できることを教える時間を割く必要はありませんでしたくありませんでした。彼らは私に難しい概念を教え、学習を導くためにそこにいます。彼らはそうではありませんといけませんあなたはRTFMする必要はありませんので、そこにあること。
学ぶ方法を学ぶ
大学は、あなたが知らないすべてのトピックを通してあなたの手を握るだけでなく、学ぶ方法を学ぶことについてでなければなりません。このプロセスを通して手をつないでいると、現実世界で惨めに失敗します。
上り坂、両方向、雪の中
私が学校に行ったとき、彼らはあなたに言語を教えることも気にしませんでした。あなたは自分の時間にそれを拾うことが期待されていました。彼らはあなたにプロジェクトと施設を提供します。実装を完了し、作業プログラムを提出するために必要な情報を追跡するのはあなた次第でした。営業時間を除いて、実世界とかなり似ています。