تفاوت زبان های کامپایلری و مفسری
تفاوت کامپایلر و مفسر
مهمترین تفاوتی که بین زبان های کامپایلری و مفسری وجود دارد روشی است که آنها کد اجرایی برنامه را اجرا می کنند. زمانیکه شما توسط Interpreter یا مفسر کد را اجرا می کند ، کد در همان لحظه بصورت خط به خط اجرا می شود و بصورت خط به خط برای کامپیوتر کدها جهت اجرا ارسال و ترجمه می گردند در مقابل زمانیکه شما یک کد برنامه را توسط Compiler یا کامپایلر اجرا می کنید ، کامپایلر کد شما را یکباره اجرا نمی کند بلکه کد را بصورت کامل بر روی دیسک شما قرار می دهد و به شما این امکان داده می شود که هر زمانی که دوست داشتید کد اجرایی را اجرا کنید.
در ادامه ازین مقاله از w3design همراه ما باشید چون قصد داریم به سادگی تفاوت میان زبان های کامپایلری و زبانهای مفسری را بیان کنیم.
زبان های کامپایلری : Compiler چیست؟
Compiler یک برنامه کامپیوتری است که کدهای یک زبان برنامهنویسی سطح بالا را به کدی خوانا برای ماشین تبدیل میکند. به عبارتی، برنامهای است که کدهای قابل خواندن توسط انسان را به زبانی که پردازندههای کامپیوتر قادر به درک آن باشند (یعنی کدهای باینری یا همان صفر و یک) تبدیل میکند.
یک کامپایلر باید با سینتکس زبان برنامهنویسی که کدهای برنامهٔ مذکور با آن نوشته میشوند آشنایی داشته باشد اما در عین حال باید در نظر داشت که کامپایلر نمیتواند ارورها و خطاهای موجود در برنامه را تصحیح کند و از همین روی اگر خطایی در کدتان وجود داشته باشد، باید تغییراتی را در سینتکس برنامه ایجاد کنید که در غیر این صورت کدتان کامپایل نخواهد شد.
فرآیند کامپایل فرآیندی نسبتاً پیچیده است که طی آن زمان بسیار زیادی صرف تجزیه و تحلیل و ترجمهٔ سورسکد به کدی قابل درک برای کامپیوتر میشود. به طور کلی، کامپایلرها سورسکد را میخوانند و یک کد قابلاجرا در خروجی تحویل میدهند. به عبارت دیگر، سورسکد نرمافزارهایی را که با یک زبان سطح بالا نوشته شدهاند به صفر و یکهایی تبدیل میکند که کامپیوتر قادر به درک آنها باشد. در واقع، کدی را که یک برنامهنویس مینویسد را به فرمتی خوانا برای CPU تبدیل میکند.
Interpreter چیست؟
Interpreter (مُفسِر) یک برنامهٔ کامپیوتری است که هر خط از دستورات یک زبان سطح بالا را به کد ماشین تبدیل میکند. Compiler و Interpreter هر دو کاری یکسان، یعنی تبدیل کدهای زبان سطح بالا به کد ماشین، انجام میدهند اما کامپایلر کد را پیش از اجرای برنامه به کد ماشین تبدیل میکند (یعنی یک فایل اجرایی همچون exe میسازد) در حالی که مفسر کد را حین اجرا به کد ماشین تبدیل میکند.
همانطور که پیش از این گفته شد، اینترپریتر سورسکد را خط به خط در حین اجرا ترجمه میکند به طوری که سورس یک برنامهٔ نوشته شده با زبانی سطح بالا را به طور کامل به زبان ماشین ترجمه میکند و این در حالی است که مفسر اجازه میدهد تا ارزیابی و اصلاح برنامه در حین اجرا (Run-time) صورت پذیرد.
نیاز به توضیح نیست که پروسهٔ اینترپریت زمان نسبتاً کمتری در مقایسه با کامپایل صرف تجزیه و تحلیل و پردازش برنامه میکند اما در عین حال سرعت اجرای برنامه در مقایسه با زبانهایی که کدشان کامپایل میشود، نسبتاً کندتر است.
معرفی تفاوت زبان های کامپایلری و مفسری
۱- چگونگی اجرا شدن
در زبان های کامپایلری ابتدا یکبار کدها به صورت کامل ترجمه میگردند. سپس برنامه برای اجرا از روی فایل کامپایل شده اجرا میگردد. اما در زبانهای مفسری کدها به صورت خط به خط تفسیر و اجرا میشوند. سپس هر دفعه که بخواهیم برنامه را دوباره اجرا کنیم به همین صورت کد تفسیر و اجرا میشود.
۲- وابسته بودن یا نبودن به سیستم عامل
یکی دیگر از تفاوتهای این زبانها این میباشد که زبان مفسری برای اجرا نیاز به یک نرمافزار مفسر یا interpreter دارد. اما زبان های کامپایلری تنها یکبار کامپایل شده و کدهای قابل اجرا در ماشین را ایجاد میکند. از آن پس بر روی هر سیستمی بدون نیاز به کامپایلر قابل اجرا میباشد.
اما همین نکته این تفاوت را ایجاد میکند که زبان کامپایلر وابسته به سیستمعامل است، یعنی در صورتی اجرا خواهد شد که در آن سیستمعامل کامپایل شده باشد و در سیستمعاملهای دیگر اجرا نخواهد شد. اما زبان مفسر در هر سیستمعاملی که نرمافزار مفسر آن وجود داشته باشد اجرا و تفسیر میگردد. در واقع زبان مفسر وابسته به سیستمعامل نیست.
۳- سرعت و میزان استفاده از حافظه و پردازنده
زبان های Interpreter کدها را به صورت خط به خط تفسیر و اجرا میکنند، این کار باعث میشود تا مقدار زیادی از CPU و RAM کامپیوتر اشغال شود و مشخص است که سرعت پایینتری نیز خواهند داشت. اما کامپایل شدن یکبارهی زبان های کامپایلری این است که در اجراهای متعدد سبکتر بوده و سرعت بهتری خواهند داشت.
۴- خطایابی
همین مزیتِ به صورتِ یکجا کامپایل شدن زبان های کامپایلری در بخش خطایابی و رفع مشکل، نقص بهحساب میآید. زیرا در زبانهای مفسر هنگامیکه برنامه خط به خط اجرا میشود، در هر بخشی از برنامه که مشکلی وجود داشته باشد، قابل پیدا کردن و رفع میباشد.
اما در زبانهای Compiler برای رفع یک مشکل در کدها میبایست سورس خود برنامه را مجدد بازیابی کرده، سپس خطا را پیدا و تصحیح کرد که این کار بسیار دشوارتر از کار با زبانهای مفسری است.
معرفی زبانهای مفسری و کامپایلری
از معروفترین زبانهای مفسری میتوانیم به زبانهای BASIC ،MATLAB ،Perl ،PHP ،Python ،Ruby و جاوا اسکریپت اشاره کنیم.
همچنین معروفترین زبان های کامپایلری زبانهای C++ ،C# ،Pascal، جاوا و … هستند.
جمع بندی
به طور خلاصه وجه مشترک کامپایلرها و مفسرها تبدیل زبان برنامهنویسی سطح بالا به زبان قابل فهم برای ماشین است. اجرای زبانها مفسری کندتر است ولی خطایابی آنها ساده تر میباشد. در مقابل کامپایلرها مانند زبانهای مفسری که به مفسر وابسته اند به کامپایلر وابستگی ندارند. زبانهای مفسری به سیستم عامل وابستگی ندارند اما کدهای نوشته شده با زبان های کامپایلری برای اجرا در سیستم عامل جدید باید مجدد نوشته و کامپایل شوند.
دیدگاهتان را بنویسید