Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 основи програмування книга.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.77 Mб
Скачать

2.2.2. Про історію розвитку методів проектування програм

Як створювати великі комп'ютерні програми? Фахівець початку 50-х років на це питання відповів би так: “Потрібно використовувати бібліотеки стандартних підпрограм”. Пізніше такий підхід стали називати машинно-орієнтованим. Машинно-орієнтоване програмування використовує уявлення про комп'ютерну програму як про послідовність машинних команд, що обробляє дані, розташовані в чарунках пам'яті комп'ютера

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

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

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

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

С пеціальні класи систем програмування створюються для застосування й інших стилів програмування, підтримуваних відповідними мовами програмування – логічного програмування (Prolog), функціонального програмування (Lisp, FP), алгебраїчного програмування (Reduce, Obj, Aplan).

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

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

Алгебраїчне програмування використовує представлення про алгоритми, вироблене абстрактною алгеброю. Як і при алгебраїчних обчисленнях, дані алгебраїчних програм представляються формулами (алгебраїчними виразами), а їхня обробка – перетвореннями цих формул (переписуваннями). Системи припустимих перетворень формул – даних відповідної предметної області є основними семантичними одиницями алгебраїчної програми. Сукупність правил побудови формул і правил перетворення формул визначає предметну область, що називають алгебраїчною системою.

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

Процедурний алгоритм імперативний – він наказує виконувати строго визначену послідовність дій.

Логічний алгоритм декларативний – він описує логічні властивості спеціальної предметної області.

Тому процедурний стиль програмування називають імперативним програмуванням, а логічний стиль – декларативним програмуванням.

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

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