カーゴ・カルト・プログラミング
カーゴ・カルト・プログラミング(英: Cargo cult programming)とは、コンピュータープログラミングにおいて、実際の目的には必要のないコードやプログラム構造が儀式的に含められているという状態で特徴づけられる悪習である。カーゴ・カルト・プログラミングは、プログラマが、自身が解決しようとしている課題やバグ、明らかな解決策を理解していないことを示す兆候である(ショットガン・デバッギングやブードゥー・プログラミングも参照)[1]。
概要
編集カーゴ・カルト・プログラミングは、目の前の問題について経験の浅いプログラマが、他の場所にあるプログラムコードを、その仕組みや、それが本当に必要かどうかを理解することなしに、別の場所にコピーするときに生じうる。
また、他の場所で見つけてきた設計手法やコーディングスタイルを、それが生まれた背景理由などを理解しないまま盲目的に適用した結果にも見ることができる。例えば、ひと目見れば分かるようなコードに不要なコメントを加えたり、あるプログラミングパラダイムの慣習に過度に固執したり、プログラミング言語が暗黙に行う解放処理などを手動で実行したり、などが挙げられる。
カーゴ・カルトという語句は、元々は第二次世界大戦後の南太平洋で見られた先住民の宗教に由来している。これらの人々は、戦時中素晴らしい積荷をもたらしてくれた神のような飛行機を呼び出そうと、一心不乱に精巧な飛行機の模型や滑走路を作り上げた[2][3]。コンピュータプログラミングにおいてこの語句が使用されるようになったのは、おそらくリチャード・P・ファインマンのカーゴ・カルト・サイエンスから派生したものと考えられる[3][4]。
カーゴ・カルト・ソフトウェア工学
編集この節の加筆が望まれています。 |
関連するソフトウェア工学の用語として、スティーブ・マコネルの作成したカーゴ・カルト・ソフトウェア工学が存在する。
マコネルは、ソフトウェア開発集団が、ソフトウェア開発工程を猿真似的にそのままか、あるいは長い時間と無給の残業を義務付けることにより(ソフトウェア開発者たちが彼らのプロジェクトが成功するのをみるのに多大な時間とエネルギーを費やす)コミットメント指向の開発アプローチを模倣しようとすることのどちらかによって、より成功している開発集団の真似をしようとしてしまう事例について説明している。しかし、成功した企業ではこれらは成功の原因ではなく高いモチベーションの結果である可能性がある。
どちらの場合でも、マコネルは、採用する開発手法にかかわらず、プロジェクトが成功するか否かは究極的には能力が決定すると主張する。さらに彼は不適格な(単に成功している開発組織の形式だけ真似しているに過ぎない)「詐称組織」は、彼の言う「カーゴ・カルト・ソフトウェア工学」に実際時間を費やしているという。[3]
関連項目
編集参考文献
編集- ^ Eric S. Raymond (1996). The New Hacker's Dictionary. MIT Press. ISBN 0262680920.
- ^ Dr. Nikolai Bezroukov. “Cargo Cult Programming article”. Softpanorama (slightly skeptical) Open Source Software Education Society. 2008年3月25日閲覧。
- ^ a b c From the Editor (March/April 2000). “Cargo Cult Software Engineering”. IEEE Software. 2008年5月24日閲覧。
- ^ “Definition of cargo cult programming”. Jargon File at jargon.net. 2008年3月25日閲覧。
関連文献
編集- Surely You're Joking, Mr. Feynman!, Richard Feynman, W. W. Norton & Co, New York, 1985, ISBN 0-393-01921-7. One of the chapters is the transcript of a 1974 Caltech commencement address, which contained the coining of "Cargo cult science".
- Cargo Cult Science, by Richard P. Feynman. Article based on his 1974 Caltech Commencement address, with pictures, as originally published in Engineering and Science, Volume 37:7, June 1974. Digitized version from Caltech Library, retrieved June 20, 2007