آشنایی با تفاوت Static Typing و Dynamic Typing در برنامهنویسی
پیش از هرچیز، به این نکته توجه داشته باشیم که در اینجا منظور از Type، نوع دادهای است که با آن سرورکار خواهیم داشت. بهطورکلی، زبانی که بهاصطلاح Statically Typed است در آن نوع متغیرها در زمان کامپایل شدن (Compile Time) برنامه مشخص میگردد که از آن جمله میتوان به زبانهای جاوا، اسکالا، سیشارپ، سی و سیپلاسپلاس اشاره کرد و همین مسأله منجر به این خواهد گشت که پرفورمنس برنامه بالا رود چراکه هر دفعه که برنامه اجرا میگردد، دیگر نیازی به چک کردن نوع متغیرها نخواهد بود (لازم بهذکر است که این فیچر بهعنوان یکی از برگبرندههای زبانهایی از این دست است).
علاوهبر این، در این نوع زبانها زمانیکه دولوپر تایپی را برای یک متغیر درنظر میگیرد، دیگر قادر به تغییر آن نخواهد بود چراکه در این نوع زبانها تایپ به متغیر اختصاص مییابد نه مقدار درنظر گرفته شده برای آن متغیر و درصورتیکه تغییر تایپ صورت گیرد، با اکسپشن مواجه خواهیم شد. بهعنوان نمونه در زبان جاوا داریم:
همانطور که در کد فوق ملاحظه میشود، ابتدا متغیری از جنس String با مقدار Hello World ایجاد کردهایم که در این صورت برنامه بدون هیچ مشکلی کامپایل خواهد شد اما در خط دوم، مجدد مقدار این متغیر را برابر با یک عدد صحیح درنظر گرفتهایم و از آنجا که تایپ عدد صحیح با تایپ استرینگ متفاوت است، در حین کامپایل شدن برنامه با اکسپشن مواجه خواهیم شد.
یکی از خوبیهای این نوع زبانها این است که چک کردن برنامه توسط کامپایلر و در حین فرایند کامپایل شدن صورت میگیرد و بنابراین باگهای جزئی که ممکن است از دید پنهان بمانند خیلی زود یافت خواهند شد.
زبانی هم که بهاصطلاح Dynamically Typed است در آن نوع متغیرها در حین اجرای برنامه (Run Time) مشخص میشود و دولوپر در حین کدنویسی نیازی به مشخص کردن دیتاتایپ متغیر نخواهد داشت که از آن جمله میتوان به زبانهای پایتون، جاوااسکریپت و پیاچپی اشاره کرد.
علاوهبر این، در این نوع زبانها پس از آن که تایپی برای یک متغیر درنظر گرفته شد، مجدد میتوان تایپ آن متغیر را تغییر داد چراکه در این نوع زبانها، دیتاتایپ به مقادیر متغیرها برمیگردد نه خود آنها؛ بهعنوانمثال، در زبان پیاچپی داریم:
میبینیم که در خط اول متغیری تحتعنوان str$ ساختهایم که حاوی مقدار Hello World است و در خط دوم هم این مقدار که پیش از این استرینگ بود را به یک عدد صحیح (Integer) تغییر داده و برنامه هم بدون هیچ مشکلی اجرا خواهد شد.
به خاطر داشته باشید باتوجه به این که در زبانهای Dynamically Typed چک کردن دیتاتایپها در حین اجرا صورت میگیرد، برنامههای نوشته شده با این زبانها تاحدودی مشکل پرفورمنسی دارند چراکه هردفعه در حین اجرا، فرایند چک کردن دیتاتایپها میبایست صورت گیرد.
Last updated