بکندباز

تفاوت کامپایلر (compiler) با مفسر (interpreter)

تفاوت کلیدی بین کامپایلر و مفسر

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

 

کامپایلر در مقابل مترجم

کامپایلر چیست؟

کامپایلر یک برنامه کامپیوتری است که کدهای نوشته شده در یک زبان برنامه نویسی سطح بالا را به کد ماشین تبدیل می کند. کامپایلر برنامه ای است که کدهای قابل خواندن توسط انسان را به زبانی که پردازنده کامپیوتر می فهمد (باینری 1 و 0 بیت) ترجمه می کند. سپس کامپیوتر کد ماشین را برای انجام وظایف مربوطه پردازش می کند.

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

ابزار مرتبط : کامپایلر آنلاین بکندباز

مفسر چیست؟

مفسر یا مفسر یک برنامه کامپیوتری است که هر دستور برنامه سطح بالا را به کد ماشین تبدیل می کند. که شامل سورش کد، کد های از پیش کامپایل شده و اسکریپت ها می شود. هم کامپایلر و هم مفسر کار یکسانی را انجام می دهند که عبارت است از تبدیل زبان برنامه نویسی سطح بالاتر به کد ماشین. با این حال، یک کامپایلر قبل از اجرای برنامه، کد را به کد ماشین تبدیل می کند (و یک فایل اجرایی exe ایجاد می کند). اما مفسر ها، هنگامی که برنامه اجرا می شود، شروع به کار می کنند و کد را به کد ماشین تبدیل می کنند.

تفاوت بین کامپایلر و مفسر

در اینجا تفاوت های مهم بین کامپایلر و مفسر لیست شده است:

اساس تفاوت کامپایلر مفسر
مراحل برنامه نویسی
  • برنامه را ایجاد کنید.
  • کامپایلز تمام دستورات کد را برای بررسی صحت آن، تجزیه و تحلیل می کند. اگر نادرست باشد، خطا می دهد
  • اگر خطایی وجود نداشته باشد، کامپایلر سورس کد را به کد ماشین تبدیل می کند.
  • کامپایلر فایل های مختلف کد را به هم متصل کرده و یک برنامه قابل اجرا تحویل می دهد (به عنوان exe شناخته می شود)
  • برنامه را اجرا کنید
  • برنامه را ایجاد کنید
  • هیچ پیوندی بین فایل های مختلف برنامه ایجاد نمی شود و کد ماشین نیز تولید نمی شود
  • دستورات سورس کد خط به خط در حین اجرا، اجرا می شوند
مزیت کد برنامه قبلاً به کد ماشین ترجمه شده است. بنابراین زمان اجرای کد آن کمتر است. استفاده از مفسران به ویژه برای مبتدیان آسان تر است.
عیب بدون بازگشت به سورس کد نمی توانید برنامه را تغییر دهید. برنامه های تفسیر شده فقط می توانند روی رایانه هایی اجرا شوند که مفسر مربوطه را دارند.
کد ماشین زبان ماشین را به عنوان کد ماشین روی حافظه ذخیره می کند اصلاً کد ماشین ذخیره نمی شود.
زمان اجرا کد کامپایل شده سریعتر اجرا می شود کد تفسیر شده کندتر اجرا می شود
مدل بر اساس مدل پیوند-بارگذاری ترجمه زبان بر اساس روش تفسیر
تولید برنامه برنامه خروجی (به شکل exe) تولید می کند که می تواند به طور مستقل از برنامه اصلی اجرا شود. برنامه خروجی تولید نمی کند. بنابراین سورس را در هر زمان در طول اجرا ارزیابی می کند.
اجرا اجرای برنامه جدا از کامپایل است. فقط پس از کامپایل شدن کل برنامه، خروجی انجام می شود. اجرای برنامه بخشی از فرآیند تفسیر است، بنابراین خط به خط انجام می شود.
نیاز به حافظه برنامه هدف به طور مستقل اجرا می شود و نیازی به کامپایلر در حافظه ندارد. مفسر در حین تفسیر در حافظه وجود دارد.
بهترین محل استفاده محدود به ماشین هدف خاص است و قابل انتقال نیست. C و C++ محبوب ترین زبان برنامه نویسی هستند که از مدل کامپایل استفاده می کنند. برای محیط های وب، جایی که زمان بارگذاری مهم است. با توجه به تمام تحلیل‌های جامع انجام شده، کامپایل‌ها زمان نسبتاً بیشتری را برای کامپایل کردن کدهای کوچکی که ممکن است چندین بار اجرا نشوند طول می‌کشد. در چنین مواردی، مفسران بهتر هستند.
بهینه سازی کد کامپایلر کل کد را از قبل می بیند. از این رو، بهینه سازی های زیادی را انجام می دهد که باعث می شود کد سریعتر اجرا شود مفسران کد را خط به خط می بینند و بنابراین بهینه سازی ها به اندازه کامپایلرها قوی نیستند
پویایی پیاده سازی پویایی دشوار است زیرا کامپایلرها نمی توانند پیش بینی کنند که در زمان نوبت چه اتفاقی می افتد. زبان های تفسیر شده از پویایی پشتیبانی می کنند
استفاده برای محیط تولید بهترین است برای محیط برنامه و توسعه بهترین است.
اجرای خطا کامپایلر تمام خطاها و هشدارها را در زمان کامپایل نمایش می دهد. بنابراین، شما نمی توانید برنامه را بدون رفع خطا اجرا کنید مفسر یک عبارت واحد را می خواند و در صورت وجود خطا را نشان می دهد. برای تفسیر خط بعدی باید خطا را تصحیح کنید.
ورودی یک برنامه کامل می گیرد یک خط کد می گیرد.
خروجی کامپایلر کد ماشین میانی را تولید می کند. مفسر هرگز هیچ کد ماشین میانی تولید نمی کند.
خطاها نمایش تمام خطاها بعد از کامپایل، همه به طور همزمان. تمام خطاهای هر خط را یکی یکی نمایش می دهد.
زبان های برنامه نویسی مربوطه C، C++، C#، Scala، Java همگی از کامپایلر استفاده می کنند. PHP، Perl، Ruby از مفسر استفاده می کنند.

