تفاوت میان نسخه‌های «نوع‌دهی نیرومند و سست»

اصلاح نویسه‌های عربی، اصلاح فاصلهٔ مجازی، اصلاح ارقام، اصلاح سجاوندی، اصلاح املا
(اصلاح نویسه‌های عربی، اصلاح فاصلهٔ مجازی، اصلاح ارقام، اصلاح سجاوندی، اصلاح املا)
{{سیستم نوع}}
 
در [[برنامه‌نویسی رایانه‌ای|برنامه نویسی رایانه ای]]، [[زبان برنامه‌نویسی|زبانزبان‌های های برنامه نویسیبرنامه‌نویسی]] معمولامعمولاً به صورت محاوره ایمحاوره‌ای به دو نوع، بر اساس آنکه «سیستم نوع زبان» '''نوع‌دهی نیرومند''' {{به انگلیسی|strongly typed}}، یا '''نوع‌دهی کم‌زور''' {{به انگلیسی|weakly typed}} ('''نوع دهی سست''' {{به انگلیسی|loosely typed}}) باشد، طبقهطبقه‌بندی بندی می شودمی‌شود.<ref name=":0">{{Cite journal|date=2020-02-18|title=Strong and weak typing|url=https://en.wikipedia.org/w/index.php?title=Strong_and_weak_typing&oldid=941453382|journal=Wikipedia|language=en}}</ref>.
 
معمولامعمولاً یک زبان نوع‌دار نیرومند، دارای قواعد نوع دهی سختگیرانه تریسختگیرانه‌تری در [[زمان کامپایل]] می باشندمی‌باشند که به معنی ضمنی آن است که خطاها و استثناها به احتمال بیشتر در مدت کامپایل رخ می دهندمی‌دهند. [[زبان هایزبان‌های نوع دهی پویا|زبان‌های نوع‌دهی پویا]] (که در آن بررسی نوع در [[زمان اجرا (فاز چرخه زندگی برنامه)|زمان اجرا]] رخ می دهدمی‌دهد) نیز می توانندمی‌توانند نوع دهی نیرومند باشند. بیشتر این قواعد روی انتساب متغیر‌هامتغیرها تاثیرتأثیر می گذارند،می‌گذارند، همچنین قواعد می توانندمی‌توانند روی مقادیر برگردانده شده و فراخوانی تابع تاثیرتأثیر بگذارند.<ref name=":0" />.
 
یک زبان نوع دهی کم‌زور قواعد نوع دهی سست تریسست‌تری دارد، و می تواندمی‌تواند نتایج غیرغیرقابل قابل پیش بینیپیش‌بینی ایجاد کند، یا می تواندمی‌تواند تبدیل نوع ضمنی در زمان اجرا انجام دهد.<ref>{{cite web|url=http://www.cs.cornell.edu/|title=CS1130. Transition to OO programming. – Spring 2012 --self-paced version|date=2005|publisher=Cornell University, Department of Computer Science|archiveurl=http://www.cs.cornell.edu/courses/CS1130/2012sp/1130selfpaced/module1/module1part4/strongtyping.htm|archivedate=2005|accessdate=2015-11-23}}</ref> یک مفهوم مرتبط اما متفاوت «[[نوع‌دهی پنهان]]» است.<ref name=":0" />.
 
== تاریخچه ==
در ۱۹۷۴، لیسکو {{به انگلیسی|Liskov}} و زایلز {{به انگلیسی|Zilles}} یک زبان وابسته زیاد به نوع را تعریف کردند به این عنوان که «هر گاه یک شیء از فراخوانی یک تابع به تابع صدا زده شده عبور کرد، نوعش باید سازگار با نوع تعریف‌شده در تابع صدا زده شده باشد.»<ref>{{cite paper | id = {{citeseerx|10.1.1.136.3043}} | title = Programming with abstract data types | first1 = B | last1 = Liskov | first2 = S | last2 = Zilles | journal = ACM Sigplan Notices | year = 1974}}</ref>
جکسون در اینباره نوشته‌است، «در یک زبان وابسته زیاد به نوع ناحیه هر داده یک نوع متفاوت دارد و هر فرایند الزامات ارتباطش را به شروط این نوع‌ها توضیح می‌دهد.»<ref>{{cite journal | title = Parallel processing and modular software construction | first1 = K. | last1 = Jackson | journal = Lecture Notes in Computer Science | year = 1977 | volume = 54 | pages = 436–443 | doi = 10.1007/BFb0021435 | url = http://www.springerlink.com/content/wq02703237400667/ | series = Lecture Notes in Computer Science | isbn = 3-540-08360-X }}{{پیوند مرده|date=فوریه ۲۰۲۰ |bot=InternetArchiveBot }}</ref>
 
== تعاریف «نیرومند» یا «کم‌زور» ==
تصمیم گیری هایتصمیم‌گیری‌های طراحی زبان، به شواهدی و مدارکی از نوع دهی «نیروند» یا «کم‌زور» رجوع می‌کنند. در واقع خیلی از این‌این تصمیم‌ها به صورت دقیق‌تر به صورت وجود یا فقدان «[[ایمنی نوع]]»، «[[ایمنی حافظه]]»، «[[سیستم انواع#بررسی گونه‌ای ایستا|بررسی نوع ایستا]]» یا «[[سیستم انواع#بررسی گونه‌ای پویا|بررسی نوع پویا]]» باید رجوع شوند.
 
«نوع دهی نیروند» معمولامعمولاً به استفاده از «انواع» زبانزبان‌های های برنامه نویسیبرنامه‌نویسی برای اخذ «نامتغیر» های کد، و اطمینان از صحت آنها، و بیرون سازی قطعی کلاس هایکلاس‌های مشخص و خطاهای برنامه نویسیبرنامه‌نویسی ارجاع دارد.دارد؛ بنابراین برای دستیابی به این اهداف، نظام هاینظام‌های «نوع‌دهی نیرومند» زیادی وجود دارد.
 
== جستارهای وابسته ==