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

2.3. Усунення неоднозначності

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

Оскільки, щоб передбачити будь-яку випадковість, треба написати сотні, а то і тисячі команд, природно, зростають витрати і вкрадаються помилки. Все це породжує, за словами голландського вченого Едсгера Дейкстри, “величезну безліч прикрих дрібниць”. Дейкстра – науковий співробітник фірми “Бароуз” (BURROUGHS), один з найбільш авторитетних теоретиків програмування. Не один рік він стверджував, що більшості помилок можна уникнути, якщо вести боротьбу з недбалим стилем у програмуванні, яке розвивалося в основному не як строга наука, а як мистецтво, засноване на інтуїції та особистому досвіді.

Свій плідний внесок в теорію програмування Дейкстра зробив у 1968 р. у віці 38 років. У невеликій роботі під назвою “Замітки по структурному програмуванню” він доводив, що більшість програм невиправдано складні через відсутність в них чіткої математичної структури. Стан справ в області проектування програмного забезпечення викликав неспокій багатьох фахівців з обчислювальної техніки. Все частіше роботи зі створення нових систем програмного забезпечення вартістю у мільйони доларів не вкладалися в заздалегідь встановлені строки, а потім у процесі використання в них виявлялися тисячі помилок. Якраз у той час, коли Дейкстра писав свою роботу, проходила міжнародна конференція, на якій виникла ситуація, яка отримала назву “Криза програмного забезпечення”.

2.4. Заклик до дотримання математичної строгості

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

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

Спочатку ідеї Дейкстри викликали лише усмішку серед програмістів, проте на початку 70-х років група співробітників фірми ІВМ під керівництвом фахівця із системного програмування Харлана Міллса застосувала структурне програмування для створення інформаційного банку даних газети “Нью-Йорк Таймс”. Робота над проектом йшла на подив гладко, а закінчена програма практично не містила помилок.

З тих пір структурне програмування почало робити помітний вплив на розвиток програмного забезпечення всіх рангів.

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