Лекція №1. 11. Мови й системи програмування у системному програмуванні мовою



Скачати 35,73 Kb.
Дата конвертації25.12.2016
Розмір35,73 Kb.

Лекція №1.11. Мови й системи програмування

  • У системному програмуванні мовою називається певний набір символів і правил, що встановлюють способи комбінацій цих символів для запису осмислених повідомлень.
  • Розрізняють, природні мови, на яких говорять і пишуть люди в повсякденному житті, і штучні мови, створювані для деяких приватних цілей.
  • Штучні мови, призначені для запису програм, називаються мовами програмування.
  • Кожна ЕОМ має свою власну мову програмування - мову команд або машинну мову й може виконувати програми, написані тільки на цій мові. У машинній мові кожній команді відповідає певна операція, яку може виконувати машина.

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

  • Однак машинною мовою програмувати важко через надмірну деталізацію програми. Тому вже на ЕОМ першого й другого покоління для підвищення продуктивності праці програмістів почали застосовувати мови програмування, що не збігаються з машинними мовами. На ЕОМ третього покоління машинна мова практично не застосовувалася для програмування завдань, за нею збереглася лише роль внутрішньої мови ЕОМ.
  • У цей час налічується кілька сотень різних мов програму-вання, які класифікуються по різних ознаках. Найбільш загальною є класифікація по ступені залежності мови від ЕОМ. За цією ознакою мови діляться на дві великі групи:
  • • Машинно-залежні мови,
  • • Машинно-незалежні мови.
  • Машинно-залежні мови, у свою чергу, ділять на машинні й машинно-орієнтовані.

Машинна мова — це мова програмування, безпосеред-ньо сприймана комп'ютером. Кожна команда машинної мови інтерпретується апаратурою, що виконує зазначені функції. Команди машинної мови в принципі є досить примітивними. Тільки відповідне об'єднання цих команд у програми машинною мовою дає можливість описувати досить серйозні алгоритми.

  • Машинна мова — це мова програмування, безпосеред-ньо сприймана комп'ютером. Кожна команда машинної мови інтерпретується апаратурою, що виконує зазначені функції. Команди машинної мови в принципі є досить примітивними. Тільки відповідне об'єднання цих команд у програми машинною мовою дає можливість описувати досить серйозні алгоритми.
  • Говорять, що машинна мова є машинно-залежною: програма, написана машинною мовою комп'ютера одного типу, як правило, не може виконуватися на комп'ютері іншого типу, якщо його машинна мова не ідентична машинній мові першого комп'ютера (або не є розширенням стосовно цієї мови). Ще одною ознакою машинної, або апаратної, залежності є характер самих команд: у командах машинної мови вказуються найменування конкретних регістрів комп'ютера й передбачається обробка даних у тій

фізичній формі, у якій вони існують у цьому комп'ютері. Більшість перших комп'ютерів програмувалися безпосередньо машинною мовою, а в цей час машинною мовою пишеться лише дуже невелике число програм.

  • фізичній формі, у якій вони існують у цьому комп'ютері. Більшість перших комп'ютерів програмувалися безпосередньо машинною мовою, а в цей час машинною мовою пишеться лише дуже невелике число програм.
  • Машинно-орієнтовані мови іноді називають автокодами. Розрізняють два рівні машинно-орієнтованих мов. До першого рівня відносяться мови символьного кодування, інакше називані мнемокодами, а до другого - макромови.
  • Мнемокод відрізняється від машинної мови відповідної ЕОМ заміною цифрових кодів операцій буквеними (мнемонічними), а цифрових адрес операндів - буквеними або буквено-цифровими. При перекладі на мову ЕОМ кожна команда мнемокода заміняється відповідною командою машинної мови (<<один в один>>).

