Правило Zero one infinity (ZOI) — это эмпирическое правило в разработке программного обеспечения, предложенное ранним пионером вычислительной техники Виллемом ван дер Пулем . [1] Оно утверждает, что произвольные ограничения на количество экземпляров определенного типа данных или структуры не должны допускаться. Вместо этого сущность должна быть либо полностью запрещена, либо разрешена только одна, либо разрешено любое их количество. [2] Хотя различные факторы за пределами этого конкретного программного обеспечения могут ограничивать это количество на практике, само программное обеспечение не должно накладывать жесткие ограничения на количество экземпляров сущности.
Примеры этого правила можно найти в структуре каталогов многих файловых систем (также известных как папки):
Ван дер Пул подтвердил, что он является создателем правила, но Брюс Макленнан также заявил об авторстве (в форме «Единственные разумные числа — ноль, один и бесконечность»), написав в 2015 году следующее:
Конечно, принцип «ноль-один-бесконечность» был задуман как принцип проектирования языков программирования и подобных вещей, чтобы сделать их когнитивно управляемыми. Я сформулировал его в начале 70-х, когда работал над проектированием языков программирования и был раздражен всеми этими произвольными числами, которые появлялись в некоторых языках того времени. У меня определенно нет аргументов против оценок, пределов или чисел в целом! Как вы сказали, проблема в произвольных числах. Я не думаю, что я использовал его в печати до того, как написал свою книгу PL 1983 года [ Принципы языков программирования: проектирование, оценка и реализация ]. Дик Хэмминг призвал меня организовать его вокруг принципов (a la Kernighan & Plauger and Strunk & White ), и принцип «ноль-один-бесконечность» был одним из первых. (Кстати, название «Принцип нуля-единицы-бесконечности» было навеяно книгой Георгия Гамова «Один, два, три… бесконечность», которую я читал в начальной школе.) [3]