محل لوگو

جزوه طراحی و پیاده سازی ۲


جزوه طراحی و پیاده سازی ۲

 جزوه طراحی و پیاده سازی2 58 صفحه با فرمت word و قابل ویرایش

 

Why study programming languages

هر چه قابليت ابزار را بشناسيم ابزار شناسي بهتر مي شود .

الگو ريتم هاي بهينه تر مي شود .

قدرت انتخاب زبانها بالا تر مي رود .

يادگيري زبانهاي جديد آسان تر مي شود .

براي طراحي زبان جديد مي توان از قابليتهاي زبانهايي که شناختيم استفاده کنيم و نقاط ضعف را رفع کنيم . (مانند java )

Attributes of a good language :

ساختار زبان ساده و روشن و واضح (کد نويسي راحت باشد)

سنخيت با آن طبيعت مسئله.

orthognaliy (تعامل) قابليت ترکيب دستور العمل ها و استفاده ازساختاريدر ساختارهاي ديگر .

مثال :

A=b>3; if (a=b)

استفاده يکassignment در ساختار if

:Support for abstraction .4

data مجرد که ساخته ميشود مهم نيست در کجا کار ميکند و از محيط خارج مستقل است و محيط خارج هيچ دخل و تصرفي در بر نامه ندارد . به data type يک زبان هر چه لازم است مي توان اضافه کرد .

مثال : link list يک تايپ data type مجرد است .

5. Ease of program verificatin ( تشخيص صحت برنامه ) :

6. programming enviroment : ( محيط مجتمع توسعه IDE که محيط هاي user friendly هستند )

7. portability of programs : ( قابليت حمل )

از يک دستگاه به دستگاه ديگر کار کند مانند زبان java .

8. cost of use : ( هزينه اجرا ، هزينه ترجمه ، هزينه توليد ، هزينه نگهداري )

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 ها دو بخش است :

action

validtion

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 هايي که آن زبان مي تواند در اختيار کاربر بگذارد موثر است .

در بعضي سيستمها ممکن است feature هايي لازم باشد که محيط نمي دهد ، زبان برنامه سازي بايد آنرا شبيه سازي software simulation کند .

براي طراحي و پياده سازي زبان اولين کاري که بايد بکنيم اين است که چون مي دانيم محيط روي زبان موثر است ، محيطي را که با اين زبان قرار است کامپايل شود روي آن و يا محيطي که اين زبان بايد روي آن اجرا شود شناسايي کنيم .

پس شناسايي اينکه روي چه دستگاهي عمليات کامپايل انجام شود و برنامه روي چه دستگاهي اجرا مي شود اهميت دارد..معمولا روي همان دستگاه که برنامه کامپايل مي شود روي همان اجرا مي شود .

پس بايد تا حدودي معماري کار را بشناسيم که چه اتفاقاتي مي افتد داخلي ترين لايه Actual Computer است که همانن سخت افزار است و به تنهايي قابل استفاده نيست و براي قابل استفاده شدن به لايه هاي نرم افزاري روي آن نياز است .

شکل Virtual Computer:

يک لايه نازک نرم افزاري به اسم Bios که روي لايه Actual comp. قرار ميگيرد . يک سري سرويسهاي اوليه مربوط به ورودي و خروجي در آن قرار گرفته .

اين نما سطوح Virtuality

را نمايش ميدهد.

وقتي کامپيوتر را روشن مي کنيم قبل از اينکه سيستم عامل بالا بيايد Keyboard و Ram گراقيک روشن ميشوند و hard چشمک مي زند ، اين سرويسها مربوط به bios است.

يک لايه ديگر روي bios قرار ميگيرد به نام os . اين لايه يک سري امکانات بيشتر با خودش ميآورد و از لايه زيرين (bios) يک سري امکانات را مي گيرد و به لايه بالايي ميدهد و خودش هم يکسري امکانات اضافه ميکند .همين os مجموعه اي از managerها است ، بخاطر اينکه resurceها در اين لايه محدود است .

Cpu وI/O device ها همگي resurce هستند ، منابعي که برنامه ها از آن استفاده ميکنند براي اينکه هرج و مرج رخ ندهد ، نياز به برنامه اي است که کنترل کند و مديريت resurce ها را انجام دهد .بنابراين لازم است os يک سري سرويسها از لايه هاي پايين گرفته و به لايه بالايي دهد و يک سري هم خودش( برنامه اي مانند storage management ) را اضافه کند .

لايه بالاتر لايه programming language يا زبانهاي برنامه سازي است . اين لايه اي است که ما روي آن بحث مي کنيم . اين لايه سرويسهاي لايه زيرين را گرفته و ضمن اينکه اگر نقاط ضعفي در لايه هاي پايينتر وجود دارد سعي مي کند آن نقاط ضعف را برطرف نمايد و سرويسها را به لايه هاي بالاتر منتقل مي کند .

لايه بالاتر ، لايه application program است که شامل برنامه هايي که مي نويسيم ،است .مجموعه اي از لايه هاي زيرين ممکن است که مستقيما سرويسها را از لايه پايينتر نگيرد بلکه از لايه هاي زيرين بگيرد ( چند لايه پايينتر) .مثل اينکه در لايه application program مستقيما با يک پورت کار کند . يعني مستقيما با يک پورت کار کند .يعني مستقيما با لايه actual computer در ارتباط است. يا در يک application program از intrupt bios يا intropt os استفاده کنيم و يا از زباني استفاده کنيم که خودش مي داند چه کار بکند مثل توابع کتابخانه اي sin،sqrt ، که اينجا از لايه programming lang. استفاده کرديم.

