یارا فایل

مرجع دانلود انواع فایل

یارا فایل

مرجع دانلود انواع فایل

دانلود مقاله طراحی و پیاده سازی و مدیریت بانکهای اطلاعاتی

اختصاصی از یارا فایل دانلود مقاله طراحی و پیاده سازی و مدیریت بانکهای اطلاعاتی دانلود با لینک مستقیم و پرسرعت .

دانلود مقاله طراحی و پیاده سازی و مدیریت بانکهای اطلاعاتی


دانلود مقاله طراحی و پیاده سازی و مدیریت بانکهای اطلاعاتی

 

 

 

 

 

 


فرمت فایل : word(قابل ویرایش)

تعداد صفحات:83

چکیده:

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

مدیریت

1) Design and Implementation

2) Administrator

بانکهای اطلاعاتی به دو دسته تقسیم بندی می شوند که عبارتند از:

1) Desktop          Access-paradox, foxpro-Dbase

2) client/server                  sql-oracl/

مدل Desktop برای کامپیوتهای single پیش بینی شده است. به این شکل که برای یک مجموعه کوچک که با حجم زیادی از اطلاعات روبرو نیست می تواند نیاز ما را برطرف کند.

بانکهایی مانند Access شاخص ترین عضو خانواده Desktop به حساب می آید. در این نوع از بانکهای اطلاعاتی، بانک اطلاعاتی ساخته شده بر روی یک hard قرار گرفته و برای دیگران قابل دسترسی می‌باشد. اگر بخواهیم برای کاربران مختلف که در این سیستم کار می‌کنند محدودیت های دسترسی تعریف کنیم با مشکل مواجه خواهیم شد چرا که گزینه های امنیتی در آن نسبت به مدل client/server

10000

 

بسیار بسیار ضعیف می باشد. البته در صورتیکه یک محیط شبکه داشته باشیم می توانیم فایل ساخته شده Access خود را در داخل فایل server قرار دهیم و client ها به آن دسترسی داشته باشیم.

 

 

اگر بخواهیم از این بانک که نگهدارنده اطلاعات کارگزینی کارمندان و اطلاعات حقوق و دستمزد آنها باشد. گزارشی به شکل زیر تهیه کنیم لیست کلیه کارمندان را نمایش دهید که در دپارتمان 1 مشغول کار هستند و می خواهیم جمع حقوق کارمندان این بخش را مشخص کند.

حداکثر سرعت در شکبه

این مشکلات می تواند از زوایای مختلف بوجود بیاید:

1- تمام پردازش ها در داخل client انجام می شود.

2- در این حالت نیازمند سخت افزار قوی برای client ها و وجود یک خطوط ارتباطی پرسرعت.

3- از آنجایی که هارد server قابل دسترس برای کلیه client ها می باشد امنیت اطلاعات server از بین خواهد رفت.

4- اگر در این مدل نیاز به update کردن برخی از رکوردها داشته باشیم بعد از آنکه رکوردها به client آمدند و تعدادی از آنها update شدند باید بر روی هارد server ذخیره گردد.

 

Server processing

 

اگر در حین انجام عمل save سیستم با قطع برق مواجه گردد و یا خطوط ارتباطی قطع شوند برخی از رکوردها در فایل بانک در server ، up date شده و برخی دیگر بدون تغییر باقی خواهد ماند. هیچ راهی برای شناسایی اینکه کدام یک تغییر یافته اند وجود ندارد و نمی توان وضعیت بانک را به حالت اولیه آن برگرداند.

 

   

 

Select sum (Salary) From Employees

Where Dep=1

در قالب نوع client/server یکپارچگی اطلاعات تضمین می شود به این شکل که در هنگام عمل up date چنانچه برق قطع شود با روشن شدن مجدد server بررسی می شود که آیا مراحل قبلی با موفقیت به پایان رسیده است یا خیر.

برای حفظ یکپارچگی، اطلاعات sqlserver قبل از ثبت قطعی اطلاعات کلیه اعمال را در فایل log خود انجام می دهد.

Sql server دارای دو نوع فایل می باشد:

فایل داده با پسوند Mdf .                       1) Date file

فایل تراکنش با پسوند Ldf .                   2) log file  

فایل های تراکنش Transaction log file

زمانیکه سیستم روشن می شود ابتدا log file مورد ارزیابی قرار می گیرد. اگر در فایل log با دستور commit مواجه شود یعنی کلیه اعمال قبلی به شکل کامل انجام شده اند و آماده اند برای آنکه بر روی date file نوشته شوند. در این حالت log file بر روی data file ثبت خواهد شد.

اگر با دستور commit مواجه نشود عمل roll Back اتفاق می افتد حال می توانیم با این شرایط وضعیت سیستم را به شرایط قبلی بازگردانیم. تمام حالتهای انجام شده به وضعیت سابق بر میگردد و بانک ثبات خود را حفظ خواهد کرد یکپارچه باقی می ماند.

انواع sql های قابل نصب:

1) sql server enterprise

روی ویندوز 2000 و 2003 نصب می شود یعنی روی ویندوزهای 32 بیتی و 64 بیتی قابل نصب هست.

بهترین خاصیت آن امکان داخلی آن clustering می باشد یعنی 4 یا 8 کامپیوتر را می توان بهم وصل کرد.

4- نحوه

 

 

 

ویرایش استاندارد 2) Standard Edition

روی ویندوز 2000 و 2003 نصب می شود و تفاوتش با sql اولی این است که امکان clustering را ندارد.

Sql 2000 service pack 3a

Win 2000 service pack 4

Win 2003 service pack 1

3) sql server personal edition

روی ویندوز xp نصب می شود.

Spl server , client tools

 

         

Client only

 

 

 

 

 

 

 

 

روی ویندوز CE کامپیوترهای جیبی (packet pc) نصب می شود.

نصب sql :

