غير مباشر
في علم الحاسوب ، يُعرَّف التوجيه غير المباشر بأنه طريقة للإشارة إلى شيء ما باستخدام اسم أو مرجع أو حاوية بدلاً من القيمة نفسها. وأكثر أشكال التوجيه غير المباشر شيوعاً هو معالجة قيمة ما من خلال عنوانها في الذاكرة ؛ على سبيل المثال، الوصول إلى متغير باستخدام مؤشر . يُطلق على المؤشر المخزن الذي يُستخدم لتوفير مرجع إلى كائن ما عن طريق التوجيه غير المباشر المزدوج اسم عقدة التوجيه غير المباشر . في بعض بنى الحواسيب القديمة، كانت الكلمات غير المباشرة تدعم أنماط عنونة متنوعة، متفاوتة التعقيد .
ومن الأمثلة المهمة الأخرى نظام أسماء النطاقات الذي يسمح باستخدام أسماء مثل en.wikipedia.orgبدلاً من عناوين الشبكة مثل 208.80.154.224. يعني هذا التوجيه غير المباشر من الأسماء التي يسهل على الإنسان قراءتها إلى عناوين الشبكة أن الإشارات إلى صفحة الويب تصبح أسهل تذكراً، ولا تحتاج الروابط إلى التغيير عند نقل موقع الويب إلى خادم مختلف.
ملخص
هناك مقولة شهيرة لباتلر لامبسون تُنسب إلى ديفيد ويلر تقول: "يمكن حل جميع مشاكل علوم الحاسوب بمستوى إضافي من التوجيه غير المباشر" ( النظرية الأساسية لهندسة البرمجيات ). [ 1 ] كثيرًا ما يُقتبس هذا القول بشكل خاطئ عمدًا، حيث يُستبدل مصطلح " مستوى التوجيه غير المباشر" بمصطلح " طبقة التجريد". ومن نتائج هذه المقولة، والاستنتاج الأصلي لويلر، "...باستثناء مشكلة كثرة طبقات التوجيه غير المباشر".
تؤكد مذكرة إنترنت فكاهية ، تحمل الرقم RFC 1925 ، على ما يلي:
(6) من الأسهل نقل المشكلة (على سبيل المثال، عن طريق نقل المشكلة إلى جزء مختلف من بنية الشبكة الكلية ) من حلها.
- (6أ) (نتيجة). من الممكن دائمًا إضافة مستوى آخر من التوجيه غير المباشر.
تستخدم البرمجة كائنية التوجه التوجيه غير المباشر على نطاق واسع، ومن الأمثلة البسيطة على ذلك الإرسال الديناميكي . ومن الأمثلة الأكثر تعقيدًا على التوجيه غير المباشر أنماط تصميم الوكيل وخادم الوكيل . ويُعد التفويض مثالًا كلاسيكيًا آخر على نمط التوجيه غير المباشر. في لغات البرمجة المفسرة ذات الأنواع القوية للبيانات الديناميكية ، تتطلب معظم مراجع المتغيرات مستوىً من التوجيه غير المباشر: حيث يتم أولًا التحقق من نوع المتغير للتأكد من سلامته، ثم يتم فك مرجعية المؤشر إلى القيمة الفعلية والتعامل معها.
في اللغات ذات الأنواع ذات الحجم الثابت، يُستخدم التوجيه غير المباشر غالبًا لتعريف أنواع البيانات التكرارية . على سبيل المثال، تتطلب لغة Rust أن تحتوي متغيرات التعداد التكرارية على نوع يشبه المؤشر ، مثل `<enum> Box<T>`، Rc<T>بدلًا من احتواء قيمة أخرى من نفس النوع مباشرةً. هذا يُعطي النوع التكراري حجمًا معروفًا، لأن المتغير يخزن مؤشرًا بحجم ثابت بينما تُخزن القيمة التكرارية في مكان آخر. [ 2 ]
عند استخدام البرمجة الرمزية انطلاقًا من مواصفات رياضية رسمية، يُمكن أن يكون استخدام التوجيه غير المباشر مفيدًا للغاية. لنبدأ بمثال بسيط: المتغيرات x و y و z في معادلة مثل:يمكن أن يشير الرمز إلى أي عدد. يمكن تخيل كائنات لأعداد مختلفة، ومن ثم يمكن أن تشير x و y و z إلى الأعداد المحددة المستخدمة في مسألة معينة. هذا المثال البسيط له حدوده، إذ يوجد عدد لا نهائي من الأعداد الحقيقية. في أجزاء أخرى من البرمجة الرمزية، يوجد عدد محدود من الرموز. لذا، لننتقل إلى مثال أكثر أهمية، في المنطق، يمكن أن تشير الصيغة α إلى أي صيغة، فقد تكون β أو γ أو δ ، ... أو η → π أو ς أو σ ، ... عند استخدام تدوين بناء المجموعة، فإن العبارة Δ={ α } تعني مجموعة جميع الصيغ - لذا، على الرغم من أن الإشارة هي إلى α، إلا أن هناك مستويين من التوجيه غير المباشر هنا، الأول إلى مجموعة جميع قيم α ، ثم الثاني إلى صيغة محددة لكل ظهور لـ α في المجموعة Δ.
انظر أيضاً
مراجع
- ↑ سبينليس، ديوميديس (2007). "مستوى آخر من التوجيه غير المباشر". في أورام، آندي؛ ويلسون، جريج (محرران). الكود الجميل: مبرمجون رائدون يشرحون طريقة تفكيرهم . سيباستوبول، كاليفورنيا: أورايلي وشركاؤه. ص 279-291 .
- ↑ كلابنيك، ستيف؛ نيكولز، كارول. "استخدام Box<T> للإشارة إلى البيانات في الذاكرة الديناميكية". لغة برمجة رست . دار نشر نو ستارش . تم الاطلاع عليه بتاريخ 19 يونيو 2026 .
- أنواع البيانات
- بنى البرمجة
- مصطلحات الحوسبة
- العمليات الأحادية
