دوست عزیز، به سایت علمی نخبگان جوان خوش آمدید

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

توجه داشته باشید، در صورتی که عضو سایت نباشید نمی توانید از تمامی امکانات و خدمات سایت استفاده کنید.
نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: واسط های ما و رایانه ها

  1. #1
    کاربر حرفه ای
    رشته تحصیلی
    Hardware
    نوشته ها
    6,613
    ارسال تشکر
    959
    دریافت تشکر: 2,702
    قدرت امتیاز دهی
    165
    Array

    Arrow واسط های ما و رایانه ها

    به منظور اجرای برنامه های نوشته شده توسط برنامه نویس روی رایانه، یا باید مستقیما به زبان ماشین برنامه نوشت کاری که پیش از ابداع زبان ها در نخستین رایانه ها انجام می شد یا باید به وسیله یک نرم افزار، برنامه نوشته شده را به زبان قابل فهم رایانه تبدیل کرد. با توجه به زبان برنامه نویسی و طریقه عملکرد برنامه مبدل، نام های مختلفی برای آنها در نظر گرفته شده است. همان طور که پیش از این نیز گفتیم، اگر زبان برنامه نویسی، اسمبلی باشد، نرم افزاری که برای تبدیل متن برنامه به زبان ماشین به کار می رود، اسمبلر نام دارد. اسمبلر از ابتدای برنامه شروع به خواندن می کند و پس از خواندن یک خط و تشخیص دستور مورد نظر، آن را به یک دستور زبان ماشین تبدیل می کند. هر خط و دستور زبان اسمبلی، دقیقا معادل یک دستور زبان ماشین است. البته ممکن است اسمبلر برای تبدیل کل برنامه به نمونه معادل زبان ماشین مجبور باشد دو بار برنامه را از ابتدا تا انتها مرور کند. معمولا در دستورهای پرشی، چون مشخص نیست که برنامه دقیقا باید به چه آدرسی پرش کند، اسمبلر جای آن دستور را خالی می گذارد و بعد از یک بار مرور کامل متن برنامه و استخراج و محاسبه همه آدرس ها، در دور دوم، دستوراتی را که در دور اول از آنها صرف نظر کرده بود، در جای خود قرار می دهد. به این ترتیب فایلی به نام object code با پسوند obj .* تولید می کند. البته این فایل تنها در صورتی ساخته می شود که اسمبلر طی مرور برنامه با هیچ گونه خطایی مواجه نشده باشد. فایل حاصل به وسیله نرم افزار دیگری به نام linker مستقیما به فایل اجرایی تبدیل می شود. مفسر و کامپایلر مفسر یا interpreter در اصطلاح رایانه به نرم افزاری گفته می شود که برنامه نوشته شده به یک زبان برنامه نویسی را خط به خط خوانده و در همان لحظه اجرا می کند. مترجم یا کامپایلر (compiler) نیز نرم افزاری است که کل متن برنامه را خوانده و پس از ترجمه یک فایل اجرایی تولید می کند. تفاوت اصلی مفسر و کامپایلر نیز در این است که مفسر هر خط را که خواند، همان لحظه اجرا می کند، اما کامپایلر پیش از اجرای کل برنامه باید ابتدا تمام متن را خوانده و ترجمه کند و پس از انجام موفقیت آمیز این عمل فایل اجرایی را تولید کند. البته مفسر و کامپایلر دو مفهوم کاملا جدا از هم و با مرز مشخص نیستند زیرا بسیاری از کامپایلرها و مفسرها، در برخی امور مانند دیگری عمل می کنند. یک مفسر می تواند متن برنامه را بدون ساخت فایل اجرایی مستقیما اجرا کند. برخی از مفسرها هم متن برنامه ر ا به یک کد میانی بهینه تبدیل می کنند و بلافاصله آن را اجرا می کنند. زبان هایی چون matlab, python, perl و ruby از جمله زبان هایی هستند که به روش دوم عمل می کنند. برخی از مفسرها هم کد میانی ساخته شده از کل برنامه را در قالب یک فایل به کاربر تحویل می دهند تا از آن پس آن را اجرا کند. زبان هایی مثل جاوا از این روش استفاده می کنند. در این روش، یک کامپایلر نیز برای ساخت کد میانی به مفسر کمک می کند و در واقع در این روش کامپایلر بخشی از سیستم مفسر به شمار می رود. باید توجه داشت که کد میانی، به زبان ماشین نیست و یک کد قراردادی برای همان مفسر است که برخلاف object code، کاملا مستقل از ماشین است. به عنوان مثال کدهای میانی تولید شده توسط جاوا می توانند روی هر ماشین و سیستم عاملی اجرا شوند. با این شرط که از مفسر مناسب و مخصوص آن ماشین استفاده شود. اما کد کاملا مستقل از ماشین بوده و می تواند بدون کوچک ترین تغییری به سیستم دیگر منتقل شود. برخی از زبان ها مثل زبان smalltalk ممکن است دو روش اخیر را با هم ترکیب کنند. اصطلاح «زبان مفسری» یا «زبان کامپایلر» صرفا به این معنی است که استاندارد پیاده سازی آن زبان براساس مفسر یا کامپایلر است. وگرنه یک زبان سطح بالا اساسا یک مفهوم است که مستقل از طریقه پیاده سازی آن است. کارایی اشکال اصلی مفسرها در مقایسه با کامپایلرها به سرعت اجرای آنها مربوط می شود. برنامه ای که کامپایل شده است به فایل اجرایی exe و کد ماشین تبدیل شده است. یک بار برنامه به طور کامل کامپایل می شود و به هر تعداد دلخواه اجرا می شود. در این حالت برنامه حداکثر سرعت اجرا را خواهد داشت. در مقابل این کار، مفسرها هر بار برنامه را باید از روی متن اصلی اجرا کنند و یا در حالات دیگر از کد میانی استفاده کنند که با این که سرعت عمل در حالت دوم بیشتر است، اما در هر دو حالت سرعت اجرا از برنامه کامپایل شده کمتر خواهد بود. تفاوت سرعت اجرا در برنامه های کوچک بین مفسر و کامپایلر چندان محسوس و چشمگیر نیست. اما در برخی برنامه های پیچیده تر، این تفاوت به وضوح حس می شود. البته زمان کامپایل کردن یک برنامه به طور کامل از زمان تفسیر آن بیشتر خواهد بود. اما باید توجه داشت که عمل کامپایل تنها یک بار انجام می شود و به هر تعداد دفعه اجرا می شود. در صورتی که عمل تفسیر باید برای هر بار اجرا انجام شود. ضمنا در اشکال زدایی برنامه، چرخه ویرایش تفسیر اشکال زدایی زمان بسیار کمتری از چرخه ویرایش کامپایل اجرا اشکال زدایی می گیرد.در مفسرها، دسترسی به متغیرها نیز کند تر از کامپایلرهاست. زیرا نگاشت متغیرها به محل ذخیره سازی هر بار باید به طور مکرر در زمان اجرا انجام شوند که در کامپایلر این کار تنها یک با انجام می شود و آن هم در ابتدای اجرای برنامه است. همه اینها یک هزینه زمانی به مفسر تحمیل می کنند که به آن «سربار زمانی» گفته می شود.سیستم برخی زبان ها مانندlisp طوری است که می توان هم از امکان کامپایل و هم تفسیر استفاده کرد. به عنوان مثال، زمانی که یک تابع به طور کامل توسط مفسر پیاده سازی و اشکال زدایی شد، می توان آن را کامپایل کرد تا از امتیاز سرعت اجرای آن به هنگام پیاده سازی سایر بخش های برنامه بهره برد. مفسرbytecode برخی زبان ها مانندemacs lisp کامپایلری دارند که این کامپایلر، برنامه را به کدهای زبان ماشین تبدیل نمی کند. بلکه به کدی موسوم به bytecode تبدیل می کند که بسیار فشرده و بهینه سازی شده متن اصلی برنامه است. این کد نیز مستقل از ماشین است.این کد کامپایل شده، در استفاده های بعدی می تواند توسط مفسر bytecode تفسیر شود. مفسر bytecode، نوعی مفسر است که خود با استفاده از زبان c نوشته شده است. این مفسر به جای آن که کد اصلی برنامه را تفسیر کند، وظیفه تفسیر های bytecode را به عهده دارد. مواجه شدن با خطا هنگامی که از یک زبان کامپایلری استفاده می کنیم باید تمام برنامه از نظر گرامری درست باشد تا کامپایلر بدون اعلام خطا، فایل اجرایی را تولید کند و ما بتوانیم برنامه را اجرا کنیم. حتی اگر یک خطا در برنامه وجود داشته باشد، کامپایلر فایل نهایی را نخواهد ساخت تا برنامه نویس آن رفع کند. اما در مفسر، این گونه نیست. برنامه از ابتدا آغاز به اجرا می شود. خط به خط پیش می رود و نتیجه را تولید می کند. هر زمان که با خطایی برخورد کرد، همان جا متوقف شده و اعلام خطا می کند.کامپایلر همه بخش های برنامه و درون همه ساختارها را بررسی می کند. اما مفسر تنها خطی که باید اجرا شود را بررسی می کند و اجرا می کند و ممکن است شرایط طوری شود که یک خط از برنامه هیچ گاه اجرا نشود. حال اگر آن خط اشکال بزرگی هم داشته باشد، مفسر هیچگاه آن اشکال را ندیده و برنامه هیچگاه با خطا مواجه نمی شود. اجرای گام به گام هنگامی که برنامه یک خطای منطقی دارد به درستی کامپایل می شود و فایل اجرایی تولید می شود اما آن طور که انتظار می رود عمل نمی کند. برای یافتن این خطا باید برنامه را خط به خط بررسی کرد و نتایج مقطعی برنامه را ثبت کرد تا محل وقوع خطا کشف شود. معمولاide ها ابزاری به نام trace دارند که این امکان را به برنامه نویس می دهند که برنامه را خط به خط اجرا کرده و محتوای متغیرها را زیر نظر بگیرد. برنامه های مفسری که مشکلی در اجرای خط به خط برنامه ندارند، فقط کافی است که بعد از اجرای هر خط مکث کنند و برای اجرای خط بعد منتظر فرمان شما باشند. اما سوالی که مطرح است آن است که این کار در زبان های کامپایلری چگونه انجام می شود؟ پاسخ آن است که برای فراهم آوردن چنین امکانی، کامپایلر باید یک بار به طور کامل برنامه را کامپایل کند و فایل اجرایی را نیز تولید کند. حال با امکان در نظر گرفته شده می توان در هر مرحله از اجرای برنامه که مربوط به یک خط از متن اصلی است وقفه ای ایجاد می شود تا برنامه نویس بتواند شرایط لحظه ای را برای پی بردن به محل خطا کشف کند. پارسا ستوده نیا
    منبع خبر : جام جم آنلاین

  2. کاربرانی که از پست مفید diamonds55 سپاس کرده اند.


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. خبر: ارائه 500 هزار رایانه ارزان قیمت به مدارس از سوی دولت پرتغال
    توسط diamonds55 در انجمن اخبار وب و اینترنت
    پاسخ ها: 0
    آخرين نوشته: 25th September 2008, 04:24 AM
  2. خبر: آمریکا در حملات رایانه ای جهان پیشتاز است
    توسط diamonds55 در انجمن اخبار وب و اینترنت
    پاسخ ها: 0
    آخرين نوشته: 25th September 2008, 04:23 AM
  3. معرفی: رایانه های سازگار با محیط زیست Dell روانه بازار شد
    توسط diamonds55 در انجمن اخبار و معرفی جدیدترین سخت افزارها
    پاسخ ها: 0
    آخرين نوشته: 16th September 2008, 04:00 AM
  4. خبر: كوچك ترین و كم مصرف ترین رایانه رومیزی جهان ساخته شد
    توسط diamonds55 در انجمن اخبار و معرفی جدیدترین سخت افزارها
    پاسخ ها: 0
    آخرين نوشته: 11th September 2008, 09:25 PM
  5. خبر: سایت شورای حل اختلاف رسیدگی به جرایم رایانه ای راه اندازی می شود
    توسط diamonds55 در انجمن سایر اخبار کامپیوتر
    پاسخ ها: 0
    آخرين نوشته: 7th September 2008, 11:36 AM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •