جزوه کامل نظریه زبان ها و ماشین ها
جزوه دست نویس
80 صفحه pdf
جزوه کامل نظریه زبان ها و ماشین ها
جزوه کامل نظریه زبان ها و ماشین ها
جزوه دست نویس
80 صفحه pdf
لینک پرداخت و دانلود *پایین مطلب*
فرمت فایل:Word (قابل ویرایش و آماده پرینت)
تعداد صفحه:60
فهرست مطالب
Why study programming languages ?
Attributes of a good language :
Imperative languages :
Applicative languages :
object- oriented programming :
languages evtiarative :
batch proccessing:
Program language :
Binding : (انقیاد ، قید گذاری )
ترجمه زبان :
تعریف تر جمه :
معیارهایی برای خوب بودن syntax :
lexical analysis :
Symbol Table :
Elementery data types
و چگونگی نمایش در حافظه
از لحاظ پیاده سازی ساختار:
Declaration :
assignment & initialization :
languages ?
Attributes of a good language :
مثال :
A=b>3; if (a=b)
استفاده یکassignment در ساختار if
:Support for abstraction .4
data مجرد که ساخته میشود مهم نیست در کجا کار میکند و از محیط خارج مستقل است و محیط خارج هیچ دخل و تصرفی در بر نامه ندارد . به data type یک زبان هر چه لازم است می توان اضافه کرد .
مثال : link list یک تایپ data type مجرد است .
از یک دستگاه به دستگاه دیگر کار کند مانند زبان java .
cost of program execution : برنامه سریع اجرا شود و کد بهینه وقت زیادی برای اجرا از cpu نگیرد .
cost of program translation:مدت زمانی که compile کد تولید می کند زمان کمی باشد .
مثال : pascal سریع تر اجرا می شود و کند تر compile می شود زیرا پاسکال بهینه سازی کد انجام می دهد ، زمان بیشتری می برد ولی c بر عکس .
cost of program creation , testing and use : برنامه نویس سریعتر تویط زبان ، برنامه را تولید کند و تعداد برنامه نویس کمتری لازم باشد .
cost of program maintenance : زبانی که توسعه و خوانایی بالاتری داشته باشد .
مثال : pascal هزینه نگهداری کمتری دارد چون ، چند ماه بعد قابل فهم تر است .
زبان خوب برای دانشجو زبانی است که هزینه compile پایین باشد .
Language paradiagms :
Imperative languages :
زبانهایی مانند : PLI ، Pascal ، c ، fortran
زبانهایی که الگو ریتم ها را در غالب function ، procedure می نویسیم و هر procedure یک شرح وظیفه ای دارد که برنامه نویس کد آنرا می نویسد و مجموعه دستور العمل ها ، state ماشین ( موقعیت cpu و حافظه ) را تغببر می دهد .
بعد از انجام هر دستور العمل نتیجه را در جایی بریزیم و ببینیم . ( procedural languages )
Applicative languages :
زبانهایی مانند ML ، Lisp
اساس کار function است و زبان با کار کردن این function به نتیجه کار می رسد.
object- oriented programming :
محور اصلی این زبان شی ها هستند و با استفاده از این زبان می توان data type پیچیده را از ترکیب data type های جدیدی بدست آورد .(link list : مجموعه ای از data type های ساده بدست آمده )
: Rule – based languages (شاخه ای از زبان توصیفی )
ساختار این rule ها دو بخش است :
languages evtiarative :
زبانهایی هستند که دانش (rule ، fact ) داخل آن توصیف می شود و از آنها برای پاسخگویی به یک سری پرسشها استفاده می شود .
زبانهایی که دانش در خطوط برنامه مستقر است .
زبان prolog اجازه داده می شود که دانش در قالب به صورت facts ، rules معرفی شود .
جلسه دوم :
Enviroment : محیطی که تحت آن برنامه نویسی انجام می شود و بر طراحی و پیاده سازی زبان تأثیر گذار است .
در محیط dos ،می بینیم که زبان بر نامه نویسی هم تأثیر پذیر است به طور مثال در محیط dos ، mouse programming سخت است .
درc و turbo pascal مشکل است با mouse کار کنیم باید driver موس را داشته باشیم و بعدا با intrupt ها ، mouse را کنترل کنیم . چون محیط اجازه کار با موس را راحت نمی دهد ، برنامه نویس باید با lintrupt این کار را پیاده کند . ولی همین c و pascal در ویندوز به علت وجود توابع و امکانات os اجازه کار با موس به راحتی امکان پذیر می سازد.
اگر پاسکال در محیط ویندوز اجرا شود ( زبان Delphi) کار راحتتر است و با mouse می توان کار کرد .
بنابراین محیط در feature هایی که می تواند در اختیار قرار دهد تاثیر گذار است ، مثلا در سیستمهای قدیمی که main frame بودند batch proccessing داشتند .
batch proccessing:
وقتی برنامه ای را برای اجرا می فرستیم در صفی قرار می گیرد تا نوبت به آن برسد . در آن وقت چند برنامه در صف قرار می گیرند و میتوانند با هم کار کنند . د ر آن وقت شروع به کار می کنند ، از زمانیکه در صف قرار می کیرند تا زمانیکه اجرا شود.userهیچ دخل و تصرفی نمی تواند به آن داشته باشد . برنامه برای اجرا فرستاده می شود و دیگر منتظر نمی ایستد که کاربر data ای را وارد کند ( توسط کی برد ) یا مثلا اطلاعاتی را روی صفحه ببینیم . بنا براین حالت interaction بین user و برنامه وجود ندارد . چون محیط اینطور است زبانهایی که تحت این محیط طراحی و پیاده سازی می شوند ، featureهایی مثل demo کارهای mouse و کارهایی که حالت interaction بین user و برنامه باشد دیده نمی شود . ( ارتباط بر قرار کردن و رد و بدل کردن اطلاعات : interaction ) . ولی در عوض بدلیل اینکه کار با دستگاههای جانبی مثل دیسکها و tape ها و کارتخوان و ... بیشر نیاز است ، featureهایی که بتواند با آنها کار کند بیشتر شده است .( مثل cobol در Dosvs) .
در بعضی سیستمها ممکن است feature هایی لازم باشد که محیط نمی دهد ، زبان برنامه سازی باید آنرا شبیه سازی software simulation کند .
برای طراحی و پیاده سازی زبان اولین کاری که باید بکنیم این است که چون می دانیم محیط روی زبان موثر است ، محیطی را که با این زبان قرار است کامپایل شود روی آن و یا محیطی که این زبان باید روی آن اجرا شود شناسایی کنیم .
پس شناسایی اینکه روی چه دستگاهی عملیات کامپایل انجام شود و برنامه روی چه دستگاهی اجرا می شود اهمیت دارد..معمولا روی همان دستگاه که برنامه کامپایل می شود روی همان اجرا می شود .
پس باید تا حدودی معماری کار را بشناسیم که چه اتفاقاتی می افتد داخلی ترین لایه Actual Computer است که همانن سخت افزار است و به تنهایی قابل استفاده نیست و برای قابل استفاده شدن به لایه های نرم افزاری روی آن نیاز است .
شکل Virtual Computer:
یک لایه نازک نرم افزاری به اسم Bios که روی لایه Actual comp. قرار میگیرد . یک سری سرویسهای اولیه مربوط به ورودی و خروجی در آن قرار گرفته .
این نما سطوح Virtuality
را نمایش میدهد.