سیستم نوع: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
K. Najafiaghdam (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
خط ۱:
'''سیستم انواع''' مجموعه‌ای از قوانین است که ویژگی «[[نوع داده|نوع]]» را به مفاهیم مختلف یک زبان برنامه‌نویسی، مانند [[متغیر (برنامه‌نویسی)|متغیرها]]، [[رویه (علوم رایانه)|رویه‌ها]] و عبارات، نسبت می‌دهد. هر زبان برنامه‌نویسی دارای تعدادی نوع است که داده ساختارهای مختلف مورد استفاده در برنامه‌ها را دسته‌بندی میکنندمی‌کنند.
 
== هدف سیستم انواع ==
هدف اصلی سیستم انواع جلوگیری از وقوع خطا‌هایخطاهای اجرایی است. خطاهای اجرایی عموماً به صورت اشکال در روند اجرایی برنامه بروز پیدا می‌کنند. البته ممکن است برخی خطاهای اجرایی بدون داشتن اثر قابل مشاهده‌ای باعث تخریب داده شوند.
 
==  زبان‌های برنامه‌نویسی دارای نوع‌داده و فاقد نوع‌داده ==
متغیرهای یک زبان می‌توانند [[مقدار (علوم رایانه)|مقدارهای]] مختلفی بگیرند. حد بالای این مقادیر [[نوع داده|نوع]] نامیده می‌شود{{sfn|Cardelli|2004|p=1|ps=: "The fundamental purpose of a type system is to prevent the occurrence of execution errors during the running of a program."}}. برای مثال زبان برنامه‌نویسی [[جاوا (زبان برنامه‌نویسی)|جاوا]] دارای [[نوع داده بولی|نوع داده‌یدادهٔ بولی]] (boolean) است که دو مقدار درست (true) و نادرست (false) به خود می‌گیرد. به زبان‌هایی که مقادیر یک متغیر را از طریق نسبت دادن نوع به آن‌آن محدود می‌کنند، زبان‌های دارای نوع‌داده گفته‌می‌شود. متغیرهای زبان‌های فاقد نوع‌داده نوع ندارند. زبان‌های فاقد نوع‌داده ممکن است یک {{پم|نوع‌داده‌ینوع‌دادهٔ تمام‌شمول|top type|زبان=en}} داشته‌باشند که همه‌یهمهٔ مقادیر را بپذیرد. عملیات در زبان‌های فاقد نوع‌داده می‌توانند روی متغیرهای با نوع نادرست اعمال شوند.
 
== خطاهای اجرایی و ایمنی ==
خطاهای اجرایی به طوربه‌طور کلی به دو دسته تقسیم می‌شوند.
 
* '''خطاهای توقفی:''' خطاهایی که باعث توقف روند اجرای برنامه می‌شوند.
* '''خطاهای غیرتوقفی:''' خطاهایی که برنامه را متوقف نکرده و باعث بروز رفتارهای غیر منتظرهغیرمنتظره در آینده می‌شوند.
 
قسمتی از برنامه که منجر به وقوع خطای غیرتوقفی نشود را امن می‌نامند. اگر همه‌یهمهٔ قسمت‌های برنامه‌های نوشته‌شده به یک زبان برنامه‌نویسی امن باشند، آن زبان را یک «زبان برنامه‌نویسی امن» می‌نامند. زبان‌های برنامه‌نویسی فاقد نوع‌داده از طریق بررسی برنامه در زمان اجرا از ایمنی آن اطمینان حاصل می‌کنند. این در حالی‌است که زبان‌های برنامه‌نویسی دارای نوع‌داده برنامه را در زمان کامپایل بررسی می‌کنند و در صورت ایمن نبودن برنامه، آن را اجرا نمی‌کنند. البته ممکن است این زبان‌ها در زمان اجرا نیز برنامه را بررسی کنند.
 
== ویژگی‌های یک سیستم انواع ==
نوع‌داده‌های یک زبان برنامه‌نویسی از لحاظ صوری بودن تعریف‌شان با دیگر اجزای زبان تفاوت‌هایی دارند. تعریف انواع داده از این حیث مابین یادداشت‌های غیر صوری یک زبان و تعریف مشخصات جزئی‌تر است؛ از یادداشت‌های زبان صوری‌تر است و از مشخصات جزئی راحت‌تر قابل پردازش است.
ویژگی‌های پایه‌ای یک سیستم انواع عبارت‌اند از:
* سیستم انواع باید به صورت [[تصمیم‌پذیری(منطق)|تصمیم‌پذیر]] قابل تصدیق باشد. به این معنی که الگوریتمی (که به الگوریتم [https[://en.wikipedia.org/wiki/Type_system:Type system#Type_checkingType checking|بررسی نوع‌داده]] معروف است.) وجود داشته‌باشد که خوش‌رفتار بودن برنامه را تصمیم بگیرد. هدف سیستم انواع تنها بیان هدف برنامه نیست؛ بلکه شناسایی و جلوگیری از وقوع خطاها است.
* سیستم انواع باید شفاف باشد. برنامه‌نویس باید قادر باشد بدون ابهام رفتار یک سیستم انواع و بررسی نوع‌داده آن را پیش‌بینی کند.
* بررسی نوع‌اداه در یک سیستم انواع باید قابل تحمیل باشد؛ اعلام انواع متغیرها باید در زمان کامپایل به صورت ایستا قابل بررسی باشد. بررسی‌های بیشتر باید در زمان اجرا به صورت پویا انجام بگیرند.<ref>https://en.wikipedia.org/wiki/Type_system#Static_and_dynamic_type_checking_in_practice</ref>. همچنین وجود تناسب بین نوع هر متغیر با مقدار نسبت داده‌شده به آن باید بررسی شود.
 
== منابع ==