Actual comp. اي که اطرافش لايه هاي نرم افزاري است که سرويس دهي را بيشتر ميکند تشکيل دهنده virtual comp. است .زمانيکه بخواهيم زباني را طراحي کنيم بايد بدانيم روي چه virtual comp. اي طراحي را انجام ميدهيم .فقط actual comp. به تنهايي کفايت نميکند"،بايد بدانيم تحت چه سيستم عاملي است .اگر c++ را تحت dos روي ibm compatible پياده سازي کنيم ، با زمانيکه تحت ويندوز پياده سازي ميکنيم متفاوت است.

محيط روي feature هاي زبان تاثير ميگذارد. لايه هاي نرم افزاري واقعي نيستند .به همين دليل به آن virtual comp. ميگوييم و به لايه هاي آن virtuality levels مي گوييم .

بنابراين در زمان طراحي و پياده سازي لازم است بدانيم virtual comp. مورد نظر چيست .

ممکن است سطوح هاي computer virtual مستقيما feature را در اختيار زبان برنامه نويسي قرار ندهد . در آن وقت زبان برنامه نويسي سرويس ها را بايد soft ware simulation کند .

مثال :در کامپوتر هاي قديمي 80286 ، 80386 ، sx 80486 ،8086 ،actual computer نمي توانست پردازشهاي floating point را انجام دهد و زبانهايي که طراحي ميشدند نمي توانستند محاسبات اعشاري را انجام دهند پس از software simulation استفاده مي شد .

مثلا : اگر با fortran برنامه اي که floating point processing داشت نوشتيم بنابر اين به assemble code اش نگاه مي کرديم از يک طرف function call استفاده شده بود که اين function نرم افزاري ، اين کار را انجام مي دهد . (software simulation ) .

بسته به computer virtual اي که زبان برنامه نويسي روي آن قرار گرفته سرويس داده مي شود و هر چه قدر قوي باشد امکانات را از سطوح زيرين مي گيرد و در اختيار سطوح بالاتر مي گذارد و امکاناتي را که سطوح زيرين نمي دهد را program language همه سرويس ها را software simulation مي کند .

اگر بخواهيم زباني را طراحي و پياده سازي کنيم بايد بدانيم لايه هاي زيرين آن چه feature هايي دارند و ما از کداميک از آنها مي توانيم استفاده کنيم و نياز لايه بالايي را از feature هاي لايه پايين و بعلاوه software simulation برطرف مي کنيم .

Program language :

زبانهاي برنامه سازي داراي سطوح مختلف دارند :

زبانهاي سطح پايين مثل machin code ، اسمبلي ، macro

زبانهاي سطح بالا مثل pascal ، basic ، PLI ، cobol

زبانهاي سطح مياني مثل C

زبانهاي سطح خيلي بالا مثل SQL ، mathlab

translator (مترجم )

interpreter (مفسر )

translater : با استفاده از يک سري روش ها و زبان ماشين پردازشي را روي زبان مبدأ با ساختار هايي که دارد به زبان مقصد با ساختارهاي جديد انجام شود را translater مي گويند . (زبان مقصد : زبان ماشين )

مترجم ها چند گروهند :

compiler : زبانهاي سطح بالا را تبديل به زبان ماشين مي کنند .

assembler : زبانهاي سطح پايين را تبديل به زبان ماشين مي کنند .

فرق اسمبلر و کامپايلر : در اسمبلر تناظر يک به يک بين دستور العمل ها و machine code است ، يعني اگر بخواهيم فعاليتي انجام دهيم assembly code است که ميشود چندين خط در خط يک دستور العمل يک ماشين کد نوشت و تناظر يک به چند است .

نحوه عمل translate :

در اسمبلر تناظر يک به يک بين target ، source است يعني يک دستور العمل source مستقيما يک دستور العمل target مي شود . (machine code دستورالعمل اسمبلي)

در صورتيکه در کامپايلر ها فعاليتها نسبت به اسمبلر خيلي بيشتر است . (تناظر يک به چند است .) يک دستررالعمل در source به چندين دستور العمل در target که اسمبلي يا ماشين کد است تبديل مي شود .


مبلغ واقعی 25,000 تومان    37% تخفیف    مبلغ قابل پرداخت 15,750 تومان

توجه: پس از خرید فایل، لینک دانلود بصورت خودکار در اختیار شما قرار می گیرد و همچنین لینک دانلود به ایمیل شما ارسال می شود. درصورت وجود مشکل می توانید از بخش تماس با ما ی همین فروشگاه اطلاع رسانی نمایید.

Captcha
پشتیبانی خرید

برای مشاهده ضمانت خرید روی آن کلیک نمایید

دیدگاه های کاربران (0)

اگر به یک وب سایت یا فروشگاه رایگان با فضای نامحدود و امکانات فراوان نیاز دارید بی درنگ دکمه زیر را کلیک نمایید.

ایجاد وب سایت یا
فروشگاه حرفه ای رایگان

تمام حقوق مادی و معنوی این وب سایت متعلق به "" می باشد

فید خبر خوان    نقشه سایت    تماس با ما