تا %60 تخفیف خرید برای 3 نفر با صدور مدرک فقط تا
00 00 00
در توسینسو تدریس کنید

تفاوت بین Compiler (کامپایلر) و Interpreter (مفسر) در چیست؟

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

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

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

وابسته بودن به سیستم عامل یا عدم وابستگی ؟ مسئله این است

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

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

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

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

کارایی بهتر یا انعطاف پذیری بیشتر ؟ مسئله این است

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

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

خطایابی ساده یا خطایابی دشوار ؟ مسئله این است

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

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

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

از معروف ترین زبان های مفسری دنیا که بیشتری استفاده را دارند می توانیم به زبان های BASIC ، جاوا اسکریپت ، Jscript ، MATLAB ، Perl ، PHP ، Python ، List ، PostScript ، Ruby ، VBScript و PowerShell اشاره کنیم و در عین حال از معروف ترین زبان های کامپایلری دنیا که بیشترین استفاده را دارند می توانیم به زبان های ALGOL ، Visual Basic ، True Basic ، GCC ، Visual C++ ، Borland C++ ، Visual C# ، Mono ( Xamarin ) ، Visual Cobol و Turbo Pascal اشاره کنیم. بنابراین بصورت خلاصه می توانیم تفاوت بین یک زبان مفسری و یک زبان کامپایلری را به شکل زیر عنوان کنیم :

  1. زبان های مفسری بصورت خط به خط کدها را خوانده و اجرا می کنند
  2. زبان های کامپایلری به یکباره کد برنامه را خوانده و آن را هر زمان که نیاز باشد اجرا می کنند
  3. برنامه ها در زبان های مفسری وابستگی به سیستم عامل ندارند و در هر سیستم عاملی قابل اجرا هستند
  4. برنامه ها در زبان های کامپایلری برای هر سیستم عامل متفاوتی بایستی تغییر کد و مجددا کامپایل شوند
  5. برای اجرا یک برنامه مفسری باید مفسیر مورد نظر بر روی سیستم عامل حتما نصب شده باشد
  6. برای اجرا یک برنامه کامپایلری نیازی به وجود داشتن کامپایلر بر روی سیستم عامل نمی باشد
  7. سرعت اجرای برنامه های مفسری بسیار کند است
  8. سرعت اجرای برنامه های کامپایلری بسیار سریع است
  9. خطایابی کدهای اجرایی در برنامه های مفسری با توجه به اجرا خط به خط آسانتر است
  10. خطایابی کدهای اجرایی در برنامه های کامپایلری با توجه به اجرای کامل برنامه کمی دشوارتر است ITPRO باشید

نویسنده : محمد نصیری

منبع : انجمن تخصصی فناوری اطلاعات ایران

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

#نسل_جدید_کامپایلر_های_دات_نت_roslyn #زبان_های_برنامه_نویسی_کامپایلری_و_مفسری #compiler_چیست #interpreter_چیست #مقایسه_کامپایلر_و_مفسر #بهترین_نرم_افزارهای_کامپایلر #تفاوت_کامپایلر_و_مفسر #کامپایلر_چیست #بهبود_کامپایلر_های_دات_نت #مقایسه_compiler_و_interpreter
نظر شما
برای ارسال نظر باید وارد شوید.
10 نظر
افرادی که این مطلب را خواندند مطالب زیر را هم خوانده اند