دامنه (علوم رایانه)

گستره یا دامنه  مرتبط با یک انقیاد نام (پیوند بین یک نام و یک موجودیت مانند متغیر) در برنامه‌نویسی، محدوده‌ای از برنامه است که این نام‌گذاری در آن اعتبار دارد. به بیان دیگر در کدام قسمت از برنامه می‌توان از این نام برای اشاره به موجودیت مورد نظر استفاده کرد. به این قسمت محدوده دامنه  گفته می‌شود. در قسمت‌های دیگر برنامه ممکن است همین نام به موجودیت دیگری اشاره کند (انقیاد متفاوتی داشته باشد) یا اصلاً به چیزی اشاره نکند.WG14 N1256 (2007 updated version of the C99 standard), 6.2.1 Scopes of identifiers, 2007-09-07

دامنهٔ یک انقیاد، به‌ویژه در متون قدیمی‌تر، با عنوان میدان دید یک موجودیت  نیز شناخته می‌شود. در این روش نام‌گذاری، اصالت به موجودیت داده شده‌است در حالی که در نام‌گذاری دامنه، دامنه مستقیماً به انقیاد مرتبط می‌شود.

در تعریف دامنه از عبارت «قسمتی از برنامه» استفاده می‌شود که خود می‌تواند مفاهیم متفاوتی داشته باشد. «قسمتی از برنامه» می‌تواند قسمتی از «کد منبع برنامه» باشد که به آن دامنهٔ واژگانی یا دامنه ایستا گفته می‌شود.The Go Programming Language Specification: Declarations and scope, Version of Nov 13, 2013 در بعضی از زبان‌ها «قسمتی از برنامه» می‌تواند به قسمتی از برنامه در زمان اجرا اشاره کند، که به آن دامنه پویا می‌گویند.

 تعریف 
تعریف صریح دامنهٔ یک شناسه کاملاً بدون ابهام است. قسمتی از کد منبع است که انقیاد یک نام با موجودیت در آن اتفاق می‌افتد. تعریف دامنه از سال ۱۹۶۰ که در زبان برنامه‌نویسی الگول ۶۰ صورت گرفت، تغییری نکرده‌است.WG14 N1256 (2007 updated version of the C99 standard), 6.2.1 Scopes of identifiers, 2007-09-07

 الگول ۶۰ (سال ۱۹۶۰) 
این انواع از کمیت‌ها برجسته‌اند: متغیرهای ساده، آرایه‌ها، لیبل‌ها، سوییچ‌ها و رویه‌ها. دامنه یک کمیت مجموعه‌ای از عبارت‌های برنامه‌نویسی هستند که اعلان پیوند بین یک نام و شناسه در آن معتبر است.

 دامنه ایستا و دامنه پویا 
یک تفاوت عمده در دامنه‌ها معنی عبارت «قسمتی از برنامه» است. در زبان‌های با دامنه واژگانی  یا دامنه ایستا ، تحلیل نام‌ها به محلی از کد منبع بستگی دارد که تابع یا متغیر در آنجا تعریف می‌شود. از سوی دیگر، در زبان‌های با دامنه پویا  تحلیل نام‌ها به وضعیت برنامه در زمانی که با نام انقیاد شده مواجه می‌شود، بستگی دارد. زمینه اجرای  برنامه نیز بر این تحلیل تأثیرگذار است. در عمل، در دامنه ایستا، تعریف یک متغیر با جستجو در محدودهٔ آن متغیر یا تابع آغاز می‌شود؛ در صورتی که یافت نشد، جستجو در محدوده‌های بیرونی‌تر  ادامه می‌یابد. اما در دامنه پویا، ابتدا در تابع صدا زده شده جستجو می‌شود، در صورت که یافت نشد، به تابعی که تابع فعلی را صدا زده رجوع می‌شود و جستجو به همین منوال در پشته توابع ادامه پیدا می‌کند.Borning A. CSE 341 -- Lexical and Dynamic Scoping. University of Washington. البته در هر دو حالت، جستجو از دامنه محلی  تعریف آغاز می‌شود.

امروزه بیشتر زبان‌های برنامه‌نویسی از دامنه ایستا استفاده می‌کنند با این حال دامنه پویا نیز در برخی از زبان‌ها مورد استفاده قرار می‌گیرد؛ مهم‌ترین این زبان‌ها نسخه‌هایی از لیسپ و زبان‌های اسکریپتی مانند پرل و برخی از زبان‌های قالبی هستند.

تحلیل واژگان در زمان کامپایل به آن انقیاد زودرس  و در زمان اجرا به انقیاد دیررس  معروف است.

 جستارهای وابسته 
 بستار (علوم رایانه)
 متغیر سراسری
 متغیر محلی
 انقیاد نام
 نهانسازی اطلاعات

 منابع 

رده:مفاهیم زبان برنامه‌نویسی