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

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

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

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

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

در این مقاله به بررسی عملکرد و ویژگی های یک مفسر و کامپایلر می پردازیم. در پایان به تفکیک آنها بر اساس ویژگی هایشان می پردازیم.

بنابراین، اجازه دهید شروع کنیم!

 

مفسر

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

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

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

مفسر HLL (زبان سطح بالا) یا کد منبع را قبل از اینکه در نهایت به کد ماشین تبدیل کند، به برخی از زبان‌های میانی تبدیل می‌کند. آنها معمولاً برای میکرو کامپیوترها ساخته می شوند.

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

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

 

مزایا و معایب مفسر
مزیت این است که آنها خط به خط اجرا می شوند و بنابراین به کدنویس ها کمک می کنند تا خطاها را شناسایی کنند.

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

بیشتر بخوانید( آموزش برنامه نویسی )

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

انواع مختلفی از کامپایلرها وجود دارد که بر اساس نیاز خروجی تولید می کنند. اجازه دهید به برخی از آنها نگاه کنیم.

کامپایلر متقاطع به این دلیل نامگذاری شده است که کامپایلری است که بر روی رایانه ای با سیستم عامل متفاوت یا CPU متفاوت از رایانه ای که کد روی آن اجرا می شود اجرا می شود.

یک کامپایلر بوت استرپ وجود دارد که به زبانی که قول کامپایل را می دهد نوشته شده است.

دیکامپایلر همانطور که از نامش پیداست برعکس کامپایلر است. هر زبان سطح پایین را به HLL (زبان سطح بالاتر) تبدیل می کند.

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

کامپایلرهایی وجود دارند که تجزیه کننده هایی را برای انجام تجزیه و تحلیل نحو ایجاد می کنند. چنین کامپایلرهایی به عنوان کامپایلر-کامپایلر شناخته می شوند.

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

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

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

انتهای میانی روی IR کار می کند و عملیاتی مانند حذف کدهای بی فایده، تجزیه و تحلیل قابلیت دسترسی، و انتشار ثابت (تکثیر و کشف مقادیر ثابت) را انجام می دهد. بنابراین کل کار بهینه سازی IR است که از معماری فعلی CPU نیز مستقل است.

خروجی IR بهینه شده انتهای میانی ورودی انتهای پشتی است. قسمت پشتی آنالیز و بهینه سازی بیشتری را روی IR انجام می دهد. همه این عملیات ها مختص CPU هدف هستند.

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

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

تفاوت بین کامپایلر و مفسر
امیدواریم که تا به حال باید ویژگی های کاری و متفاوت کامپایلر و مفسر هر دو را درک کرده باشید. در اینجا چند مورد از تفاوت های زیاد بین هر دو برنامه وجود دارد. بگذارید یک به یک آنها را بررسی کنیم.

کامپایلرمفسر
کامپایلر کل کد را اسکن می کند و آن را یکجا تبدیل می کند.مفسر هر بار یک خط از کد منبع را تفسیر یا تبدیل می کند.
تمام خطاهای موجود در فایل کد منبع در پایان منعکس می شود، زیرا یکباره کامپایل می شود.هنگام عبور مفسر از کد، خطاها خط به خط نشان داده می شوند.
کامپایلر در 3 مرحله تبدیل می شود، بنابراین برای ذخیره کدها در مرحله میانی نیز به حافظه بیشتری نیاز دارد.مفسر مستقیماً به کد ماشین ترجمه می شود بنابراین نیازی به حافظه اضافی نیست.
اشکال زدایی نسبتاً سخت تر است زیرا کد به یکباره کامپایل می شوداشکال زدایی نسبتا ساده تر است.
پس از پایان ترجمه نیازی به کد منبع نیست.کد منبع هر بار که برنامه اجرا می شود، پس از ترجمه مورد نیاز است.
کامپایلر زمان خوبی را برای تجزیه و تحلیل و بهینه سازی کد منبع صرف می کند.مفسر تلاش زیادی برای تجزیه و تحلیل کد منبع نمی کند.
زمان اجرای کامپایلر بسیار کمتر است.زمان اجرای مفسر بیشتر است.
کد ماشین ترجمه شده از کد منبع را روی دیسک ذخیره می کند.کد دستگاه را روی دیسک ذخیره نمی کند
کد دستگاه در یک فایل exe جداگانه ذخیره می شود.کد ماشین را در جایی جداگانه ذخیره نمی کند و به همین دلیل است که برای اجرای برنامه به کد منبع نیاز دارد.
کامپایلرها برای زبان هایی مانند C، C++، C# و غیره مناسب هستند.مترجمان برای زبان هایی مانند RUBY، MATLAB، Python و غیره مناسب هستند.

درباره این مقاله: 

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

دسترسی به این امکان وجود ندارد.