\r\n\r\n
プログラムを100万回実行しても起動しないことほど最悪なことはありませんし、最高のプログラマーであってもそのようなことはあります。
構文は正しく、スペースも一定で、変数の名前も適切です。
もしかしたら、新しいチューニングの方法が必要なのかもしれません。実績のある方法のひとつに、不思議なことに、いろいろなおもちゃを入れた桶があることに驚かされます。
これは、ショートストーリーで説明するのが一番わかりやすいと思います。想像してみてください。あなたはプログラマーで、あるグループと一緒に仕事をしているとします。本業をこなしながら、必要なコーディングをしていると、ある問題にぶつかる。何らかの理由で、プログラムが思うように動いていないのです。
そこで、あなたはホールに入り、頑固なバグに対処していることを同僚に伝えることにした。彼らは、問題の解決に協力することに同意し、何が問題だったのかを尋ねます。問題を詳しく説明し始めると、説明の途中で解決策を発見することがあります。
実は、このようなことは、現実の世界では案外よくあることなのです。ラバーダックと何の関係があるのか、不思議に思われるかもしれません。まあ、プラスチック製の黄色い仲間(あるいはどんな無生物でも)なら、誰にも迷惑をかけずに打ち明けることができるのだが。
一番いいのは?あなたの長文でカモが判断されることはないので、安心してください。もし、頻繁にデバッグをする必要があると感じたら、以下に挙げる最も一般的なプログラミングとコーディングの間違いをチェックしてみてください。
"Rubber Duck Debugging "は、Andrew HunterとDavid Thomasのプログラミング本『The Practical Programmer: From Skilled to Master』の中のエピソードにちなんでいます。この場合、プログラマーはラバーダックを持ち歩き、ラバーダックに一行ずつ無理矢理説明しながらコードをデバッグしていく。
コードが何をするものかを説明するとき、実際にコードが何をするのかを見て、物事が一致しないことに気づくことがよくあります。そのため、「教えることは学ぶことの一つである」と言われています。他の人に理解してもらうためには、さまざまな視点から問題を評価する必要があり、それが自分の理解にもつながります。
この方法を使う上で最も重要なのは、あなたがそれに取り組むことです。そう、こういう徹底的に一方的な会話は、とてもバカバカしく感じるものなのです。しかし、他人(現実、想像、またはゴムでできたもの)を自分の問題から解放させるために多くのエネルギーを注ぐことは、まさに問題を自分で解決できるように思わせることなのです。
コードのエラーの多くは、ソフトウェアに提供される明確な情報や指示の欠如によって引き起こされるため、このアプローチはうまく機能します。コンピュータはあいまいな命令を理解することができません。カモがあなたの問題について何も知らないと仮定して、あなたはすべての詳細を記述することを余儀なくされます。自分が思っているほど、すべてを理解していなかったことがわかったのです。
たった3ステップで、ラバーダックが完成します。
この簡単な方法はプログラマーによって考案されましたが、プログラミング以外の問題にも必ず応用できます。どうやって?ここで、もう一つ想像のシナリオを組み立ててみましょう。家に新しい冷蔵庫を買ったとします。
新しい冷蔵庫をご自宅に運び、キッチンの所定の位置に設置します。古い冷蔵庫から新しい冷蔵庫にすべてを移し、古い冷蔵庫は捨ててしまうのです。一日が終わり、あなたはベッドに入ります。翌朝、冷蔵庫のドアを開けると、一晩ですべての食材が腐ってしまっている!?
もちろん、怒って家族に感情をぶつけるようになります。"なぜ、そうなったのか?お金を払って引き取り、中のものをすべて移動させ、電源を入れたら、信じられないような温度調節ができるはずだった。
ああ、プラグを差し込むのを忘れていたのか。
ちょっと恥ずかしいですが、少なくとも何が問題なのかがわかりましたね。それは、あなたが最初から最後まで、全体の状況をじっくりと検討したからです。あるプロセスに深く精通していると、最も明白な問題が周囲に広がっていることに気づかないことがあります。
例えば、Pythonのサンプルコードについて説明します。このように、ラバーダックはさまざまな問題を解決することができるのです。この方法は、使用しているプログラミング言語に適用することができます。
1から5までの数字を印刷したいので、先にすべてのコードを打ち込んでおきます。
for x in range(5): print(x, end=" ")Output: 0 1 2 3 4ああ。なんて不思議なんでしょう。コンパイラに5桁の範囲を表示するように要求しています。何がいけないんですか?すべての可能性を考慮しよう。コードがエラーなしで実行されるため、あなたの構文は正しいです。startとstepのパラメータは任意なので、パラメータが足りないからではありません。
インシスト。レンジ関数は、(デフォルトで)1ずつ増加し、設定された上限の前で停止する一連の数値を返します。しかし、どこからがレンジなのか?Pythonでは、指定しない限り、範囲は0から始まります。
さて、書くべきことは分かっているはずです。
for x in range(5): print(x+1, end=" ")Output: 1 2 3 4 5関連:Pythonでプログラミングを学ぶのに最適なWebサイト5選
ラバーダックは、あなたのコードの問題点を正確に教えてくれるわけではありませんが、あらゆるプログラマーに役立ってきました。今度、プログラミングでバグに遭遇したら、ラバーダック(またはラバーダックとして機能する他の物体や人)をつかんで、この問題解決のアプローチがうまくいくかどうか試してみてください。
ラバーダックが単なるお風呂グッズにとどまらないとは、誰が想像したでしょうか。