Реферат з інформатики
на тему:
Робота в системі програмування
Від складання програмістом до виконання комп’ютером програма проходить
досить тривалий шлях спеціальними службовими програмами, що складають
систему автоматизації програмування. З часом слово “автоматизація”
випало із наведеного словосполучення, в результаті чого воно
перетворилося на систему програмування. Система програмування
складається з кількох компонент, а саме: препроцесора (preprocessor),
компілятора (compiler), компонувальника (linker), налагоджувача
(debugger) , об’єднаних спільним інтерфейсом у так зване універсальне
середовище розробки програм.
Головна особливість підготовки програми до виконання полягає у
використанні багатьох різнорідних складових частин. Деякі з них
підготовлені заздалегідь, вони зберігаються в бібліотеках, системних або
власних, інші складають частини програми, розміщені в різних файлах.
Зауважимо, що в С++ лише поглибилася тенденція винесення значної частини
мови на рівень бібліотеки, яка дула закладена ще авторами С. Зокрема на
бібліотеку, а не мову покладена відповідальність за зв’язок програми з
операційною системою.
Одночасне використання багатьох файлів з текстами різних частин програми
— роздільна компіляція — одне з найбільших досягнень систем
програмування. Завдяки йому ми ділимо програму на файли, які називаються
одиницями трансляції ( translation unit ), групуючи у одному файлі тісно
зв’язані одну з одною частини програми. В такий спосіб великі за
розмірами програми діляться на частини, якими легше управляти.
Програмування — це діяльність, яка вимагає великої організованості. Тому
при складанні програм дотримуються певних правил доброго тону, одне з
яких полягає в розділенні визначень і обчислень між файлами двох типів:
файлів заголовків (header) і файлів реалізації . Файли заголовків
обробляються препроцесором, файли реалізації готуються препроцесором для
подальшої обробки компілятором. Тому їх звичайно називають початковими
файлами ( source file, исходный файл ). Сукупність пов’язаних одне з
одним заголовних і початкових файлів складають вхідну програму для
системи програмування. Вхідну програму розміщують у програмному проекті,
в рамках якого система програмування будуватиме об’єктні коди та
виконавчу програму .
Система програмування (programming system) – 1) те ж що й
інструментальна система; 2) система автоматичного програмування, що
складається з мови програмування, компілятора або інтерпретатора
програм, які написані на цій мові, відповідної документації, а також
допоміжних засобів для підготовки програм до виконання;
Інструментальна система (development environment) — комплекс програмних
або програмних і технічних засобів, який використовується фахівцями з
програмування як інструмент для розробки програмного забезпечення
(програм, програмних комплексів та систем тощо).
Мова програмування — формальна мова представлення програм для системи
програмування.
Мови програмування низького рівня орієнтовані на конкретний тип
процесора і враховують його особливості.
Переваги
з допомогою мов низького рівня створюються ефективні і компактні
програми, оскільки розробник отримує доступ до всіх можливостей
процесора.
Недоліки
Програміст, що працює з мовами низького рівня, має бути високої
кваліфікації, добре розуміти будову комп’ютера.
результуюча програма не може бути перенесена на комп’ютер з іншим типом
процесора.
Мови низького рівня, як правило, використовують для написання невеликих
системних додатків, драйверів пристроїв, модулів стиків з нестандартним
обладнанням, коли найважливішими вимогами є компактність, швидкодія і
можливість прямого доступу до апаратних ресурсів.
Асемблер
Мови програмування високого рівня можна сказати є більш зрозумілими
людині, ніж комп’ютеру. Особливості конкретних комп’ютерних архітектур в
них не враховуються, тому створені програми легко переносяться з
комп’ютера на комп’ютер, де встановлено транслятор цієї мови. Розробляти
програми на таких мовах значно простіше і помилок допускається менше.
Фортран
Кобол
Алгол
Pascal
Java
C
C++
C#
Objective C
SmallTalk
J++
Delphi
П’ять поколінь мов програмування
1 покоління:
початок 1950-х років – мови перших комп’ютерів. Перша мова асемблера,
створена за принципом “одна інструкція – один рядок”.
2 покоління
кінець 1950-х – початок 1960-х р.р. Розроблено символьний асемблер, в
якому з’явилося поняття змінної. Це перша повноцінна мова програмування.
3 покоління
1960-ті р.р. – мови програмування високого рівня. Їхні характеристики:
відносна простота;
незалежність від конкретного комп’ютера;
можливість використання потужних синтаксичних конструкцій.
Простота мов дає змогу писати невеликі програми і людям, які не є
професійними програмістами.
4 покоління
початок 1970-х р.р. до сьогоднішнього часу. Створюються мови, призначені
для реалізації крупних проектів. Проблемно-орієнтовані мови, що оперують
конкретними поняттями вузької галузі. Як правило, в такі мови вбудовують
потужні оператори, що дозволяють одним рядком описувати функції, для
опису яких мовами молодших поколінь потрібно було б сотні-тисячі рядків
початкового коду.
5 покоління
з середини 1990-х р.р. – до теперішнього часу. Це системи
автоматизованого проектування програмного забезпечення (САПР ПЗ).
Створення прикладних програм, редакторів, САПРів для людей, які не
знайомі з програмуванням: Word, Excel, PcAD, OrCAD, PSPICE, MathCad,
ACAD і т. д.
Компілятор (англ. Compiler від англ. to compile збирати в ціле) –
комп’ютерна програма (або набір к. програм), що перетворює (компілює)
програмний код, написаний певною мовою програмування (мова джерела,
англ. source language), на семантично еквівалентний код в іншій мові
програмування (мова цілі, англ. target language). Що, як правило, є
необхідним для виконання програми на машині, наприклад: на комп’ютері.
Коротко компілятор можна визначити, як програма або технічний засіб, що
виконує компіляцію.
Історично компілятором називалась програма що зв’язувала підпрограми,
чим й зумовлено походження слова. Сьогодні це завдання виконує
консолідатор або лінкер (англ. Linker).
Для того щоб бути виконаною програма не завжди повинна бути перекладена
К., існує також інший принцип: Інтерпретатор (англ. Interpreter).
Компілятор – це програма, що читає програму записану початковою мовою і
записує цільовою мовою. Цей процес називають компіляцією (трансляцією,
перекладом). Він складається з двох частин
Аналіз (parsing) – розбиття початкової програми на складові частини та
створення проміжного представлення
Синтез – побудова цільової програми з проміжного представлення
Початкова мова визначається її синтаксисом – описом того, з яких
конструкцій складається мова, та семантикою – набором правил, що
визначають суть цих конструкцій.
Фази компіляції
Концептуально компілятор працює фазово, в процесі кожної фази
відбувається перетворення початкової програми з одного представлення до
іншого. На практиці фази можуть об’єднуватись і деякі проміжні
представлення можуть не будуватись в явному вигляді. Типове розбиття
компілятора на фази:
Лексичний аналізатор
Синтаксичний аналізатор
Семантичний аналізатор
Генератор проміжного коду
Оптимізатор
Генератор цільового коду
Лексичний розбір виділяють для спрощення побудови компілятора. Це
лінійне сканування вхідної програми, при якому символи групуються в
токени – послідовності символів, що мають певне сукупне значення.
Наступний рядок мовою Паскаль
len := 3.14 * r;
складається з наступних токенів
Ідентифікатор len
Символ присвоєння :=
Числова стала 3.14
Знак множення *
Ідентифікатор r
Роздільник операторів ;
Синтаксичний розбір
Послідовність машинних символів, що утворюють токен, називають лексемою
токена. Токени мають тип (наприклад, ідентифікатор, числова стала – це
типи токенів). Деякі токени мають лексичне значення (наприклад, значення
числової чи рядкової константи утвореної з лексеми токена). Задача
лексичного аналізатора – виокремити лексеми токенів і повідомити
синтаксичний аналізатор про тип токена та його лексичне значення.
Ієрархічний аналіз називається розбором (parsing) чи синтаксичним
аналізом, у ході якого відбувається групування токенів програми. В
синтаксичному аналізі символом називають токени(термінали) та групи
токенів об’єднаних у логічне ціле в процесі аналізу (нетермінали).
Синтаксис звичайно визначається контесктно-незалежною граматикою, що
складається з символів – терміналів та нетерміналів, стартового символу
що належить множині нетерміналів, та контесктно-незалежних продукцій.
Програма є послідовністю терміналів, яку можна вивести зі стартового
символу послідовно застосовуючи правила виводу (продукції). Продукція –
це заміна послідовності символів S1 на послідовність символів S2
(Позначається. S1 : S2 або S1 -> S2). Продукція називається
контесктно-незалежною, якщо S1 – один символ. Звичайно розглядаються
лише контесктно-незалежні продукції.
Задача синтаксичного аналізатора – встановити шлях, яким вхідна програма
виводиться з стартового символа.
Наприклад, наступна граматика із трьох продукцій описує вирази
(expression), що можуть складатись з ідентифікаторів (identifier), чисел
(number), та знаку додавання +
expression : identifier
expression : number
expression : expression + expression
Перший рядок означає що будь-який ідентифікатор є виразом. Другий рядок
означає що будь-яке число є виразом. Третій рядок означає що будь-яка
послідовність з двох виразів розділених знаком додавання теж є виразом.
В цій граматиці символами є expression, number, identifier та +.
Expression є стартовим символом і нетерміналом, решта символів є
терміналами.
Класифікація компіляторів
Відомі компілятори
GCC
Генератори аналізаторів
Побудовані алгоритми, що перетворюють опис вхідної мови у програму, що
виконує аналіз і є велика кількість реалізацій цих алгоритмів. Є також
утиліти, що автоматизують решту фаз компіляції та системи створення
компіляторів у цілому
В Unix поширені генератор лексичних аналізаторів (F)Lex, та генератори
синтаксичних аналізаторів Bison та Yacc.
Інтерпретатор (interpreter) – програма чи технічні засоби, необхідні для
виконання інших програм; вид транслятора, який здійснює пооператорну
(покомандну) обробку, перетворення у машинні коди та виконання програми
або запиту (на відміну від компілятора, який транслює у машинні коди всю
програму без її виконання).
Інтерпретатори можуть працювати як з вихідним кодом програми, написаним
на мові програмування, так і з байт-кодом (інтерпретатори байт-коду).
Список використаної літератури
Абрамов С.А., Зима Е.В. Начала информатики. – М.: Наука, 1989. – 256 с.
Інформатика: Комп’ютерна техніка. Комп’ютерні технології. Посіб./ За
ред. О.І.
Информатика. Базовый курс / Под ред. Симоновича С.В. – СПб., 1998.
Жалдак М.І., Рамський Ю.С. Інформатика. – К.: “Вища школа”, 1991. – с.
Пушкаря – К.: Видав-ничий центр “Академія”, 2001. – 696 с.
PAGE
PAGE 2
Нашли опечатку? Выделите и нажмите CTRL+Enter