بعد از نصب sql server و فعال شدن service manager به سراغ interprise manager می رویم تا بتوانیم به کمک آن به table ها دسترسی یابیم. اگر اثری از sql نصب شده در sql server group وجود نداشت بر روی آن right click کرده گزینه new registration را انتخاب می کنیم. با این کار sql server شناسایی خواهد شد. سپس آن را باز کرده و لیست database ها از folder database کلیه بانکهای موجود را مشاهده خواهیم کرد. حال بانکهای tempdb-msdb-model-master به عنوان بانکهای سیستمی و
pubs, northwind مشاهده می شود که این دو data base (بانک) نمونه‌هایی هستند که ماکروسافت آنها را برای آشنایی بهتر ترویج کرده است.

برای غیر فعال کردن بانکهای سیستمی وtable های سیستمی که در هر بانکی (data base های) وجود دارند می توانند بر روی نام
database ، کلیک راست کرده و گزینه edit sql server registration را انتخاب کنیم و در این پنجره گزینه show system … را غیر فعال کنیم تا هیچ یک از موارد سیستمی به نمایش در نیاید.

از این بانکهای سیستمی sql بانک master اصلی ترین بانک sql می باشد این بانک در پشت صحنه کلیه عملیات sql را مدیریت می‌نماید و هر نوع آسیب به این data base باعث از کارافتادن sql خواهد شد.

بانک modeldb بانکی است که از روی آن تمام data base های جدید ساخته می شود و در واقع طرح و الگویی جهت سایر data base هاست.

بانک tempdb به ما کمک می کند که بر روی انجام عملیات موقت از این بانک اطلاعاتی استفاده نماییم زمانیکه مطمئن به انجام قطعی عملیات نیستیم می توانیم از بانک tempdb استفاده کنیم هر بار sql فعال می شود tempdb خالی خواهد شد.

Msdb بانکی است که وظیفه انجام کارهایی را که تحت عنوان job شناخته می شوند را بر عهده دارد. این بانک با سرویس
sql server agent کار می کند.

نکته:

اگر sql در حالت stop o باشد یعنی sql سرویس دهی نمی کند و اگر در حالت pause $$ باشد باعث می شود که هر کسی که قبلاً وارد سیستم شده و در حال کار با sql است پیغام خطا دریافت نکرده ولی فرد جدید نمی تواند وارد سیستم شده و کاری انجام دهد.

Stop یعنی توقف بطور کامل و sql سرویس دهی می کند ولی pause یعنی توقف لحظه ای.

اگر بخواهیم به هر دلیلی به عنوان admin بخواهیم تغییری در sql بدهیم باید sql را از حالت multi user خارج کرده و به حالت
single user درآوریم و برای اجرای مجدد start را می زنیم و سرویس دهی sql دیگران قرار می گیرد.

توسط interpriser ابزارهای مدیریتی خواهیم داشت.

روی sql server کلیک می کنیم و آن را باز می کنیم.

Sql server\ service manager \ interprise manager \ registration \ wizard\ register sql server wizard

اگر اسم sql را ندیدیم باید آن را ثبت کنیم. مثلاً pcl

Right click \ new sql server registration

Right click \ edit … \ registed sql server properties

Sql هایی که سیستمی بودند پنهان شدند.

نکته:

اگر master آسیب ببیند دیگر sql کار نمی کند.

نحوه ایجاد data base :

بر روی data bases ، کلیک راست کرده گزینه new data base را انتخاب می کنیم. اسم data base را وارد می کنیم.

در قسمت collation name برای انتخاب زبان codepage می باشد. اگر در هنگام نصب گزینه collation به درستی تنظیم شده باشد در این جا بر روی انتخاب server default تنظیم خود را قرار می دهیم. در غیر اینصورت می توانیم از موارد موجود Arabic CS-AI برای زبان فارسی انتخاب نمائیم.

اگر database ای را حذف کنیم دیگر آن database قابل برگشت نیست.

مثال:

اسم کامل فیزیکی Employees-Data.MDF

با حجم 1mG بر روی hard ساخته می شود.


تحقیق:

Group file چیست؟ برای چه فایل ها را دسته بندی می کنیم؟ آیا می‌تواند مقداری غیر از primary بگیرد؟

دسته:

فقط اولین فایل داده ساخته شده پسوند MDF دارد و فایل دوم به بعد NDF پسوندش می باشد.

در قسمت properties یک قسمت automatic … وجود دارد که اگر تیک نداشته باشد گزینه های آن غیر فعال خواهد بود و اگر تیک داشته باشد می توان حجم و موارد دیگر را به دلخواه تغییر داد.

برای مثال                 باشد اگر

                                      

بعد از پر شدن ، مگ مگ اضافه می شود.

نامحدود unrestricted

محدود restricted

در قسمت maximum file size می توان محدودیت قرارداد

قسمت transaction فایل ساخته شده با پسوند LDF . است.

 


دانلود با لینک مستقیم

دانلود جزوه طراحی و پیاده سازی 2

اختصاصی از یارا فایل دانلود جزوه طراحی و پیاده سازی 2 دانلود با لینک مستقیم و پرسرعت .

دانلود جزوه طراحی و پیاده سازی 2


دانلود جزوه طراحی و پیاده سازی 2

 

 

 

 

 

 


فرمت فایل : word(قابل ویرایش)

تعداد صفحات:57

چکیده:

  Why study programming languages ?
1.    هر چه قابلیت ابزار را بشناسیم ابزار شناسی بهتر می شود .
2.    الگو ریتم های بهینه تر می شود .
3.    قدرت انتخاب زبانها بالا تر می رود .
4.    یادگیری زبانهای جدید آسان تر می شود .
5.    برای طراحی زبان جدید می توان از قابلیتهای زبانهایی که شناختیم استفاده کنیم و نقاط ضعف را رفع کنیم . (مانند java )

