سیستم نوعها |
---|
مفاهیم کلی |
طبقه های اصلی |
طبقه های جزیی |
جستارهای وابسته |
در برنامهنویسی رایانهای، زبانهای برنامهنویسی معمولاً به صورت محاورهای به دو نوع، بر اساس آنکه «سیستم نوع زبان» نوعدهی قوی یا نوعدهی نیرومند (به انگلیسی: strongly typed)،و نوعدهی ضعیف یا نوعدهی کمزور (به انگلیسی: weakly typed) (نوع دهی سست (به انگلیسی: loosely typed)) باشد، طبقهبندی میشود.[۱]
معمولاً یک زبان نوعدار نیرومند، دارای قواعد نوع دهی سختگیرانهتری در زمان کامپایل میباشند که به معنی ضمنی آن است که خطاها و استثناها به احتمال بیشتر در مدت کامپایل رخ میدهند. زبانهای نوعدهی پویا (که در آن بررسی نوع در زمان اجرا رخ میدهد) نیز میتوانند نوع دهی نیرومند باشند. بیشتر این قواعد روی انتساب متغیرها تأثیر میگذارند، همچنین قواعد میتوانند روی مقادیر برگردانده شده و فراخوانی تابع تأثیر بگذارند.[۱]
یک زبان نوع دهی کمزور قواعد نوع دهی سستتری دارد، و میتواند نتایج غیرقابل پیشبینی ایجاد کند، یا میتواند تبدیل نوع ضمنی در زمان اجرا انجام دهد.[۲] یک مفهوم مرتبط اما متفاوت «نوعدهی پنهان» است.[۱]
در ۱۹۷۴، لیسکو (به انگلیسی: Liskov) و زایلز (به انگلیسی: Zilles) یک زبان وابسته زیاد به نوع را تعریف کردند به این عنوان که «هر گاه یک شیء از فراخوانی یک تابع به تابع صدا زده شده عبور کرد، نوعش باید سازگار با نوع تعریفشده در تابع صدا زده شده باشد.»[۳] جکسون در اینباره نوشتهاست، «در یک زبان وابسته زیاد به نوع ناحیه هر داده یک نوع متفاوت دارد و هر فرایند الزامات ارتباطش را به شروط این نوعها توضیح میدهد.»[۴]
تصمیمگیریهای طراحی زبان، به شواهدی و مدارکی از نوع دهی «نیروند» یا «کمزور» رجوع میکنند. در واقع خیلی از این تصمیمها به صورت دقیقتر به صورت وجود یا فقدان «ایمنی نوع»، «ایمنی حافظه»، «بررسی نوع ایستا» یا «بررسی نوع پویا» باید رجوع شوند.
«نوع دهی نیروند» معمولاً به استفاده از «انواع» زبانهای برنامهنویسی برای اخذ «نامتغیر» های کد، و اطمینان از صحت آنها، و بیرون سازی قطعی کلاسهای مشخص و خطاهای برنامهنویسی ارجاع دارد؛ بنابراین برای دستیابی به این اهداف، نظامهای «نوعدهی نیرومند» زیادی وجود دارد.
{{cite web}}
: نگهداری یادکرد:ربات:وضعیت نامعلوم پیوند اصلی (link)