زبان های برنامه نویسی static و dynamic

زبان های برنامه نویسی از لحاظ typing به دو دسته dynamic type و static type تقسیم می شوند.

روند اجرای یک برنامه به این صورت است که کد نوشته شده توسط برنامه نویس به کدی که توسط ماشین قابل درک باشد تبدیل شده (کد compile یا interpret شده) و سپس این کد قابل درک توسط ماشیین اجرا می گردد. در زمان اجرای برنامه (run-time) یا در زمان compile برخی اعتبار سنجی ها روی برنامه صورت می گیرد که اساس تفاوت های زبان های static و dynamic را مشخص می کند.

لازم به ذکر است که dynamic یا static بودن یک زبان نقطه قوت یا ضعف یک زبان محسوب نمی شود بلکه تنها در مواقع استفاده از زبان موجب راحتی استفاده از زبان می شود.

زبان های dynamic به خاطر عدم نیاز به مشخص کردن نوع متغیر ها در زمان توسعه راحت تر هستند اما در زمان دیباگ ممکن است مشکلات خاص خود را داشته باشد، در صورتی که در زبان های static کامپایلر بخشی از خطاها را در زمان کامپایل مشخص می کند.

زبان های برنامه نویسی dynamic

بیشتر زبان های اسکریپتی در این دسته جای می گیرند. در زبان های dynamic نوع متغیر معمولا در زمان اجرا (run-time) و با توجه به مقدار متغیر مشخص می شود. بنابراین نیازی به مشخص کردن نوع متغیر در این گونه زبان ها نیست.

در این نوع از زبان ها نیازی به اعلان (explicit declaration) متغیر قبل از استفاده نیست و می توان بلافاصله متغیر را مقدار دهی کرد و از آن استفاده نمود.

name = 'mehdi'
number = 10
average = 2.3
result = number * average /  2

زبان های dynamic معمولا از نوع زبان های interpreter هستند. interpreter زبان در هنگام اجرا type checking را انجام می دهد، بنابراین این امکان وجود دارد که متغیر ها در طول اجرا، نوع متفاوتی داشته باشند.

>>> thing = &quotHello&quot
>>> type(thing)
<class 'str'>

>>> thing = 28.1
>>> type(thing)
<class 'float'>

برخی از زبان های dynamic شامل:‌ Perl, Ruby, Python, PHP, JavaScript

زبان های برنامه نویسی static

این نوع از زبان ها معمولا از زبان های کامپایلری هستند. در اکثر زبان های استاتیک، type checking قبل از اجرای کد و در هنگام compile انجام می شود. بنابراین می توان گفت زبان هایی که در زمان compile باید نوع متغیرها مشخص باشند زبان های static نامیده می شوند.

string name = 'mehdi';
int number = 10;
float average = 2.3

مهمترین ویژگی استاتیک بودن یک زبان این است که بخش اعظم خطاها توسط کامپایلر برطرف شده و در هنگام اجرای کد احتمالا با خطای کمتری مواجه خواهیم بود.

برخی از زبان های static شامل:‌ Go ،C، java، C#، C++، Haskell, Scala, Kotlin