/tmp/nejcd.jpg تفاوت بین Compiler کامپایلر و Interpreter مفسر در چیست ؟ - وبلاگ دیتا سنتر crmit

تفاوت بین 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 اشاره کنیم. بنابراین بصورت خلاصه می توانیم تفاوت بین یک زبان مفسری و یک زبان کامپایلری را به شکل زیر عنوان کنیم :

۱٫     زبان های مفسری بصورت خط به خط کدها را خوانده و اجرا می کنند

۲٫     زبان های کامپایلری به یکباره کد برنامه را خوانده و آن را هر زمان که نیاز باشد اجرا می کنند

۳٫     برنامه ها در زبان های مفسری وابستگی به سیستم عامل ندارند و در هر سیستم عاملی قابل اجرا هستند

۴٫     برنامه ها در زبان های کامپایلری برای هر سیستم عامل متفاوتی بایستی تغییر کد و مجددا کامپایل شوند

۵٫     برای اجرا یک برنامه مفسری باید مفسیر مورد نظر بر روی سیستم عامل حتما نصب شده باشد

۶٫     برای اجرا یک برنامه کامپایلری نیازی به وجود داشتن کامپایلر بر روی سیستم عامل نمی باشد

۷٫     سرعت اجرای برنامه های مفسری بسیار کند است

۸٫     سرعت اجرای برنامه های کامپایلری بسیار سریع است

۹٫     خطایابی کدهای اجرایی در برنامه های مفسری با توجه به اجرا خط به خط آسانتر است

۱۰٫                        خطایابی کدهای اجرایی در برنامه های کامپایلری با توجه به اجرای کامل برنامه کمی دشوارتر است ITPRO باشید

 

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

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