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

Download Report

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

[email protected]
1
‫‪‬‬
‫مهندس زهره زرین قلمی‬
‫‪‬‬
‫موسسه آموزش عالی غیردولتی‪-‬غیرانتفاعی ایوانکی‬
‫‪‬‬
‫گروه مهندس ي کامپیوتر‪ -‬نرم افزار‬
‫‪2‬‬
‫‪[email protected]‬‬
‫منابع‬
1.Programming Languages:Design and Implementation ,
Pratt (2001)
2.E. Horowitz, Fundamental of Programming Languages,
Computer science press.
3. Concepts of programming languages, W.Sebesta(2008
‫ جعفرنژاد قمی‬:‫ طراحی و پیاده سازی زبان های برنامه سازی‬.4
[email protected]
3
‫تقسیم بندی نمره‬
‫‪-1‬امتحان میان ترم (‪3‬نمره)‬
‫‪ -2‬امتحان پایان ترم (‪14‬نمره)‬
‫‪ -3‬پروژه (‪3‬نمره)‪:‬‬
‫مانند مقایسه انواع زبانهای برنامه نویس ی از نقطه نظر درس‪ ،‬معرفی کامل یک یا چند نوع از انواع زبانهای برنامه نویس ی‬
‫به خصوص زبانهای جدید‬
‫پروژه اجباری و به صورت گروه های ‪ 3‬نفره می باشد‪.‬‬
‫زمان ارائه داکیومنت پروژه هفته دوم اردیبهشت می باشد‪.‬‬
‫داکیومنت باید حداقل ‪ 80‬صفحه باشد‪.‬‬
‫‪4‬‬
‫فهرست‬
‫مطالب‬
‫فصل اول‪ :‬اصول طراحی زبانها‬
‫فصل دوم‪ :‬اثرات معماری ماشین‬
‫فصل سوم‪ :‬اصول ترجمه زبان‬
‫فصل پنجم‪ :‬انواع داده اولیه‬
‫فصل ششم‪ :‬بسته بندي و انتزاع‬
‫فصل هشتم‪ :‬كنترل ترتیب اجرا‬
‫فصل نهم‪ :‬كنترل ترتیب زیربرنامه ها‬
‫‪5‬‬
‫‪[email protected]‬‬
‫فصل اول‬
‫اصول طراحی زبانها‬
[email protected]
6
‫زبان برنامه نویسی‬
‫‪‬‬
‫‪7‬‬
‫هر گونه عالمت گذاری جهت توصیف الگوریتم ها و‬
‫ساختمان داده ها‪ ،‬یک زبان برنامه نویسی نامیده می شود‪.‬‬
‫‪[email protected]‬‬
‫چرا زبانهای برنامه نویس ی را مطالعه می کنیم؟‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪8‬‬
‫برای بهبود توانایی خود در توسعه الگوریتمهای کارآمد‬
‫استفاده بهینه از زبان برنامه نویس ی موجود‬
‫آشنایی با اصطالحات مفید ساختارهای برنامه نویس ی‬
‫انتخاب بهترین زبان برنامه سازی‬
‫یادگیری آسان یک زبان جدید یا افزايش توانايي در يادگیري زبان هاي جديد‬
‫سهولت طراحی زبانهای جدید‬
‫‪[email protected]‬‬
‫تاریخچه زبانهای برنامه نویسی‬
‫‪9‬‬
‫‪[email protected]‬‬
‫تاریخچه زبانهای برنامه نویسی‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪10‬‬
‫زبانهای محاسباتی یا مبتنی بر اعداد (‪)1955‬‬
‫زبانهای تجاری ( ‪)1955‬‬
‫زبانهای هوش مصنوعی (دهه ‪)1950‬‬
‫زبانهای سیستم ( ‪)1950‬‬
‫‪[email protected]‬‬
‫زبانهای محاسباتی یا مبتنی بر اعداد‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫انجام محاسبات با حجم زیاد و دقت اعشار باال‬
‫استفاده از توابع ریاض ی کتابخانه ای(فرترن و الگول)‬
‫اهداف زبان الگول عبارت بودند از‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪11‬‬
‫نشانه های الگول باید به ریاضیات استاندارد نزدیک باشد‪.‬‬
‫الگول باید برای توصیف الگوریتم ها مفید باشد‪.‬‬
‫برنامه ها در الگول باید به زبان ماشین ترجمه شوند‪.‬‬
‫الگول نباید به معماری یک ماشین مقید باشد‪.‬‬
‫‪[email protected]‬‬
‫زبانهای تجاری‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫مناسب برای کاربردهای تجاری‪ ،‬حسابداری‪ ،‬انبار و بورس‪...‬‬
‫نیازهای اصلی کاربران آن‪ :‬تسریع درورود اطالعات‪ ،‬نگهداری سابقه و‬
‫خروجی های واضح در قالب نمودار‪ ،‬جدول و‪...‬‬
‫هدف آن‪ :‬ایجاد برنامه هایی که از متن هایی به شکل انگلیسی استفاده کنند‪.‬‬
‫کوبول زبانی تجاری که ارتش آمریکا برای نگهداری سوابق و اطالعات‬
‫نظامی خود از این زبان استفاده کرد‪ .‬هرچند که خوانایی باالیی دارد اما‬
‫نحو رسمی ندارد و برنامه نویسی در آن دشوار است‪.‬‬
‫‪12‬‬
‫‪[email protected]‬‬
‫زبانهای هوش مصنوعی‬
[email protected]
13
‫زبانهای سیستم‬
[email protected]
14
‫تاثیر محیط اجرایی بر روی‬
‫طراحی و پیاده سازی زبانها‬
‫‪15‬‬
‫‪[email protected]‬‬
‫تاثیر محیط اجرایی بر روی طراحی و پیاده سازی زبانها‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪16‬‬
‫محیط دسته ای )‪(Batch‬‬
‫محیط محاوره ای )‪(Interactive‬‬
‫محیط سیستم های تعبیه شده یا توکار )‪(Embedded systems‬‬
‫محیط کامپیوترهای شخص ی‬
‫محیط شبکه و اینترنت‬
‫‪[email protected]‬‬
‫محیط دسته ای )‪(Batch or offline‬‬
‫‪ ‬کاربر با برنامه هیچ گونه تعامل و محاوره ای ندارد و‬
‫ترتیب اجرای برنامه در خود برنامه گنجانده شده است‪.‬‬
‫‪ ‬فایل ها متداول ترین ابزار جهت ورودی و خروجی‬
‫‪ ‬کوبول‪ ،‬فرترن و پاسکال‬
‫ویژگی های آن‪:‬‬
‫‪ ‬خطایی که اجرای برنامه را خاتمه دهد قابل اصالح بوده‬
‫ولی هزینه بر است‪.‬‬
‫‪ ‬زبان استفاده در محیط دسته ای ‪ Timing‬مشخصی ندارد‪.‬‬
‫‪17‬‬
‫‪[email protected]‬‬
‫محیط محاوره ای )‪(Interactive‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪18‬‬
‫یک برنامه مستقیما با کاربر تعامل دارد و خروجی در‬
‫نمایشگر نشان داده می شود‪.‬‬
‫استفاده از سیستم اشتراک زمانی برای انجام کارهای‬
‫مختلف‪ ،‬یعنی اختصاص یک برش زمانی)‪(Time Slice‬‬
‫به هر برنامه‬
‫پردازش خطا در محیط محاوره ای از اهمیت کمتری‬
‫برخوردار است‬
‫‪C, C++‬‬
‫‪[email protected]‬‬
‫محیط سیستم های تعبیه شده یا‬
(Embedded systems) ‫توکار‬
[email protected]
19
‫ویژگی های محیط سیستم های تعبیه شده‬
‫‪20‬‬
‫‪[email protected]‬‬
‫محیط کامپیوترهای شخص ی‬
[email protected]
21
‫محیط شبکه و اینترنت‬
[email protected]
22
‫دامنه های کاربرد زبانها‬
‫کاربردها در دهه ‪1960‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪23‬‬
‫پردازش تجاری‪ :‬کوبول‬
‫محاسبات علمی‪ :‬فرترن و الگول‬
‫برنامه نویس ی سیستم‪ :‬اسمبلر یا فورث )‪(Forth‬‬
‫کاربردهای هوش مصنوعی‪Lisp, Snobol :‬‬
‫‪[email protected]‬‬
‫کاربردهای قرن ‪21‬‬
‫‪‬‬
‫كاربردهاي علمي و مهندسي )‪(Fortran, c, c++, Java, pascal‬‬
‫‪‬‬
‫كاربردهاي تجاري يا سيستم هاي اطالعاتي‬
‫‪‬‬
‫‪24‬‬
‫كاربردهاي آموزشي )‪(c, pascal,java‬‬
‫‪[email protected]‬‬
‫)‪(Cobol, C#, Delphi,Java‬‬
(Lisp , Prolog)‫هوش مصنوعي‬

(C, C#.NET,C++, Java)‫برنامه نويسي سيستم و شبكه‬

(HTML, PHP, C#,VB.NET)‫نرم افزار وب‬

(Matlab,RPG, GPSS)‫ويژه‬

‫زبان هايي باكاربرد‬
[email protected]
25
‫کاربرد زبانهای برنامه نویسی در گذشته وحال‬
‫‪26‬‬
‫‪[email protected]‬‬
‫عوامل موثر بر پیدایش و طراحی زبانها‬
‫‪27‬‬
‫‪[email protected]‬‬
‫نحو و معنای زبان‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪28‬‬
‫نحو زبان برنامه سازی)‪ ،(syntax‬ظاهر آن زبان است‪.‬‬
‫قواعد نحوی مشخص می کنند که دستورات‪ ،‬اعالنها و سایر‬
‫ساختارهای زبان چگونه نوشته می شوند‬
‫معنای زبان )‪ (semantic‬همان مفهومی است که به ساختارهای‬
‫نحوی زبان داده می شود‪.‬‬
‫نحو‪:‬‬
‫معنا‪:‬‬
‫‪[email protected]‬‬
‫صفات یک زبان خوب‬
‫‪‬‬
‫‪29‬‬
‫وضوح‪ ،‬سادگی و یکپارچگی ‪:‬‬
‫‪[email protected]‬‬
‫صفات یک زبان خوب‬
‫‪ ‬قابلیت تعامد)‪ : (orthogonality‬امکان ترکیب ویژگیهای مختلف زبان و با معنا بودن ترکیب حاصل‬
‫مثال ‪ :‬ترکیب عبارت وساختار شرطی‬
‫‪ ‬طبیعی بودن برای کاربردها‬
‫هر زبان در هنگام استفاده در کاربرد خاص خود باید مناسب به نظر آید یعنی زبانها باید ساختمان‬
‫داده‪،‬عملگرها‪،‬دستورات کنترلی و نحو مناسب برای مسئله ای که باید حل شود را داشته باشند‪.‬‬
‫‪ ‬پشتیبانی از انتزاع)‪(Abstraction‬‬
‫‪30‬‬
‫‪[email protected]‬‬
‫‪‬‬
‫‪‬‬
‫‪31‬‬
‫سهولت در بازرس ی برنامه‪:‬‬
‫محیط برنامه نویس ی ‪ :‬وجود ویراستارهای خاص‪،‬امکانات نگهداری و اصالح نسخه های‬
‫متفاوت‬
‫‪[email protected]‬‬
‫‪‬‬
‫‪‬‬
‫‪32‬‬
‫قابلیت حمل برنامه)‪(Portability‬‬
‫هزینه استفاده‬
‫‪ ‬هزینه اجرای برنامه ‪ :‬بستگی به کامپایلر دارد ولی امروزه زیاد مهم نیست‪.‬‬
‫‪ ‬هزینه ترجمه برنامه‪ :‬در برنامه های دانشجویی برنامه به تعداد زیاد ترجمه میشود‬
‫تا اجرا‬
‫‪ ‬هزینه نگهداری برنامه‪:‬هزینه های ترمیم خطا بعد از اجرا ‪،‬توسعه و تغییر سیستم‬
‫عامل و ‪. .‬‬
‫‪[email protected]‬‬
‫مدلهای محاسباتی زبان‬
‫مدل محاسباتی چگونگی توصیف یک برنامه را در یک زبان برنامه نویس ی توصیف‬
‫می کند‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪33‬‬
‫زبانهای دستوری(‪ )imperative‬یا رویه ای‬
‫زبانهای کاربردی یا تابعی(‪)applicative‬‬
‫زبانهای قانونمند یا منطقی(‪)rule-based‬‬
‫برنامه نویس ی ش ی گرا(‪)object-oriented‬‬
‫‪[email protected]‬‬
‫) یا رویه ای‬imperative(‫زبانهای دستوری‬
‫زبانهای مبتنی بر فرمان یا دستورگرا‬
Statement 1
Statement 2
.
.
.
Statement n
[email protected]
34

‫زبانهای تابعی(‪)applicative‬‬
‫‪‬‬
‫به جای مشاهده تغییر حالت‪ ،‬عملکرد برنامه دنبال می شود‪.‬‬
‫مانند ام ال و لیسپ (بعض ی وقتها ‪functionn(…(function2(function1(data)) …) )c‬‬
‫‪35‬‬
‫‪[email protected]‬‬
‫زبانهای قانونمند یا منطقی(‪)rule-based‬‬
‫‪‬‬
‫‪‬‬
‫برنامه ها در این زبانها شامل مجموعه ای از قوانین اند که هر‬
‫قانونی‪ ،‬ساختاری مشابه ‪ if‬در زبان برنامه نویس ی دارد‪.‬‬
‫این زبانها شرایطی را بررس ی می کنند و درصورت برقرار بودن آنها‬
‫فعالیتی را انجام می دهند‪ .‬مانند پرولوگ‬
‫‪1‬‬
‫‪ action‬‬
‫‪1‬‬
‫‪condition‬‬
‫‪enabling1‬‬
‫‪2‬‬
‫‪ action‬‬
‫‪2‬‬
‫‪condition‬‬
‫‪enabling2‬‬
‫‪n‬‬
‫‪ action‬‬
‫‪n‬‬
‫‪condition‬‬
‫‪‬‬
‫‪36‬‬
‫‪[email protected]‬‬
‫‪enablingn‬‬
‫برنامه نویس ی ش ی گرا(‪)object-oriented‬‬
‫‪‬‬
‫‪‬‬
‫‪37‬‬
‫اشیای داده ای پدید آمده و مجموعه ای از توابع تعریف می شوند تا روی این‬
‫داده ها کار کنند‪.‬‬
‫)‪(C++, Java,Visual, Smalltalk‬‬
‫‪[email protected]‬‬
[email protected]
38
‫نکات مدلهای محاسباتی زبان‬
[email protected]
39
‫استاندارد سازی زبان‬
‫روش پی بردن به معنای دستورات ‪:‬‬
‫‪ ‬به مستندات زبان مراجعه شود‪.‬‬
‫‪ ‬برنامه را در کامپیوتر تایپ و اجرا کنید‬
‫‪ ‬به استاندارد زبان مراجعه شود‪.‬‬
‫استانداردهای زبان دو دسته اند ‪:‬‬
‫‪ ‬استاندارد خصوص ی ‪ :‬توسط شرکت یا مالک زبان ارائه می شوند‪.‬‬
‫‪ ‬استاندارد عمومی ‪ :‬ا که توسط سازمانهای معروف مثل ‪ ISO,ANSI,IEEE‬ارائه می شوند‪.‬‬
‫مسائل مهم در استفاده ی موثر از استاندارد‪:‬‬
‫‪ ‬زمان سنجی )‪ :(time line‬چه زمانی باید زبان استاندارد شود؟‬
‫‪ ‬اطاعت و پیروی )‪ :(conformance‬برنامه ها باید از استاندارد پیروی کنند‪.‬‬
‫‪ ‬کهنگی و منسوخ شدن )‪ :(obsolescence‬کی استاندارد کهنه می شود و چگونه باید آن را اصالح کرد؟‬
‫‪40‬‬
‫‪[email protected]‬‬