400 likes | 648 Views
به نام خدا. طراحي و پياده سازي زبان هاي برنامه سازي. Programming languages Design and Implementation. مهندس زهره زرین قلمی موسسه آموزش عالی غیردولتی-غیرانتفاعی ایوانکی گروه مهندسي کامپیوتر- نرم افزار. منابع. 1.Programming Languages:Design and Implementation , Pratt (2001 )
E N D
به نام خدا zarringhalami_z@yahoo.com
طراحي و پياده سازي زبان هاي برنامه سازي Programming languages Design and Implementation • مهندس زهره زرین قلمی • موسسه آموزش عالی غیردولتی-غیرانتفاعی ایوانکی • گروه مهندسي کامپیوتر- نرم افزار zarringhalami_z@yahoo.com
منابع 1.Programming Languages:Designand Implementation , Pratt (2001) 2.E. Horowitz, Fundamental of Programming Languages, Computer science press. 3. Concepts of programming languages, W.Sebesta(2008 4. طراحی و پیاده سازی زبان های برنامه سازی: جعفرنژادقمی zarringhalami_z@yahoo.com
تقسیم بندی نمره 1-امتحان میان ترم (3نمره) 2- امتحان پایان ترم (14نمره) 3- پروژه (3نمره): مانند مقایسه انواع زبانهای برنامه نویسی از نقطه نظر درس، معرفی کامل یک یا چند نوع از انواع زبانهای برنامه نویسی به خصوص زبانهای جدید پروژه اجباری و به صورت گروه های 3 نفره می باشد. زمان ارائه داکیومنت پروژه هفته دوم اردیبهشت می باشد. داکیومنت باید حداقل 80 صفحه باشد.
فهرست مطالب فصل اول: اصول طراحی زبانها فصل دوم: اثرات معماری ماشین فصل سوم: اصول ترجمه زبان فصل پنجم: انواع داده اوليه فصل ششم: بسته بندي و انتزاع فصل هشتم: كنترل ترتيب اجرا فصل نهم: كنترل ترتيب زيربرنامه ها zarringhalami_z@yahoo.com
فصل اول اصول طراحی زبانها zarringhalami_z@yahoo.com
زبان برنامه نویسی • هر گونه علامت گذاری جهت توصیف الگوریتم ها و ساختمان داده ها، یک زبان برنامه نویسی نامیده می شود. zarringhalami_z@yahoo.com
چرا زبانهای برنامه نویسی را مطالعه می کنیم؟ • برای بهبود توانایی خود در توسعه الگوریتمهای کارآمد • استفاده بهینه از زبان برنامه نویسی موجود • آشنایی با اصطلاحات مفید ساختارهای برنامه نویسی • انتخاب بهترین زبان برنامه سازی • یادگیری آسان یک زبان جدید یا افزايش توانايي در يادگيري زبان هاي جديد • سهولت طراحی زبانهای جدید zarringhalami_z@yahoo.com
تاریخچه زبانهای برنامه نویسی zarringhalami_z@yahoo.com
تاریخچه زبانهای برنامه نویسی • زبانهای محاسباتی یا مبتنی بر اعداد (1955) • زبانهای تجاری ( 1955) • زبانهای هوش مصنوعی (دهه 1950) • زبانهای سیستم ( 1950) zarringhalami_z@yahoo.com
زبانهای محاسباتی یا مبتنی بر اعداد • انجام محاسبات با حجم زیاد و دقت اعشار بالا • استفاده از توابع ریاضی کتابخانه ای(فرترن و الگول) • اهداف زبان الگول عبارت بودند از: • نشانه های الگول باید به ریاضیات استاندارد نزدیک باشد. • الگول باید برای توصیف الگوریتم ها مفید باشد. • برنامه ها در الگول باید به زبان ماشین ترجمه شوند. • الگول نباید به معماری یک ماشین مقید باشد. zarringhalami_z@yahoo.com
زبانهای تجاری • مناسب برای کاربردهای تجاری، حسابداری، انبار و بورس... • نیازهای اصلی کاربران آن: تسریع درورود اطلاعات، نگهداری سابقه و خروجی های واضح در قالب نمودار، جدول و... • هدف آن: ایجاد برنامه هایی که از متن هایی به شکل انگلیسی استفاده کنند. • کوبول زبانی تجاری که ارتش آمریکا برای نگهداری سوابق و اطلاعات نظامی خود از این زبان استفاده کرد. هرچند که خوانایی بالایی دارد اما نحو رسمی ندارد و برنامه نویسی در آن دشوار است. zarringhalami_z@yahoo.com
زبانهای هوش مصنوعی zarringhalami_z@yahoo.com
زبانهای سیستم zarringhalami_z@yahoo.com
تاثیر محیط اجرایی بر روی طراحی و پیاده سازی زبانها zarringhalami_z@yahoo.com
تاثیر محیط اجرایی بر روی طراحی و پیاده سازی زبانها • محیط دسته ای(Batch) • محیط محاوره ای(Interactive) • محیط سیستم های تعبیه شده یا توکار(Embedded systems) • محیط کامپیوترهای شخصی • محیط شبکه و اینترنت zarringhalami_z@yahoo.com
محیط دسته ای(Batch or offline) • کاربر با برنامه هیچ گونه تعامل و محاوره ای ندارد و ترتیب اجرای برنامه در خود برنامه گنجانده شده است. • فایل ها متداول ترین ابزار جهت ورودی و خروجی • کوبول، فرترن و پاسکال ویژگی های آن: • خطایی که اجرای برنامه را خاتمه دهد قابل اصلاح بوده ولی هزینه بر است. • زبان استفاده در محیط دسته ای Timing مشخصی ندارد. zarringhalami_z@yahoo.com
محیط محاوره ای(Interactive) • یک برنامه مستقیما با کاربر تعامل دارد و خروجی در نمایشگر نشان داده می شود. • استفاده از سیستم اشتراک زمانی برای انجام کارهای مختلف، یعنی اختصاص یک برش زمانی(Time Slice) به هر برنامه • پردازش خطا در محیط محاوره ای از اهمیت کمتری برخوردار است • C, C++ zarringhalami_z@yahoo.com
محیط سیستم های تعبیه شده یا توکار(Embedded systems) zarringhalami_z@yahoo.com
ویژگی های محیط سیستم های تعبیه شده zarringhalami_z@yahoo.com
محیط کامپیوترهای شخصی zarringhalami_z@yahoo.com
محیط شبکه و اینترنت zarringhalami_z@yahoo.com
دامنه های کاربرد زبانها کاربردها در دهه 1960 • پردازش تجاری: کوبول • محاسبات علمی: فرترن و الگول • برنامه نویسی سیستم: اسمبلر یا فورث (Forth) • کاربردهای هوش مصنوعی: Lisp, Snobol zarringhalami_z@yahoo.com
دامنه های کاربرد کاربردهای قرن 21 كاربردهاي علمي و مهندسي (Fortran, c, c++, Java, pascal) كاربردهاي تجاري يا سيستم هاي اطلاعاتي (Cobol, C#,Delphi,Java) كاربردهاي آموزشي (c, pascal,java) zarringhalami_z@yahoo.com
هوش مصنوعي(Lisp , Prolog) برنامه نويسي سيستم و شبكه(C, C#.NET,C++, Java) نرم افزار وب(HTML, PHP, C#,VB.NET) زبان هايي باكاربرد ويژه(Matlab,RPG, GPSS) zarringhalami_z@yahoo.com
کاربرد زبانهای برنامه نویسی در گذشته وحال zarringhalami_z@yahoo.com
عوامل موثر بر پیدایش و طراحی زبانها zarringhalami_z@yahoo.com
نحو و معنای زبان • نحو زبان برنامه سازی(syntax)، ظاهر آن زبان است. • قواعد نحوی مشخص می کنند که دستورات، اعلانها و سایر ساختارهای زبان چگونه نوشته می شوند • معنای زبان (semantic) همان مفهومی است که به ساختارهای نحوی زبان داده می شود. • نحو: • معنا: zarringhalami_z@yahoo.com
صفات یک زبان خوب • وضوح، سادگی و یکپارچگی : zarringhalami_z@yahoo.com
صفات یک زبان خوب • قابلیت تعامد(orthogonality): امکان ترکیب ویژگیهای مختلف زبان و با معنا بودن ترکیب حاصل مثال : ترکیب عبارت وساختار شرطی • طبیعی بودن برای کاربردها هر زبان در هنگام استفاده در کاربرد خاص خود باید مناسب به نظر آید یعنی زبانها باید ساختمان داده،عملگرها،دستورات کنترلی و نحو مناسب برای مسئله ای که باید حل شود را داشته باشند. • پشتیبانی از انتزاع(Abstraction) zarringhalami_z@yahoo.com
سهولت در بازرسی برنامه: • محیط برنامه نویسی : وجود ویراستارهای خاص،امکانات نگهداری و اصلاح نسخه های متفاوت zarringhalami_z@yahoo.com
قابلیت حمل برنامه(Portability) • هزینه استفاده • هزینه اجرای برنامه : بستگی به کامپایلر دارد ولی امروزه زیاد مهم نیست. • هزینه ترجمه برنامه: در برنامه های دانشجویی برنامه به تعداد زیاد ترجمه میشود تا اجرا • هزینه نگهداری برنامه:هزینه های ترمیم خطا بعد از اجرا ،توسعه و تغییر سیستم عامل و . . zarringhalami_z@yahoo.com
مدلهای محاسباتی زبان مدل محاسباتی چگونگی توصیف یک برنامه را در یک زبان برنامه نویسی توصیف می کند: • زبانهای دستوری(imperative) یا رویه ای • زبانهای کاربردی یا تابعی(applicative) • زبانهای قانونمند یا منطقی(rule-based) • برنامه نویسی شی گرا(object-oriented) zarringhalami_z@yahoo.com
زبانهای دستوری(imperative) یا رویه ای • زبانهای مبتنی بر فرمان یا دستورگرا Statement 1 Statement 2 . . . Statement n zarringhalami_z@yahoo.com
زبانهای تابعی(applicative) • به جای مشاهده تغییر حالت، عملکرد برنامه دنبال می شود. مانند ام ال و لیسپ (بعضی وقتها c) functionn(…(function2(function1(data)) …) zarringhalami_z@yahoo.com
زبانهای قانونمند یا منطقی(rule-based) • برنامه ها در این زبانها شامل مجموعه ای از قوانین اند که هر قانونی، ساختاری مشابه if در زبان برنامه نویسی دارد. • این زبانها شرایطی را بررسی می کنند و درصورت برقرار بودن آنها فعالیتی را انجام می دهند. مانند پرولوگ zarringhalami_z@yahoo.com
برنامه نویسی شی گرا(object-oriented) • اشیای داده ای پدید آمده و مجموعه ای از توابع تعریف می شوند تا روی این داده ها کار کنند. • (C++, Java,Visual, Smalltalk) zarringhalami_z@yahoo.com
نکات مدلهای محاسباتی زبان zarringhalami_z@yahoo.com
استاندارد سازی زبان روش پی بردن به معنای دستورات : • به مستندات زبان مراجعه شود. • برنامه را در کامپیوتر تایپ و اجرا کنید • به استاندارد زبان مراجعه شود. استانداردهای زبان دو دسته اند : • استاندارد خصوصی : توسط شرکت یا مالک زبان ارائه می شوند. • استاندارد عمومی : ا که توسط سازمانهای معروف مثل ISO,ANSI,IEEE ارائه می شوند. مسائل مهم در استفاده ی موثر از استاندارد: • زمان سنجی (time line): چه زمانی باید زبان استاندارد شود؟ • اطاعت و پیروی (conformance): برنامه ها باید از استاندارد پیروی کنند. • کهنگی و منسوخ شدن (obsolescence): کی استاندارد کهنه می شود و چگونه باید آن را اصلاح کرد؟ zarringhalami_z@yahoo.com