در این مقاله به معرفی زبان های مفسری (interpreter ) و کامپایلری (compiler) میپردازیم و به سوال کامپایلر چیست؟ و مفسر چیست؟ پاسخ میدهم. سپس تفاوت مفسر و کامپایلر را بررسی میکنیم.
زمانی که ما یک برنامه با زبان سطح بالا می نویسیم برای مثال C ،C++ ، java و … کامپیوتر درکی از برنامه ای که ما نوشتیم ندارد . زیرا کد ماشین یک کد صفر و یک میباشد و برای اینکه برنامه ما قابلفهم برای ماشین باشد نیاز به چیزی داریم که این برنامه سطح بالا را به کد ماشین تبدیل کند . اینجاست که میتوانیم از مفسر و کامپایلر استفاده کنیم .
به طور کلی زبانهای برنامهنویسی به دو نوع اصلی زبانهای مفسری ( interpreter ) و زبانهای کامپایلری (compiler) تقسیم میشود .
کامپایلر (compiler) چیست؟
مجموعهای از برنامه یا برنامههای کامپیوتری هستند که زبان برنامهنویسی سطح بالا (زبان مبدا) را به زبانی سطح پایین (زبان مقصد) و قابل فهم برای سخت افزار تبدیل میکند. به عبارتی دیگر کدهای ماشین به سادگی قابل فهم برای انسان نیستند و به همین خاطر انسان به زبان های سطح بالا که قابل فهم تر هستند ، برنامه مینویسد و با استفاده از کامپایلر ها آن را به زبان سطح پایین تبدیل میکند .
سازوکار کلی کامپایلر ( compiler )
روند کلی کار کامپایلرها به این شکل است که برنامه سطح بالا را خوانده و یک شکل میانی از آن ایجاد می کند و سرانجام آن را به زبان دیگری مانند اسمبلی تبدیل میکند ، سپس زبان اسمبلی نیز به شکل میانی برنامه ایجاد و سرانجام به کد ماشین تبدیل میشود . کامپایلر این کد را در قالب Memory Word که بر اساس قواعد زبان سطح بالا نوشته بود ، برای سخت افزار ایجاد میکند .
مفسر ( interpreter ) چیست؟
مفسر یک برنامه کامپیوتری است که دستور های نوشتهشده در یک زبان برنامه نویسی سطح بالا را به شکل یک کد قابل فهم برای ماشین اجرا میکند .
بزرگ ترین مزیتی که مفسر دارد این است که برنامه نوشته شده اصلی ، وابسته به نوع سخت افزار نیست . یعنی برنامه ای که به زبان مفسر نوشته شود می تواند بر روی هر نوع سیستم عاملی اجرا شود .
تفاوت مفسر و کامپایلر ( interpreter vs compiler )
۱- چگونگی اجرا شدن
در زبان های کامپایلری ابتدا یک بار کدها به صورت کامل ترجمه میگردند . سپس برنامه برای اجرا از روی فایل کامپایل شده اجرا میگردد . اما در زبان های مفسری کدها به صورت خط به خط تفسیر و اجرا می شوند . سپس هر دفعه که بخواهیم برنامه را دوباره اجرا کنیم به همین صورت کد تفسیر و اجرا می شود .
۲- وابسته بودن یا نبودن به سیستم عامل
یکی دیگر از تفاوت های این زبان ها این می باشد که زبان مفسری برای اجرا نیاز به یک نرم افزار مفسر یا interpreter دارد . اما زبان کامپایلری تنها یک بار کامپایل شده و کد های قابل اجرا در ماشین را ایجاد می کند. از آن پس بر روی هر سیستمی بدون نیاز به کامپایلر قابل اجرا میباشد .
اما همین نکته این تفاوت را ایجاد می کند که زبان کامپایلر وابسته به سیستمعامل است ، یعنی در صورتی اجرا خواهد شد که در آن سیستم عامل کامپایل شده باشد و در سیستم عامل های دیگر اجرا نخواهد شد . اما زبان مفسر در هر سیستم عاملی که نرم افزار مفسر آن وجود داشته باشد اجرا و تفسیر میگردد . در واقع زبان مفسر وابسته به سیستمعامل نیست .
۳- سرعت و میزان استفاده از حافظه و پردازنده
زبان های Interpreter کدها را به صورت خط به خط تفسیر و اجرا میکنند ، این کار باعث می شود تا مقدار زیادی از CPU و RAM کامپیوتر اشغال شود و مشخص است که سرعت پایین تری نیز خواهند داشت . اما کامپایل شدن یک بارهی زبان های کامپایلر این است که در اجرا های متعدد سبک تر بوده و سرعت بهتری خواهند داشت .
۴- خطایابی
همین مزیتِ به صورتِ یک جا کامپایل شدن زبان های کامپایلر در بخش خطایابی و رفع مشکل ، نقص به حساب می آید . زیرا در زبان های مفسر هنگامیکه برنامه خط به خط اجرا می شود ، در هر بخشی از برنامه که مشکلی وجود داشته باشد ، قابل پیدا کردن و رفع می باشد .
اما در زبان های Compiler برای رفع یک مشکل در کد ها می بایست سورس خود برنامه را مجدد بازیابی کرده ، سپس خطا را پیدا و تصحیح کرد که این کار بسیار دشوار تر از کار با زبان های مفسری است.
معرفی زبانهای مفسری و کامپایلری
از معروف ترین زبانهای مفسری می توانیم به زبان های BASIC ، MATLAB ، Perl ، PHP ، Python ، Ruby و جاوا اسکریپت اشاره کنیم .
هم چنین معروف ترین زبانهای کامپایلری زبانهای C++ ، C# ، Pascal ، جاوا و … هستند .
منبع سایت: www.leverageedu.com