تضمين

في هذا المثال ، يتم تضمين بيانات الملف B في المستند A.

في علوم الكمبيوتر ، التضمين هو تضمين جزء أو كل مستند إلكتروني في مستند واحد أو أكثر عن طريق الإشارة عبر النص التشعبي . يتم إجراء التضمين عادةً عند عرض المستند المرجعي، ويكون عادةً تلقائيًا وشفافًا للمستخدم النهائي. [1] نتيجة التضمين هي مستند متكامل واحد يتكون من أجزاء مجمعة ديناميكيًا من مصادر منفصلة، ​​ربما يتم تخزينها على أجهزة كمبيوتر مختلفة في أماكن متباينة.

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

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

صاغ تيد نيلسون المصطلح لكتابه غير الخطي Literary Machines الصادر عام 1980 ، ولكن فكرة النسخة الأصلية والتكرارات تم تطبيقها قبل 17 عامًا، في Sketchpad . حاليًا، إنها تقنية شائعة يستخدمها مؤلفو الكتب المدرسية، حيث يلزم مناقشة موضوع/موضوع واحد في فصول متعددة. تتمثل إحدى مزايا هذا النظام في الكتب المدرسية في أنه يساعد على تكرار البيانات ويحافظ على حجم الكتاب في حدود يمكن التحكم فيها.

الاعتبارات الفنية

الحياد السياقي

يعمل التضمين بشكل أفضل عندما تكون أقسام النص المضمنة مستقلة، بحيث يكون معنى النص وصلاحيته مستقلين عن السياق. على سبيل المثال، تكون الصيغ مثل "كما هو موضح في القسم السابق" إشكالية، لأن القسم المضمن قد يظهر في سياق مختلف، مما يسبب ارتباكًا. يختلف ما يشكل نصًا "محايدًا للسياق"، ولكنه غالبًا ما يتضمن أشياء مثل معلومات الشركة أو القالب . للمساعدة في التغلب على مشكلات حساسية السياق مثل تلك المذكورة أعلاه، غالبًا ما تكون الأنظمة القادرة على التضمين قادرة أيضًا على قمع عناصر معينة داخل المحتوى المضمن. على سبيل المثال، يمكن لـ Wikipedia استخدام علامات مثل " noinclude " و"onlyinclude" و"includeonly" لهذا الغرض. الأمثلة النموذجية للعناصر التي غالبًا ما تتطلب مثل هذه الاستثناءات هي عناوين المستندات والحواشي السفلية والمراجع المتقاطعة؛ وبهذه الطريقة، يمكن قمعها تلقائيًا عند التضمين، دون إعادة العمل يدويًا لكل حالة.

المعلمة

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

الأصول

بدأ مفهوم إعادة استخدام محتوى الملف مع لغات برمجة الكمبيوتر: COBOL في عام 1960، [2] تليها BCPL و PL/I و C و [3] وبحلول عام 1978، حتى FORTRAN . يسمح التوجيه المضمن بإعادة استخدام كود المصدر المشترك مع تجنب مخاطر برمجة النسخ واللصق والترميز الثابت للثوابت. كما هو الحال مع العديد من الابتكارات، تطورت مشكلة. قد توفر توجيهات التضمين المتعددة نفس المحتوى مثل توجيه تضمين آخر، مما يتسبب عن غير قصد في تكرار نفس كود المصدر في النتيجة النهائية، مما يؤدي إلى حدوث خطأ . تساعد حراس التضمين في حل هذه المشكلة عن طريق حذف المحتوى المكرر بعد تضمين محتوى واحد. [4]

أدت فكرة وجود مصدر واحد قابل لإعادة الاستخدام للمعلومات إلى مفاهيم مثل: لا تكرر نفسك ومبدأ التجريد . تم العثور على استخدام آخر لجعل البرامج أكثر قابلية للنقل . يستخدم كود المصدر المحمول توجيه تضمين لتحديد مكتبة قياسية ، والتي تحتوي على كود مصدر خاص بالنظام يختلف مع كل بيئة كمبيوتر. [5]

التاريخ والتنفيذ بواسطة مشروع زانادو

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

ومع ذلك، وفقًا لنيلسون، كان مفهوم التضمين قد شكل بالفعل جزءًا من وصفه للنص التشعبي عام 1965. [6] يعرّف نيلسون التضمين بأنه "... نفس المحتوى المعروف في أكثر من مكان"، مما يميزه عن الحالات الأكثر خصوصية، مثل تضمين محتوى من موقع مختلف (يسميه التسليم عبر الإنترنت ) أو اقتباس صريح يظل متصلاً بأصوله (يسميه الاقتباس عبر الإنترنت ).

