مقدمه مقاله کامپایلر چیست؟
اصطلاح کامپایلر توسط دانشمند کامپیوتر آمریکایی گریس هاپر، که یکی از اولین کامپایلرها را در اوایل دهه ۱۹۵۰ طراحی کرد، ابداع شد. کامپایلرها برنامههای بسیار بزرگی هستند که قابلیت بررسی خطا و سایر قابلیتها را دارند.
کامپایلر در واقع نرم افزاری است که کد منبع نوشته شده را به زبان سطح پایین تبدیل میکند. به بیان دیگر میتوان بیان کرد که زبان سطح بالا (مانند ++C) را به زبان ماشین یا دودویی ترجمه (کامپایل) میکند. علاوهبر اینها انجام این مرحله برای اجرایی شدن برنامه ضروری است و دلیل این کار این است که برای کامپیوتر فقط زبان باینری قابل فهم است.
بعضی از کامپایلرها بهعنوان یک مرحله میانی زبان سطح بالا را به زبان اسمبلی تبدیل میکنند سپس این کد توسط یک برنامه اسمبلی یا اسمبلر به کد ماشین ترجمه می شود. این در حالی است که برخی دیگر از کامپایلرها کد سطح بالا را مستقیما به زبان ماشین تبدیل میکنند. فرآیند تبدیل کد منبع به کد ماشین را کامپایل میگویند.
جهت آشنایی بیشتر با برنامه اسمبلی؛ پاورپوینت آماده موجود را دانلود و مطالعه نمایید.
تجزیه و تحلیل برنامه منبع در مقاله کامپایلر چیست؟
میتوانیم یک کد منبع را در سه مرحله اصلی تجزیه و تحلیل کنیم. علاوه بر این، این مراحل جلوتر به قسمتهای متفاوتی تقسیم میشوند. این سه مرحله عبارتند از:
۱- تحلیل خطی
در این مدل تحلیل، کاراکترهای کد از چپ به راست خوانده میشوند. کاراکترهایی که معنای جمعی دارند باهم شکل میگیرند و به شکل گروه در می آیند. این گروهها را توکن میگویند.
۲- تحلیل سلسه مراتبی
در این تحلیل با توجه به معنای جمعی، توکنها به صورت سلسله مراتبی به صورت تودرتو تقسیم میشوند.
۳- تحلیل معنایی
در این مرحله اجزای کد منبع از نظر اینکه مناسب هستند یا نه بررسی میشوند.
کامپایلر چیست؟ و ساختار آن چگونه است؟
فرآیند کامپایل در چند مرحله انجام میشود. علاوه بر این، برای هر مرحله، خروجی یک مرحله به عنوان ورودی برای مرحله بعدی عمل میکند. مراحل یا ساختار فرآیند کامپایل به شرح زیر است:
تحلیل گر لغوی یا واژه
- کد منبع زبان سطح بالا را به عنوان ورودی میگیرد.
- کاراکترهای کد منبع را از چپ به راست اسکن میکند. بنابراین، به آن اسکنر نیز می گویند.
- کاراکترها را به مجموعههایی از واژگان گروهبندی میکند. واژگان گروهی از کاراکترها هستند که معانی خاصی دارند.
- هر واژه با یک توکن مطابقت دارد.
- فضاهای سفید و کامنتها را حذف میکند.
- خطاهای لغوی را بررسی و حذف میکند.
برای کسب آگاهی بیشتر در زمینه کامپایلر و موارد مهم مرتبط با آن؛ فایل آماده موجود در سایت پی استور را که لینک آن در ادامه درج شده است؛ مشاهده و مطالعه نمایید.
تحلیل گر نحو یا syntax
- نام دیگر تحلیلگر نحو “Parser” میباشد.
- خروجی تحلیلگر واژه یا تحلیلگر لغوی ورودی این تحلیلگر است.
- خطاهای نحوی در کد منبع را بررسی میکند.
- این کار را با ساختن یک درخت تجزیه از همه توکنها انجام میدهد.
- برای اینکه نحو درست باشد، درخت تجزیه باید طبق قوانین دستور زبان کد منبع تشکیل شده باشد.
- گرامر چنین کدهایی گرامر بدون متن است.
تحلیل گر معنایی
- درخت تحلیلگر نحو موجود در مرحله قبل را تأیید میکند.
- اعتبار کد را از نظر زبان برنامه نویسی بررسی میکند. مانند سازگاری انواع دادهها، اعلان و مقداردهی اولیه متغیرها و غیره.
- همچنین یک درخت تجزیه تایید شده تولید میکند.
- همچنین بررسی جریان، بررسی نوع و غیره را نیز انجام میدهد.
تولید کننده کد میانی (ICG)
- یک کد میانی تولید میکند.
- کد تولید شده میانی نه در زبان سطح بالا است و نه در سطح پایین (زبان ماشین) بلکه زبانی مابین این دو تا است.
- سپس به زبان ماشین تبدیل میشود، اما دو فاز آخر به پلتفرم وابسته هستند.
- کد میانی برای همه کامپایلرها یکسان است چراکه اگر قرار باشد کد مستقیم به زبان ماشین تبدیل شود، باید یک کامپایلر جدا برای هر ماشین ساخته شود.
- یک مثال از یک کد میانی کد سه آدرسی است.
بهینه ساز کد
- کد میانی را بهینه میکند.
- وظیفه آن تبدیل کد است، با استفاده از منابع کمتر (CPU، حافظه) سعی میکند سریعتر اجرا شود.
- هر خط کد بی فایدهای را حذف میکند و کد را مرتب میکند.
- معنی کد منبع تغییری پیدا نمیکند.
تولید کننده کد هدف
- در نهایت، کد میانی بهینه شده را به کد ماشین تبدیل میکند.
- این مرحله، مرحله نهایی تدوین است.
- کد ماشین تولید شده قابل جابجایی است.
تمام این مراحل یک کامپایلر به دو بخش تقسیم می شود:
front end
مراحل تحلیل واژگانی، تحلیل نحوی، تحلیل معنایی و تولید کد میانی در این دسته قرار میگیرند.
back end
دو فاز آخر دیگر در قسمت پشتی قرار میگیرند.
انواع کامپایلر
چند نوع کامپایلر وجود دارند در ادامه آموزش کامپایلر چیست؟ به انواع کامپایلرها میپردازیم.
۱- کامپایلرهای متقابل (Cross Compilers)
این کامپایلرها کد ماشین اجرایی برای یک پلتفرم تولید میکنند، اما این پلت فرم، پلت فرمی نیست که کامپایلر روی آن اجرا میشود.
۲- کامپایلرهای بوت استرپ (Bootstrap Compilers)
این کامپایلرها به زبان برنامه نویسی نوشته شدهاند که باید آن را کامپایل کنند.
۳- کامپایلرهای منبع به منبع یا ترنس کامپایلر (transcompiler)
این کامپایلرها کد منبع یک زبان برنامه نویسی را به کد منبع زبان برنامه نویسی دیگر تبدیل میکنند.
۴- دیکامپایلرها (Decompiler)
اساساً کامپایلر نیستند. درواقع برعکس کامپایلر هستند. کد ماشین را به زبان سطح بالا تبدیل میکنند.
ویژگیهای کامپایلر در مقاله کامپایلر چیست؟
- سرعت کامپایل
- صحت کد ماشین
- معنی کد نباید تغییر کند
- سرعت کد ماشین
- تشخیص خطا به خوبی
- بررسی صحیح کد با توجه به گرامر
کاربرد کامپایلر
- به مستقل شدن کد از پلتفرم کمک میکند.
- کد را عاری از خطاهای نحوی و معنایی میکند.
- فایل های اجرایی کد را تولید میکند.
- کد را از یک زبان به زبان دیگر ترجمه میکند.
تفاوت کامپایلر با مفسر در مقاله مقاله کامپایلر چیست
یک کامپایلر کل برنامه را به یکباره بررسی میکند. پس از بررسی کل برنامه، تمام خطاها را یک جا نمایش میدهد. ولی مفسر برنامه را خط به خط بررسی میکند. اگر خطایی تشخیص داده شود، اجرا متوقف میشود. برای مطالعه هر چه بیشتر درباره تفاوت مفسر و کامپایلر؛ فایل آماده موجود در سایت ما را مد نظر قرار دهید که همچنین منبعی برای داشتن انواع تحقیقات و ارائههای آکادمیک است.
سخن آخر در مقاله کامپایلر چیست؟
در این مقاله به موضوع کامپایلر چیست؟ پرداختیم. در ادامه کامپایلر را توضیح دادیم و سعی کردیم اتفاقاتی که هنگام کامپایل کد رخ میدهد را بهطور واضح بررسی کنیم. همچنین انواع کامپایلرها و کاربرد آنها را نیز توضیح دادیم. و در انتها تفاوت کامپایلر و مفسر را بهطور خلاصه بیان کردیم.