カーゴカルト・プログラミングとショットガン・デバッギングについて

カーゴカルト・プログラミングとショットガン・デバッギングについて

カーゴカルト・プログラミングとは

カーゴカルト・プログラミングは、実際の目的を果たさないコードやプログラム構造を儀式的に記述することを特徴とするコンピュータ・プログラミングのスタイルで、解決しようとしているバグや明らかな解決策を理解していないプログラマーの症状です。

それらの不要なコードは、プログラミング初心者や、目の前の問題についての経験の浅いプログラマーが、コードの動作を理解せずにコピー&ペーストしてしまう場合に生じる事が多いです。

また、そのプログラミング言語の設計原理を理解せずに、コードに不必要なコメントを追加したり、プログラミングパラダイムの慣習に過度に固執したり、ガベージコレクションが自動的に収集するオブジェクトのために削除コードを追加したりすることも、カーゴ・カルト・プログラミングと呼ぶ事があります。

null 値に対する冗長なチェックや、値を反復する前にコレクションが空であるかどうかをテストすることは、カーゴカルト的なプログラミングの兆候とも言えるでしょう。このような強迫的なチェックはコードを読みにくくし、適切なエラーメッセージの出力を妨げることが多く、プログラムの動作不良の真の原因を不明瞭にします。

カーゴカルトとは

カーゴカルトという言葉は、もともとは第二次世界大戦後に南太平洋で育った先住民族の宗教を指していました。

彼らの宗教では、戦争中に素晴らしい貨物を運んできた神のような飛行機を召喚するために、飛行機や軍の着陸帯の精巧な模型を作ることを中心としています。

プログラミングにおけるこの用語の使用は、リチャード・ファインマンが「特定の実践」を「カーゴカルト・サイエンス」として呼称したことに由来します。

ショットガン・デバッギングとは

バグが存在しなくなることを期待して、比較的直接的でない変更をソフトウェアに加えるプロセスのことをショットガンデ・バッギングと呼びます。
一つのエラーに対して同時に複数のデバッグを行い、そのうちの1つのデバッグが問題解決に繋がることを期待しています。

ショットガン・デバッギングの成功率は比較的低く、その上、非常に時間がかかることがあります。いわば根性論によって解決しようとしている訳です。

 

 

コメントを残す

メールアドレスが公開されることはありません。