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

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

مقالات/ وب و نرم افزار یکشنبه, 24 اسفند 1399 محمدحسن خانی‌پور

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

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

 

داستان پاستا!

یک مثال بزنیم. حسن می‌خواهد یک پاستای ایتالیایی درست کند، ولی نکته اینجاست که دستور پخت پاستا تابه‌حال توسط کسی ترجمه نشده و فقط به زبان ایتالیایی موجود است. حسن به عنوان کسی که کوچک‌ترین چیزی از زبان ایتالیایی نمی‌داند دو راه در پیش دارد:

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

و راه دوم هم اینکه دوستش، مرتضی، که به ایتالیایی مسلط است را برای ناهار دعوت کند. از مرتضی بخواهد برایش از روی دستور ایتالیایی بخواند و ترجمه کند و همینطور که مرتضی خط به خط دستور را ترجمه می‌کند، حسن مراحل را انجام دهد و همزمان با اتمام ترجمه غذا هم حاضر شود!

همانطور که خودتان هم متوجه شدید روش اول، روش کامپایلری است و روش دوم، روش مفسری!

نگاهی به Agile و Waterfall

زبان‌های کامپایلری

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

زبان‌های کامپایلری به یک مرحله بیلد (Build - به معنی ساختن) نیاز دارند که به این طریق کامپایل می‌شوند. همینطور هر گاه تغییری در برنامه ایجاد شود برنامه نیاز به ریبیلد (Rebuild - به معنی بازسازی) شدن پیدا می‌کند. به مثال پاستا بازگردیم، در راه اول دستور کاملا ترجمه شده، نوشته شده و بعد به دست حسن می‌رسد. اگر نویسنده اصلی و ایتالیایی دستور تصمیم بگیرد نوع گوشت استفاده شده را عوض کند چه می‌شود؟ در این صورت کل دستور باید دوباره ترجمه شده و دوباره برای حسن فرستاده شود.

زبان‌های C، C++، Erlang، Haskell، Rust و Go از مثال‌های زبان‌های برنامه‌نویسی کامپایلری هستند.

Compiler

 

زبان‌های مفسری

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

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

زبان‌های PHP، Ruby، Python و JavaScript مثال‌هایی از زبان‌های مفسری هستند.

مقایسه جنگو و فلسک؛ تقابل فریمورک‌های وب پایتون

یک نکته مهم!

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

مثلا زبان پایتون می‌تواند به دو صورت یک برنامه قابل کامپایل کردن اجرا شود یا به صورت یک زبان مفسری در حالت تعاملی باشد. از طرفی اکثر ابزارهای کامند لاین مثل CLI و Shell به صورت تئوری در دسته زبان‌های مفسری قرار می‌گیرند.

Java execution

 

مزایا و معایب هر گروه

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

از معایب زبان‌های کامپایلری می‌توان به دو مورد اشاره کرد: 1- هر بار که چیزی را تغییر دهید برنامه باید ریبیلد شود. 2- کد باینری تولید شده به پلتفرم و دستگاه وابستگی دارد.

دینو؛ دایناسور دوست داشتنی از جنس جاوا اسکریپت

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

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

Compiled vs Interpreted


ذخیره مقاله:

اشتراک گذاری:





مطالب پیشنهادی



              
                 انواع پردازنده
انواع پردازنده(CPU)

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


              
                 امنیت شبکه لایه بندی شده
امنیت شبکه لایه بندی شده (قسمت دوم)

پیش از این در مورد امنیت شبکه لایه بندی صحبت کردیم. در این مطلب موارد باقی مانده را ذکر میکنیم و با تکنولوژی‌های IDS و IPS آشنا خواهیم شد. اگر به شبکه علاقه مند هستید این مطلب را پیشنهاد می‌کنیم.


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

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


نظری برای نمایش وجود ندارد. شما اولین نظر باشید.


ارسال دیدگاه

برای ثبت دیدگاه باید ابتدا وارد شوید