تفاوت بین زبان‌های static و dynamic type

May 2020

ویدیویی وجود ندارد

 

زبان استاتیک تایپ چیست؟ زبان داینامیک تایپ چیست؟ در این مقاله جواب هر دو سوال را خواهید گرفت

 

در این مقاله مثال‌هایی از زبان‌های برنامه نویسی مثل python, php, perl خواهیم داشت اما نیازی نیست که حتما این زبان‌ها را بلد باشید که این مثال‌ها را بفهمید. به این موضوع دقت کنید که استفاده از کلمه 'تایپ(type)' به معنی نوع داده است نه عمل فشار دادن دکمه کیبورد.

 

استاتیک تابپ Static type

زبان‌های استاتیک به زبان‌هایی گفته میشود که برای ایجاد یک متغیر نیازی نیست که آن را مقداردهی کرده باشید و میتوانید آنها را قبل از مقدار دهی به صورت ضمنی ایجاد کنید. جاوا، C و ++C زبان‌های برنامه نویسی استاتیک هستند. در زبان C متغیرها را میتوانید به نوع دیگری تبدیل کنید اما در واقع تبدیل نمیتوان آن را تبدیل کرد و فقط به نظر میرسد که تبدیل شده.

 

در زبان‌های استاتیک نیازی نیست که قبل از ایجاد متغیرها آنها را مقداردهی کنید. متغیرها ممکن است در هر جای برنامه مقداردهی شوند اما برنامه نویس مجبور است قبل از استفاده آن را مقداردهی کند. کد زیر را در نظر بگیرید:

/* C code */ 
int num, sum; // explicit declaration 
num = 5; // now use the variables 
sum = 10; 
sum = sum + num;

قطعه کد بالا یک نمونه کلی از اینکه یک متغیر در زبان‌های برنامه‌نویسی استاتیک تایپ چگونه ایجاد میشود است.

 

داینامیک تایپ Dynamic type

زبان‌های داینامیک تابپ زبانهایی هستند که حتما باید در زمان ایجاد شدن مقداردهی شوند. پایتون و php از زبان‌های برنامه نویسی داینامیک هستند. کد زیر را ببینید:

# Python code
num = 10  # directly using the variable

در قطعه کد بالا به محض ایجاد شدن متغیر آن را مقداردهی کرده‌ایم.

 

یک مقایسه دیگر

بسیاری از افراد تفاوت بین زبان‌های استاتیک و داینامیک را در زمان بررسی نوع متغیر میدانند. از این نظر زبان‌های استاتیک در زمان کامپایل(compile-time) نوع متغیرها را بررسی میکنند در حالی که زبان‌های داینامیک در زمان اجرا (run-time) نوع متغیر را بررسی میکنند.

 

static و dynamic در مقابل weak و strong

زبان‌های dynamic و static کاملا با زبان‌های strong و weak تفاوت دارند و بسیاری از افراد اینها را با هم اشتباه میگیرند. اشتباه است اگر بگوییم که زبان‌های dynamic و static نمیتوانند strong و weak باشند. در واقع اینها دو دسته بندی کاملا متفاوت هستند.

 

تایپ قوی Strong type

زبان‌های تایپ قوی به زبان‌های گفته میشود هر متغیر نوع مشخصی از داده را در خود نگهداری میکند. پایتون و جاوا دو زبان تایپ قوی هستند. به مثال زیر دقت کنید:

# Python code
>>> foo = "x" 
>>> foo = foo + 2 
Traceback (most recent call last): 
  File "<pyshell#3>", line 1, in ? 
    foo = foo + 2 
TypeError: cannot concatenate 'str' and 'int' objects 
>>>

 در مثال بالا که از زبان پایتون بود دیدید که در خط اول مقداری که در متغیر foo قرار گرفت از نوع str بود. در خط دوم سعی کردیم مقدار 2 را که از نوع int است را به آن اضافه کنیم. همانطور که دیدید پیغام خطایی از نوع TypeError گرفتیم. پس در زبان‌های تایپ قوی هر متغیر یک نوع داده خاص دارد.

 

تایپ ضعیف weak type

برخلاف زبان‌های تایپ قوی، زبان‌های تایپ ضعیف به نوع خاصی از داده محدود نیستند. دقت کنید به معنی این نیست که متغیرها نوع داده ندارند، بلکه به معنی اینست که به نوع داده خاصی محدود نیستند. زبان‌های php و C از این نوع هستند:

/* PHP code */ 
<?php 
$foo = "x"; 
$foo = $foo + 2; // not an error 
echo $foo; 
?>

در خط اول نوع متغیر foo از نوع string است. در خط دوم مقدار 2 که از نوع integer است را به آن اضافه کرده‌ایم اما پیغام خطایی دریافت نکردیم.

 

پس حالا که تفاوت‌ها را متوجه شده‌اید میتوان گقت که: پایتون یک زبان داینامیک و قوی است. جاوا یک زبان استاتیک و قوی است. php یک زبان داینامیک و ضعیف است. C یک زبان استاتیک و ضعیف است.

ارسال نظر

اگر قراره سوالی بپرسید که داخلش کد هست، بهتره از کدتون عکس بگیرید و به ایمیلی که پایین نوشتم بفرستید