Меню
Головна
 
Головна arrow Філософія arrow Історія, філософія і методологія техніки та інформатики
< Попередня   ЗМІСТ   Наступна >

Програма як стадія концептуальної трансдукції

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

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

Які етапи розробки програми? У широко відомих основи програмної інженерії виділяють чотири етапи історії розгортання потенціалу програми: 1) проектування; 2) конструювання; 3) тестування; 4) супровід. Кожен з них, у свою чергу, складається з багатьох стадій, які немає необхідності перераховувати. Однак варто звернути увагу на типові фази розробки програми:

1. Формулювання загальної ідеї програми.

2. Прийняття рішення про потенційних користувачів програми.

3. Визначення типу комп'ютера, на якому програма буде виконуватися.

4. Вибір мови програмування.

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

6. Написання програми.

7. Тестування програми без участі користувачів (альфа-тестування) та з їх участю (бета-тестування).

8. Виправлення помилок, виявлених під час тестування.

9. Випуск остаточної версії програми.

Чим відрізняється програма від алгоритму? Це питання, як справедливо зазначають експерти, не став предметом ретельного аналізу. Культивуються в основному дві точки зору. Відповідно до першої з них алгоритм є математичною, а програма лінгвістичною одиницею. Однак більш популярна позиція, згідно з якою алгоритм і програма співвідносяться як абстрактне і конкретне. На думку Р. Тернера і А. Ідена друга точка зору відроджує платонізм: тут програма виступає проявом початкової сутності, якою є алгоритм1. Таке розрізнення абстрактного і конкретного органічно поєднується з концепцією абстракцій, на неспроможність якої неодноразово зверталася увага раніше. Алгоритми входять до складу підстав інформатики, тобто тієї області, де йдеться про принципи. У трансдукционном циклі алгоритми передують програмами, які їх реалізують, - цим сказано головне щодо єдності та відмінності алгоритмів і програм. Що ж стосується віднесення алгоритмів до математики, а програм - до лінгвістики, то така позиція, очевидно, пов'язана з ігноруванням самостійності інформатики як окремої науки. І алгоритми і програми в рамках інформатики висловлюють саме її специфіку.

Чим програма відрізняється від її специфікації? Специфікація може проводитися різними засобами. Зокрема, вона багато в чому визначається обраною мовою програмування. На відміну від програми специфікація не дає прямої відповіді на питання про те, з допомогою яких дій можна досягти поставленої мети. Для специфікації актуальне питання "Що?", для програми - "Як?". На жаль, питання про відмінність програми від специфікації вкрай рідко стає предметом ретельного аналізу. Тим не менш Р. Тернер і А. Ідеї визнали можливим виділити три актуальні точки зору.

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

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

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

Як програма співвідноситься з її здійсненням? На цей рахунок існує кілька точок зору. Часто, не особливо вдаючись у концептуальні тонкощі, здійснення розглядається як конкретизація програми. Але, як уже зазначалося, перехід від абстрактного до конкретного є спадщиною неспроможною теорії абстракції. Відповідно до іншої точки зору виконання трактується як ізоморфне відображення програми. Подібну позицію захищає, наприклад, Д. Чал мерс1. Його головна ідея полягає в тому, що фізична система виконує обчислення, якщо її причинна структура відображає його формальну структуру. З такою позицією важко не погодитися, однак доцільно зробити принаймні два уточнення. По-перше, в інформатиці немає фізичних систем: те, що Чалмерс називає "фізичною системою", насправді є процесором. По-друге, відносно ізоморфізму знаходяться не тільки структури двох одиниць, але і взагалі все, що до них належить, - не тільки зв'язок між конституентами, але і вони самі.

