загрузка...
загрузка...
На головну

Огляд мов програмування

  1. А. Мейе «Введення в порівняє, вивчення і.-е. мов », 1-е рус. изд.
  2. Алгоритм методу гілок і меж для вирішення одновимірних задач цілочисельного програмування
  3. Ареальність І ФУНКЦІОНАЛЬНА КЛАСИФІКАЦІЇ МОВ
  4. Б. Мовні сім'ї Центральної Америки
  5. БЕЙСІК ЯК МОВУ операціонально-ПРОБЛЕМНО-орієнтованого ПРОГРАММИРОВАНИЯ
  6. В) Огляд реактивних станів
  7. Взаємно-двоїсті задачі лінійного програмування.

Комп'ютерна програма являє собою логічно впорядковану послідовність команд, призначених для управління комп'ютером. Процесор комп'ютера - це велика інтегральна схема. Всі дані і команди він отримує у вигляді електричних сигналів. У двійковому коді наявність сигналу описується поняттям «1», а його відсутність - поняттям «О». Команди, оброблювані процесором, можна інтерпретувати як ряд чергуються певним чином одиниць і нулів, тобто будь-яка команда перетвориться в двійкове число. Таким чином, процесор виконує програми, що представляють собою послідовність чисел і звані машинним кодом.

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

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

Сьогодні практично всі програми створюються за допомогою мов програмування. Теоретично програму можна написати і на природній мові (кажуть: програмування на метамові), але через неоднозначність природної мови автоматично перевести таку програму в машинний код поки неможливо.

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

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

словниковий склад або лексика мови - це сукупність вживаних в ньому слів, тобто правильних слів даної мови.

граматика - Це кінцева система правил, що визначають мову.

Граматика визначає способи побудови зміни і поєднання слів.

синтаксис - Система правил, що визначають допустимі конструкції мови програмування з букв алфавіту.

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

Взаємодія синтаксичних і семантичних правил визначає основні поняття мови, такі як оператори, ідентифікатори, константи, змінні, функції, процедури і т.д. На відміну від природних, мова програмування має обмежений запас слів (операторів) і суворі правила їх написання, а правила граматики і семантики, як і для будь-якого формального мови, явно однозначно і чітко сформульовані.

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

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

Мови програмування, що імітують природні, що володіють укрупненими командами, орієнтовані «на людину», називають мовами високого рівня. Чим вище рівень мови, тим ближче структури даних і конструкції, що використовуються в програмі, до понять початкового завдання. Особливості конкретних комп'ютерних архітектур в них не враховуються, тому вихідні тексти програм легко переносяться на інші платформи, мають транслятори цієї мови. Розробляти програми на мовах високого рівня за допомогою зрозумілих і потужних команд значно простіше; число помилок, що допускаються в процесі програмування, набагато менше. В даний час налічується кілька сотень таких мов (без урахування їх діалектів).

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

Мова високого рівня «незрозумілий» комп'ютера, тому існують спеціальні програми-транслятори, що переводять оператори мови високого рівня в машинні коди.

Існують два типи програм-трансляторів: компілятор і інтерпретатор.

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

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

Істотним кроком щодо зниження трудомісткості створення програм при підвищенні їх якості, надійності і можливості використання в масовому порядку стало структуроване програмування. Його основні принципи наступні:

- Спадний програмування;

- Модульне програмування;

- Структурне програмування;

- Структурний контроль.

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

Ієрархічна модель будується за такими правилами:

- Кожен модуль може бути пов'язаний тільки з одним модулем верхнього рівня і з декількома модулями нижнього рівня;

- Для кожного модуля нижнього рівня є вихід в модуль верхнього рівня;

- Зв'язку між модулями організовуються зверху вниз;

- Звернення до одного модулю можливо кілька разів, при цьому він зображується один раз і оформляється як підпрограма.

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

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

структурне програмування - Це процес програмування на алгоритмічній мові з використанням певних конструкцій. При цьому слід дотримуватися таких правил:

- Будь-яка програма складається з урахуванням основних алгоритмічних структур трьох видів: лінійного, разветвляющегося, циклічного;

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

- Забороняється використовувати команду переходів «GOTO». Структурне програмування використовується в основному для програмування окремих модулів.

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

Властивості мов програмування:

зрозумілість

Зрозумілість (читабельність) конструкцій мови - це властивість, що забезпечує легкість сприйняття програм людиною.

надійність

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

гнучкість

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

простота

Простота мови забезпечує легкість розуміння семантики мовних конструкцій і запам'ятовування їх синтаксису.

природність

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

мобільність

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

вартість

Сумарна вартість використання мови програмування складається з кількох складових. У неї входять:

- Вартість навчання мови;

- Вартість створення програми;

- Вартість трансляції програми;

- Вартість виконання програми;

- Вартість супроводу програми.

Мови програмування або алгоритмічні мови класифікуються: За ступенем їхньої залежності від обчислювальної машини; по орієнтації на сферу застосування; за специфікою організаційної структури мовних конструкцій і т.п. (Рис. 6.1),

Мал. 6.1. Класифікація мов програмування

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

Знання концептуальних основ мов програмування з точки зору використання і реалізації базових мовних конструкцій дозволить:

- Більш обгрунтовано вибрати мову програмування для реалізації конкретного проекту;

- Розробляти більш ефективні алгоритми;

- Систематично поповнювати набір корисних мовних конструкцій;

- Прискорити вивчення нових мов програмування;

- Використовувати отримані знання як методологічну основу для розробки нових мов програмування;

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

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

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

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

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

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

Машинно-орієнтовані мови містять всі необхідні засоби для програмування будь-яких завдань. Однак вони застосовуються, коли потрібно створити особливо швидкодіючі програми при мінімальних обсягах використовуваної пам'яті. Зокрема, на цих мовах пишуть програми управління пристроями ЕОМ і попередньої обробки даних.

Більшість виробничих завдань вирішують за допомогою програм, написаних на процедурно - орієнтованих мовах. Кошти цих мов дозволяють найбільш просто описати часто зустрічаються фрагменти дій у відповідних завданнях. Процедурно-орієнтовані мови припускають знання користувача в області математичних (чисельних) методів і основ алгоритмізації (базова мова для науково-технічних розрахунків ФОРТРАН, БЕЙСІК (персональні ЕОМ - основний), сучасний ПАСКАЛЬ).

У процесі розвитку створені багатоцільові (універсальні) мови програмування, які б поєднували основні засоби і можливості багатьох процедурно - орієнтованих мов, наприклад: ПЛ / 1 -іспользуемий для вирішення задач обробки економічної і науково-технічної інформації, завдань управління об'єктами і т.п .; мова АДА - багатоцільовий стандартна мова, здатний замінити безліч інших мов і на тривалий період забезпечити розробку і вдосконалення програм забезпечення; мова модуль - об'єднує кошти і особливості. машинно-орієнтованих і процедурно - орієнтованих мов; включає засоби для написання підпрограм управління пристроями, управління потоками повідомлень, для чого традиційно використовувалися мови ассемблерного типу.

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

Кордон між проблемно - і процедурно - орієнтованими мовами окреслена не надто чітко (умовно) - ЛИСП, ПРОЛОГ.




Накопичувачі на магнітних дисках. | Накопичувачі на оптичних дисках | Флеш-пам'ять | Стратегія вирішення завдань. | Алгоритми (властивості, реалізація алгоритмів) | структури даних | Складові (складні). | Основні обчислювальні алгоритми. | Порівняльні оцінки алгоритмів | Система позначень в аналізі алгоритмів |

загрузка...
© um.co.ua - учбові матеріали та реферати