Attributes of a good language :
1.    ساختار زبان ساده و روشن و واضح (کد نویسی راحت باشد)
2.    سنخیت با آن طبیعت مسئله.
3.    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  ها دو بخش است :
1.    action
2.    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)  .
o    یعنی محیط بسیار در طراحی زبان و 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
1.    translator  (مترجم )
2.    interpreter (مفسر )
translater : با استفاده از یک سری روش ها و زبان ماشین پردازشی را روی زبان مبدأ با ساختار هایی که دارد به زبان مقصد با ساختارهای جدید انجام شود را translater می گویند . (زبان مقصد : زبان ماشین )
مترجم ها چند گروهند :
1.    compiler  : زبانهای سطح بالا را تبدیل به زبان ماشین می کنند .
2.    assembler  : زبانهای سطح پایین را تبدیل به زبان ماشین می کنند .
فرق اسمبلر و کامپایلر : در اسمبلر تناظر یک به یک بین دستور العمل ها و machine code  است ، یعنی اگر بخواهیم فعالیتی انجام دهیم assembly code  است که میشود چندین خط در خط یک دستور العمل یک ماشین کد نوشت و تناظر یک به چند است .


دانلود با لینک مستقیم

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

اختصاصی از یارا فایل دانلود جزوه طراحی و پیاده سازی دانلود با لینک مستقیم و پرسرعت .

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


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

 

 

 

 

 

 


فرمت فایل : word(قابل ویرایش)

تعداد صفحات:66

چکیده:

Why study programming languages ?
1.    هر چه قابلیت ابزار را بشناسیم ابزار شناسی بهتر می شود .
2.    الگو ریتم های بهینه تر می شود .
3.    قدرت انتخاب زبانها بالا تر می رود .
4.    یادگیری زبانهای جدید آسان تر می شود .
5.    برای طراحی زبان جدید می توان از قابلیتهای زبانهایی که شناختیم استفاده کنیم و نقاط ضعف را رفع کنیم . (مانند java )

Attributes of a good language :
1.    ساختار زبان ساده و روشن و واضح (کد نویسی راحت باشد)
2.    سنخیت با آن طبیعت مسئله.
3.    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  ها دو بخش است :
1.    action
2.    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)  .
o    یعنی محیط بسیار در طراحی زبان و 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
1.    translator  (مترجم )
2.    interpreter (مفسر )
translater : با استفاده از یک سری روش ها و زبان ماشین پردازشی را روی زبان مبدأ با ساختار هایی که دارد به زبان مقصد با ساختارهای جدید انجام شود را translater می گویند . (زبان مقصد : زبان ماشین )
مترجم ها چند گروهند :
1.    compiler  : زبانهای سطح بالا را تبدیل به زبان ماشین می کنند .
2.    assembler  : زبانهای سطح پایین را تبدیل به زبان ماشین می کنند .
فرق اسمبلر و کامپایلر : در اسمبلر تناظر یک به یک بین دستور العمل ها و machine code  است ، یعنی اگر بخواهیم فعالیتی انجام دهیم assembly code  است که میشود چندین خط در خط یک دستور العمل یک ماشین کد نوشت و تناظر یک به چند است .
نحوه عمل translate :






در اسمبلر تناظر یک به یک بین target  ، source  است یعنی یک دستور العمل source    مستقیما یک دستور العمل target  می شود . (machine code       دستورالعمل اسمبلی)
در صورتیکه در کامپایلر ها فعالیتها نسبت به اسمبلر خیلی بیشتر است . (تناظر یک به چند است .) یک دستررالعمل در source به چندین دستور العمل در target  که اسمبلی یا ماشین کد است تبدیل می شود .
کار کامپایلر ترجمه است یعنی یک ساختار دیگر تبدیل می شود ، بدون در نظر گرفتن اینکه منطق پشت قضیه چیست ؟! یک ساختار میگیرد ساختار دیگر می دهد .
لازم نیست که به اسمبلی تبدیل شود و از اسمبلی به ماشین کد یک شکل اند. بوجود آمدن اسمبلی از آنجایی است که ماشین کد بوده در ابتداکه  صفر و یک بود ، برای هر دستور کد صفر و یک بود،
ولی حالا به جای صفر و یک آن را نمادین کردند . هر چه به زبان ماشین نزدیک می شویم قدرت برنامه نویسی بالا می رود و سهولت پایین می آید .
-    خیلی جاها به خاطر اینکه لایه ای زبان قرار می دهد،نمی توان از تمام feature  ها استفاده کرد،محیور هستیم مستقیما سراغ کد برویم . مثلا در داخل کد C  از اسمبلی کد به صورت  embed  استفاده کنیم یا 10 خط پاسکال بنویسیم که سه خط آن اسمبلی باشد .
در صفحه 55 روی کامپایلر ها یعنی زبانهایی مثل C و پاسکال و نمودارش کشیده شده که به چه شکل عمل می شود . نحوه عملکردش مشخص است . یک source کدی داریم و به کامپا یلر می دهیم . کامپا یلر یک فاز کامپایل روی آن می گذارند این فاز کامپایل باعث می شود یک کد target ای برای ما تولید شود که به آن object code  می گوییم ، که همان زبان ماشین است . پس اینجا source code  را می گیرد و کامپا یلر translate می کند .
زبان source را می گیرد ( پاسکال و C و PLI  و بیسیک و ... ) و تبدیل به یک فاز خروجی با زبان ماشین کد که این object  از روی source code   ساخته شده ، حالا اگر source code  از یک سری توابعی استفاده کرده باشد که source code   آنرا ما ننوشتیم مثل Sqrt ، Sin ، Cout  ،  اینها توابعی است که از  قبل تعریف شده و ما در برنامه از آن استفاده کرده ایم .

جلسه سوم :
Binding  : (انقیاد ، قید گذاری )
هر متغیری یک سری attribute هایی دارد از جمله :
اسم متغیر ،vocation، data type ، data type  sizeو مقدار مجاز
هر زمان که به attribute های یک موجودیت مقدار بردیم و به آن مقدار محدودش کنیم عمل binding انجام شده است .


مثال :  a=10 ;    
atribiute ،  value یک موجودیت را به مقدار 10 ,   set میکنیم و این binding،  value است .(در زمان run time)
مثال:    int k ;
 این تعریف نشان دهنده موجودیتی به نام  kاست . پس binding انجام شده و data type این متغیر  integer است .(در زمان  compile  )
Classes of binding time  :
Binding ها ممکن است در زمانهای مختلف انجام شوند .
1.    binding در زمان تعریف و طراحی یک زبان :language definition time)   )
به طور مثال : تعریف می کنند زبانی را که support را object onented  کند و class را داشته باشد data type از نوع  integer و یا حلقه های تکرار و امکانات دیگری که می خواهیم داشته باشد و از این طریق محدودیت تعریف زبان را مشخص می کند و نتیجه می گیریم binding  یک زبان de fenition است .
2.    binding در زمان  implementation ( language implementation time )
به طور مثال : integer  را مطرح می کنیم که می تواند 16 بیتی ، 32 بیتی یا 64 بیتی ، طراحی pointer  ، refrence  بر اساس pointer ، پیاده سازی آرایه دو بعدی بر اساس آرایه ای از آرایه ها که این ترتیب پیاده سازی را مشخص و محدود می کنیم .
این دومورد تازمانیکه زبان برنامه سازی طراحی شود و پس از تولید زبان دو مرحله binding  دیگری وجود دارد .
3.    (compile time ) transaction time  :
در مرحله compile ، binding انجام می شود .
به طور مثال : ; k      int
که یک declaration  است که در زمان compile انجام می شود .
4.    (run time  )  Execution time  :
به طور مثال : مقدار دهی یک متغیر ( چون در زمان run time است که مقدار دهی انجام می شود .)
سئوال:Binding تعریف روبرو چیست؟
static     int      a=10 ;



Location  این متغیر در زمان run time مشخص می شود که کدام قسمت حافظه را اشغال می کند .چون در زمان run time کد برنامه توسط loader از دیسک برداشته می شود و در حافظه  گذاشته می شود .  ( location هم یکی از attribute های یک  data object است .)
توجه: به این گونه مقدار دهی initialize می گویند .
static variable ها در انتهای کد یا بین دو کد قرار می گیرند بنابراین جایش به صورت logic  ای مشخص است .
فرض کنید پس از این تعریف a = 5  قرار دهیم ، برایش کد تعریف نشده است ولی برای دستور بالا کد تعریف شده است .
پس تعریف       static   int  a=10; ، 10 در یک location قرار می گیرد و زمانیکه به خط ; a = 5 می رسد 10 تبدیل به 5 می شود و به این ترتیب ; a = 5  در زمان  run time  است.
فرض کنید تعریف بالا را به صورت   int  a=10;  بنویسیم در این صورت این خط در زمان run time  اجرا می شود ( توسط f7 ، f8 ) زیرا متغیر هایی که به صورت static تعریف نمی شوند ، معلوم نیست کجای حافظه قرار می گیرد وتا زمانیکه حافظه ای را نگرفته اند مقدار دهی اولیه هم نمی شوند و در زمان run time  مقداری حافظه گرفته می شود و a به آن تخصیص داده می شود و مقدار دهی می شود مثلا با مقدار 10. (فرق بین  variable   static ، dynamic variable )
زبانهایی که بیشتر عملیات binding  شان را در مرحله compile انجام می دهند زبانهای early binding  می گویند مانند : " compiler "
زبانهایی که بیشتر عملیات binding شان را در مرحله اجرا می دهند زبانهای  binding late می گویند
مانند :  interpreter
- البته بعضی از فعالیتها در مرحله compile و بعضی از فعالیتها در مرحله run time انجام میشود .
Run time                 mov   ax , 2
Compile                   static    int    a=2



ترجمه زبان :
تعریف تر جمه :
یک ساختار را به عنوان ورودی گرفته و به ساختار دیگر با vocab  دیگر تبدیل شود.
برای تشخیص در ستی مسئله syntax عنوان می شود .
تعریف syntax: چیدمان عناصر اجرا تشکیل دهنده یک زبان در کنار هم که ساختار درست و تعریف شده ای داشته باشد . ( ساختار شناخته شده در زبان مورد نظر داشته باشد .)
تعریف semantic : از لحاظ معنایی ساختار جمله بررسی می شود .
مثال: در زبان فارسی ساختار جمله که تشکیل شده از اعضای زیر (فعل، فاعل، مفعول)
علی حسن را زد.                 syntax√
                 X    Semantic  

از لحاظ  Syntax عبارت حسن علی را رفت ، درست است  ولی از لحاظ Semantic خیر.
مثال :
A+(B*C)
(A+B)*C

معیارهایی برای خوب بودن syntax :
1. raedability:  قابلیت خواندن خوانایی
Syntax این خوب است که ساختارهای پیچیده نداشته باشد و زمانی که کدی به آن زبان syntax نوشته می شود بعدا به راحتی آنرا بتوان خواند .
2) writeability : توانایی نوشتاری
توانایی نوشتاری بالا باشد و برنامه نویس به راحتی و بدون دردسر بتواند کد نویسی کند .
writeability و readability با هم رابطه متضادی دارند .
مثلا پاسکال یک زبان readability است.
C "          "          writeability است .
 یعنی کدی را می توان با C نوشت و یک برنامه نویس حرفه ای هم بتواند این کد را write کند حسن های writeability :
Redundant را کم می کند ،یعنی اگر قابلیت نوشتاری بالا باشد می توان با ترکیب ساختارها ، ساختار جدیدی داشته باشیم که نیازها را برطرف می کند .
مثال: در c داخل for می توان همه کار کرد ولی در پاسکال به خاطر محدود بودن syntax مجبور هستیم برای یک کار تعداد خطوط بیشتری بنویسیم .
redundant code  یعنی کدهای تکراریو وقتی که writabilty بالا باشد ، کدهای تکراری کم می شود .
راحتی verifying (تعیین صحت برنامه): یعنی هر چه برنامه readable باشد ،راحتی verifying وجود دارد . کدی داریم که اشکال زدایی می کنیم و با وجود readability اشکال زدایی راحتر می شود .ولی در صورتیکه readable و  writeable با هم باندازه ای باید داشته باشیم که همه writeableباشند و تعداد خطوط کمتر باشد و هم readableباشد که پیچیدگی خیلی زیاد نداشته باشد .پسverifying هم با readability  و هم با writeability در ارتباط است .
ease of translation : راحتی ترجمه
کامپایلر راحتر بتواند زبان syntax را ترجمه کند و این زمانی است که ساختار ساده باشد  و تعداد ساختار کمی داشته باشد.
-    کامپایلر پاسکال سریعتر از  c است .
مثال : در c  یک اپراتوری بشکل روبرو داریم (conditional  operator)   که اگر در چند خط استفاده شود ، ساختار پیچیده ای را بوجود می آورد و برای کامپایل زمان زیادی را میبرد برای تشخیص فعالیتی که انجام دهد و اطلاعات را نگهدارد و تشخیص دهد که کدام برای بخش if و کدام برای بخش  else است .
Syntax  زبان cobol  نزدیک به زبان انسان است و کار کامپایلر سخت می شود زیرا هرچه زبان نزدیک به زبان ماشین باشد کار کامپایلر راحتر است .مانند زبان اسمبلی .زیرا به ازای هر دستور اسمبلی یک دستور machine code داریم .
فقدان ابهام (lake of ombiguity):
Syntaxای خوب است که ابهام نداشته باشد .

مثال : در زبان  fortran :                
                  می توان 2 تعبیر از عبارت داشت  (i,j) A
-    ماتریس A با اندیس  i  و j
-    function ،A با پارامترi  و  j
که در c و پاسکال   این مسئله حل شده که اگر ماتریس با شد از [ ] و اگر  function باشد از  ( ) استفاده می شود .
 عناصر تشکیل دهنده یک syntax :
chracter set :یعنی در  syntax چه کاراکترها و کدهایی valid هستند .
مثال: $ در c کاربرد ندارد ولی در pl1 بعنوان جزئی از اسم identifier استفاده می شود .
identifiers : یعنی شناسه ها چه هستند
identifier :
اسامی متغیرها
اسامی lable ها
اسامی function
اسامی constant
 و مشخص باشد که ساختار ID چه باشد و با چه شروع می شود ،اجزاء Syntax را تشکیل می دهد.
operator symbols : نمادها
مثال: در زبانی equal را با =  set کند.
در زبانی equal را با  :eg: set    کند مانند fortran
keywords and reservedwords :
keywords کلماتی هستند که توسط کامپایلر شناسایی شده هستند ولی بعنئان identifier هم می توان استفاده کرد .
مثال :    key word       if,for              در زبان pl1
 در زبان c    ، keyword  نداریم و همه reserved word هستند.
Reservedwords : کلمات کلیدی هستند که کامپایلر می تواند بشناسدو فقط و فقط از آنها استفاده کند و ما نمی توانیم به آن نام identifier داشته باشیم.
noise words : کلماتی هستند که در دستورالعملها استفاده می شوند که خوانایی بالا می رود و عبارت شکیلتر می شود .
go lable           در زبان cobol
Go to lable
 وجود یا عدم وجود to در code تاثیر ندارد ولی شکیلتر میشود و به زبان انسان نزدیکتر است .
comments : توضیحات داخل برنامه که توسط برنامه نویس برای خوانایی بیشتر کد نوشته میشود و کامپایلر روی توضیحات هیچ action ندارد و از دید کامپایلر کاملا by pass است.
blanks(space) : برای خوانایی syntax به شرطی که در جای مناسب استفاده شود .
مثال : بین ++ ،  blank  استفاده نکنید.
8.    delimiters and brackets : که  tokenها (عناصر اتمی syntax مانند  if,then,for, که تجزیه ناپذیرند)را از هم جدا می کنند .
                                A  (  j  ,  I  )
                                
                                delimiter
9.    free and fixed field format: syntax هایی هستند که در آنها دستورالعمل ها از یک ستون خاص شروع و تا یک ستون خاص دیگر تمام شود .
•    در یک خط نمیتوان بیش از یک دستورالعمل بکار برد .
•    یک دستورالعمل را نمیتوان در چند خط نوشت .
مانند fortran و اسمبلی که یکنوع fixed fit format هستند .
 c  و پاسکال free fix format هستند یعنی هر دستورالعمل در چند خط و در یک خط بیش از یک دستورالعمل.
10.    expression & statements : دستورالعملی که state ماشین را تغییر می دهد و کاری انجام میدهد ولی مقداری را برنمی گرداند را statement گویند .مانند procedure
مثال :  if statement ،  for statement  ،  assignment statement
دستورالعملی که مقدار برمی گرداند را expression می گویند . مانند  function
 مثال : a مقدار بر نمی گرداند    assignment statement ( در پاسکال)       a=b;
                    Assignment expression ( در c )                  a=b;
 a مقدار برمیگرداند                   a=b=c=2;

Overall program subprogram structure (دید کلی روی ساختار برنامه و زیر برنامه )

گروهبندی برنامه ها و زیربرنامه ها از لحاظ syntax :
1. separate subprogram definition : زیر برنامه ها بصورت مجزا از هم تعریف می شوند مانند c و  fortran.
Syntax اجازه بدهد که برنامه ها را در داخل فایلهای مختلف بریزیم و جدا از هم کامپایل کنیم و سپس با هم ادغام کنیم(link) .
حسن این روش این است که اگر برنامه ای یک خطش دست بخورد فقط این فایل  recompile می شود و بقیه نیازی نیست دوباره کامپایل شود .
2. separate data definition : بخش تعریف  data جدا از بخش برنامه باشد .

زبانهایی که abstract data type را support می کنند ، اجازه میدهند که برنامه نویس  data type تعریف کند .مانند  c++ ،  java ،که data type  ها در فایلهای جداگانه ای نوشته شوند .و این برنامه بتواند از اینها استفاده کند .
مثال: برنامه نویس یک  data type ،  link list و یا  stack می نویسد که برنامه دیگر میتواند آن استفاده کند که این مفهوم . separate data definition را میرساند.
3.  nested subprogram definition : زیر برنامه ها بصورت تودرتو داخل هم تعریف می شوند مانند پاسکال.

    : یعنی میتوان متغیر تعریف کرد .