Застосування мнемокода дозволяє автоматизувати роботу програміста по розподілюванні пам'яті, точніше, по присвоюванню істинних адрес. Це особливо корисно при програмуванні для машин зі змінним форматом команд. Крім того, мнемокод істотно полегшує роботу зі складання великих програм, коли окремі сегменти (модулі) програми складаються різними програмістами й поєднуються в єдину програму на етапі завантаження.

  • Застосування мнемокода дозволяє автоматизувати роботу програміста по розподілюванні пам'яті, точніше, по присвоюванню істинних адрес. Це особливо корисно при програмуванні для машин зі змінним форматом команд. Крім того, мнемокод істотно полегшує роботу зі складання великих програм, коли окремі сегменти (модулі) програми складаються різними програмістами й поєднуються в єдину програму на етапі завантаження.
  • Мова другого рівня – макромова – поряд із символічними аналогами машинних команд, з яких складається мнемокод, допускає також використання макрокоманд, що не мають прямих аналогів у машинній мові. При трансляції кожна макрокоманда заміняється групою команд машинної мови (<<один в декілька>>). Застосування макрокоманд скорочує програму, підвищує продуктивність програміста. Програміст, що використовує машинно-орієнтовану мову повинен бути добре знайомим з особливостями побудови машини, для якої складається програма.

Машинно-незалежні мови також діляться на дві групи за ступенем деталізації програми. До першої групи відносяться процедурно-орієнтовані мови, а до другого проблемно-орієнтовані.

  • Машинно-незалежні мови також діляться на дві групи за ступенем деталізації програми. До першої групи відносяться процедурно-орієнтовані мови, а до другого проблемно-орієнтовані.
  • Процедурно-орієнтовані мови призначені для опису алгоритмів (процедур) рішення завдань, тому їх також називають алгоритмічними, хоча поняття алгоритмічної мови не збігається з поняттям мови програмування. Якщо запис алгоритмічною мовою безпосередній, придатний для уведення в ЕОМ і перетворення в готову робочу програму, то така мова є одночасно мовою програмування. Деякі алгоритмічні мови, строго кажучи, не є мовами програмування, якщо не додати до них спеціальних засобів. Зокрема, алгоритмічна мова Алгол-60 стає мовою програмування після включення в нього операторів уведення й виведення й конкретизації способів виконання деяких інших операцій керування встаткуванням ЕОМ.

Програма процедурно-орієнтованою мовою майже не залежить від конкретної ЕОМ, на якій буде розв’язуватися завдання. Слово “майже” варто розуміти в тому розумінні, що в більшості випадків програми розв’язання одного й того ж завдання для різних ЕОМ відрізняються лише деякими непринциповими деталями зовнішнього оформлення, які при переході від ЕОМ до ЕОМ заміняються механічно.

  • Програма процедурно-орієнтованою мовою майже не залежить від конкретної ЕОМ, на якій буде розв’язуватися завдання. Слово “майже” варто розуміти в тому розумінні, що в більшості випадків програми розв’язання одного й того ж завдання для різних ЕОМ відрізняються лише деякими непринциповими деталями зовнішнього оформлення, які при переході від ЕОМ до ЕОМ заміняються механічно.
  • Структура процедурно-орієнтованих мов ближче до природної мови, наприклад російської або англійської, ніж до мови ЕОМ. Тому переклад із процедурно-орієнтованої мови на машинну мову здійснюється за принципом «декілька в декілька». Іншими словами, у більшості випадків тут можна встановити відповідність лише між групою елементарних конструкцій мови й групою команд ЕОМ, подібно тому, як при перекладі з англійської мови на російську мову групи слів або навіть групи речень заміняють групою слів на іншій мові. Послівний переклад тут неможливий.

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

  • Поява нових технічних можливостей поставила завдання перед системними програмістами - створити програмні засоби, що забезпечують оперативну взаємодію людини з ЕОМ, їх назвали діалоговими мовами.
  • Ці роботи велися у двох напрямках. Створювалися спеціальні керуючі мови для забезпечення оперативного впливу на проходження завдань, які складалися на будь-яких раніше неопрацьованих (не діалогових) мовах. Розроблялися також мови, які крім цілей керування забезпечували б опис алгоритмів рішення завдань.
  • Необхідність забезпечення оперативної взаємодії з користувачем зажадала збереження в пам'яті ЕОМ копії вихідної програми навіть після одержання об'єктної програми в машинних кодах. При внесенні змін у програму з використанням діалогової мови система програмування за допомогою спеціальних таблиць установлює взаємозв'язок структур вихідної й об'єктної програм. Це дозволяє здійснити необхідні редакційні зміни в об'єктній програмі.

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

  • До проблемно-орієнтованих мов відносять так звані не процедурні мови, тобто такі мови, які не вимагають доклад-ного запису алгоритму рішення завдання. Користувач пови-нен лише вказати формулювання завдання або назвати послідовність завдань із раніше підготовленого набору, вказати вихідні дані й необхідну форму видачі результатів. Ця інформація використовується спеціальною програмою – генератором для генерування робочої програми.
  • З розширенням областей застосування обчислювальної техніки виникла необхідність формалізувати подання поста-новки й рішення нових класів завдань. Необхідно було ство-рити такі мови програмування, які, використовуючи в даній області позначення й термінологію, дозволили б описувати необхідні алгоритми рішення для поставлених завдань, ни-ми стали проблемно-орієнтовані мови. Ці мови, орієнто-вані на рішення певних проблем, повинні забезпечити прог-раміста засобами, що дозволяють коротко й чітко формулю-вати завдання й одержувати результати в необхідній формі.

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

  • Стосовно транслятора всі згадувані вище мови, крім машинних мов, є вхідними. У процесі трансляції програма вхідною мовою переводиться на деяку внутрішню мову, більш зручну для подальшої роботи транслятора, а потім послідовно відбувається кілька стадій обробки. На кожній стадії трансльована програма представляється в деякій проміжній мові. І, нарешті, після обробки транслятором виходить програма вихідною мовою.
  • Порівняльна характеристика мов.
  • Машинно-орієнтовані мови універсальні тією самою мірою, у якій універсальна мова машини, оскільки в них утримуються засоби програмування й вирішення на ЕОМ будь-яких завдань, з якими ЕОМ може впоратися за своїми технічними можливостями. При програмуванні на цих мовах можна врахувати особливості системи команд і устрою ЕОМ, що дозволяє створювати високоякісні програми. Однак машинно-орієнтовані мови досить важкі для вивчення, а програмувати на них важко.

