برنامه نویسیدانشنامه

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

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

زمانی که شما یک برنامه را با یک زبان برنامه نویسی سطح بالا مانند جاوا، #C و یا C می نویسید، کامپیوتری که فقط صفر و یک را متوجه می شود درکی از برنامه ای که شما نوشته اید و کدهای درون آن نخواهد داشت. بنابراین شما به چیزی نیاز دارید که این برنامه سطح بالا را به زبانی تبدیل کند که برای کامپیوتر قابل فهم باشد. اینجا درست زمانی است که کامپایلر (Compiler) و مفسر (Interpreter) به کمک ما می آیند و هر دوی آنها یک کار را برای ما انجام می دهند، آنها زبان سطح بالا را به زبانی که کامپیوتر متوجه شود تبدیل می کنند.

نحوه اجرا

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

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

اما کامپایلر، یکبار برای همیشه یک برنامه را به زبان اجرایی ماشین تبدیل می کند و در اصطلاح یکبار برنامه را به همراه کدهای اجرایی آن کامپایل می کند و بعد از آن دیگر نیازی به وجود داشتن نه کامپایلر و نه کد برنامه اجرایی می باشد.

وابستگی به سیستم عامل

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

سرعت و میزان استفاده از حافظه و پردازنده

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

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

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

خطایابی

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

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

معرفی زبان های مفسری و کامپایلری

معروف ترین زبان های مفسری عبارتند از:

  • BASIC
  • PHP
  • Perl
  • Matlab
  • Ruby
  • VBScript
  • PostScript
  • PowerShell
  • Jscript
  • Java Script

معروف ترین زبان های کامپایلری عبارتند از:

  • C++
  • GCC
  • True Basic
  • Xamarin
  • Visual C#
  • Turbo Pascal
  • Visual Basic

 

بصورت خلاصه تفاوت های بین زبان مفسری و زبان کامپایلری عبارتند از:

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا