
- •2.3 Розвиток основних понять програмування 53
- •1. Формалізація простої мови програмування
- •1.1 Неформальний опис простої мови програмування
- •1.2 Формальний опис синтаксису мови sipl
- •Малюнок 1.1. Дерево синтаксичного виводу програми gcd
- •1.3 Формальний опис семантики мови sipl
- •Малюнок 1.3. Алгебра даних мови sipl
- •1.3.2 Функції
- •1.3.3 Композиції
- •1.3.4 Програмні алгебри
- •Малюнок 1.4. Алгебра функцій (програмна алгебра)
- •1.3.5 Визначення семантичних термів
- •1.3.6 Побудова семантичного терму програми
- •1.3.7 Обчислення значень семантичних термів
- •1.3.8 Загальна схема формалізації мови sipl
- •Малюнок 1.5 Схема визначення композиційної семантики
- •1.4 Властивості програмної алгебри
- •2. Розвиток основних понять програмування
- •2.1 Аналіз словникових визначень поняття програми
- •2.2 Розвиток поняття програми з гносеологічної точки зору
- •2.3 Розвиток основних понять програмування
- •2.3.1 Початкова тріада понять програмування
- •Малюнок 2.2. Сфера інформатизації як особлива сфера суспільства
- •Малюнок 2.3. Тріада цільового призначення програм
- •2.3.2 Тріада прагматичності програм
- •Малюнок 2.4. Тріада прагматичності програм
- •2.3.3 Тріада основних понять програмування
- •Малюнок 2.5. Тріада основних понять програмування
- •2.3.4 Пентада основних понять програмування
- •Малюнок 2.6. Пентада основних понять програмування
- •2.4 Розвиток основних програмних понять
- •2.4.1 Тріада основних програмних понять
- •Малюнок 2.7. Програма як діалектичне заперечення проблеми
- •2.4.2 Пентада основних програмних понять
- •2.5 Сутнісні та семіотичні аспекти програм
- •2.6 Програми і мови
- •2.7 Пентада програмних понять процесного типу
- •3. Формалізація програмних понять
- •3.1 Теоретико-функціональна формалізація
- •3.2 Класи функцій
- •3.3 Програмні системи
- •3.4 Рівні конкретизації програмних систем
- •4. Синтактика: формальні мови та граматики
- •4.1 Розвиток понять формальної мови та породжучої граматики
- •4.2 Визначення основних понять формальних мов
- •4.3 Операції над формальними мовами
- •4.3 Породжуючі граматики
- •4.5 Ієрархія граматик Хомського
- •4.6 Автоматні формалізми сприйняття мов
- •4.6.1 Машини Тьюрінга
- •4.6.2 Еквівалентність машин Тьюрінга та породжуючих граматик
- •4.6.3 Лінійно-обмежені автомати
- •4.6.4 Магазинні автомати
- •4.6.5 Скінченні автомати
- •4.7 Методи подання синтаксису мов програмування
- •4.7.1 Нормальні форми Бекуса–Наура
- •4.7.2 Модифіковані нормальні форми Бекуса–Наура
- •4.7.3 Синтаксичні діаграми
- •4.8 Властивості контекстно-вільних граматик
- •4.8.1 Видалення несуттєвих символів
- •4.8.2 Видалення -правил
- •4.8.3 Нормальна форма Хомського
- •4.8.4 Нормальна форма Грейбах
- •4.8.5 Рекурсивні нетермінали
- •4.9 Властивості контекстно-вільних мов
- •4.10 Операції над формальними мовами
- •4.11 Дерева виводу
- •4.12 Однозначні та неоднозначні граматики
- •4.13 Розв’язні та нерозв’язні проблеми кв-граматик та мов
- •4.14 Рівняння в алгебрах формальних мов
- •5. Теорія рекурсії (теорія найменшої нерухомої точки)
- •5.1 Рекурсивні визначення та рекурсивні рівняння
- •5.2 Частково впорядковані множини, границі ланцюгів та -області
- •5.3 Неперервні відображення
- •5.4 Теореми про нерухомі точки
- •5.5 Конструювання похідних -областей
- •5.6 Властивості оператора найменшої нерухомої точки
- •5.7 Застосування теорії ннт
- •5.7.1 Уточнення синтаксису мов програмування
- •5.7.2 Семантика мов програмування
- •5.7.3 Рекурсивні розширення мови sipl
2.3.1 Початкова тріада понять програмування
При пізнанні сутності програм та програмування ми повинні в першу виходити з єдності трьох визначень їх понять: одиничності, особливості та всезагальності. Цим категоріям відповідають такі моменти розгляду досліджуваного предмету, як елемент, частина та ціле. Зрозуміло, що сфера програмування належить до такої цілісності, як людство (суспільство). Але це занадто багата цілісність. Вона містить такі особливості, як сфери освіти, охорони здоров’я, оборони та таке інше. Серед цих особливих сфер є і сфера діяльності, яка пов’язана з програмами та програмуванням. Назвемо цю сферу сферою інформатизації (це занадто широко, але і більш вузький термін важко вказати). Тому згідно принципу програмологічної проекції будемо як всезагальне для теорії програмування брати цю сферу (малюнок 2.2).
Малюнок 2.2. Сфера інформатизації як особлива сфера суспільства
В цій сфері найважливішим чинником (частиною всезагального) буде поняття користувача (його елементами будуть конкретні користувачі). Саме це поняття – користувача (пригадаймо вислів старогрецького філософа Протагора «Людина є мірило всіх речей») – і є початковим пунктом розвитку. А що можна назвати діалектичним запереченням людини (і користувача)? Людині (як і користувачу) протистоїть зовнішній світ, той світ, в якому людина існує, який вона сприймає перш за все як сукупність проблем, що потребують розв'язку. Тому можна вважати, що діалектичним запереченням поняття користувача є поняття проблеми. Згідно тріади розвитку наступний крок приведе до поняття, яке є синтезом понять користувача і проблема, яке може також розглядатися як розвиток користувача. Це – розв'язок проблеми. Цей розв'язок, враховуючи принцип програмологічної проекції, слід конкретизувати стосовно області програмування. В цій області розв'язком вважається програма (яка повинна допомогти користувачу розв'язати його проблему). (Точніше кажучи, нас цікавить програмний розв'язок. Цей розв'язок з’являється саме як програма, як план. Тут можна навести слова К.Маркса про те, що найгірший архітектор відрізняється від бджоли тим, що попередньо має ідеальний образ, план. Таким чином, отримали першу тріаду основних понять програмування (малюнок 2.3). Тут користувач – теза, проблема – антитеза, програма – синтез.
Ця тріада вперше вводить термін "програма", і саме ця тріада задає умови існування і ціль (мету) програм. Тому цю тріаду доцільно назвати тріадою цільового призначення програм. Ціль програм полягає у тому, що вони є засобами розв'язку певних проблем користувача.
В цій тріаді розвитку можна також говорити про аналогії між введеними поняттями та такими категоріями гносеології як «суб'єкт–мета–засіб». Іншими словами, можна говорити про те, що поняття користувача, проблеми та програми є програмологічними проекціями відповідно категорій суб’єкта, мети та засобу.
Малюнок 2.3. Тріада цільового призначення програм
Відзначимо, що введенням понять користувача, проблеми та програми не вичерпується розвиток понять програмування. Дуже важливо, що введені поняття пов'язані низкою співвідношень. Дійсно, розглянемо користувача та його проблеми. Серед них він повинен в першу чергу вирішувати ті проблеми, які є важливими для нього. Використовуючи традиційний для наукових досліджень термін «актуальний», будемо говорити, що основним відношенням між користувачем та проблемами є відношення актуальності (проблеми для користувача).
Далі, розглянемо, який зв’язок між проблемами та програмами. Якщо користувач обрав для розв’язку актуальну для нього проблема, то йому бажано мати програму, яка найбільш відповідним чином (найбільш адекватно) розв’язує цю проблему. Тому поняття проблеми і програми зв'язані відношенням адекватності (відповідності, правильності програми для розв'язку проблеми).
Поняття користувача і проблеми зв'язує відношення прагматичності (від грецького pragma – діло, дія). Відмітимо, що назва цього відношення має і певну епістемологічну обґрунтованість: "користувач" походить від "користуватися", «діяти».
Сформульовані відношення відображено на малюнку 2.3.
Тепер слід зробити наступний крок розвитку. Цей наступний крок полягає в розкритті відношення прагматичності.