← أحدث الأبحاث
💻 computer science

A Calculus of Inheritance

تقدم هذه الورقة "حساب الوراثة" (inheritance-calculus)، وهو أساس برمجي تصريحي قائم على السجلات، والتعريفات، والوراثة، يوحد مفاهيم الكائنات الأساسية تحت مفهوم اتحاد المجموعات لمعالجة مشكلات الوراثة المتعددة هيكلياً وتحقيق تعبيرية أكبر من حساب لامدا (λ\lambda-calculus).

المؤلفون الأصليون: Bo Yang

نُشر 2026-03-11✓ Author reviewed
📖 5 دقيقة قراءة🧠 قراءة متعمّقة

المؤلفون الأصليون: Bo Yang

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

تخيل أنك تقوم ببناء مدينة ضخمة ومعقدة باستخدام قطع "ليجو" (Lego) فقط.

في عالم البرمجة التقليدية ("حساب لامدا" - Lambda Calculus)، وحدة البناء الأساسية هي الدالة (Function). فكر في الدالة كأنها آلة متخصصة: تغذيها بمواد خام (مدخلات)، فتقوم بتنفيذ وصفة محددة، ثم تخرج لك منتجاً. لبناء أشياء معقدة، عليك ربط هذه الآلات معاً. لكن هناك مشكلة: إذا حاولت آلتان المطالبة بنفس الجزء من المدينة، أو إذا احتجت إلى إضافة ميزة جديدة لآلة موجودة دون كسرها، تصبح الأمور فوضوية. غالباً ما تضطر إلى هدم الآلة القديمة وإعادة بنائها من الصفر.

تقدم هذه الورقة طريقة جديدة للبناء: حساب الوراثة (Inheritance-Calculus).

بدلاً من الآلات، وحدة البناء الأساسية هنا هي السجل (Record) (وهو حاوية للخصائص). فكر في السجل ليس كآلة، بل كـ صندوق شفاف أو طبقة من طبقات الكعكة.

إليك الفكرة الجوهرية، مقسمة عبر تشبيهات بسيطة:

١. الأدوات السحرية الثلاث

بينما تستخدم البرمجة التقليدية "التجريد، والتطبيق، والمتغيرات"، يستخدم هذا النظام الجديد ثلاث أدوات بسيطة:

  • السجل (Record): صندوق يحوي أشياء (مثل مجلد يحتوي على ملفات).
  • التعريف (Definition): وضع ملف داخل صندوق.
  • الوراثة (Inheritance): لصق صندوقين معاً.

٢. القوة الخارقة: "الدمج العميق" (تشبيه الكعكة)

في معظم لغات البرمجة، إذا حاولت لصق كائنين معاً وكلاهما يحتوي على ملف باسم config.txt ، فإن أحد الملفين سيمحو الآخر. الأمر يشبه وضع طبقة كعكة جديدة فوق طبقة قديمة؛ حيث يختفي طعم الطبقة القديمة.

في حساب الوراثه، اللصق مختلف. إنه يشبه الدمج العميق (Deep Merge).

  • تخيل أن لديك "كعكة أساسية" بطبقة فانيليا.
  • ولديك "كعكة شوكولاتة" بطبقة شوكولاتة.
  • عندما تلصقهما معاً، لن تفقد الفانيليا. ستحصل على كعكة تحتوي على كلا الطبقتين (الفانيليا والشوكولاتة)، وإذا كانتا تشتركان في طبقة "كريمة التزيين"، فإن الكريمتين ستختلطان معاً بشكل مثالي.

هذا يسمى الدمج العميق. وهذا يعني أنه يمكنك إضافة ميزات جديدة إلى نظام موجود دون الحاجة أبداً لحذف أو إعادة كتابة الكود القديم. الكود الجديد ببساً "يرث" ويمد الكود القديم.

٣. حل مشكلة "الازدحام المروري" (مشكلة الخطية)