نقش کامپایلر

  • کامپایلر کد منبع (سورس کد) را می خواند و کد اجرایی را خروجی می دهد
  • نرم افزار نوشته شده به زبان سطح بالاتر را به دستورالعمل هایی ترجمه می کند که رایانه بتواند آن را درک کند. متنی را که یک برنامه نویس می نویسد به فرمتی تبدیل می کند که CPU بتواند آن را درک کند.
  • فرآیند تدوین نسبتاً پیچیده است. زمان زیادی را صرف تجزیه و تحلیل و پردازش برنامه می کند.
  • نتیجه قابل اجرا نوعی کد باینری مخصوص ماشین است.

نقش مفسر یا مفسر

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

زبان های سطح بالا

زبان های سطح بالا مانند C، C++، JAVA و غیره بسیار نزدیک به انگلیسی هستند. فرآیند برنامه نویسی را آسان می کند. با این حال، قبل از اجرا باید به زبان ماشین ترجمه شود. این فرآیند ترجمه یا توسط یک کامپایلر یا یک مفسر انجام می شود. همچنین به عنوان کد منبع شناخته می شود.

کد ماشین

زبان ماشین بسیار نزدیک به سخت افزار است. هر کامپیوتری زبان ماشین خود را دارد. برنامه های زبان ماشین از سری الگوهای باینری تشکیل شده اند. (به عنوان مثال 110110) این نشان دهنده عملیات ساده ای است که باید توسط کامپیوتر انجام شود. برنامه های زبان ماشین قابل اجرا هستند تا بتوانند مستقیما اجرا شوند.

کد شیء (Object Code)

در کامپایل کد منبع، کد ماشین تولید شده برای پردازنده های مختلف مانند Intel، AMD و ARM متفاوت است. برای قابل حمل کردن کد، ابتدا کد منبع به Object Code تبدیل می شود. این یک کد واسطه است (مشابه کد ماشین) که هیچ پردازنده ای آن را درک نخواهد کرد. در زمان اجرا، کد شیء به کد ماشین پلت فرم مربوطه تبدیل می شود.

جاوا هم کامپایل و هم تفسیر می شود.

برای بهره برداری از مزایای نسبی کامپایلرهای مفسر، برخی از زبان های برنامه نویسی مانند جاوا هم کامپایل و هم تفسیر می شوند. خود کد جاوا در Object Code کامپایل می شود. در زمان اجرا، JVM کد Object را به کد ماشین کامپیوتر هدف تفسیر می کند.

دوره مربوطه: آموزش جاوا

zohreh

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*