バグは何ですか
1.少しの語源と昆虫学
このようなよく知られた(苦痛な)ネイティブワードBAGを詳しく見てみましょう。 「虫」を意味する英語のバグから来ています。 さらに多くのサードパーティの意味があり、特に英語の表現「バグに行く」-夢中になることは、完全にロシアの「私の頭に巻き込まれたゴキブリ」と簡単に関連付けられます。 また、「回線上のバグ」も思い出します(ちなみに、英語でもバグです)。 そして再び昆虫に来ました。
1878年、トーマスアルバエジソン(はい、そうです!)彼の同志への手紙で、プスカスは次のように書いています。 最初のステップは直観であり、突発的であり、困難が生じます-このことから、「バグ」は-そのような小さな欠点や困難が呼ばれているように-自分自身と数ヶ月の集中的な観察、研究そして、商業的な成功または失敗が確実に達成される前に、労働が必要です。」 同じ言葉で、エンジニアは第二次世界大戦中にレーダー電子機器を呼び出し、故障しました。 もちろん、より一般的な話は、1946年にMark-2(Mark-II)コンピューターの開発が、連絡先の間に落ちたmothによって機能が機能しなくなったために中断されたことです。 の死体は取り除かれ、「バグが見つかった最初の実際のケース」というコメントとともに粘着テープでレポートに接着されました。 ご想像のとおり、ほぼ同じ場所から「耳が大きくなる」と「デバッガー」という言葉があります-文字通り「バグからの配達人」。
2.バグの種類。
最も単純な(インフソリアの靴とは異なりますが、最もわかりやすい「クラシック」と言うのが流行している)バグは、期待される結果(OR)と実際の結果(FR)の不一致です。 例を使用してこれを分析しましょう。
アクション | 期待される結果 | 実際の結果 |
---|
式「= 2 + 2 * 2」をセルに入力し(引用符なし)、Enterキーを押します | 6 | 8 バッグ!!!! |
(ちなみに、これは古いMicrosoft Excelの本当のバグです-加算と比較して乗算の優先度が最も高いため、数学演算の優先度を考慮していませんでした)
すべてがシンプルです。 私たちは1つを待っています-私たちは別のものを手に入れます。 虫
データのタイプミスやコードのタイプミスから無限ループ、等値チェックの代わりに代入演算子の使用から初期化されていない変数の使用、マルチスレッドアプリケーションの競合状態からバッファオーバーフローなど、古典的なバグのすべての亜種をリストしません。さらに、など-これらはすべて非常に普通の明確な現象です。 なじみのない異国情緒に目を向けましょう。
2.1。 ハイゼンバグ
ハイゼンベルクの不確実性原理-量子物理学の概念にちなんで名付けられたバグ。 シンプル(ここでは「シンプル」という言葉はあまり当てはまりませんが)このようなバグの例は、作業環境で実行するためにプログラムを起動すると現れるが、プログラムをデバッガーで起動すると消えるエラーです。
2.2。 Borbag(ボーアバグ)
ボーアの原子モデルにちなんで名付けられた一種のバグ。 ハイゼンバグとは対照的に、それは同じ状況下で絶えず現れます。 問題は、一連の状況全体を追跡することは不可能(または非常に困難)であることです。
2.3。 マンデルバグ
フラクタルの理論に多大な貢献をしたブノワマンデルブロにちなんで名付けられました。 マンデルバッグは、その理由が非常に複雑で不明確なエラーであり、実際には混seemとしているように見え、説明に反しています。 (キーワード「seem」)。 これは、たとえば、システムの反応が遅いことによって発生する可能性があります。つまり、エラーが既に発生していますが、しばらくしてからこれを見つけるだけで、原因の特定が非常に複雑になります。
2.4。 シュレーディンバグ
シュレディンバグは、シュレーディンガー猫の有名なパラドックスにちなんで名付けられました(または、この悲惨な動物は猫ですか?)。 それは、誰かがプログラムのコード(しばらく動作している)を読み取り、「はい、これはできません! 単に機能することはできません!」、その後、このエラーが修正されるまでプログラムは機能しなくなります。 実に、このエラーは実際に発生します-ベテラン開発者の友人に尋ねてください、彼らは確認します。 もちろん、その後の分析では、原則として、エラーをセクション2.1、2.2、または2.3に帰することができますが、これは常に可能とは限りません。
2.5。 ムーンフェイズ
実際、そのようなエラーは存在しません-これは、エラーの複雑な原因を理解したくない(欲求や時間がない)人々に人気のある言い訳です。 それにもかかわらず、歴史上、文字通り月の満ち欠けによってエラーが発生したいくつかの例があります。 私たちの誰もそのような複雑なデバイスで作業する必要がないことを期待して、ここではこれらの話をしません。 それにもかかわらず、いずれにせよ、私はすべての人に無謀な結論に対して警告し、彼らの仕事においてより慎重で、持続的かつ綿密であるようにお願いしたいと思います。
2.6。 統計的(定量的として知られている)バグ
プログラムが多数のアクションを実行するときに発生するバグ。 このエラーの例は、平面上の一定数のポイントを均等に配置する必要があるプログラムの起動です。 たとえば、多数のポイントがある場合、プログラムはそれらを誤って配置するだけでなく、すべてを平面の片側に配置しようとします(特定のポイントまでは正常に動作します)-量的バグ。
2.7。 デモンストレーション効果。
そしてもちろん、誰にでもよく知られている「第一印象効果」は、謙虚な僕に何度も起こりました。 たとえば、テストベンチで完全に機能するユニットを表示する時間になると、ひどいことが起こります。 通常、理由はささいなものです。「重要ではない」テストケースをスキップし、詳細に注意を払わず、ユーザーケースについては説明しません。 繰り返しますが、注意してください。
これについては、バグの簡単な概要で終わりますが、あなたのコメントと提案に喜んでいます。