کامپایلر و مفسر چیست؟ ما با قاطعیت میگوییم که هر مهارتآموز با شرکت در آموزش مبانی برنامه نویسی کوئرا کالج یا هر موسسه و آموزشگاه دیگری، این سوال را از مربی خود میپرسد؛ زیرا همه برنامهنویسان و توسعهدهندگان، کدها را به زبان سطح بالا (زبانهایی نزدیک به زبان انسان) مینویسند. این زبان قابل درک برای کامپیوترها نیست؛ زیرا این کامپیوترها فقط میتوانند برنامههای نوشتهشده در یک سیستم باینری را درک کنند؛ سیستمی که با نام کد ماشین شناخته میشود.
بنابراین برای صحبت کردن با کامپیوتر به زبان غیر انسانی آن، دو راهحل داریم: مفسر و کامپایلر. از قضا، بسیاری از ما اطلاعات کمی در مورد آنها داریم؛ درحالیکه بخش بزرگی از زندگی ما با نرمافزارهای کامپیوتر و اپلیکیشنهای موبایل پر شده است. از طرفی دیگر، این دانش برای تمام برنامهنویسان ضروری است؛ زیرا با درک درست از کامپایلر و مفسر، میتوانند عملکرد کدهایشان را بهینه کنند و زبان برنامهنویسی مناسبی را برگزینند.
بنابراین در این مقاله، پاسخ «کامپایلر و مفسر چیست؟» را دریافت خواهیم کرد و به برخی مباحث پیرامون این دو راهحل خواهیم پرداخت.
پیش از تفسیر کامپایلر و مفسر، ابتدا باید مفهوم «کد ماشین»، «کد سطح پایین» یا “Object Code” را بدانیم. کد ماشین به کدهای برنامهنویسیشده اطلاق میشود که برای سختافزار و پردازنده کامپیوتر قابل فهم هستند.
درمقابل کد ماشین، ما کدهای سطح بالا را داریم. کدهایی که توسط انسانها درک میشوند و به زبان او بسیار نزدیک هستند. این کدها توسط کامپیوتر درک نمیشوند؛ بههمیندلیل نیاز به مفسر و کامپایلر داریم.
یک کامپایلر (که به آن مترجم نیز میگویند) قبل از اجرای برنامه، کدهای آن را از زبان برنامهنویسی سطح بالا به کد ماشین ترجمه میکند.
به عبارتی دیگر، کامپایلر یک ابزار نرمافزاری است که با استفاده از آن، کدهای برنامهنویسی سطح بالا (کدهای نوشتهشده توسط انسان) به دستورالعملهای قابل خواندن توسط ماشین ترجمه میشوند.
کدهای ماشین معمولا بهشکل کدهای باینری (صفر و یک) هستند. هر کامپایلر وظایف مختلفی مانند تحلیل واژگان، تجزیه سینتکس، تحلیل معنایی، بهینهسازی و تولید کد را انجام میدهد. کد کامپایلشده را میتوان بهصورت مستقیم توسط سختافزار کامپیوتر اجرا کرد.
معمولا این کدها توسط انسان قابل درک و تفسیر نیستند؛ زیرا متشکل از اعداد صفر و یک هستند.
یک کامپایلر در چند فاز عملیات را اجرا میکند. ابتدا ساختار کد منبع را تجزیهوتحلیل میکند و از پایبندی آن به قوانین زبان برنامهنویسی اطمینان حاصل میکند.
سپس، کد را به یک پیشنمایش متوسط تبدیل و عملکرد آن را بهینه میکند. پس از آن، کد ماشین هدف را تولید میکند و از تکنیکهای بهینهسازی مختلف برای بهبود کارایی آن استفاده میکند. کامپایلر خروجی نهایی را بهعنوان یک برنامه قابل اجرا تحویل میدهد.
یک مفسر کدهای نوشتهشده در یک زبان برنامهنویسی سطح بالا را بهصورت خطبهخط به کد ماشین ترجمه میکند تا کد اجرا شود. مفسرها هر خط از کد را به دستورالعملهای ماشین ترجمه میکنند تا تشخیص خطاها و اشکالزدایی کدها آسانتر شود.
مفسرها با خواندن یک خط از کد منبع، تجزیه و اجرای فوری اقدامات مربوط به آن را از سر میگیرند. برخلاف کامپایلرها که کد ماشین مستقلی را تولید میکنند، مفسرها کد را بهصورت مستقیم در محیط زبان برنامهنویسی اجرا میکنند.
این عمل امکان شناسایی و اشکالزدایی بلادرنگ خطا را فراهم میکند؛ زیرا هر مشکلی درحین اجرای کد مشاهده میشود. بااینحال، برنامههای تفسیرشده میتوانند در مقایسه با برنامههای کامپایلشده، بهدلیل ترجمه اضافی (Overhead of Translation) در زمان اجرا کندتر باشند.
برخی از محیطها، مانند کامپایلرهای Just-In-Time (JIT)، بخشهای کد را بهصورت پویا به کد ماشین ترجمه میکنند تا عملکرد را بهبود بخشند.
برای دسترسی به نسخه کامل مقاله «کامپایلر و مفسر»، میتوانید بر روی لینک مرتبط کلیک نمایید یا با مراجعه به کوئرا بلاگ، این مقاله و سایر مطالب مشابه را مطالعه فرمایید.