Американський дослідник У. Рапапорт вважає, що виконання програми є її семантичної інтерпретацією як абстрактної формальної системи. Здійснення реалізується як троїста відношення: / (здійснення) є реалізацією абстракції А (програми) за допомогою медіума М (комп'ютера). Рапапорт розглядає мозок і комп'ютер одноманітно: обидва є медіумами по реалізації уявних абстракцій. Не будемо в черговий раз направляти критичні стріли в теорії абстракцій. Зауважимо, що У. Рапапорт цілком правомірно ставить питання про інтерпретацію програми та її виконанні, але неправомірно пов'язує програму з синтактикой, а її здійснення з семантикою. Синтактика і семантика, а також прагматика характерні як для програми, так і для її виконання. В якому б вигляді не існувала програма, завжди є можливість розглянути її об'єктний, ментальний і мовний рівень, а потім при бажанні звернутися до синтактике, семантиці або прагматиці. Що стосується семантики, то вона характерна для всіх мов програмування. Від них семантика в модифікованому вигляді переноситься на програми і далі на їх виконання. Таким чином, програма та її виконання відрізняються один від одного як дві стадії концептуальної трансдукції, між якими існують відношення еквівалентності.

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

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

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

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

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

Можна верифікувати програму? Можна довести її правильність, слушність? Або ж слід задовольнитися досягнутим? На що ми можемо сподіватися у своєму прагненні створити гранично якісне програмне забезпечення? Очевидно, що поставлені питання тісно пов'язані з проблемою істини. Але чи припустимо використовувати концепт істини при оцінці програми? Всі ці питання у винятково гострій філософській манері обговорювалися канадським дослідником Б. Смітом.

Теоретична розробка

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

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

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

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

Історичний екскурс

Зміна політики тестування з боку самих програмістів представляє значний інтерес. В 1960-е рр. прагнули провести ретельне тестування, враховуючи буквально всі дані. Такий шлях тестування був визнаний неекономним. У наступному десятилітті прагнули переконатися в правильності роботи програм, керуючись, по суті, прагматичним критерієм. У цей же період особливу увагу приділяли пошуку помилок. В 1980-е рр. з метою попередження помилок заздалегідь проектували різні тести. У 1990-ті рр. стали прагнути до забезпечення якості програмного продукту в цілому і всіх його модулів. Починаючи з 2000-х рр. велика увага приділяється циклів тестування, автоматичної перевірки, підготовки фахівців відповідного профілю.

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

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

1. Каскадна модель життєвого циклу програми (модель водоспаду) була запропонована в 1970 р. У. Ройсом. Зазвичай в неї включають не менше шести фаз: 1) планування; 2) специфікація; 3) аналіз і проектування; 4) конструювання; 5) інтеграція і проектування; 6) експлуатація та підтримка.

2. Инкрементальная і итеративная модель життєвого циклу програми створена на початку 1990-х рр. Е. Коуберном. Вимога инкременталъности полягає в тому, що система створюється поступово, але її фази реалізуються в довільній послідовності і в різному темпі. Ітеративності полягає в багаторазовому повторенні одних і тих же операцій. Наприклад, тестування не обов'язково здійснюється лише на заключній стадії створення програми.

3. Спіральна модель розроблена Б. Боэмом в 1988 р. 3 Її головна особливість полягає в поєднанні з методом ітерацій прототипування. Прототип є діючим компонентом програмного забезпечення, що реалізує окремі функції і зовнішні інтерфейси. Особлива увага приділяється ризикам розробки неякісного програмного продукту.

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

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

Висновки

1. Програма є стадією реалізації трансдукції інформатики як науки.

2. Написання програми - це, по суті, моделювання всередині інформатики.

3. Специфікація дозволяє урахувати конкретну обстановку, що є характерним для процесу моделювання.

4. Виконання програми - це експеримент у його інформаційному вигляді.

 
< Попередня   ЗМІСТ   Наступна >

Схожі тими

Програми для ЕОМ
Стадія виконання бюджету
Програма "Московська якість"
Призначення виконавчого провадження та його стадії
Стадія зрілості організації
Стадія складання проекту бюджету
Концептуальні моделі ефективності
Стадія створення організації
Концептуальні основи розробки управлінських рішень
КОНЦЕПТУАЛЬНІ ОСНОВИ ПЕДАГОГІЧНОЇ ПСИХОЛОГІЇ
 
Предмети
Банківська справа
БЖД
Бухоблік і аудит
Документознавство
Екологія
Економіка
Етика і естетика
Інвестування
Інформатика
Історія
Культурологія
Література
Логістика
Маркетинг
Медицина
Менеджмент
Політологія
Політекономія
Право
Психологія
Соціологія
Страхова справа
Товарознавство
Філософія
Фінанси