Машинно-незалежні мови ефективні лише для певного класу завдань. Поза цим класом завдань застосування біль-шості мов високого рівня малоефективне й взагалі неприда-тне. Ці мови порівняно легко вивчати. Програмування на них значно простіше, ніж на машинно-орієнтованих мовах.

  • Машинно-незалежні мови ефективні лише для певного класу завдань. Поза цим класом завдань застосування біль-шості мов високого рівня малоефективне й взагалі неприда-тне. Ці мови порівняно легко вивчати. Програмування на них значно простіше, ніж на машинно-орієнтованих мовах.
  • Процедурно-орієнтовані мови - мови програмування, де є можливість описування програми як сукупності процедур (підпрограм).
  • Мови високого рівня бувають або процедурно-орієнтованими, або проблемно-орієнтованими. Процедур-но-орієнтовані мови високого рівня - це універсальні мови програмування, які можна використовувати для рішення найрізноманітніших завдань. Проблемно-орієн-товані мови призначаються спеціально для рішення зав-дань конкретних типів. Такі мови, як Паскаль, Кобол, Фортран та Бейсик звичайно вважаються процедурно-орієн-тованими, а такі мови, як GPSS (мова моделювання) і SPSS (мова для виконання статистичних обчислень) - проблемно-орієнтованими.

Транслятори. Будь-яку програму, що перекладає довільний текст на деякій вхідній мові в текст на іншій мові, називають транслятором. Зокрема, вихідним текстом може бути вхідна програма. Транслятор переводить її у вихідну або об'єктну програму.

  • Транслятори. Будь-яку програму, що перекладає довільний текст на деякій вхідній мові в текст на іншій мові, називають транслятором. Зокрема, вихідним текстом може бути вхідна програма. Транслятор переводить її у вихідну або об'єктну програму.
  • У змісті цього визначення найпростішим транслятором можна вважати, завантажник, що переводить програму в умовних адресах, оформлену у вигляді модуля завантаження, в об'єктну програму в абсолютних адресах. У цьому випадку вхідна мова (мова завантажника) і об'єктна мова (мова ЕОМ) є мовами одного рівня. Однак частіше вхідна й об'єктна мови відносяться до різних рівнів. Звичайно рівень вхідної мови вище рівня об'єктної мови.
  • За рівнем вхідної мови транслятори прийнято ділити на асемблери, макроасемблери, компілятори, генератори.

