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


نویسنده:
چهارشنبه ۶ آذر ۱۳۹۸
تفاوت مفسر و کامپایلر

در این مقاله از مقالات‌برنامه نویسی وب، به معرفی زبان‌های مفسری و کامپایلری می‌پردازیم و به سوال کامپایلر چیست؟ و مفسر چیست؟ پاسخ می‌دهیم. سپس تفاوت مفسر و کامپایلر را بررسی می‌کنیم.
زمانی که ما یک برنامه با زبان سطح بالا می‌نویسیم برای مثال C ،C++ ، java و … کامپیوتر درکی از برنامه‌ای که ما نوشتیم ندارد. ‌‌زیرا کد ماشین یک کد صفر و یک می‌باشد و برای اینکه برنامه ما قابل‌فهم برای ماشین باشد نیاز به چیزی داریم که این برنامه سطح بالا را به کد ماشین تبدیل کند. اینجاست که می‌توانیم از مفسر و کامپایلر استفاده کنیم.
به طور ‌کلی زبان‌های برنامه‌نویسی به دو‌ نوع اصلی زبان‌های مفسری (interpreter) و زبان‌های کامپایلری (compiler) تقسیم می‌‌شود.

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

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

سازوکار کلی کامپایلر

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


نحوه کار کامپایلر

مفسر چیست؟

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

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


نحوه کار مفسر

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

۱- چگونگی اجرا شدن

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

۲- وابسته بودن یا نبودن به سیستم عامل

یکی دیگر از تفاوت‌های این زبان‌ها این می‌باشد که زبان مفسری برای اجرا نیاز به یک نرم‌افزار مفسر یا interpreter دارد. اما زبان کامپایلری تنها یک‌بار کامپایل شده و کدهای قابل اجرا در ماشین را ایجاد می‌کند. از آن پس بر روی هر سیستمی بدون نیاز به کامپایلر قابل اجرا می‌باشد.

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

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

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

۴- خطایابی

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

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

از معروف‌ترین زبان‌های مفسری می‌توانیم به زبان‌های BASIC ،MATLAB ،Perl ،PHP ،Python ،Ruby و جاوا اسکریپت اشاره کنیم.
همچنین معروف‌ترین زبان‌های کامپایلری زبان‌های C++ ،C# ،Pascal، جاوا و … هستند.

مطالب زیر را حتما بخوانید

PHP یا ASP؟ کدام یک برای طراحی سایت بهتر است؟

ASP بهتر است یا PHP؟ قطعاً مقایسه PHP و ASP و شناخت کاربرد هرکدام از آنها می‌تواند در تعیین مسیر...

انواع حوزه‌های برنامه‌نویسی را بشناسید

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

پردرآمدترین زبان‌های برنامه نویسی در ایران و در دنیا کدام‌اند؟

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

برنامه نویسی چیست؟ هر آنچه که باید از برنامه نویسی بدانید

برنامه نویسی چیست؟ احتمالاً در رسانه‌های مختلف یا مجامعی که حضور داشته‌اید نام برنامه‌ نویسی به گوش شما خورده است....

آموزش تولید محتوای متنی

دوره آموزش تولید محتوای متنی در وب

آموزش تولید محتوای متنی در وب‌سایت، یک دوره‌ی آموزشی برای تولید‌کنندگان محتوا ...

دوره آموزش ووکامرس | ساخت فروشگاه اینترنتی بدون کد نویسی

دوره آموزش ووکامرس | ساخت فروشگاه اینترنتی بدون کدنویسی

دوره‌ای مختص افرادی که می‌خواهند فروشگاه اینترنتی بسازند و آن را حرفه ...

پکیج آموزش html و css

دوره آموزش HTML و CSS

دوره آموزش HTML و CSS به صورت ویدیویی و پروژه محور : ...

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

9 پاسخ به “بررسی تفاوت مفسر و کامپایلر در برنامه نویسی (interpreter vs compiler)”

  1. Ali گفت:

    بسیار عالی و اموزنده

  2. معظمب گفت:

    مختصر و مفید
    مرسی

  3. Silver گفت:

    بسیار عالی♡
    فقط ای کاش مثال هم میزدید

  4. امین گفت:

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

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

  5. مسعود گفت:

    بسیار عالی بود ممنون

  6. s گفت:

    واقعا ممنونم از مطالبتون. خیلی عالی و خیلی اموزنده.

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

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