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

2.3.2. Тріада прагматичності програм

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

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

Рисунок 2.4. Тріада прагматичності програм

Основні відношення в цій тріаді наступні:

  • прагматика (програма – користувач);

  • обчислюваність (програма – процес виконання);

  • інтерфейс (процес виконання – користувач).

Відзначимо, що хоча на перших етапах розвитку понять програмування введені відношення є абстрактними та бідними, при подальшій конкретизації вони розгортаються до дуже важливих та багатих відношень. Так, відношення обчислюваності є предметом теорії алгоритмів, якій присвячено чимало книжок. Інше відношення «користувач – процес обчислення». Його можна називати по-різному: (людино-машинний) інтерфейс, діалог. Це відношення деталізується як в монографіях, так і в державних стандартах. Можна виокремлювати різні рівні абстракції, пов’язані з цим відношенням. Наприклад:

  1. Найбільш абстрактним буде вивчення відношення «користувач – процес обчислення « – в абстракції від програм та проблем.

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

  3. Ще більша конкретність з’явиться при урахуванні особливостей програм та проблем тощо.

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

Звичайно, є і багато інших конкретних рівнів.

2.3.3. Тріада основних понять програмування

Перейдемо до наступного кроку розвитку. Цей крок полягає в тому, щоб розкрити відношення адекватності. Це відношення розкривається у процесі створення, породження програм. Цей аспект називається генетичним аспектом програм. На цьому кроці з’являється поняття, що поєднує поняття програми та проблеми. Таким поняттям буде програмування (як процес), яке повинно пов’язати разом проблему і відповідну їй програму. Таким чином, побудовано нову тріаду розвитку: проблема (теза) – програма (антитеза) – процес програмування (синтез). Цю тріаду назвемо тріадою основних понять програмування, бо саме в ній уперше з'являється поняття програмування (тут терміни програмування та процес програмування розглядаємо як синоніми, проте будемо часто вживати саме термін «процес програмування», щоб підкреслити динамічний характер програмування). Крім того, термін «основні» тут використаний для того, щоб підкреслити, що суть програмування полягає саме у створенні необхідної єдності проблеми предметної області і програми, що використовується для розв’язання цієї проблеми.

Поняття основної тріади програмування пов’язані певними співвідношеннями (рис. 2.5). Так, поняття програмування та проблеми з’єднує відношення орієнтованості процесу програмування на розв'язок певної проблеми (проблемно-орієнтованість). Що ж стосується взаємодії понять програми та програмування, то тут виділимо два відношення:

  • відношення генетичності програм (відношення «програма – процес програмування»);

  • відношення експлікативності процесу програмування (відношення «процес програмування – програма»).

Для розкриття основної ідеї цих відношень розглянемо приклади.

Припустимо, що ви хочете купити мобільний телефон. Серед різних параметрів, які визначають ваш вибір, буде і параметр, пов’язаний із виробником телефону, тобто яка фірма і на якому заводі виробила телефон. Якщо це – бренд (на сучасному етапі – Nokia, Samsung, Motorola), то ви маєте більше довіри до якості телефону. Цей приклад демонструє важливість генетичного аспекту. Те саме стосується і генетичності програм: якщо програма (програмна система) розроблена відомою фірмою, яка використовує гарні технології розробки програм, то слід очікувати, що така програма буде більш надійною та ефективною, ніж програма, створена фірмою-одноденкою.

Відношення процесу програмування до програми буде конкретизовано як відношення уточнюваності (експлікативності процесу програмування).

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

Зробимо термінологічне зауваження: інколи вживають терміни «деталізація», «конкретизація», «декомпозиція». В англомовній літературі часто вживається термін «refinement», одним із смислів якого є уточнення.

Рисунок 2.5. Тріада основних понять програмування

Уведені відношення також пов'язані одне з одним. Так, можна говорити про те, що відношення адекватності програми проблемі є певним «добутком» відношень проблемно-орієнтованості та уточнюваності: чим вони кращі, тим кращою є адекватність програми. Тобто можна записати таку символічну (але не формальну) формулу:

(адекватність програми проблемі)=

=(проблемно-орієнтованість процесу програмування) *

*(експлікативність процесу програмування)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]