ゼロ・イチ・インフィニティ(ZOI)ルールは、初期のコンピューティングのパイオニアであるウィレム・ファン・デル・ポールによって提案されたソフトウェア設計の経験則です。[ 1 ]このルールは、特定の種類のデータや構造のインスタンス数に恣意的な制限を設けるべきではないと主張しています。代わりに、エンティティは完全に禁止されるか、1つだけ許可されるか、任意の数が許可されるべきです。[ 2 ]実際には、その特定のソフトウェア以外のさまざまな要因によってこの数が制限される可能性がありますが、エンティティのインスタンス数に厳しい制限を設けるのはソフトウェア自体であるべきではありません。
このルールの例は、多くのファイルシステムのディレクトリ(フォルダとも呼ばれる)の構造に見られます。
ファン・デル・ポールは自分がそのルールの考案者であることを認めたが、ブルース・マクレナンも(「妥当な数はゼロ、イチ、無限大のみである」という形で)その考案者であると主張し、2015年に次のように書いている[ 3 ]:
もちろん、ゼロ・イチ・無限大の原理は、プログラミング言語などを認知的に扱いやすくするための設計原則として考案されたものです。私がこの原理を考案したのは70年代初頭、プログラミング言語の設計に携わっていた頃で、当時の言語によく見られる恣意的な数値に苛立ちを感じていたからです。もちろん、概算値や制限値、あるいは数値全般に反対するつもりは全くありません。おっしゃる通り、問題は恣意的な数値にあるのです。
1983年に出版したプログラミング言語に関する著書『Principles of Programming Languages: Design, Evaluation, and Implementation』以前は、この概念を活字で使ったことはなかったと思います。ディック・ハミングは、カーニハン&プラウガーやストランク&ホワイトのように、原則に基づいて構成するように勧めてくれました。そして、ゼロ・イチ・インフィニティの原理はその最初の例の一つでした。(ちなみに、「ゼロ・イチ・インフィニティの原理」という名前は、私が小学生の頃に読んだジョージ・ガモフの著書『One Two Three... Infinity』に触発されたものです。)