جلسه چهاردهم
مقدمه
در جلسهٔ پایانی درس «طراحی زبانهای برنامهنویسی»، مباحث مطرحشده در طول ترم مرور میشوند و دانشجویان فرصت دارند درک خود را از مفاهیم اصلی تثبیت کنند. همچنین پروژهها یا تمرینهای انجامشده بررسی میشوند و یک تمرین عملی برای جمعبندی آموختهها ارائه میگردد.
۱) مرور مفاهیم اصلی درس
در این جلسه مهمترین مفاهیم درس بهصورت خلاصه مرور میشوند تا ارتباط میان آنها بهتر درک شود.
مفاهیم پایه
- تعریف زبان برنامهنویسی و نقش آن در ارتباط میان انسان و ماشین
- تاریخچهٔ تکامل زبانهای برنامهنویسی
- دلیل وجود زبانهای مختلف و نیازهای متفاوت در طراحی آنها
پارادایمهای برنامهنویسی
- رویهای
- شیءگرا
- تابعی
- منطقی
در این بخش تفاوتها، کاربردها و مزایای هر پارادایم بررسی و مقایسه میشوند.
ساختار زبانهای برنامهنویسی
- نحو (Syntax) و قواعد ساختاری زبان
- معنا (Semantics) و رفتار اجرایی دستورات
- نقش گرامرها در تعریف زبان
مفاهیم برنامهنویسی
- انواع دادهها و متغیرها
- عملیات و عبارات
- ساختارهای کنترلی مانند شرطها و حلقهها
- توابع، پروسیجرها و بازگشت
مدیریت حافظه
- نحوهٔ تخصیص و آزادسازی حافظه
- Scope و Lifetime متغیرها
- تفاوت حافظهٔ Stack و Heap
- نقش Garbage Collection
اجرای برنامهها
- اصول طراحی کامپایلر
- اصول طراحی مفسر
- مراحل ترجمه و اجرای برنامه
۲) مرور پروژهها و تمرینها
در این بخش پروژهها یا تمرینهایی که دانشجویان در طول ترم انجام دادهاند بررسی میشود.
اهداف این بخش
- ارزیابی میزان درک مفاهیم درس
- بررسی راهحلهای مختلف برای یک مسئله
- تحلیل نقاط قوت و ضعف پیادهسازیها
- یادگیری از تجربههای عملی
معمولاً دانشجویان در این مرحله پروژهٔ خود را معرفی کرده و نحوهٔ طراحی و پیادهسازی آن را توضیح میدهند.
۳) ارائه تمرین عملی جمعبندی
برای تثبیت مفاهیم درس، یک تمرین عملی ارائه میشود که چندین موضوع از درس را دربر میگیرد.
نمونه تمرینها
- طراحی یک زبان ساده برای انجام محاسبات ریاضی
- نوشتن یک مفسر ساده برای یک زبان کوچک
- پیادهسازی یک ماشین مجازی ساده
- تحلیل و مقایسهٔ چند زبان برنامهنویسی از نظر پارادایم و مدیریت حافظه
هدف این تمرینها آن است که دانشجویان مفاهیم نظری را در قالب یک مسئلهٔ عملی به کار ببرند.
۴) اهمیت تمرین عملی
تمرینهای عملی به دانشجویان کمک میکند:
- مفاهیم نظری را بهتر درک کنند
- مهارت حل مسئله را تقویت کنند
- تجربهٔ طراحی و پیادهسازی سیستمهای نرمافزاری به دست آورند
- ارتباط میان بخشهای مختلف درس را درک کنند
۵) جمعبندی نهایی درس
در پایان این درس، دانشجویان با موارد زیر آشنا شدهاند:
- مفاهیم پایه و تاریخچهٔ زبانهای برنامهنویسی
- پارادایمهای مختلف برنامهنویسی
- ساختار و اجزای زبانهای برنامهنویسی
- نحوهٔ مدیریت دادهها و حافظه
- اصول طراحی مفسر و کامپایلر