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

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

کامپایلر و مفسر چی هستن؟

 

رفقا کد هایی که ما میزنیم نیاز به یک مترجم داره ، مترجمی که کد هارو از هر زبانی به الگوی منظمی از اعداد (۰و۱) برگردونه تا برای کامپیوتر قابل فهم بشه .
تا به امروز زبان های برنامه نویسی از این نظر ، به دوسته کامپایلر و مفسر تقسیم شدن .

۱- زبان های کامپایلری ( compiler )

کارکرد کامپایلر به این صورته که میاد قبل از اجرای برنامه همه کد های نوشته شده رو به زبان باینری تبدیل میکنه و در صورت نداشتن خطا ، یه فایل تولید میکنه که شامل تمام کد های قبلیه. ولی اگه کد ها دارای خطا باشن فایلی تولید نمیشه و برنامه با دستور compile error متوقف میشه .
این رو هم مد نظر داشته باشین که وقتی یک دسته کد کامپایل بشه و تغییری نکنه تو اجرا های بعد هم نیازی به کامپایل شدن نداره .
++c  و c جزو زبان های کامپایلری هستن .

۲- زبان های مفسری ( interpreter )

خب رفقا ، دسته دوم  زبان های مفسری هستن ، در این فرآیند هر بار که برنامه رو اجرا کنیم ، خط به خط کد ها به زبان ماشین ترجمه و در صورت نبود خطا اجرا میشن ، تا زمانی که به خط حاوی خطا یا (bug) برخورد کنیم . در این صورت برنامه اونجا متوقف میشه .
در مفسر برخلاف کامپایلر که یک فایل نهایی exe ایجاد میکنه فایلی ایجاد نمیشه و با هر بار اجرای برنامه تمام کدها مورد برسی قرار میگیرن.
از زبان های مفسری میشه به Python ، PHP  و روبی اشاره کرد .

تفاوت ها:

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

۱- کامپایلر قبل از اجرای برنامه تمامی کد ها رو به زبان ماشین تبدیل میکنه ولی توی مفسر کد ها خط به خط به زبان ماشین تبدیل و اجرا میشن.

۲- در زبان های کامپایلری بعد از کامپایل شدن یک فایل خروجی exe تولید میشه که به زبان ماشین ترجمه شده و در صورت نداشتن تغییر نیاز به ترجمه مجدد نداره اما در مفسر با هر بار اجرای برنامه از اولین کد تا آخرین خط مورد برسی قرار میگیره حتی اگر تغییری در کار نباشه .

۳- برنامه های کامپایلری در صورت داشتن خطا اجرا نمیشوند و ما با متن (compile error) مواجه میشیم ولی در مفسر برنامه خط به خط اجرا میشه و زمانی که به خط حاوی (bug) رسید همونجا کار برنامه متوقف میشه .

۴- پیدا کردن باگ توی سیستم های مفسری راحت تر از کامپایلری .چون مفسر خط به خط اجرا میشه و دقیقا همونجایی متوقف میشه که خطا وجود داره در صورتی که برنامه های کامپایلری به صورت یکجا ترجمه میشن و اگر حاوی باگ باشن اصلا اجرا نمیشن !

۵-زبان های کامپایلری برخلاف مفسر وابسته به سیستم عامل هستن . ینی چی ؟ در واقع یعنی برنامه های کامپایلری فقط روی سیستمی که کامپایل شدن قابل اجرا هستن اما مفسر از این نظر محدودیتی نداره.

۶ – سرعت برنامه های کامپایلری بیشتر از مفسره چون اگر کد ها شامل تغییر نباشن فقط و فقط یکبار کامپایل میشن .

پایدار باشید 🙂

ارسال دیدگاه

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