في البرمجة كائنية التوجه (مثل Java أو Scala)، إذا ورث الكلاس (Class) "أ" من "ب"، وورث الكلاس "ج" أيضاً من "ب"، وحاولت الجمع بين "أ" و "ج"، يصاب الكمبيوتر بالارتباك حول من "يملك" الأجزاء المشتركة. عليه أن يضع قائمة صارمة ("خطية") ليقرر من هو الفائز. هذا يشبه ازدحاماً مرورياً حيث تتصارع السيارات على حق الأولوية.

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

٤. "شبح في الآلة" (الإشارة الذاتية)

عادةً، عندما يشير برنامج إلى نفسه (مثل دالة تستدعي نفسها)، فإنه يحتاج إلى "خدعة سحرية" خاصة (مُجمّع النقطة الثابتة) لكي يعمل.

في هذا النظام، الإشارة الذاتية أمر طبيعي. تخيل دمية ماتريوشكا الروسية (الدمى المتداخلة).

  • إذا كانت لديك دمية تقول "أنا أحتوي على نسخة أصغر من نفسي"، وقمت بلصق دميتين من هذه النوع، فلن يصاب النظام بالذعر. سيعرف أن "أنا" تشير في الواقع إلى كلا الدميتين الأصلية والجديدة.
  • يقوم النظام بحل الإشارة الذاتية لتشمل أهدافاً متعددة في آن واحد. الأمر يشبه مرآة تعكس صورة داخل مرآة أخرى، ولكن بدلاً من حلقة لانهائية تؤدي لتعطل الكمبيوتر، فإنه يخلق انعكاساً غنياً ومتعدد الطبقات يمكن للنظام التنقل فيه بسهء.

٥. لماذا يهم هذا: "مشكلة التعبير" (The Expression Problem)

هناك مشكلة شهيرة في علوم الحاسوب تسمى "مشكلة التعبير". وهي تسأل: كيف يمكننا إضافة أنواع بيانات جديدة وعمليات جديدة إلى برنامج دون كسر الكود الحالي أو الاضطرار لإعادة كتابة كل شيء؟

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

٦. "عمى الألوان" في الدوال

تذكر الورقة مفهوم "عمى ألوان الدوال".

  • في البرمجة التقليدية، تكون الدالة إما "متزامنة" (تنفذ شيئاً واحداً في كل مرة) أو "غير متزامنة" (تنفذ أشياء في الخلفية). خلطهما معاً أمر صعب؛ إذ يتعين عليك إعادة كتابة الكود للتعامل مع "اللون".
  • في هذا النظام، لا يهتم الكود باللون. هو فقط يحدد "فتحة" (مكان محجوز). لاحقاً، يمكن لشخص آخر ملء هذه الفتحة بنسخة متزامنة أو نسخة غير متزامنة. الكود الرئيسي يظل دون تغيير. الأمر يشبه مأخذ طاقة عالمي يعمل سواء قمت بتوصيل مصباح أو محمصة خبز.

الصورة الكبيرة

يقول المؤلف، بو يانغ: "لسنا بحاجة إلى آلات معقدة لبناء برمجيات معقدة. نحن فقط بحاجة إلى صناديق شفافة تلتصق ببعضها البعض بشكل مثالي."

من خلال التعامل مع كل شيء كسجلات تندمج بعمق، يجعل "حساب الوراثة" هذا البرمجة:
١. أكثر مرونة: يمكنك إضافة الميزات في أي وقت دون كسر الأشياء.
٢. أكثر قوة: يمكنه فعل كل ما تفعله الأنظمة القدة القائمة على "الدوال"، بل وأكثر من ذلك.
٣. أبسط: يزيل الحاجة إلى قواعد معقدة حول من يملك ماذا، لأن كل شيء مشترك ومدمج.

إنه يحول البرمجة من معركة حول "من سيفوز في النزاع" إلى عمل تعاوني لـ "بناء هيكل أكبر وأغنى معاً".

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →