Transcript مشاهده
طراحی و پیاده سازی زبان های برنامه سازی
1
اصول طراحی زبانها
به نام خدا
فصل اول
طراحی و پیاده سازی زبان های برنامه سازی
2
-1-1چرا زبانهای برنامه سازی را مطالعه می کنیم؟
• برای بهبود توانایی خود در توسعه الگوریتمهای کارآمد
• بازگشتی
• استفاده بهینه از زبان برنامه نویس ی موجود
طراحی و پیاده سازی زبان های برنامه سازی
3
• لیست ها ،آرایه ها ،رکورد ها ،بازگشتی ،کالسهای اشیا و ...
• می توانید با اصالحات مفید ساختارهای برنامه نویس ی آشنا شوید.
• چگونه فکر می کنیم؟
• افزایش واژگان برنامه نویس ی
• انتخاب بهترین زبان برنامه سازی
• زبان مناسب برای پروژه خاص
• آموزش زبان جدید ساده می شود.
• طراحی زبان جدید ساده می شود.
• آشنایی با گستره ای از ساختارها و روش های پیاده سازی زبان های برنامه نویس ی موجود برای
ایجاد واسط های کاربری بزرگ
طراحی و پیاده سازی زبان های برنامه سازی
4
-2-1تاریخچه مختصری از زبانهای برنامه سازی
طراحی و پیاده سازی زبان های برنامه سازی
5
• 1950تولید اولین زبان های سطح باال
طراحی و پیاده سازی زبان های برنامه سازی
6
• فرترن ،لیسپ
• ، c ، Adaپاسکال ،پرولوگ ،اسمالتاک
• ، ML ، c++پرل ،پست اسکریپت
• جاوا
1-2-1توسعه زبانهای اولیه
طراحی و پیاده سازی زبان های برنامه سازی
7
• ماشین حساب های الکترونیکی
• اوایل 1950
• گریس هوپر زبان A-0
• جان باکس کد گزاری سریع برای IBM 170
• کامپایل عبارات محاسباتی ساده به زبان ماشین قابل اجرا
• 1955
• فرترن(جان باکس و گروهش)
•
•
•
•
(GAAMجامعه ریاضیدانان آملان )
)ACM(Association for Computing Machinery
ایجاد زبان الگوریتمی ) IAL(International Algorithmic Languagesبه رهبری پیتر نائور
ALGOL 58 , ALGOL 60
فرترن
طراحی و پیاده سازی زبان های برنامه سازی
8
• داده های زبان فرترن به محاسبات عددی مربوط می شد ولی هدف
طراحی زبانی با ساختارها کنترلی ،شرط هاو دستورات ورودی خروجی
بود.
• موفقیت فرترن
• فرترن 2
• فرترن (4فرترن )66
• فرترن 77و 90
•
اهداف الگول عبارت بودند از:
•
طراحی و پیاده سازی زبان های برنامه سازی
9
•
•
•
نشانه های الگول باید به ریاضیات استاندارد نزدیک
باشد.
الگول باید برای توصیف الگوریتمها مفید باشد.
برنامه ها در الگول باید به زبان ماشین ترجمه شوند.
الگول نباید به معماری یک ماشین مقید باشد.
• )BNF(Backus Naur From
طراحی و پیاده سازی زبان های برنامه سازی
10
• سیموال (simula-67)67توسط نیگارد و دهل نروژی
• C++توسط استراستراپ
• ویرث
• الگولw-
• پاسکال)زبان علمی کامپیوتر)
• الگول 68
• )PL/I(IBM
)aتوسعه زبانهای اولیه (ادامه)
طراحی و پیاده سازی زبان های برنامه سازی
11
• زبانهای تجاری ( )1955
• 1955هوپر flowmatic
• 1959سازمان دفاع آمریکا CBL
• توسعه
• طراحی کوبول
• استاندارد ()1960
(a
طراحی و پیاده سازی زبان های برنامه سازی
12
توسعه زبانهای اولیه (ادامه)
• زبانهای هوش مصنوعی
• (IPLسطح پایین )
• LISPتوسط جان مکارتی (زبان تابعی برای پردازش لیست ها)
• جست و جو ،پردازش متن ،بازیهای کامپیوتری ،تفسیر ماشین خودکار
• COMMITتوسط یاو
• اسنوبال
• پرولوگ
)aتوسعه زبانهای اولیه (ادامه)
طراحی و پیاده سازی زبان های برنامه سازی
13
• زبانهای سیستم
• CPL & BCPL
•C
-2-1تاریخچه مختصری از زبانهای برنامه سازی (ادامه)
زبان میزبان و زبان مقصد
طراحی و پیاده سازی زبان های برنامه سازی
14
دوران کامپیوترهای بزرگ
دوران کامپیوتر شخص ی
دوران شبکه بندی
دوران کامپیوترهای بزرگ(دهه 1940تا دهه )1970
طراحی و پیاده سازی زبان های برنامه سازی
• محیط دسته ای
• زبان مجموعه ای از فایل ها را به صورت ورودی دریافت می کرد ،داده ها را پردازش می کرد و
مجموعه ای از فایل های داده ای را به صورت خروجی تحویل می داد (.فرترن ،کوبول ،پاسکال)
• محیط محاوره ای
• کاربر مستقیما با برنامه در تعامل است.
• اشتراک زمانی
15
طراحی و پیاده سازی زبان های برنامه سازی
16
تاثیر بر طراحی زبان
زبانهای محیط دسته ای
فایل ها :مهمترین ساختار ورودی خروجی
خطایی که اجرای برنامه را خاتمه می دهد،قابل قبول اما هزینه بر
است
عدم وجود محدودیت زمانی بر روی برنامه
زبانهای محیط محاوره ای
در صورت بروز خطا ،خارج شدن از برنامه قابل قبول نیست
.اهمیت کم پردازش خطا
برنامه محاوره ای باید از محدودیت زمانی برخوردار باشد .
دوران کامپیوتر های شخص ی
طراحی و پیاده سازی زبان های برنامه سازی
17
• کامپیوترهای شخص ی
• مینی کامپیوتر ها و از دور خارج شدن کامپیوتر های بزرگ
• Pcها :تولید اپل 2در 1978
• محیطهای سیستم تعبیه شده
• سیستمی کامپیوتری که برای کنترل بخش ی از یک سیستم بزرگ به کار می رود
طراحی و پیاده سازی زبان های برنامه سازی
18
تاثیر بر طراحی زبان
• PC
• واسط ویندوز(پنجره ها ،لیست ها ،آیکن ها و )..
• نیاز به اشتراک زمانی کمتر و توسعه برنامه گرافیکی
• سیستم های تعبیه شده
• کار با ورودی خروجی
• تعامل با I/Oاز طریق رویه هایی که به عنوان ویژگیهای دستگاه I/Oمحسوب می شود.
• ارتباط با دستگاه های خاص ،از طریق ویژگیهایی از زبان که به ثبات های سخت افزاری ،محل
های حافظه و یا پردازشگر وقفه دسترس ی دارند یا از طریق زیربرنامه های نوشته شده به زبان
اسمبلی یا یکی از زبان های سطح باال
• پردازش خطا
• فعالیت مناسب در جهت ترمیم سیستم
• کاربری برای برطرف کردن محاوره ای خطا وجود ندارد
• زمان پاسخ دهی
• پاسخ در زمان محدود
• قابلیت نظارت بر فاصله های زمانی
• اغلب یک سیستم توزیعی است
دوران شبکه بندی
• محاسبات توزیعی(در اثنای دهه )1980
طراحی و پیاده سازی زبان های برنامه سازی
19
• استفاده از کامپیوتر های مرکزی در شرکت ها برای پردازش داده های مشترک
• محاسبات کارگزار مشتری(مثال :سیستم رزرو هواپیما)
• اینترنت(در اواسط دهه )1990
• تاثیر بر زبان برنامه سازی
•
•
•
•
•
اطالعات کارگزاران بزرگ در سطح جهانی
تعامل بین مشتری و کاربر
صفحات ایستا و پویای وب
امنیت صفحات
سرعت محدود
• خطوط ارتباطی
• قدرت پردازش سرور
-2-1تاریخچه مختصری از زبانهای برنامه سازی (ادامه)
طراحی و پیاده سازی زبان های برنامه سازی
20
)cدامنه های کاربرد
کاربردها در دهه 1960
•
•
•
•
پردازش تجاری(ورود سفارشات ،کنترل فروش،مدیریت شخص ی و )...
محاسبات علمی(معادالت ریاض ی)
برنامه نویس ی سیستم(سیستم عامل کامپیوتر ،کنترل فرآیند های بزرگ)
کاربردهای هوش مصنوعی
-2-1تاریخچه مختصری از زبانهای برنامه سازی (ادامه)
)cدامنه های کاربرد(ادامه)
طراحی و پیاده سازی زبان های برنامه سازی
21
کاربردهای قرن 21
• پردازش تجاری(کوبول )c,c++
•
•
•
•
•
• 4GLها
• تجارت الکترونیک
محاسبات علمی(فرترن ،90جاوا و )c
برنامه نویس ی سیستم()c,c++
کاربردهای هوش مصنوعی(لیسپ و پرولوگ)
انتشارات(نرم افزار های واژه پرداز)
فرآیند :اغلب از یک برنامه برای کنترل برنامه ی دیگر استفاده می شود .مانند پاسخ خودکار به میل
ها(پوسته یونیکس)
• کاربردهای جدید (مانند ش ی گراهاو:)...مانند کاربرد ام ال در تحقیقات زبانهای برنامه سازی
برای بررس ی تئوری نوع
-3-1نقش زبانهای برنامه سازی
طراحی و پیاده سازی زبان های برنامه سازی
22
تغییرات بوجود آمده و اثرات آنها بر زبانهای برنامه سازی
•
•
•
•
•
•
تغییر در قابلیتهای کامپیوتر(کامپیوترهای بزرگ ،کند و گرانقیمت که از المپ خال استفاده می
کردند به ریز کامپیوترها و سوپر کامپیوترها تبدیل شدند) :ساختار و هزینه های استفاده از
زبانهای سطح باال تحت تاثیر قرار گرفت.
زمینه های کاربرد جدید :موجب طراحی زبانهای جدید ،ارتقاء و بازبینی زبانهای قدیمی
یافتن متدهای برنامه نویس ی خوب برای برنامه های بزرگ و پیچیده و تغییر در محیط های
برنامه نویس ی :موجب رشد در طراحی زبان ها شد.
متدهای پیاده سازی :انتخاب ویژگیهای نو برای طراحی های جدید
مطالعات تئوری :استفاده از متدهای رسمی ریاضیات
نیاز به انتقال برنامه از کامپیوتری به کامپیوتر دیگر :موجب استانداردسازی در زبا نها
-3-1نقش زبانهای برنامه سازی(ادامه)
طراحی و پیاده سازی زبان های برنامه سازی
23
)aزبان خوب چگونه است؟
مکانیزم طراحی یک زبان سطح باال باید کامل و بی عیب باشد.
• وضوح ،سادگی و یکپارچگی :
جامعیت مفهومی :مفاهیم و ابزارهای موجود در یک زبان و قوانین ترکیب آنها در یک زبان برنامه سازی
خوانایی برنامه :تفاوتهای معنایی منعکس کننده تفاوتهای نحوی باشد.
• قابلیت تعامد :امکان ترکیب ویژگیهای مختلف زبان و با معنا بودن ترکیب حاصل
مثال :ترکیب عبارت وساختار شرطی
مزیت :یادگیری زبان ساده و نوشتن برنامه راحت
معایب :کامپایل بدون خطا در ترکیبهایی که منطق روشن و اجرای کارآمدی ندارند.
• طبیعی بودن برای کاربردها
زبانها باید ساختمان داده،عملگرها،دستورات کنترلی و نحو مناسب برای مسئله ای که باید حل شود را
داشته باشند.
-3-1نقش زبانهای برنامه سازی(ادامه)
طراحی و پیاده سازی زبان های برنامه سازی
24
صفات یک زبان خوب(ادامه)
• پشتیبانی از انتزاع
•
•
•
•
سهولت در بازرس ی برنامه
محیط برنامه نویس ی :وجود ویراستارهای خاص،امکانات نگهداری و اصالح نسخه های
متفاوت
قابلیت حمل برنامه
هزینه استفاده
• هزینه اجرای برنامه :بستگی به کامپایلر دارد ولی امروزه زیاد مهم نیست.طراحی کامپایلر بهینه
ساز،تخصیص کارآمد ثبات ها و مکانیزم پشتیبانی زمان اجرای کارآمد
• هزینه ترجمه برنامه :در برنامه های دانشجویی برنامه به تعداد زیاد ترجمه میشود تا اجرا
• هزینه نگهداری برنامه:هزینه های ترمیم خطا بعد از اجرا ،تغییر نیازمندی های برتنامه با توسعه و تغییر
سیستم عامل و . .
-3-1نقش زبانهای برنامه سازی(ادامه)
طراحی و پیاده سازی زبان های برنامه سازی
نحو و معنای زبان
• نحو زبان برنامه سازی ،ظاهر آن زبان است.
• قواعد نحوی مشخص می کنند که دستورات ،اعالنها و سایر ساختارهای زبان
چگونه نوشته می شوند
25
• معنای زبان همان مفهومی است که به ساختارهای نحوی زبان داده می شود.
-3-1نقش زبانهای برنامه سازی(ادامه)
طراحی و پیاده سازی زبان های برنامه سازی
)bمدلهای زبان
• زبانهای دستوری( )imperativeیا رویه ای :زبانهای مبتنی بر فرمان یا
دستورگرا(پشتیبانی از سخت افزار)
•
مانند c , c++و پاسکال و . . .
زبانهای تابعی( : )applicativeبه
•
مانند ام ال و لیسپ (بعض ی وقتها )c
زبانهای قانونمند( :)rule-basedشرایطی
شود.
)… ))functionn(…(function2(function1(data
فعالیتی را انجام می دهند.
• مانند پرولوگ
26
جای مشاهده تغییر حالت ،عملکرد برنامه دنبال می
را بررس ی می کنند و درصورت برقرار بودن آنها
action1
گرا( :)object-orientedاشیای
enable condition1
پیچیده به عنوان بسطی از اشیای
• برنامه نویس ی ش ی
ساده ساخته می شوندو خواص ی را از اشیای ساده به ارث می برند.
27
طراحی و پیاده سازی زبان های برنامه سازی
-3-1نقش زبانهای برنامه سازی(ادامه)
طراحی و پیاده سازی زبان های برنامه سازی
28
)cاستاندارد سازی زبان
روش پی بردن به معنای دستورات :
• به مستندات زبان مراجعه شود.
• برنامه را در کامپیوتر تایپ و اجرا کنید
• به استاندارد زبان مراجعه شود.
استانداردهای زبان دو دسته اند :
• استاندارد خصوص ی :توسط شرکت یا مالک زبان ارائه می شوند.
• استاندارد عمومی :اسنادی که توسط سازمانهای مختلف به توافق رسیده اند.
ANSI,IEEE,BSI,ISO,...
طراحی و پیاده سازی زبان های برنامه سازی
29
مسائل مهم در استفاده ی موثر از استاندارد:
• زمان سنجی :چه زمانی باید زبان استاندارد شود؟
• اطاعت و پیروی :برنامه نویس باید مراقب ویژگیهای اضافی
که در کامپایلر وجود دارد باشد.
• کهنگی :کی استاندارد کهنه می شود و چگونه باید آن را
اصالح کرد؟
• مشکالت ارتقا استاندارد :رفتار با برنامه های موجود
• استاندارد باید با گذشته خود سازگاری داشته
باشد
• مشکل سازگاری با گذشته
• مفاهیم مستهلک شدن و کهنگی
-3-1نقش زبانهای برنامه سازی(ادامه)
طراحی و پیاده سازی زبان های برنامه سازی
30
)dبین املللی شدن برنامه نویس ی
اغلب ،مقررات محلی که کامپیوتر در انجا مورد استفاده قرار می
گیرد،روش ذخیره و پردازش داده ها را مشخص می کند.
•
•
•
•
•
•
•
•
•
ترتیب تلفیق :کاراکترها به چه ترتیبی باید ظاهر شوند؟
ترتیب :موقعیت کاراکترهای غیر رومی
حالت کاراکترها :حروف کوچک و بزرگ در زبانهایی مثل ژاپنی ،عربی و یهودی
جهت پیمایش :اغلب زبانها از چپ به راست خوانده می شوند.
فرمت تاریخ در یک کشور خاص
فرمت زمان در یک کشور خاص
مناطق زمانی
سیستمهای حروفی :زبانهایی که بر اساس کاراکتر تشکیل دهنده الفبایی نوشته نمیشوند بلکه از حروف خاص ی استفاده
مینماید (ژاپنی و کره ای و چینی ) 16بیت
عالمت پول :در کشورهای مختلف مختلف
-4-1محیط های برنامه نویس ی
طراحی و پیاده سازی زبان های برنامه سازی
31
)aمحیط برنامه نویس ی در دو زمینه بر طراحی زبان تاثیر
گذاشته است :
• کامپایل کردن مجزای زیربرنامه و سایر بخشهای برنامه
کامپایلر باید این اطالعات را داشته باشد:
مشخه ی تعداد ،ترتیب و نوع پارامترهای زیربرنامه
اعالن نوع داده سراسری
تعریف نوع داده محلی خود زیر برنامه
نحوه تهیه این اطالعات
؟
طراحی و پیاده سازی زبان های برنامه سازی
32
.1اعالن در زیر برنامه ها(فرترن)
.2ترتیب خاص ی از کامپایل (ادا و پاسکال)
.3وجود کتابخانه ها مربوط()c++,Java
نحوه برخورد با اسامی مشترک
• جلوگیری از همنامی
• Scoping Rule
• ذخیره اسامی در یک کتابخانه خارجی
طراحی و پیاده سازی زبان های برنامه سازی
33
تست و اشکال زدایی
ویژگیهای ردیابی اجرا
برچسب زدن دستورات و متغیر های خارجی برای ردیابی
نقاط کنترلی
کنترل برنامه به کاربر برمی گردد
ادعا
بررس ی شرایط در نقطه مورد نظر
)assert (x>0 and A=0) or (X=0 and A>B+10
طراحی و پیاده سازی زبان های برنامه سازی
34
-4-1محیط های برنامه
نویس ی(ادامه)
)bمحیط های کاری
• محیط کاری ،خدماتی مثل ذخیره داده ها ،رابط گرافیکی کاربر ،امنیت
و خدمات ارتباطی را فراهم می کند.
• طراحی زبان ها برای استفاده از این امکانات
-4-1محیط های برنامه نویس ی(ادامه)
طراحی و پیاده سازی زبان های برنامه سازی
35
)cزبانهای کنترل کار و فرآیند
• مفهوم کنترل کار به چارچوبهای محیط برمی گردد.
• کاربر کنترل مستقیم بر روی مراحل مختلف برنامه دارد.
• کد برگشتی در دهه 1960
• یونیکس
کاردرخانه
طراحی و پیاده سازی زبان های برنامه سازی
36
.1دالیل موفقیت زبان برنامه نویس ی cرا پیدا کنید .
.2یک زبان برنامه سازی استاندارد را انتخاب کرده و یکی از ویژگی هایی ازآنها
که درنسخه های بعدی آن حذف می شوند را پیدا کنید .
.3زبان های برنامه سازی مخصوص کاربرد های زیررا پیدا کنید .
ربات ها ،بازی ها ،برنامه های گرافیکی ،زبان برنامه نویس ی جدید