تدعم بعض أنظمة النص التشعبي، بما في ذلك مشروع Xanadu الخاص بـ Ted Nelson ، التضمين. [7]

قدم نيلسون عرضًا توضيحيًا لدمج الويب، وهو Little Transquoter (تم برمجته وفقًا لمواصفات نيلسون بواسطة أندرو بام في عامي 2004 و2005). [8] ينشئ تنسيقًا جديدًا مبنيًا على عناوين الأجزاء من صفحات الويب؛ عند إلغاء الإشارة إليها، يظل كل جزء في الصفحة الناتجة متصلًا بالنقر إلى سياقه الأصلي.

التنفيذ على الويب

HTTP ، كبروتوكول نقل، لديه دعم أولي للإدراج عبر تقديم البايتات : تحديد نطاق البايتات في رسالة طلب HTTP.

يمكن أن يحدث التضمين إما قبل الإرسال (من جانب الخادم) أو بعده (من جانب العميل). على سبيل المثال:

  • قد يتم إنشاء مستند HTML مسبقًا بواسطة الخادم قبل تسليمه إلى العميل باستخدام Server-Side Includes أو تطبيق آخر على جانب الخادم.
  • يمكن للعميل تحليل كيانات XML أو كائنات HTML، ثم يطلب الموارد المقابلة بشكل منفصل عن المستند الرئيسي.
  • قد يقوم متصفح الويب بتخزين العناصر مؤقتًا باستخدام خوارزمياته الخاصة، والتي يمكن أن تعمل دون توجيهات صريحة في ترميز المستند.
  • يستخدم AngularJS التضمين لعملية التوجيه المتداخلة. [9]

قد يعترض ناشرو محتوى الويب على تضمين مواد من مواقعهم الإلكترونية الخاصة إلى مواقع إلكترونية أخرى، أو قد يطلبون موافقة للقيام بذلك. قد يشير منتقدو هذه الممارسة إلى أشكال مختلفة من الربط المضمن باعتبارها سرقة النطاق الترددي أو الاستغلال .

قد يسعى الناشرون الآخرون على وجه التحديد إلى تضمين موادهم في مواقع ويب أخرى، كما في شكل إعلانات الويب ، أو كأدوات مثل عداد الزيارات أو أخطاء الويب .

تستخدم التطبيقات المختلطة التضمين لتجميع الموارد أو البيانات في تطبيق جديد، كما هو الحال عن طريق وضع صور ذات علامات جغرافية على خريطة تفاعلية، أو عن طريق عرض مقاييس الأعمال في لوحة معلومات تفاعلية .

HTML من جانب العميل

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

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

قد تدعم الإصدارات المستقبلية من HTML تضمين أجزاء من المستندات بشكل أعمق باستخدام تقنيات XML مثل الكيانات ، ومرجع مستند XPointer ، ومعالجة XSLT .

قد تستخدم خوادم البروكسي عملية التضمين لتقليل عمليات النقل المتكررة للموارد المطلوبة بشكل متكرر.

يحتوي إطار عمل الواجهة الأمامية الشهير AngularJS الذي طورته وصيانته Google على تعليمة callend ng-transclude التي تحدد نقطة الإدراج لـ DOM المضمن لأقرب تعليمة رئيسية تستخدم transclusion.

تضمين جانب الخادم

يمكن إنجاز عملية التضمين على جانب الخادم، وذلك من خلال تضمينات جانب الخادم ومراجع كيانات الترميز التي يتم حلها بواسطة برنامج الخادم. وهي ميزة من ميزات قوالب الاستبدال .

تضمين الكود المصدر

يتيح إدراج الكود المصدر في تصميم البرنامج أو المواد المرجعية تقديم الكود المصدر داخل المستند، ولكن لا يتم تفسيره كجزء من المستند، مما يحافظ على الاتساق الدلالي للكود المدرج فيما يتعلق بقاعدة الكود المصدر الخاصة به.

التضمين في إدارة المحتوى

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

التنفيذ في تطوير البرمجيات

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

  • تضمين: ستقوم بعض البرامج بتضمين ملف آخر صراحةً. يمكن أن يتكون الملف المضمن من كود قابل للتنفيذ، وإعلانات، وتعليمات المترجم، و/أو التفرع إلى أجزاء لاحقة من المستند، اعتمادًا على متغيرات وقت التجميع.
  • الماكرو: عادةً ما توفر لغات التجميع ، وبعض لغات البرمجة عالية المستوى، وحدات ماكرو، وتعليمات مسماة خاصة تستخدم لإنشاء التعريفات، وإنشاء التعليمات البرمجية القابلة للتنفيذ، وتوفير التكرار والقرارات الأخرى، وتعديل المستند الناتج وفقًا للمعلمات المقدمة إلى الماكرو عند عرض الملف.
  • النسخ: تحتوي لغة البرمجة كوبول على أمر النسخ، حيث يتم إدراج ملف منسوخ في المستند المنسوخ، ليحل محل أمر النسخ. يمكن تعديل التعليمات البرمجية والإعلانات في الملف المنسوخ بواسطة وسيطة الاستبدال كجزء من أمر النسخ.