خود تعریف شدن زیر برنامه ها در داخل هم ، مسئله scope
(میدان دید )را بوجود می آورد و زیر برنامه ای که در داخل
 زیر برنامه دیگر تعریف شده است  از بیرون قابل رویت و
Call کردن نیست .(این مسئله non-local ،  local وglobal
را بوجود می آورد)
- c  کاملا separate subprogram indef. است و زیر برنامه ها کاملا مجزا از هم هستند .
4.  separate interfact definitions :
فایل  unit ها ساختار دو بخشی دارند:
•    Interface
•    Implementation
 کدی را مینویسیم بطور مثال 100 عدد  function در بخش  implementation نوشته می شود و بخواهیم از این 100 عدد ، 5 عدد آنرا همه ببینند .5 عدد از prototype های function هایی را که می خواهیم همه ببینند در  interface می گذاریم . interface مانند روابط عمومی سازمان می ماند (رابط با محیط خارجی)
اگر چیزی در بخش  implementation تعریف شود و در  interface تعریف نشود، دیگران نمی توانند آنرا ببینند.
مثال:  header file های  c یک نمونه. separate data definition  است .زیرا بخش تعریف و برقرار شدن ارتباط در یک  header file گذاشته شده است .
5.   data description separated from excutable statements :
بخش تعریف  dataمجزا از بخش کد اجرایی باشد .
مثال : در  cobol یک برنامه 4 بخش دارد :
1. identification ، برنامه نویس کیست ، برنامه راجع به چیست و در چه زمانی نوشته شده است .
2. enviroment : مشخص کننده دستگاههای جانبی.
3. data  : کلیه ساختارها و رکوردها و متغیر ها در این بخش تعریف می شود .
4.  program : از این بخش به بعد نمی توان  data ( رکورد ، ساختار، متغیر،ثابتها) تعریف کرد .

6.  unseparated  subprogram definitions :
data,interface ،  data type مجزا از هم نیستند و همه در یک جا هستند .مانند زبانهای قدیمی 1978 basic .
مراحل ترجمه :stages in translation


دانلود با لینک مستقیم

مقاله پیاده سازی VLSI یک شبکه عصبی آنالوگ مناسب برای الگوریتم های ژنتیک

اختصاصی از یارا فایل مقاله پیاده سازی VLSI یک شبکه عصبی آنالوگ مناسب برای الگوریتم های ژنتیک دانلود با لینک مستقیم و پرسرعت .

مقاله پیاده سازی VLSI یک شبکه عصبی آنالوگ مناسب برای الگوریتم های ژنتیک


مقاله پیاده سازی VLSI یک شبکه عصبی آنالوگ مناسب برای الگوریتم های ژنتیک

 

 

 

 

 

 



فرمت فایل : word(قابل ویرایش)

تعداد صفحات:25

فهرست مطالب:

خلاصه ۱

۱- مقدمه ۲

۲- تحقق شبکه عصبی. ۵

۲-۱- اصول عملکرد ۵

۲-۲- پیاده سازی مدارهای شبکه ۱۱

۳- پیاده سازی الگوریتم آموزش ژنتیک… ۱۶

۴- نتایج تجربی. ۱۸

۵- نتیجه و چشم انداز ۲۱

منابع. ۲۲

 

 

خلاصه
مفید بودن شبکه عصبی آنالوگ مصنوعی بصورت خیلی نزدیکی با میزان قابلیت آموزش پذیری                    آن محدود می شود .
این مقاله یک معماری شبکه عصبی آنالوگ جدید را معرفی می کند که وزنهای بکار برده شده در آن توسط الگوریتم ژنتیک تعیین می شوند .
اولین پیاده سازی VLSI ارائه شده در این مقاله روی سیلیکونی با مساحت کمتر از 1mm که                      شامل 4046 سیناپس و 200 گیگا اتصال در ثانیه است اجرا شده است .
از آنجائیکه آموزش می تواند در سرعت کامل شبکه انجام شود بنابراین چندین صد حالت منفرد                    در هر ثانیه می تواند توسط الگوریتم ژنتیک تست شود .
این باعث می شود تا پیاده سازی مسائل بسیار پیچیده که نیاز به شبکه های چند لایه بزرگ دارند                عملی بنظر برسد .




1- مقدمه
شبکه های عصبی مصنوعی به صورت عمومی بعنوان یک راه حل خوب برای مسائلی از قبیل تطبیق الگو     مورد پذیرش قرار گرفته اند .
علیرغم مناسب بودن آنها برای پیاده سازی موازی ، از آنها در سطح وسیعی بعنوان شبیه سازهای عددی           در سیستمهای معمولی استفاده می شود .
یک دلیل برای این مسئله مشکلات موجود در تعیین وزنها برای سیناپسها در یک شبکه                                    بر پایه مدارات آنالوگ است .
موفقترین الگوریتم آموزش ، الگوریتم Back-Propagation است .
این الگوریتم بر پایه یک سیستم متقابل است که مقادیر صحیح را از خطای خروجی شبکه                          محاسبه می کند .
یک شرط لازم برای این الگوریتم دانستن مشتق اول تابع تبدیل نرون است .
در حالیکه اجرای این مسئله برای ساختارهای دیجیتال از قبیل میکروپروسسورهای معمولی                                و سخت افزارهای خاص آسان است ، در ساختار آنالوگ با مشکل روبرو می شویم .
دلیل این مشکل ، تغییرات قطعه و توابع تبدیل نرونها و در نتیجه تغییر مشتقات اول آنها از نرونی به نرون دیگر    و از تراشه ای به تراشه دیگر است و چه چیزی می تواند بدتر از این باشد که آنها با دما نیز                             تغییر کنند .
ساختن مدارات آنالوگی که بتوانند همه این اثرات را جبران سازی کنند امکان پذیر است ولی این مدارات        در مقایسه با مدارهایی که جبران سازی نشده اند دارای حجم بزرگتر و سرعت کمتر هستند .
برای کسب موفقیت تحت فشار رقابت شدید از سوی دنیای دیجیتال ، شبکه های عصبی آنالوگ                 نباید سعی کنند که مفاهیم دیجیتال را به دنیای آنالوگ انتقال دهند .
در عوض آنها باید تا حد امکان به فیزیک قطعات متکی باشند تا امکان استخراج یک موازی سازی گسترده    در تکنولوژی VLSI مدرن بدست آید .
شبکه های عصبی برای چنین پیاده سازیهای آنالوگ بسیار مناسب هستند زیرا جبران سازی نوسانات               غیر قابل اجتناب قطعه می تواند در وزنها لحاظ شود .


دانلود با لینک مستقیم

دانلود مقاله شبیه سازی و پیاده سازی مدار سخت افزار پایه به کمک VHDL

اختصاصی از یارا فایل دانلود مقاله شبیه سازی و پیاده سازی مدار سخت افزار پایه به کمک VHDL دانلود با لینک مستقیم و پرسرعت .

دانلود مقاله شبیه سازی و پیاده سازی مدار سخت افزار پایه به کمک VHDL


دانلود مقاله شبیه سازی و پیاده سازی مدار سخت افزار پایه به کمک VHDL

 

 

 

 

 

 

 


فرمت فایل : word(قابل ویرایش)

تعداد صفحات:37

فهرست مطالب:

چکیده

مقدمه

مروری بر VHDL

فصل اول :

مروری بر تحقیقات گذشته

1-1 تراشه های قابل برنامه ریزی

فصل دوم :

روش تحقیق و مواد

1-2 طراحی مدار voter هوشمند

2-2 کد نویسی با VHDL و شبیه سازی بوسیله برنامه model sim

2-2-1 توصیف عملیاتی

2-2-1-1 عملیات بخش switching

2-2-1-2 عملیات بخش master _ slave

2-2-1-3 عملیات بخش Comparement

2-2-1-4 عملیات بخش ed _ om

2-2-1-5 عملیات بخش error finder

2-2-1-6 عملیات بخش data_ selector

2-2-2 کد نویسی در VHDL

2-2-2-1 کدنویسی بسته basic _ utility

2-2-2-2 کد نویسی بخش switch – cell

2-2-2-3 کد نویسی بخش switching

2-2-2-4 کد نویسی بخش d – ff – 2 bit

2-2-2-5 کد نویسی بخش ms – d – ff – 2 bit

2-2-2-6 کد نویسی بخش ms – block

2-2-2-7 کد نویسی بخش m – s – block

2-2-2-8 کدنویسی بخش ed – om

2-2-2-9 کد نویسی بخش error – finder

2-2-2-10 کد نویسی بخش data – selector

2-2-3 کامپایل و شبیه سازی

2-3 استاندارد کردن قطعه کدها و آنالیز آنها توسط FPGA express

2-4 تولید طرح سطح گیت بوسیله FPGA express

2-5 استخراج فایل Net list بوسیله FPGA express

2-6 طریقه سنتز بوسیله Foundation 2.1

2-7 فاز اجرایی در برنامه foundation 2.1

2-8 پیکر بندی روی تراشه XC4005XL توسط Foundation 2.1

 

چکیده

شبیه سازی و پیاده سازی مدار سخت افزار پایه به کمک VHDL .

در این پروژه یک مدار سخت افزاری با 17 ورودی و 2 خروجی از نوع qit کد نویسی و شبیه سازی شده و برای پیکربندی روی چیپ های FPGA یا CPLD آماده شده است .

کد نویسی این مدار بوسیله زبان VHDL و شیه سازی آن بوسیله نرم افزار model sim صورت گرفته است . مراحل آنالیز و سنتز قطعه کد های VHDL توسط دو برنامه  foundation 2.1و FPGA express از شرکت xilinx انجام شده است .

در صفحات بعدی این مقاله هر قسمت از روال فوق را که عبارت اند از : کد نویسی اولیه و مشکلات کامپایل ، آنالیز قطعه کدهای غیر استاندارد ، استاندارد کردن قطعه کدها و سنتز آنها می باشد . بطور کامل توضیح داده ام . همچنین در پایان در قسمت اجرایی نحوه تولید فایل باینری نهایی جهت برنامه ریزی روی چیپ XC4005XLPC84 که یک FPGA از خانواده XC4000XL است را مشاهده می کنید .

امید دارم با مطالعه این مقاله به اطلاعات شما در این زمینه افزوده شود .

 


مقدمه

طی چند دهه اخیر ،مدارهای الکترونیکی پیشرفت قابل ملاحظه ای داشته اند . با پیچیده تر شدن هرچه بیشتر این مدارها ،نیاز به یافتن روشهایی است که سیستمها را بتوان با مجتمع سازی و جزئیات بیشتر طراحی و پیاده سازی نمود. قطعات قابل برنامه ریزی و FPGA ها ،آی سی هایی هستند که به تبع این پیشرفتها به بازار عرضه شده اند . هزینه ساخت کم و جزئیات زیاد این آی سی ها نسبت به حجم آنها،همچنین قابلیت برنامه ریزی شدن این قطعات بوسیله برنامه های نرم افزاری معمول و نرم افزارهای طراحی شماتیک باعث افزایش کاربرد این قطعات شده است . چنین پیش بینی می شود که با وجود این پیشرفت،آینده در تسخیر این قطعات قرار گیرد تا جائیکه بتوان بوسیله آنها تمامی یک سیستم پیچیده را به سادگی طراحی و اجرا نمود .

در این میان زبان توصیف سخت افزاری VHDL نقش مهمی را در طراحی و شبیه سازی مدارات سخت افزاری به عهده دارد . در این قسمت لازم می دانم تا توضیحی اجمالی از نحوه عملکرد و مزایای این زبان به شما ارائه کنم .

 

مروری بر VHDL

VHDLروش توسعه یافتهای از توصیف رفتار سیستمهای منطقی به وسیله روابط منطقی است . این زبان بسیاری از مشخصه های روابط منطقی و روابط حالت را در درون خود دارد .

