خانه - پایگاه دانش کارجویا - ۴ تفاوت مفسر و کامپایلر در برنامه نویسی

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

فهرست مطالب

سلام به تمام دوستان عزیزم ؛ در این مقاله قصد داریم که ببینیم مفسر و کامپایلر در برنامه نویسی دقیقا چیست؟ چه کار هایی انجام میدن ؟ و تفاوت های این دو رو با هم بررسی کنیم .

بهتون پیشنهاد می کنم اگه هنوز مقاله ی ۵ قانون مهم نام گذاری و تاریخچه ی پایتون رو نخوندین یه نگاهی به این مقاله بندازین.

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

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

کامپایلر(Compiler) چیست؟

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

در نتیجه اگر ما یک برنامه ی کامپایل شده بر روی پلتفرم “Windows” داشته باشیم این برنامه معمولا بر روی سیستم عاملی دیگر مانند “Mac OS”  کار نمی کند چرا که سیستم های مختلف معماری های متفاوتی دارند و برنامه ی کامپایل شده ی ما بر روی پلتفرمی قابل اجرا هست که برنامه برای آن طراحی شده است.(Java ،C  وC++  نمونه ای از زبان های کامپایلری هستند.)

 

مفسر(Interpreter) چیست؟

مفسر برنامه ای است که هر عبارت (خط کد) را که به زبان های سطح بالا نوشته شده به کدهای میانی(Intermediate Code) تبدیل می کند که البته مفسر ها هم انواع مختلفی دارند چراکه بعضی مفسرها دستورات را بعد از خواندن بلافاصله اجرا می کنند در حالی که مفسرهایی هستند که کدها را قبل از اینکه به دستورالعمل هایی که به زبان ماشین مربوط است ارسال کنند به زبان ماشین تجزیه می کنند .

برنامه های مفسری را معمولا اسکریپت می نامند که یکی از مزیت های آن ها قابل حمل بودنشان است بدین صورت هر سیستمی که مفسرمناسب در آن نصب باشد می تواند برنامه را تقریبا بدون تغییر خاصی اجرا کند.(از زبان های مفسری می توان به Python و JavaScript اشاره کرد.)

تا اینجا با مفسر و کامپایلر در برنامه نویسی تا حدی آشنا شدیم؛ حالا بریم با هم تفاوت هاشون رو مورد بررسی قرار بدیم.

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

 

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

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

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

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

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

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

از دیگر تفاوت های مفسرها و کامپایلر ها این است که مفسر برنامه ی اصلی را به زبان ماشین ترجمه و تفسیر می کند اما کامپایلر برنامه ی جدیدی را که با زبان اسمبلی (Assembly) نوشته شده، تولید کرده و سپس اسمبلر(Assembler) این کد ها را به کدهای باینری(۰ و ۱ها) که برای ماشین قابل فهم است تبدیل می کند.

خب این مقاله هم این جا به پایان می رسه. ممنون که تا آخر این مقاله من رو همراهی کردید.

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

تا مقاله ی بعدی خداوند یار و نگهدارتون.

ebrahim
ebrahim

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

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