انظر أيضا

مراجع

  1. ^ غلوشكو، روبرت جيه ، محرر (2013). انضباط التنظيم . كامبريدج، ماساتشوستس: مطبعة معهد ماساتشوستس للتكنولوجيا. ص 231. ISBN 9780262518505.
  2. ^ المواصفات الأولية للغة الأعمال المشتركة (كوبول) لبرمجة أجهزة الكمبيوتر الرقمية الإلكترونية (PDF) . واشنطن: وزارة الدفاع. أبريل 1960. ص. V-27. تتضمن: الوظيفة: توفير جهد المبرمج من خلال دمج البرامج الفرعية للمكتبة تلقائيًا في البرنامج المصدر.
  3. ^ Ritchie, Dennis M. (1993-03-01). "The development of the C language". ACM SIGPLAN Notices . 28 (3): 201–208. doi :10.1145/155360.155580. مؤرشف من الأصل في 27 فبراير 2020. حدثت العديد من التغييرات الأخرى حوالي عامي 1972 و1973، لكن أهمها كان تقديم المعالج المسبق ، جزئيًا بناءً على حث آلان سنايدر [Snyder 74]، ولكن أيضًا اعترافًا بفائدة آليات تضمين الملفات المتوفرة في BCPL و PL/I . كانت نسخته الأصلية بسيطة للغاية، ولم تقدم سوى الملفات المضمنة واستبدالات السلسلة البسيطة : #include و#define من وحدات الماكرو بدون معلمات. بعد ذلك بوقت قصير، تم توسيعه، في الغالب بواسطة مايك ليسك ثم بواسطة جون ريزر، لدمج وحدات الماكرو مع الوسائط والتجميع الشرطي . كان المعالج المسبق يُعتبر في الأصل مكملاً اختيارياً للغة نفسها.تم أرشفة عنوان URL البديل في 2020-02-04 على موقع Wayback Machine
  4. ^ Stallman, Richard M. ; Weinberg, Zachary. "Header Files" (PDF) . The C Preprocessor: For gcc version 6.3.0 (GCC) . pp. 10–11. بدائل لـ Wrapper #ifndef : يدعم CPP طريقتين أخريين للإشارة إلى أنه يجب قراءة ملف الرأس مرة واحدة فقط. ولا يمكن نقل أي منهما مثل الغلاف '#ifndef' ونوصيك بعدم استخدامهما في البرامج الجديدة، مع التحذير من أن '#import' هي ممارسة قياسية في Objective-C . [...] هناك طريقة أخرى لمنع تضمين ملف الرأس أكثر من مرة وهي باستخدام التوجيه ' #pragma once '. إذا تم رؤية ' #pragma once ' عند مسح ملف الرأس، فلن تتم قراءة هذا الملف مرة أخرى، مهما حدث.
  5. ^ جونسون، إس سي ؛ ريتشي، دي إم (يوليو-أغسطس 1978). "نظام تقاسم الوقت يونكس: قابلية نقل برامج سي ونظام يونكس". مجلة بيل التقنية . 57 (6): 2021-2048. doi :10.1002/j.1538-7305.1978.tb02141.x. ISSN  0005-8580. S2CID  17510065. تم الاسترجاع في 27 فبراير 2020. حتى قبل ظهور آلة إنترداتا ، فقد أدركنا، كما ذكرنا أعلاه، أن العديد من البرامج تعتمد بدرجة غير مرغوب فيها ليس فقط على اتفاقيات الإدخال/الإخراج يونكس ولكن أيضًا على تفاصيل استراتيجيات التخزين المؤقت المواتية بشكل خاص لـ PDP-11 . تم كتابة حزمة من البرامج الروتينية، تسمى " مكتبة الإدخال/الإخراج المحمولة "، بواسطة ME Lesk وتم تنفيذها على أجهزة Honeywell وIBM بالإضافة إلى PDP-11 في محاولة ناجحة بشكل عام للتغلب على أوجه القصور في الحزم السابقة
  6. ^ ثيودور إتش نيلسون، "بنية ملف للمعقد والمتغير وغير المحدد". وقائع المؤتمر الوطني العشرين لجمعية الحوسبة الآلية (1965)، ص 84-100
  7. ^ Kolbitsch, Josef; Maurer, Hermann (January 27, 2017). "Transclusions in an HTML-Based Environment" (PDF) . مؤرشف من الأصل (PDF) في 1 يوليو 2017. تم الاسترجاع في 27 يناير 2017 .
  8. ^ The Little Transquoter Xanadu.com.au
  9. ^ "AngularJS". docs.angularjs.org . تم الاسترجاع في 2016-08-11 .

قراءة إضافية

  • دي إيوريو، أ.؛ فيتالي، ف. (أغسطس 2003). "بيئة تحرير تعاونية باستخدام تقنية Xanalogical" (ملف PDF) . وقائع ورشة العمل الدولية الثانية لتحليل وثائق الويب 2003 (WDA2003) . إدنبرة، المملكة المتحدة.
  • كولبيتش، جيه؛ مورير، هـ. (يونيو 2006). "التضمينات في بيئة تعتمد على لغة ترميز النص التشعبي". مجلة الحوسبة وتكنولوجيا المعلومات . 14 (2): 161-174. doi : 10.2498/cit.2006.02.07 .
  • كولبيتش، ج. (يونيو 2005). "التضمينات الدقيقة لمستندات الوسائط المتعددة في HTML". مجلة علوم الكمبيوتر العالمية . 11 (6).
  • كروتماير، هـ. (2002). "الوثائق المضمنة: مزايا إعادة استخدام أجزاء الوثائق" (PDF) . وقائع المؤتمر الدولي السادس للنشر الإلكتروني (ELPUB2002) الذي نظمته اللجنة الدولية للتغير المناخي والاتحاد الدولي للملكية الفكرية . جمهورية التشيك: كارلوفي فاري. ص 359-367. مؤرشف من الأصل (PDF) في 17 مايو 2005.
  • كروتماير، هـ.؛ د.، هيليك (2002). "قضايا الشمول" (PDF) . وقائع المؤتمر العالمي للتعليم الإلكتروني في الشركات والحكومة والرعاية الصحية والتعليم العالي (E-Learn 2002) . مونتريال، كندا. ص. 1730-1733. مؤرشف من الأصل (PDF) في 2015-06-20 . تم الاسترجاع في 2006-05-25 .
  • كروتماير، هـ.؛ مورير، هـ. (يوليو 2001). "التضمينات في القرن الحادي والعشرين" ( PDF ، HTML ، PostScript ) . مجلة علوم الكمبيوتر العالمية . 7 (12): 1125-1136. CiteSeerX  10.1.1.106.9923 .
  • مور، أ.؛ وآخرون (2001). "التدريس المصمم شخصيًا في WHURLE باستخدام الترجمة الشرطية". وقائع المؤتمر الثاني عشر لجمعية الحوسبة الآلية حول النص التشعبي والوسائط المتعددة . آرهاوس، الدنمرك. ص 163-164.
  • نيلسون، تي إتش (1993) [1980]. الآلات الأدبية . مطبعة مايندفول.
  • نيلسون، تي إتش (1995). "قلب الاتصال: الوسائط المتعددة الموحدة من خلال التضمين". اتصالات جمعية الحوسبة الآلية . 38 (8): 31-33. doi : 10.1145/208344.208353 . S2CID  16604206.
  • نيلسون، تي إتش (1996). "الروابط العامة والمدفوعات الصغيرة وحقوق الطبع والنشر المتبادلة". مركز أبحاث ألمادن . مؤرشف من الأصل في 2006-12-05 . تم الاسترجاع في 2006-09-27 .
  • نيلسون، تي إتش (1998). "حقوق الطبع والنشر: الإذن المسبق لإعادة النشر الافتراضي".
  • نيلسون، تي إتش (1999). "البنية التناظرية، مطلوبة الآن أكثر من أي وقت مضى: المستندات المتوازية، والروابط العميقة للمحتوى، والإصدارات العميقة وإعادة الاستخدام العميقة". استطلاعات الحوسبة ACM . 31 (4es): 33–es. CiteSeerX  10.1.1.418.7740 . doi :10.1145/345966.346033. S2CID  12852736.
  • بام، أ. (1997). "التضمين الدقيق في لغة ترميز النص التشعبي" (نص) . مسودة الإنترنت .
  • Wilde, E.; Lowe, D. (2002). "الفصل 7: لغة ربط XML". XPath, XLink, XPointer, and XML: دليل عملي لإنشاء الروابط التشعبية والتضمين على الويب . Addison-Wesley Professional. ص 169-198. ISBN 9780201703443.
  • تيد نيلسون: التضمين: إصلاح الأدبيات الإلكترونية - في محادثات جوجل التقنية، 29 يناير/كانون الثاني 2007.
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=الشمول&oldid=1246523347"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate