محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

تفاوت کامپایلر | Compiler و مفسر | Interpreter در چیست؟

در این مطلب درباره کامپایلر | 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. خطایابی کدهای اجرایی در برنامه های کامپایلری با توجه به اجرای کامل برنامه کمی دشوارتر است
  • تفاوت Compiler و Interpreter چیست؟

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

    زبان های ALGOL ، Visual Basic ، True Basic ، GCC ، Visual C++ ، Borland C++ ، Visual C# ، Mono ( Xamarin ) ، Visual Cobol و Turbo Pascal از زبان های کامپایلری هستند
  • زبانهای برنامه نویسی مفسری دنیا چه هستند؟

    زبان های برنامه نویسی BASIC ، جاوا اسکریپت ، Jscript ، MATLAB ، Perl ، PHP ، Python ، List ، PostScript ، Ruby ، VBScript و PowerShell از جمله زبان های برنامه نویسی مفسری هستند

محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

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

نظرات