تفاوت کامپایلر (Compiler) و مفسر (Interpreter)

یکشنبه 23 دی 1397

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

تفاوت کامپایلر (Compiler) و مفسر (Interpreter)

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

مفسر چیست؟

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

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

   

نقش کامپایلر

کامپایلرها کد منبع، کد خروجی قابل اجرا را می‌خوانند.

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

روند کامپایل نسبتا پیچیده است. کامپایلر زمان زیادی را صرف تجزیه و تحلیل برنامه می‌کند.

نتیجه اجرایی برخی از کدهای باینری مخصوص ماشین است.

نقش مفسر

مفسر کد منبع را به صورت خط به خط در زمان اجرای برنامه ترجمه می‌کند.

به صورت کامل یک برنامه نوشته شده در زبان سطح بالا را به زبان سطح ماشین ترجمه می‌کند.

مفسر اجازه می‌دهد تا ارزیابی و اصلاح برنامه در زمان اجرا انجام شود.

نسبتا زمان کمی را برای تحلیل و پردازش برنامه صرف می‌کند.

اجرای برنامه نسبت به کامپایلر نسبتا کند است.

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

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

کد ماشین

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

کد اجرایی

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

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

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

نتیجه‌گیری

یک کامپایلر یک برنامه کامپیوتری است که کد نوشته شده در زبان برنامه‌نویسی سطح بالا را به کد ماشین تبدیل می‌کند.

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

کامپایلرها کد ماشین واسطه‌ای را تولید می‌کنند که به عنوان exe برای کامپیوتر ذخیره می‌شود.

مفسر هرگز هیچ کد ماشین واسطه‌ای را تولید نمی‌کند.

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

کامپایلر به زمان زیادی جهت تحلیل و پردازش برنامه نیاز دارد.

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

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

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

تاکنون هیچ کاربری از این پست تشکر نکرده است

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید