قاعدة صفر واحد لانهاية

قاعدة تصميم البرمجيات

قاعدة صفر واحد لانهاية (ZOI) هي قاعدة أساسية في تصميم البرمجيات اقترحها رائد الحوسبة المبكر ويليم فان دير بول. وتجادل بأنه لا ينبغي السماح بالقيود التعسفية على عدد مثيلات نوع معين من البيانات أو الهيكل. بدلًا من ذلك، يجب إما حظر الكيان تمامًا، أو السماح لواحد فقط، أو السماح بأي عدد منها.[1] على الرغم من أن العوامل المختلفة خارج هذا البرنامج المعين يمكن أن تحد من هذا الرقم في الممارسة العملية، فلا ينبغي أن يكون البرنامج نفسه هو الذي يضع حدًا صارمًا لعدد مثيلات الكيان.

يمكن العثور على أمثلة لهذه القاعدة في بنية العديد من الأدلة الخاصة بأنظمة الملفات (المعروفة أيضًا بإسم المجلدات):

  • 0 – يحتوي الدليل الأعلى على صفر من الدلائل الأصلية؛ أيْ لا يوجد دليل يحتوي على الدليل الأعلى.
  • 1 – يحتوي كل دليل فرعي على دليل رئيسي واحد بالضبط (لا يشمل الاختصارات إلى موقع الدليل؛ في حين أن هذه الملفات قد تحتوي على أيقونات مماثلة لأيقونات أدلة الوجهة، فهي ليست أدلة على الإطلاق).
  • ∞ (لانهاية) – قد يحتوي كل دليل، سواء كان الدليل الأعلى أو أي من الأدلة الفرعية، وفقًا لقواعد نظام الملفات، على أي عدد من الملفات أو الدلائل الفرعية. ترجع الحدود العملية لهذا الرقم إلى عوامل أخرى، مثل المساحة المتوفرة على وسائط التخزين ومدى جودة صيانة نظام تشغيل الكمبيوتر.

في تصميم البرامج في العالم الحقيقي، تعد انتهاكات هذه القاعدة العامة أمرًا شائعًا. على سبيل المثال، يفرض نظام الملفات FAT16 حدًا يبلغ 65536 ملفًا إلى دليل.[2]

تأليف عدل

أكد فان دير بويل أنه كان منشئ القاعدة، لكن بروس ماكلينان قد ادعى أيضًا أنه المؤلف (في النموذج "الأرقام المعقولة الوحيدة هي صفر وواحد وما لا نهاية.")، حيث كتب في عام 2015 ما يلي:

«Of course, the Zero-One-Infinity Principle was intended as a design principle for programming languages, and similar things, in order to keep them cognitively manageable. I formulated it in the early 70s, when I was working on programming language design and annoyed by all the arbitrary numbers that appeared in some of the languages of the day. I certainly have no argument against estimates, limits, or numbers in general! As you said, the problem is with arbitrary numbers. I don't think I used it in print before I wrote my 1983 PL book [Principles of Programming Languages: Design, Evaluation, and Implementation]. Dick Hamming encouraged me to organize it around principles (a la Kernighan & Plauger  [لغات أخرى]‏ and Strunk & White  [لغات أخرى]‏), and the Zero-One-Infinity Principle was one of the first. (FWIW, the name “Zero-One-Infinity Principle” was inspired by George Gamow’s book, “One, Two, Three… Infinity,”  [لغات أخرى]‏ which I read in grade school.) [3]»

المراجع عدل

  1. ^ "Zero-One-Infinity Rule". Jargon File. مؤرشف من الأصل في 2023-01-04.
  2. ^ "NTFS vs. FAT vs exFAT". NTFS.com. مؤرشف من الأصل في 2023-03-17. اطلع عليه بتاريخ 2015-03-09.
  3. ^ "The Zero, One, Infinity Disease". مؤرشف من الأصل في 2023-03-18. اطلع عليه بتاريخ 2019-06-30.

روابط خارجية عدل