نوع‌دهی قوی و ضعیف

در برنامه‌نویسی رایانه‌ای، زبان‌های برنامه‌نویسی معمولاً به صورت محاوره‌ای به دو نوع، بر اساس آنکه «سیستم نوع زبان» نوع‌دهی قوی یا نوع‌دهی نیرومند ،و نوع‌دهی ضعیف یا نوع‌دهی کم‌زور  (نوع دهی سست ) باشد، طبقه‌بندی می‌شود.

معمولاً یک زبان نوع‌دار نیرومند، دارای قواعد نوع دهی سختگیرانه‌تری در زمان کامپایل می‌باشند که به معنی ضمنی آن است که خطاها و استثناها به احتمال بیشتر در مدت کامپایل رخ می‌دهند. زبان‌های نوع‌دهی پویا (که در آن بررسی نوع در زمان اجرا رخ می‌دهد) نیز می‌توانند نوع دهی نیرومند باشند. بیشتر این قواعد روی انتساب متغیرها تأثیر می‌گذارند، همچنین قواعد می‌توانند روی مقادیر برگردانده شده و فراخوانی تابع تأثیر بگذارند.

یک زبان نوع دهی کم‌زور قواعد نوع دهی سست‌تری دارد، و می‌تواند نتایج غیرقابل پیش‌بینی ایجاد کند، یا می‌تواند تبدیل نوع ضمنی در زمان اجرا انجام دهد. یک مفهوم مرتبط اما متفاوت «نوع‌دهی پنهان» است.

تاریخچه 
در ۱۹۷۴، لیسکو  و زایلز  یک زبان وابسته زیاد به نوع را تعریف کردند به این عنوان که «هر گاه یک شیء از فراخوانی یک تابع به تابع صدا زده شده عبور کرد، نوعش باید سازگار با نوع تعریف‌شده در تابع صدا زده شده باشد.»
جکسون در اینباره نوشته‌است، «در یک زبان وابسته زیاد به نوع ناحیه هر داده یک نوع متفاوت دارد و هر فرایند الزامات ارتباطش را به شروط این نوع‌ها توضیح می‌دهد.»

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

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

جستارهای وابسته 
 نوع داده
 ایمنی حافظه

منابع 

نظریه نوع‌ها
ویکی‌سازی رباتیک
سیستم‌های انواع