Page 6 - 4761
P. 6
ВСТУП
Компілятор – це програма, яка читає текст програми, написаної на одній мові –
початковій, і транслює (переводить) його в еквівалентний текст на іншій мові –кінцевій.
Одним із важливих моментів трансляції є повідомлення користувача про наявність
помилок в початковій програмі.
Створення компіляторів є одною із невід‘ємних частин системного програмного
забезпечення. Одним з завдань компілятора є переведення написаного тексту програми у
машинний код,який повинен відповідати комп‘ютерній системі. Проблема компіляції
полягає в пошуку відповідності тексту вхідної програми конструкціям, що визначені
граматикою. Граматика визначає форму чи синтаксис допустимих виразів мови. Тому
текст вхідної мови зручно подавати у вигляді послідовності лексем, що є неподільними
одиницями мови. За допомогою компілятора програміст повинен мати можливість
редагувати текст вхідної мови. Для цього компілятор має виявляти усі невідповідності
тексту програми конструкціям мови й у випадку відсутності помилок генерувати
об'єктний код.
Компілятори класифікують як однопрохідні, багатопрохідні, виконуючі,
відлагоджуючі, оптимізуючі —залежно від призначення й принципів та технологій
їхнього створення. Незважаючи на уявну складність й різноманітність, основні задачі, які
виконуються різними компіляторами, по суті, одні й ті ж самі. Розуміючи ці задачі, можна
створювати компілятор для різних початкових мов й цільових машин із використанням
одних і тих же базових технологій. Знання про організацію й написання компіляторів
істотно зросли із часів перших компіляторів, що з'явилися на початку 1950-х рр. Сьогодні
складно визначити, коли саме з'явився на світло перший компілятор, оскільки в ті роки
проводилося багато експериментів й розробок різними незалежними групами. В
основному метою цих розробок було перетворення в машинний код арифметичних
формул. У 50-х роках про компілятори ходила слава як про програми, украй складні в
написанні. Сьогодні від компілятора вимагається, крім перетворення вхідної програми в
машинний код, створення оптимізованого коду. Тому створення ефективного виконавчого
коду є дуже важливою проблемою у наш час ,бо для створення цього, необхідно
враховувати усі можливі варіанти покращеної апаратної частини, розвиток якої досяг
сьогодні теоретичної межі продуктивності.
4