# استضافة ذاتية (برمجة)

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

## لمحة تاريخية

تمت كتابة أول مترجم ذاتي الاستضافة (باستثناء المجمعات) لـلغة ليسب بواسطة هارت وليفين في معهد ماساتشوستس للتكنولوجيا (MIT) في عام 1962.
لقد كتبا مترجم ليسب بلغة ليسب، واختبراه داخل مترجم ليسب الحالي. بمجرد قيامهما بتحسين المترجم إلى النقطة التي يمكنه من خلالها تجميع كود المصدر الخاص به، أصبح يقوم بالاستضافة الذاتية.
هذه التقنية ممكنة أيضًا عندما يكون المترجم موجود بالفعل لنفس اللغة التي يتم تجميعها.
ينبع هذا مباشرة من فكرة تشغيل البرنامج بنفسه كمدخل، والذي يستخدم أيضًا في العديد من البراهين في علوم الكمبيوتر النظرية مثل عدم القدرة على تقرير مسألة توقف.

## نماذج

بدأ كين طومسون التطوير على يونيكس في عام 1968 من خلال كتابة وتجميع البرامج على GE-635 ونقلها إلى PDP-7 للاختبار. بعد اكتمال نواة يونيكس الأولية، ومترجم أوامر، ومحرر، ومجمع، وبعض الأدوات المساعدة، أصبح نظام التشغيل يونيكس ذاتي الاستضافة - يمكن كتابة البرامج واختبارها على PDP-7 نفسه.
تمت استضافة تطوير نواة لينكس في البداية على نظام مينيكس. عندما يتم نقل حزم كافية، مثل مجموعة مترجمات جنو وجنو باش وأدوات مساعدة أخرى، يمكن للمطورين العمل على إصدارات جديدة من نواة لينكس استنادًا إلى إصدارات أقدم من نفسه (مثل بناء نواة 3.21 على جهاز يعمل على نواة 3.18). يمكن أيضًا استخدام هذا الإجراء عند إنشاء توزيعة لينكس جديدة من البداية.
كتب دوغلاس ماكلروي لغة TMG (مترجم مترجم) بلغة TMG على قطعة من الورق و «قرر إعطاء قطعة الورق الخاصة به لقطعته من الورق»، وقام بإجراء الحساب بنفسه، وبالتالي تجميع مترجم TMG في الأسمبلي، والذي طبعه وتم تجميعه على PDP-7.
يعتمد تطوير نظام جنو بشكل كبير على مجموعة مترجمات جنو (مترجم جنو للغة سي) وجنو إيماكس (محرر مشهور)، مما يوفر التطوير الذاتي والمحافظة والاستدامة للبرمجيات الحرة لمشروع جنو.
تحتوي العديد من لغات البرمجة على تطبيقات ذاتية الاستضافة: مُجمِّعات موجودة في نفس اللغة ومن أجلها. تتضمن هذه اللغات أيدا وبيسيك وسي وسي++ وسي شارب وكلوجر وكافي سكريبت وكريستال ودي وديلان وإف شارب وFASM وفورث وجامباس وجو وهاسكل وهولي سي وجافا وليسب وموديلا-2 وكامل الموضوعية وOberon وباسكال وبايثون ورست وسكالا وسمول توك وتايب سكريبت وفالا وفيجوال بيسك.
في بعض هذه الحالات، لم يكن التنفيذ الأولي مستضافًا ذاتيًا، بل تمت كتابته بلغة أخرى (أو حتى بلغة الآلة)؛ في حالات أخرى، تم تطوير التنفيذ الأولي باستخدام تقنية (بالإنجليزية: bootstrapping)‏ .

## مراجع

* ↑ "WCF Tutorial". m.wcftutorial.net. مؤرشف من الأصل في 2019-12-30. اطلع عليه بتاريخ 2020-12-14.
* ↑ "CSAIL Publications". publications.csail.mit.edu. مؤرشف من الأصل في 2020-02-25. اطلع عليه بتاريخ 2020-12-14.
* بوابة برمجة الحاسوب
* بوابة تقانة المعلومات
* بوابة علم الحاسوب