کامپایلر: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
نیاز به منابع معتبر دارد
خط ۳۳:
در تاریخچه کامپایلر سه دوره می‌توان در نظر گرفت:
 
از ۱۹۴۵تا۱۹۶۰:تولید کد(m.h.sزبان ماشیی)
 
در این دوره، زبانها به تدریج به وجود آمدند و ماشینها چندان متعارف نبودند. مسئله این بود که چگونه باید کدی را برای یک ماشین تولید کرد. با توجه به اینکه برنامه نویسی به زبان اسمبلی رواج داشت، این مسئله وخیمتر شد. استفاده از کامپایلر، برنامه نویسی خودکار نامیده شد. طرفداران زبانهای سطح بالا می‌ترسیدند که کد تولید شده نسبت به زبان اسمبلی کارایی چندان نداشته باشد. اولین کامپایلر فرترن (شریدان ۱۹۵۹) به خوبی بهینه‌سازی شد.
خط ۶۵:
* '''کامپایلر زمان اجرا'''، برای سیستم‌های Smalltalk، Java و زبان‌های میانه(CIL) در محصولات NET. استفاده می‌شود.
 
=== زبانهای تفسیری و کامپایلی(m.h.sزبان ماشیی ===
بسیاری از افراد زبانهای سطح بالا (m.h.sزبان ماشیی)را به دو دسته تفسیری و کامپایلی تقسیم می‌کنند. کامپایلرها و مفسرها روی زبان‌ها عمل می‌کنند نه زبانها روی آنها! مثلاً این تصور وجود دارد که الزاماً BASIC تفسیر می‌شود و C کامپایل. اما ممکن است نمونه‌هایی از BASIC یا C ارائه شود که به ترتیب کامپایلری و تفسیری باشد.
البته استثناهایی نیز وجود دارد، مثلاً برخی زبانها در خصوصیات خود این تقسیم‌بندی را مشخص کرده‌اند(C کامپایلری است یا SNOBOL۴ و اکثر [[زبانهای اسکریپتی]] که کد منبع زمان اجرا دارند تفسیری می‌باشد).
 
== طراحی کامپایلرها ==
[[تقسیم‌بندی وظایف مغز|تقسیم‌بندی]] پروسه‌های کامپایل به مجموعه‌ای از فازها مورد حمایت پروژه کامپایلری ((تولید کامپایلرهای باکیفیت))(PQCC) از دانشگاه Carnegie Mellon قرار گرفت. در این پروژه اصطلاحات جلو بندی، میان بندی (امروزه به ندرت به کار می‌رود) و عقب بندی معرفی شد.
اکثر کامپایلرهای امروزی بیش از دو فاز دارند. جلوبندی معمولاً با پردازش املایی و معنایی شرح داده می‌شود. عقب بندی شامل تبدیل نوع و بهینه‌سازی‌های مختلف می‌باشد. سپس کد برای آن کامپیوتر خاص تولید می‌شود.
استفاده از جلوبندی و عقب بندی این را ممکن می‌کند که جلوبندی‌های مختلفی برای زبانهای مختلف وجود داشته باشد و عقب بندی‌های مختلفی نیز برای [[CPU]]های مختلف.