زبان VHDL امروزه به عنوان استاندارد صنعتی MIL STD 454L معرفی شده است و تمامی طرحهای ASIC مربوط به دپارتمان دفاع ایالت متحده آمریکا باید طبق این زبان استاندارد نوشته شوند .

این زبان به عنوان قسمتی از پروژه VHSIC (مدارهای مجتمع با سرعت خیلی بالا ) ارائه شده است و به وسیله آن می توان ASICهای پیچیده را بدون مراجعه به تکنولوژی مشخصی ،تعریف و شبیه سازی نمود . زمانی که یک مدار به وسیله این زبان تعریف می گردد . می توان آنرا به هر پروسه منطقی و یا بر روی ماژولهای طراحی شده توسط هریک از تولیدکننده های ابزارهای منطقی انتقال داد .

 

 

(VHSIC HDL) VHDL یک سیستم منطقی را بصورت ساختار بالا باپائین توصیف می کند . برای بدست آوردن توصیفی از یک سیستم به صورت ساختار بالا به پایین ،سیستم را به صورت مجموعة ای از زیرسیستمها تقسیم می کنیم که بوسیله یک سری رابطه به هم متصل می گردند هریک از این زیرسیستمهای بالایی را می توان به توابع و زیرسیستمهای کوچکتر تقسیم کرد . این عمل همچنان ادامه می یابد تا به پائین ترین سطح از سیستم دست بیابیم که در این سطح هریک از سیستم ها را می توان بوسیله گیتها و ماژولهای آماده دیگر طراحی نمود .

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

این طرح سلسله مراتبی به طراح اجازه می دهد تا بدون مشخص کردن نوع تکنولوژی ابزارهای استفاده شونده و یا قسمت کردن طرح به ابزارهای مختلف ،بتواند سیستم را به طور کامل تعریف نماید . به این ترتیب ، می توان یک سیستم کامل را بدون مشخص کردن یک ابزار خاص تعریف و آزمایش کرد . ماژولها به صورت جداگانه طراحی می شوند و می توان از آنها در طرحهای آینده نیز استفاده نمود . به عبارت دیگر برای هر طرح کتابخانه ای از توابع وجود دارد که می توان آنها را برای استفاده آینده ذخیره کرد. در این پروژه نیز از توابع و جداول و کتابخانه های مجتمع تحت عنوان basic-utility استفاده شده است .

در زمان حاضر تعدادی از زبانهای توصیف کننده مدارات سخت افزاری مانندVerilog , TI – HDL ,TEGAS , CONLAN , CDL , AHDL    وجود دارند که در این میان زبانهای , AHDL,Verilog ABEL از کاربرد و اهمیت بیشتری برخوردارهستند . با تحقیقاتی که تاکنون انجام داده ام ، از نظر من           زبان VHDL قویترین و پر کاربردترین زبانهای توصیفگر سخت افزار است که امکانات زیادی را به کاربر می دهد تا مدار سخت افزاری مورد نظر خود را هر چه که پیچیده باشد بواسطه این زبان توصیف کرده و کد نویسی کند . البته کار با زبان VHDL برای کسانی که تازه پا به این عرصه گذاشته اند کمی دشوار است و ممکن است با خطاهای زیادی درطول کد نویسی و کامپایل روبرو شوند . لذا شناخت کامل و دقیق این زبان و مزایای آ‌ن نسبت به سایر روشهای توصیفی را ، دارای اهمیت زیادی می دانم . زیرا اگر ما در قسمت شبیه سازی و کد نویسی مدار سخت افزاری بوسیله VHDL دچار اشکال شویم یا مدار سخت افزاری را بصورت استاندارد کد نویسی نکنیم اگر چه که قطعه کد قابل کامپایل و شبیه سازی باشد ولی در قسمت آنالیز و سنتز قطعه کدها با مشکلات زیاد و غیرقابل حلی مواجه می شویم که در برخی اوقات ما رامجبورمی کنند تا طرح هود را دوباره به یک روش دیگری کد نویسی کنیم . همانطور که در عنوان پروژه ذکر شده ، کار اصلی اینجانب شبیه سازی و کدنویسی یک مدار سخت افزاری بوده که به مرحله سنتز و آماده برای پیکر بندی روی چیپ های FPGA یا CPLD رسیده است .

در ابتدا سعی شده تا مدار سخت افزاری نمونه که یک Voter   هوشمند است ( انتخابگر و تولید کننده خروجی از بین چند ورودی ) بوسیله زبان توصیف سخت افزاری VHDL کد نویسی شود .

این کار با در نظر گرفتن تمامی تاخیر های ممکن از اعمال ورودی تا فراهم شدن خروجی آن انجام گرفته است . سپس قطعه کدهای حاصل شده بوسیله برنامه کامپیوتری model sim شبیه سازی شده و با اعمال ورودی به برنامه خروجی آن تولید شده و خطاهای احتمالی مدار چه از نظر منطقی و چه از نظر مدت زمان تاخیر شناسایی شده و رفع گردیده است .

پس از اتمام کار شبیه سازی توسط برنامه کامپیوتری model sim و اطمینان از صحت عملکرد آن ، قطعه کدها را به صورت استاندارد و قابل سنتز برای پیکر بندی روی چیپ های FPGA یا CPLD تبدیل کرده ام .

کار آنالیز و سنتز قطعه کدها به کمک دو برنامه کامپیوتری ساخته شرکت xilinx با نامهای FPGA expresss و foundation 2.1 انجام گرفته است .

طرحهای سطح گیت مدار اصلی و اجزاء آن توسط نرم افزار FPGA express تولید شده که درصفحات این مقاله به چاپ رسیده است .

همچنین فایل باینری نهایی برای پیکر بندی روی چیپ ها توسط نرم افزار foundation 2.1 تولید شده که نمونه آن را نیز می توانید درپیوست ؟ مشاهده بفرمایید . کلیه عملیات و گزارشاتی که در طی این روال تولید شده را تا جای ممکن در صفحات اصلی این مقاله شرح داده ام .

 


دانلود با لینک مستقیم