اگه به تازگی آموزش برنامه نویسی رو شروع کرده باشید، حتما کلمه کامپایلر رو شنیدید. شاید این سوال در ذهنتون شکل گرفته باشه که مفهوم کامپایلر چیه؟، و چکار میکنه؟!.
در این جلسه (جلسه دوم) دوم دوره قبل از شروع برنامه نویسی، قصد دارم درباره کامپایلر باهاتون صحبت کنم. بعد از اتمام این جلسه شما با مفهوم کامپایلر، وظیفهای که به عهده داره و نحوه کامپایل کردن دستورات برنامه نویسی آشنا میشید. پس در ادامه این جلسه همراه من باشید.
مفهوم کامپایلر:
همنطور که در جلسه قبلی این دوره هم گفتم، در کامپیوتر همه چیز به صورت ترکیبی از صفر و یکها ذخیره میشه. و خب صد البته که این شامل کدها و دستورات برنامه نویسی که ما به عنوان برنامه نویس مینویسیم هم میشه. یعنی ما، به عنوان برنامه نویس اگه بخوایم دستوری به کامپیوتر بدیم، باید دستور مورد نظر رو به صورت صفر و یک به کامپیوتر بدیم که بتونه اجراش کنه.
مسلما نوشتن دستورات به صورت ترکیبی از صفر و یک ها برای ما به شدت سخته. به همین دلیل برنامه نویسها از زبانهای برنامه نویسی برای ارسال دستورات مورد نظر به کامپیوتر استفاده میکنند. زبانهای برنامه نویسی برای ما (برنامه نویسها)، قابل درکه؛ اما همچنان برای کامپیوتر قابل درک نیست. در نتیجه فرآیندی لازمه که دستورات برنامه نویسی رو به ترکیبی از صفر و یکها تبدیل کرده و به هسته سیستم عامل ارسال کنه. به این عملیات تبدیل، کامپایل و به واحد نرمافزاری که این کار رو انجام میده کامپایلر گفته میشه.
مراحل اصلی کامپایل:
به طور کلی کامپایل دستورات در چهار مرحله انجام میشه. در مرحله اول کامپایلر کد منبع (کدهای نوشته شده توسط برنامه نویس)، رو اسکن میکنه. به این معنی که جایگاه و تعداد کاراکترهای موجود در دستورات رو ارزیابی میکنه. در مرحله دوم کامپایلر دستورات نوشته رو از نظر املا و نگارش بررسی میکنه. معمولا برنامه نویسهای تازه کار خطای Syntax Error رو زیاد دیدن. دلیل بروز این خطا اینه که شما در نوشتن دستورات برنامه نویسی غلط املایی دارید.
در مرحله سوم که به تحلیل نحوی کد منبع شهرت داره، کامپایلر دستورات برنامه نویسی رو به شکلی تجزیه میکنه که بتونه حاصل هر قسمت رو محاسبه کنه. میشه گفت این مرحله از عملکرد کامپایلر وابستگی زیادی به مرحله قبل داره. به همین دلیل ممکنه درصورتی که غلط املایی ندارید اما دستورات شما از نظر ساختار نگارشی مشکل داشته باشند هم، با خطای Syntax Error مواجه بشید.
فاز چهارم کار کامپایلر مربوط به تحلیل معنایی هست. به این معنی که دستورات نوشته شده توسط برنامه نویس از نظر استانداردهای زبان مورد نظر بررسی میشه. در چنین شرایطی ممکنه شما خطای Semantic Error رو دریافت کنید. که برای رفع چنین خطایی لازمه کدهاتون رو از نظر معنا و مفهوم بررسی کنید. مثال مربوط به این قسمت رو میتونید در ویدیوی این جلسه مشاهده کنید.
خروجی کامپایلر چیست؟
بعد از انجام این 4 مرحله، خروجی قابل فهم برای کامپیوتر تولید میشه که باتوجه به نوع کامپایلر به دو نوع تقسیم میشه. بعضی از کامپایلرها کد منبع رو مستقیما به صفر و یک قابل فهم برای کامپیوتر تبدیل میکنند. درحالی که بعضی از کامپایلرها، بعد از کامپایل کد منبع، یک کد میانی تولید میکنند؛ که در مرحله جداگانهای باید کد میانی به صفر و یک قابل فهم برای کامپیوتر تبدیل بشه.
یکی از مزایای تولید کد میانی اینه که کمک میکنه کد ما قابلیت اجرا روی سیستمعاملهای مختلف رو داشته باشه. البته به شرطی که پکیجهای لازم برای انجام این تبدیلها در دستگاه مورد نظر ما نصب باشه. حتما بارها برای شما پیش اومده که برای نصب برنامهای با خطای به روز نبودن نسخه دات نت فریمورک مواجه شده باشید. علت دریافت چنین خطایی اینه که عدم وجود دات نت فریمورک و یا به روز نبودن این پکیج، باعث میشه عملیات تبدیل کد میانی به دستورات قابل فهم برای سیستم عامل ویندوز ممکن نباشه.