فضای نام (علوم رایانه)

از ویکی‌پدیا، دانشنامهٔ آزاد
(تغییرمسیر از فضای نام)
پرش به ناوبری پرش به جستجو

در علم رایانش، یک فضای نام (به انگلیسی: Namespace) یک مجموعه نماد می‌باشد که از آن برای سازمان‌دادن به انواع متفاوت شیء استفاده می شود، هدف آن است که این اشیا بتوانند توسط نام ارجاع شوند. یک فضای نام باید تضمین کند که همه ی شناسه های موجود در آن نام یکتایی دارند و در نتیجه اشیاء به راحتی قابل شناسایی می باشند[۱].

فضاهای نام معمولا سلسله مراتبی هستند، دلیل این امر امکان استفاده مجدد از نام ها در زمینه های مختلف است[۱].

مثال[ویرایش]

مثال های برجسته از فضای نام شامل[۱]:

مقایسه فضای نام رایانه با فضای نام در انسان ها[ویرایش]

برای مقایسه یک سیستم نامگذاری افراد را در نظر بگیرید، که در آن هر انسان یک نام خاص دارد و بعلاوه یک نام خانوادگی دارد که با وابستگان خود مشترک است. اگر نام کوچک برای اعضای خانواده تنها در یک خانواده یکتا باشد، آنوقت هر فرد می تواند به صورت منحصر به فرد با ترکیبی از نام کوچک و نام خانوادگی شناسایی شوند. تنها یک «بیژن شیرازی» وجود دارد، اگر چه ممکن است «بیژن» های زیادی وجود داشته باشد. در فضای نام خانواده «شیرازی»، تنها «بیژن» کافی است که به صورت غیر مبهم آن فرد را معین کند، درحالیکه در فضای نام «جهانی» برای همه ی افراد، باید از نام کامل استفاده کرد[۱].

  • به صورت مشابه، سیستم فایل سلسله مراتبی، فایل هایش را در پرونده ها (دایرکتوری) سازماندهی می کند. هر پرونده یک فضای نام جداگانه است، بنابراین کلمه ها و نیز مفاد درونی پرونده هر دو ممکن است شامل یک فایل «to_jane» باشند.
  • در زبان های برنامه نویسی، از فضای نام به صورت معمول برای اهداف گروه بندی نشانه ها و شناسه ها، در حول یک عملکرد بخصوص، و نیز جلوگیری برخورد اسامی بین چندین شناسه که دارای نام مشابه اند، استفاده می شود.
  • در شبکه سازی، سامانه نام دامنه وبگاه ها (و دیگر منابع) را به فضای نام سلسله مراتبی، سازمان دهی می کند[۱].

به عبارت دیگر، فضای نام، این امکان را می‌دهد که موجودیت‌هایی مثل کلاس‌ها، اشیاء و توابع را تحت عنوان یک نام جمع کنیم.[۶]

یک مثال از فضای‌نام در زبان ++C[ویرایش]

#include <iostream>

// This is how one brings a name into the current scope.  In this case, it's
// bringing them into global scope.
using std::cout;
using std::endl;

namespace box1 {
    int box_side = 4;
}

namespace box2 {
    int box_side = 12;
}

int main() {
    int box_side = 42;
    cout << box1::box_side << endl;  // Outputs 4.
    cout << box2::box_side << endl;  // Outputs 12.
    cout << box_side << endl;  // Outputs 42.
}


منابع[ویرایش]

  1. ۱٫۰ ۱٫۱ ۱٫۲ ۱٫۳ ۱٫۴ "Namespace". Wikipedia. 2020-01-31.
  2. Adya, Atul; Bolosky, William; Castro, Miguel; Cermak, Gerald; Chaiken, Ronnie; Douceur, John; Howell, Jon; Lorch, Jacob; Theimer, Marvin; Wattenhofer, Roger (2002). FARSITE: Federated, Available, and Reliable Storage for an Incompletely Trusted Environment (PDF). Proc. USENIX Symp. on Operating Systems Design and Implementation. Archived from the original (PDF) on 2010-07-28. The primary construct established by a file system is a hierarchical directory namespace, which is the logical repository for files.
  3. "C# FAQ: What is a namespace". http://en.csharp-online.net/: C# Online Net. Archived from the original on 2013-10-20. Retrieved 2010-02-23. A namespace is nothing but a group of assemblies, classes, or types. A namespace acts as a container—like a disk folder—for classes organized into groups usually based on functionality. C# namespace syntax allows namespaces to be nested.
  4. "An overview of namespaces in PHP". PHP Manual. What are namespaces? In the broadest definition namespaces are a way of encapsulating items. This can be seen as an abstract concept in many places. For example, in any operating system directories serve to group related files, and act as a namespace for the files within them.
  5. "Creating and Using Packages". Java Documentation. Oracle. A package is a grouping of related types providing access protection and name space management. Note that types refers to classes, interfaces, enumerations, and annotation types. Enumerations and annotation types are special kinds of classes and interfaces, respectively, so types are often referred to in this lesson simply as classes and interfaces.[منبع بهتری نیاز است]
  6. دکتر بابک بشری راد (۱۳۹۴). برنامه سازی پیشرفته با ++C. تهران: ناقوس. صص. ۱۵۹. شابک ۹۷۸-۹۶۴-۳۷۷-۷۴۶-۳.