اكتشف أسرار مجال (علم الحاسوب)

في علم الحاسوب، يعتبر المجال لمعرِّف ما (بالإنكليزية Scope) هو الجزء من البرنامج الحاسوبي الذي يمكن فيه استخدام المعرّف -و هو اسم يعود إلى كيان ما في البرنامج- للوصول إلى الكيان المقترن به. لذا، فإن المجال هو السياق في البرنامج الذي يكون فيه المعرّف صالح للاستعمال والوصول إلى الكيان المقترن به. أي بمعنى أخر: عندما يكون الكيان مرئي. في معظم الأحيان، يستخدم مصطلح «المجال» للحديث عن متى يمكن استخدام اسم متغير ما، له «حدود» داخل البرنامج بانتهاء هذا الحد ينتهي عمله ممكن أن نستخدم نفس اسم المتغير في كيان اخر ضمن حدود أخرى في نفس البرنامج لغرض أخر أو قد يكون إلى اللاشئ. ولكنه ينطبق أيضا على كيانات أخرى مثل: الأنواع (أو الأصناف) والوظائف. يعتبر المجال أمرا مهما لتحليل الاسم (name resolution) والذي هو بدوره أساسي لدلالات اللغة (language semantics): فالمعنى الكلي للبرنامج يعتمد على معانى الكلمات المكونة له منفردة. تحليل الاسم (و الذي يشمل أيضا المجال) يختلف من لغة برمجة إلى أخرى، وحتى في البرنامج الواحد فهو يختلف حسب نوع الكيان. تعتبر قواعد المجال -إضافة إلى قواعد أسماء المكتبات- حاسمة ومصيرية في البرمجة التركيبية، كنتيجة لهذا، فإن أي تغير على أي جزء من البرنامج لا يضر بالأجزاء الأخرى التي ليس لها علاقة.

وعمليًا معظم لغات البرمجة، تشير «جزء من البرنامج» إلى «جزء من شفرة المصدر (مساحة النص)»، ويعرف بالنطاق المعجمى"ٍStatic scop" يشير «جزء من البرنامج» ماقبل مرحلة التنفيذ أما الذي يشير إلى «جزء من وقت التشغيل (الفترة الزمنية أثناء التنفيذ)»، ويعرف بالنطاق الديناميكي"Dynamic scope." هذان المصطلحان مضللان إلى حد ما - إنهما يسيئان استخدام المصطلحات التقنية، ولكن التمييز نفسه دقيق ودقيق.

النطاق المعجمي «الثابت» (Lexical static scope)هو التركيز الرئيسي في هذه المقالة، مع فهم النطاق الديناميكي (Dynamic scope).

قراءة المقال الكامل على ويكيبيديا ←