Regla del infinito cero uno


La regla Zero one infinity (ZOI) es una regla empírica en el diseño de software propuesta por el pionero de la informática Willem van der Poel . [1] Sostiene que no deberían permitirse límites arbitrarios en el número de instancias de un tipo particular de datos o estructura. Específicamente, una entidad debe prohibirse por completo, solo debe permitirse una o debe permitirse cualquier número de ellas. [2] Aunque varios factores fuera de ese software en particular podrían limitar este número en la práctica, no debería ser el software en sí el que imponga un límite estricto al número de instancias de la entidad.

Se pueden encontrar ejemplos de esta regla en la estructura de los directorios de muchos sistemas de archivos (también conocidos como carpetas):

En el diseño de software del mundo real, las violaciones de esta regla general son comunes. Por ejemplo, el sistema de archivos FAT16 impone un límite de 65,536 (es decir, 2 16 ) archivos a un directorio. [3]

Van der Poel confirmó que él fue el creador de la regla, pero Bruce MacLennan también ha reclamado la autoría:

Por supuesto, el principio Zero-One-Infinity fue pensado como un principio de diseño para lenguajes de programación y cosas similares, con el fin de mantenerlos cognitivamente manejables. Lo formulé a principios de los 70, cuando trabajaba en el diseño de lenguajes de programación y me molestaban todos los números arbitrarios que aparecían en algunos de los lenguajes de la época. ¡Ciertamente no tengo ningún argumento en contra de estimaciones, límites o números en general! Como dijiste, el problema está en los números arbitrarios. No creo que lo haya usado en forma impresa antes de escribir mi libro PL de 1983. Dick Hamming me animó a organizarlo en torno a principios (a la Kernighan & Plauger y Strunk & White), y el principio Zero-One-Infinity fue uno de los primeros. (FWIW, el nombre "Principio cero-uno-infinito" se inspiró en el libro de George Gamow, "Uno, dos, tres ... Infinito,”Que leí en la escuela primaria.)[4]