بخشی از پاورپوینت

اسلاید 1 :

طراحی و پیاده سازی زبانهای برنامه نویسی

اسلاید 2 :

انقیاد (Binding)
به محدود کردن یک عنصر برنامه به ویژگی یا صفت خاص، انقیاد یا Binding گفته می شود.

در یک تعریف دیگر، میتوان گفت که انقیاد یک وابستگی است، مانند وابستگی بین یک متغیر و یک مقدار لحظه ایجاد وابستگی زمان انقیاد یا Binding Time نام دارد.
در یک زبان برنامه سازی زمان های انقیاد مختلفی قابل تعریف است:
انقیاد زمان اجرا: انقیاد یک متغیر به مقدار (نسبت دادن یک مقدار خاص به یک متغیر)
انقیاد زمان ترجمه: انقیاد یک متغیر به یک نوع خاص (یک متغیر از نوع عدد، رشته یا ..)
انقیاد زمان پیاده سازی زبان: انقیاد یک نوع خاص به بازه ای از مقادیر (مجموعه مقادیر ممکن برای یک نوع)
انقیاد زمان تعریف زبان: انقیادهایی از نوع شکل دستورات، ساختمان داده های زبان (یک نوع در زبان برنامه نویسی موجود باشد یا نباشد، چگونگی نمایش یک مفهوم)

اسلاید 3 :

مثال
تعیین انقیادها و زمانهای انقیاد برای دستورات زیر :
int x = 5;
x=x* 2;

انقیاد متغیر x به نوعint در زمان ترجمه

انقیاد مجموعه مقادیر ممکن برای متغیر x در زمان پیاده سازی کامپایلر

انقیاد نماد * برای عمل ضرب در زمان طراحی زبان

تعیین مقدار x در نقطه ای از اجرای برنامه با دستور انتساب (انقیاد در زمان اجرا)

انتخاب نمایش دهدهی برای عدد 2 و 5 در زمان طراحی زبان

اسلاید 4 :

دسته بندی انقیاد زمان اجرا
انقیاد زمان اجرا
هنگام ورود به زیربرنامه یا بلوک: انقیاد پارامترهای یک زیربرنامه
Void myFunc(int x)
{
int y = x+1;
….
}
--------------------------
int z = 10;
myFunc(z);

در یک نقطه مشخص از اجرا: انقیاد متغیر به مقدار خاص با عملگر انتساب

اسلاید 5 :

دسته بندی انقیاد
انقیاد زمان ترجمه
توسط برنامه نویس: انتخاب نام برای متغیر
توسط مترجم: شکل ذخیره آرایه (سطری یا ستونی)

توسط بارکننده: وقتی برنامه متشکل از چند زیربرنامه هستند باید هنگام بارکردن آنها در حافظه، آدرس متغیرهای موجود در زیربرنامه ها، باید به آدرس واقعی در کامپیوتر انقیاد شوند.

انواع انقیاد:
زودرس (Early):
زمان ترجمه (مانند C)
دیررس (Late)
زمان اجرا (مانند ML)
انقیاد زود رس منجر به کارایی زیاد و انعطاف پذیری کم زبان می گردد.
انقیاد دیررس منجر به کارایی کم و انعطاف پذیری زیاد زبان می گردد.
یک انقیاد ایستا (Static) است اگر اولین بار پیش از شروع زمان اجرا رخ دهد و در حین اجرای برنامه بدون تغییر بماند.
یک انقیاد پویا (Dynamic) است اگر در زمان اجرا رخ دهد یا حین اجرای برنامه قابل تغییر باشد.

اسلاید 6 :

اهمیت زمانهای انقیاد
بسیاری از تفاوت های بین زبانهای برنامه نویسی، درواقع به تفاوت زبانها در زمان انقیاد برمیگردد و اغلب وابسته به این است که انقیاد در زمان ترجمه صورت می گیرد یا در زمان اجرا.

بعنوان مثال در زبان Fortran کارکردن با آرایه های بزرگ، ساده ولی در ML مشکل است.

اغلب انقیادها در فرترن در زمان ترجمه و درML در زمان اجرا است.
Fortran انقیادها را فقط یکبار در زمان ترجمه انجام میدهد.
ML بیشتر وقت خود را صرف ایجاد و حذف انقیادها در زمان اجرا می کند.

انعطاف پذیری ML در دستکاری رشته ها بیشتر از Fortran است چراکه در زبان Fortran اندازه رشته ها در زمان ترجمه باید مشخص و معین باشد.

درML اینگونه انقیادها می توانند تا خواندن رشته از ورودی به تعویق بیفتد.

بنابراین عموماً کارایی (یاسرعت) یک زبان با انعطاف پذیری آن نسبت عکس دارد.

بنابراین زمان انقیاد می تواند روی انعطاف پذیری و سرعت برنامه مؤثر باشد.

اسلاید 7 :

انواع اعلانها
انواع اعلان جهت تعیین نوع متغیرها
اعلان صریح (explicit)
اعلان ضمنی (implicit)

اعلان صریح، دستوری است که اسامی و انواع متغیرهای موجود در برنامه و همچنین طول عمر آنها را نیز تعیین میکند.
مثال: توسط دستور int x; در زبان C ، متغیر x به طور صریح از نوع int اعلان شده است.

اعلان ضمنی: بدون استفاده از دستور اعلان، نوع متغیرها را مشخص میکند.
مثال: در زبانFortran اگر نوع متغیری تعیین نشود، اگر با یکی از حروف M,L,K,J,I یاN شروع شود، به طور ضمنی از نوع صحیح اعلام می گردد.

از اهداف اعلان میتوان مواردی همچون انتخاب نمایش حافظه، کنترل نوع، بهتر شدن مدیریت حافظه و .. را برشمرد.

اسلاید 8 :

دسته بندی متغیرها

اسلاید 9 :

فضای ذخیره سازی متغیرها
کد برنامه در بخش Code ذخیره می شود.

متغیرهای ایستا در بخش Static ذخیره می شوند.

متغیرهای پویای پشته ای در بخش Stack ذخیره می شوند.

متغیرهای صریح و ضمنی Heap در بخش Heap ذخیره خواهند شد.

اسلاید 10 :

کاربرد متغیرهای ایستا
کاربردهای متغیر ایستا
متغیرهای عمومی
متغیرهای static در یک زیر برنامه

آدرس دهی به متغیرهای ایستا به طور مستقیم انجام میشود و به همین علت، کارایی آنها بالا است.

عیب انقیاد حافظه به طور ایستا
کاهش قابلیت انعطاف (در زبانی که فقط متغیرهایی دارند که به طور ایستا به حافظه مقید میشوند، نمیتوان از بازگشتی استفاده کرد.)
نمیتوان حافظه را بین چند متغیر به طور اشتراکی به کار برد.

اسلاید 11 :

مزایا و معایب متغیرهای پویای پشته ای
فواید:
زیربرنامه های بازگشتی به حافظه محلی پویا نیاز دارند که این نیاز با متغیرهای پویای پشتهای برآورده میشود.
تمام زیر برنامه ها از یک فضای حافظه برای متغیرهای محلی خود استفاده میکنند.

معایب:
سربار زمان اجرا (ناشی از تخصیص و آزاد سازی)
کند بودن سرعت دستیابی (به دلیل آدرس دهی غیر مستقیم و این که زیر برنامه ها نمیتوانند به سابقه اجرا حساس باشند.)

اسلاید 12 :

مزایا و معایب متغیرهای پویای Heap
Heap مجموعه ای از سلولهای حافظه است که سازمان آن، نظم خاصی ندارند، چون استفاده از آن قابل پیش بینی نیست.
از اشیای پویای صریحheap معمولاً برای ایجاد لیست پیوندی و درختها استفاده میشود.

عیب اشیای پویای صریح heap
دشوار بودن کار با اشاره گرها و متغیرهای مرجع
هزینه ارجاع به متغیرها
تخصیص ها و آزاد سازی ها

عیب متغیر پویای ضمنی Heap
دور ماندن خطاها از دید کامپایلر
نگهداری صفات پویا (مثل نوع اندیس آرایه و بازه آنها)

در متن اصلی پاورپوینت به هم ریختگی وجود ندارد. برای مطالعه بیشتر پاورپوینت آن را خریداری کنید