Вхідною мовою асемблера є мнемокод, макроасемблера - макромова, компілятора – процедур-но-орієнтована мова, а генератора - проблемно-орієн-тована мова. У зв'язку із цим вхідну мову називають по типу транслятора: мова асемблера, мова макроасемблера й т.д.

  • Вхідною мовою асемблера є мнемокод, макроасемблера - макромова, компілятора – процедур-но-орієнтована мова, а генератора - проблемно-орієн-тована мова. У зв'язку із цим вхідну мову називають по типу транслятора: мова асемблера, мова макроасемблера й т.д.
  • Програма, отримана після обробки транслятором, або безпосередньо виконується на ЕОМ, або піддається обробці іншим транслятором.
  • Компілятори й інтерпретатори.
  • Звичайно процеси трансляції й виконання програми розділені в часі. Спочатку вся програма транслюється, а потім виконується. Транслятори, що працюють у такому режимі, називають трансляторами типу, що компілює. Якщо вхідною мовою такого транслятора є процедурно-орієнтована мова високого рівня, то транслятор називають компілятором.

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

  • Існують транслятори, у яких трансляція й виконання сполучені в часі, їх називають інтерпретаторами. До складу інтерпретатора входить блок аналізу, що розпізнає оператори вхідної мови, набір підпрограм, що відповідають різним операторам, і блок, керуючий всією роботою інтерпретатора.
  • По вказівках керуючого блоку, блок аналізу переглядає оператори вхідної програми, розпізнає їхній тип і визначає можливість негайного виконання. Інформація про можливість виконання оператора передається керуючому блоку, що викликає відповідну підпрограму, яка виконує дії, запропоновані оператором.
  • У такій схемі компілятор можна зробити дуже простим. Інтерпретатор трохи простіше компілятора, оскільки негай-не виконання розпізнаних операторів вхідної мови робить непотрібним дії, пов'язані з компонуванням об'єктної прог-рами, оформленням її в єдиний модуль завантаження або у вигляді декількох модулів завантаження, якщо вона велика.

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

  • Недолік інтерпретатора полягає в неефективному використанні машинного часу. Наприклад, при виконанні циклічних програм, той самий оператор доводиться інтерпретувати багаторазово. При повторному виконанні програми, інтерпретацію доводиться виконувати заново, у той час як транслятор типу, що компілює, дозволяє виконати трансляцію один раз, а потім зберігати програму в машинних кодах. Із зазначеної причини інтерпретатори застосовуються відносно рідко.
  • Асемблери й макропроцесори
  • Програмування машинною мовою вимагає дуже багато часу й чревате помилками. Тому були розроблені мови асемблерного типу, що дозволяють підвищити швидкість процесу програмування й зменшити кількість помилок кодування. Замість чисел, використовуваних при написанні програм на машинних мовах, у мовах асемблерного типу застосовуються змістовні мнемонічні скорочення й слова природної мови. Однак комп'ютери не можуть

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

  • безпосередньо сприйняти програму мовою асемблера, тому її необхідно спочатку перекласти на машинну мову. Такий переклад здійснюється за допомогою програми-транслятора, називаної асемблером.
  • Мови асемблерного типу також є машинно-залежними. Їхні команди прямо й однозначно відповідають командам програми машинною мовою. Щоб прискорити процес кодування програми мовою асемблера, були розроблені й включені в асемблери так звані макропроцесори. Програміст пише макрокоманду як вказівку необхідності виконати дію, описувану декількома командами мовою асемблера. Коли макропроцесор під час трансляції програми читає макрокоманду, він робить макророзширення — тобто генерує ряд команд мовою асемблера, що відповідають даній макрокоманді, Таким чином, процес програмування значно прискорюється, оскільки програмістові доводиться писати меншу кількість команд для визначення того ж самого алгоритму.
  • Дякую за увагу!!!


База даних захищена авторським правом ©vaglivo.org 2016
звернутися до адміністрації

    Головна сторінка