سیستم انواع

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

سیستم انواع ( انگلیسی: Type system) مجموعه‌ای از قوانین است که ویژگی «نوع» را به مفاهیم مختلف یک زبان برنامه‌نویسی، مانند متغیرها، رویه‌ها و عبارات، نسبت می‌دهد. هر زبان برنامه‌نویسی دارای تعدادی نوع است که داده ساختارهای مختلف مورد استفاده در برنامه‌ها را دسته‌بندی می‌کنند.

هدف سیستم انواع[ویرایش]

هدف اصلی سیستم انواع جلوگیری از وقوع خطاهای اجرایی است. خطاهای اجرایی عموماً به صورت اشکال در روند اجرایی برنامه بروز پیدا می‌کنند. البته ممکن است برخی خطاهای اجرایی بدون داشتن اثر قابل مشاهده‌ای باعث تخریب داده شوند.

زبان‌های برنامه‌نویسی دارای نوع‌داده و فاقد نوع‌داده[ویرایش]

متغیرهای یک زبان می‌توانند مقدارهای مختلفی بگیرند. حد بالای این مقادیر نوع نامیده می‌شود[۱]. برای مثال زبان برنامه‌نویسی جاوا دارای نوع دادهٔ بولی (boolean) است که دو مقدار درست (true) و نادرست (false) به خود می‌گیرد. به زبان‌هایی که مقادیر یک متغیر را از طریق نسبت دادن نوع به آن محدود می‌کنند، زبان‌های دارای نوع‌داده گفته‌می‌شود. متغیرهای زبان‌های فاقد نوع‌داده نوع ندارند. زبان‌های فاقد نوع‌داده ممکن است یک نوع‌دادهٔ تمام‌شمول ‏(en) داشته‌باشند که همهٔ مقادیر را بپذیرد. عملیات در زبان‌های فاقد نوع‌داده می‌توانند روی متغیرهای با نوع نادرست اعمال شوند.

خطاهای اجرایی و ایمنی[ویرایش]

خطاهای اجرایی به‌طور کلی به دو دسته تقسیم می‌شوند.

  • خطاهای توقفی: خطاهایی که باعث توقف روند اجرای برنامه می‌شوند.
  • خطاهای غیرتوقفی: خطاهایی که برنامه را متوقف نکرده و باعث بروز رفتارهای غیرمنتظره در آینده می‌شوند.

قسمتی از برنامه که منجر به وقوع خطای غیرتوقفی نشود را امن می‌نامند. اگر همهٔ قسمت‌های برنامه‌های نوشته‌شده به یک زبان برنامه‌نویسی امن باشند، آن زبان را یک «زبان برنامه‌نویسی امن» می‌نامند. زبان‌های برنامه‌نویسی فاقد نوع‌داده از طریق بررسی برنامه در زمان اجرا از ایمنی آن اطمینان حاصل می‌کنند. این در حالی‌است که زبان‌های برنامه‌نویسی دارای نوع‌داده برنامه را در زمان کامپایل بررسی می‌کنند و در صورت ایمن نبودن برنامه، آن را اجرا نمی‌کنند. البته ممکن است این زبان‌ها در زمان اجرا نیز برنامه را بررسی کنند.

ویژگی‌های یک سیستم انواع[ویرایش]

نوع‌داده‌های یک زبان برنامه‌نویسی از لحاظ صوری بودن تعریف‌شان با دیگر اجزای زبان تفاوت‌هایی دارند. تعریف انواع داده از این حیث مابین یادداشت‌های غیر صوری یک زبان و تعریف مشخصات جزئی‌تر است؛ از یادداشت‌های زبان صوری‌تر است و از مشخصات جزئی راحت‌تر قابل پردازش است. ویژگی‌های پایه‌ای یک سیستم انواع عبارت‌اند از:

  • سیستم انواع باید به صورت تصمیم‌پذیر قابل تصدیق باشد. به این معنی که الگوریتمی (که به الگوریتم بررسی نوع‌داده معروف است) وجود داشته‌باشد که خوش‌رفتار بودن برنامه را تصمیم بگیرد. هدف سیستم انواع تنها بیان هدف برنامه نیست؛ بلکه شناسایی و جلوگیری از وقوع خطاها است.
  • سیستم انواع باید شفاف باشد. برنامه‌نویس باید قادر باشد بدون ابهام رفتار یک سیستم انواع و بررسی نوع‌داده آن را پیش‌بینی کند.
  • بررسی نوع داده در یک سیستم انواع باید قابل تحمیل باشد؛ اعلام انواع متغیرها باید در زمان کامپایل به صورت ایستا قابل بررسی باشد. بررسی‌های بیشتر باید در زمان اجرا به صورت پویا انجام بگیرند.[۲] همچنین وجود تناسب بین نوع هر متغیر با مقدار نسبت داده‌شده به آن باید بررسی شود.

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

  1. Cardelli 2004, p. 1: "The fundamental purpose of a type system is to prevent the occurrence of execution errors during the running of a program."
  2. https://en.wikipedia.org/wiki/Type_system#Static_and_dynamic_type_checking_in_practice