Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект 1 модуль СР 2012.doc
Скачиваний:
78
Добавлен:
19.02.2016
Размер:
3.1 Mб
Скачать

2.4.1. Мови програмування

Мова програмування – це знакова система, застосовувана для опису обчислень, що виконуються комп’ютером. Процес опису називається програмуванням, а опис – програмою.

Розрізняють такі типи мов програмування: машинні, асемблерні, макромови, мови високого рівня, мови дуже високого рівня, спеціальні мови.

Машинна мова – це знакова система, що припускає безпосереднє виконання процесором комп’ютера програм, написаних цією мовою.

Одиницею програмування (реченням) у машинній мові є машинна команда. Вона зазвичай складається з двох частин: операційної та адресної. В першій частині розміщується вказівка процесору щодо того, яку дію необхідно виконувати, а у другій – щодо того, з якими значеннями слід виконувати цю дію. Вказівка щодо значень подається за допомогою адреса – числа, яке описує місцезнаходження значення в пам’яті комп’ютера.

Схему застосування програми, написаної машинною мовою (машинна програма) комп’ютера зображено на рис. 2.2.

Рис. 2.2. Схема застосування машинної програми

Як приклад програмування машинною мовою розглянуто фрагмент програми, згідно з якою мають додаватися два числа. Перш ніж виконувати арифметичну дію, при наймі з двійниковими числами, у більшості ЕОМ дані спочатку потрібно переслати в регістр (спеціальна пам’ять). У системі команд процесора типу Pentium команда надсилання значення в регістрі має код операції «01011000». Ця перша команда повідомляє процесору про те, де міститься значення і в який регістр його слід переслати. Вона має такий вигляд:

01011000 00110000 11000000

Оскільки необхідно додавати два значення, то друге значення також має бути розміщено в регістрі. Це виконується за допомогою другої команди, аналогічної першій.

01011000 01000000 11000000

Бачимо, що код операції (перші вісім цифр) лишається тим самим, а адреса (останні шістнадцять цифр) відрізняється.

Команда додавання має код операції 00011010. Отже, команда

00011010 0011 0100

З

А. Ван Вейнгарден

абезпечує виконання додавання вмісту третього та четвертого регістрів. Якщо результат має використовуватись у подальших обчисленнях, то його можна

зберегти, виконавши команду записування в пам’яті із кодом операції «01010000», наприклад:

01010000 001100001100000000001000.

Повний фрагмент машинної програми, яка описує обчислення - додавання двох значень – має такий вигляд:

01011000 0011000011000000

01011000 0100000011000000

00011010 00110100

01010000 001100001100000000001000.

Зауважимо, що машинні мови нині застосовуються дуже рідко.

Асемблерна мова – це знакова система, яка дуже близька до машинної мови, проте обидві частини машинної команди в асемблерній мові подаються мнемонічними позначеннями, тому речення цієї мови не можуть безпосередньо виконуватись процесором [8]. Тексти асемблерної мови мають бути перетворені на тексти машинною мовою. Процес перетворення виконується за допомогою спеціальної програми – асемблеру – і називається асемблеруванням. Схему застосування програми асемблерною мовою наведено на рис. 2.3.

Рис. 2.3. Схема застосування програми на асемблерній мові

Приклад фрагмента програми, яка описує процес додавання двох значень і розміщення результату в пам’яті, поданого мовою асемблера процесора Intel 80х8 має такий вигляд:

mov ax, 3

add аx, 4

mov, rez, ax,

де mov, add – це позначення операційних частин машинної команди, а ах, rez – адресних частин, 3 та 4 позначення відповідних значень.

Макромова – це знакова система, речення якої шляхом заміни перетворюються на речення іншої мови, зокрема й машинної [10]. Мова в яку відбувається перетворення, називається базовою, а процес перетворення називається макропідстановкою, макрогенерацією (macrogeneration) або макрообробкою. Програма, яка здійснює перетворення, називається макропроцесором або макрогенератором (macrogenerator). Перетворення виконується на основі заздалегідь установленої відповідності між реченнями макромови та реченнями базової мови. Цю відповідність зафіксовано в макробібліотеці у вигляді макросу, що являє собою опис речень базової мови та пов’язане з цим описом позначення в макромові. Схему макропідстановки зображено на рис.2.4.

Рис.2.4. Схема використання макрогенератора

Наприклад, макроси для базової мови асемблер можуть мати такий вигляд:

prim macro

mov ah, f9h

lea dx, str

int 21h

prim end,

тут prim – позначення макросу, а базовою мовою є асемблерна.

Мова високого рівня (Higch level Language) – це знакова система, речення якої дуже близькі до природної мови, звичайно англійської. Речення мови, перш ніж їх виконуватиме процесор, мають зазнати перетворення в машинну мову [23,35]. Прикладом мов високого рівня є мови програмування C, Pascal, С++, С#.

Процес перетворення речень мови високого рівня в речення машинної мови – трансляція (translation) може відбуватися за допомогою інтерпретації або компіляції.

Інтерпретація (interpretation) – це процес, під час якого речення мови високого рівня перетворюються в речення машинної мови й у міру їх перетворення безпосередньо виконуються процесором. Тому цілком машинна програма не існує і в пам’яті не зберігається. Програма що виконує перетворення, називається інтерпретатором (interpretation) (рис. 2.5).

Рис. 2.5. Схема використання інтерпретатора

Компіляція (compilation) – це процес у результаті виконання якого програма мовою високого рівня спочатку цілком перетворюється у програму машинною мовою, а далі машинна програма виконується. Тому, на відміну від інтерпретації машинна програма цілком існує і повністю зберігається в пам’яті. Програма що виконує перетворення називається компілятором (compilator) (рис. 2.6).

Рис. 2.6. Схема використання компілятору

Очевидно, що виконання програми утвореної за допомогою інтерпретації відбуватиметься повільніше, ніж програми, яку дістали в результаті компіляції, але пам’яті така програма потребує менше.

Макророзширення мови програмування – це використання макромови в контексті мови програмування, зазвичай високого рівня. В даному випадку мова програмування є базова. Макропроцесор у цьому разі називається передпроцесором, а макропідстановка – передпроцесорною обробкою, оскільки передує компіляції (рис.2.7).

Рис. 2.7. Схема препроцессорной обработки

Макророзширення здійснюється звичайно для скорочення тексту програми, що створюється за рахунок кодування макросів – фрагментів програми, які повторюються. Макророзширення широко використовується в сучасних мовах програмування.

Мова дуже високого рівня (Very light level language) – це знакова система, речення якої дають змогу стисло описувати складні дії. Для перетворення речень використовуються зазвичай засоби інтерпретувального, інтерактивного (діалогового) типу. Оскільки виконання програм цією мовою неефективне, то вона не придатна для реалізації програм, а використовується лише при їх розробці, здебільшого для створення прототипів програм.

Спеціальна мова – це знакова система, зорієнтована на запис обчислень виконуваних спеціальними процесорами. Наприклад, мови маніпулювання значеннями, розташовані в реляційних базах даних. Програми, які написано цими мовами виконуються машинами баз даних - апаратно або програмно реалізованими засобами.