6.6. Структурний підхід
Хоча цю фразу різні програмісти розуміли по-різному, проте по суті вона характеризує систематичний математичний підхід до створення програмного забезпечення, зокрема вимагає розділення програми на невеликі логічно пов’язані завдання. Одна із специфічних цілей структурного програмування – зменшення використання так званих безумовних переходів, або операторів GOTO. Хоча оператор GOTO і зручний при написанні програм, але зазвичай ускладнює їх читання, а, отже, збільшує ймовірність пропуску можливої помилки.
Підкреслюючи необхідність суворої дисципліни при написанні програм, прихильники структурного програмування сподівалися обмежити все зростаючу складність розробки програмного забезпечення. Системи управління авіаційним рухом, тривимірні завдання математичної фізики, а пізніше системи управління космічними супутниками та кораблями та інші, вимагали таких великих програм, що на їх розробку витрачались роки. Причому писалися вони по частинах різними групами програмістів, які, у більшості випадків, і не знали інших частин програми. Дуже часто в результаті таких робіт з’являлися програмні системи вартістю у мільйони доларів, які були створені із запізненням на багато місяців та з тисячами помилок. Проблема набувала серйозного характеру, переростаючи у “кризу програмного забезпечення”.
Ніде криза не переживалася так гостро, як у військовому відомстві США, найбільішому споживачеві комп’ютерів та програм. Тому у 1973 р. Пентагон виділив близько половини з 7.5 млрд. доларів свого комп’ютерного бюджету на розвиток та супровід програмного забезпечення. Асигнування на апаратне забезпечення комп’ютерів, навпаки, було зменшене, не дивлячись на суттєве збільшення потужності та пам’яті комп’ютерів.
Значною мірою проблема породжувалася неймовірною мішаниною мов, на яких писалися програми особливо для вбудованих систем крихітних комп’ютерів (мікропроцесорів) балістичних ракет або для великих за розміром комп’ютерів, що передавали сигнали на кораблі або літаки. Як випливає з оглядів [2], на початку 70-х років існувало близько 450 мов високого рівня та їхніх діалектів, що використовували для кодування таких програм. А якщо врахувати мови Асемблера, то ця цифра доходила до 1.5 тис. Багато мов були розроблені лише для конкретних робіт, оскільки жодна їз універсальних мов програмування не містила засобів, які були необхідні при вирішенні конкретної задачі.
Практично всі основні концепції – процедурне, логічне, об’єктно-орієнтоване програмування були запропоновані у це бурхливе десятиліття. У наступні роки прогрес в автоматизації програмування йшов не у бік створення нових мов, а, навпаки, шляхом природного відбору. Мови програмування народжувалися та вмирали, але тільки деякі з них – найбільш стійкі та життєздатні – дожили до кінця XX століття і стали стандартними у міжнародному співтоваристві програмістів.
У січні 1975 р. Пентагон вирішив навести лад в “лінгвістичному хаосі”. Він заснував великий комітет HOLWG (High Order Language Working Group) – робочу групу з мови високого рівня, до якої увійшли представники всіх родів військ США, а також трьох союзників США по НАТО (Франція, Західна Німеччина, Великобританія). Комітету було доручено знайти або розробити мову, яка була б придатна для програмування всіх відомих вбудованих систем.
- Міністерство освіти і науки україни
- 9.12. Огляд WinDev 154
- 10. Історія операційних систем 169
- Список літератури 187
- Передмова
- 1. Передвісники комп’ютерної ери
- 1.1. Комп’ютерна програма–що це?
- 1.2. Доелектронна історія обчислювальної техніки
- Логарифмічна лінійка
- 1.3. Можливості двійкового коду
- 1.4. Розвиток двійкової системи
- 1.5. Винахід перших комп’ютерів
- Перша в історії працююча програмнокерована універсальна обчислювальна машина z-3 (1941 р.)
- 1.6. Гарвардська архітектура
- 1.7. Архітектура фон Неймана
- 1.8. Створення зрозумілих людині кодів
- 1.9. Крок на благо програмування
- 1.10. Можливості програмного управління
- 2. Нові мови програмування
- 2.1. Поневіряння пакетної обробки
- 2.2. Універсальна мова програмування
- 2.3. Усунення неоднозначності
- 2.4. Заклик до дотримання математичної строгості
- 2.5. Пошук та усунення помилок
- 2.6. Нелегке мистецтво програмування
- 2.7. Обчислювальна техніка та програмування в срср
- 3. Розквіт та хаос програмного забезпечення
- 3.1. Місце народження хакерів
- 3.2. Два чародії програмування
- 3.3. Перші промислові стандарти
- 3.4. Дружній інтерфейс
- 3.5. Прообраз сучасного «ноутбука»
- 4. Болісний шлях розвитку програмування
- 4.1. Плануюче обчислення
- 4.2. Внесок Великої Британії
- 4.3. Програмування англійською мовою
- 5. Три комерційні гіганти
- 5.1. Перша комерційна мова програмування
- 5.2. Обчислювальна техніка приходить у бізнес
- 5.3. Народження codasyl
- 5.4. Конференція в Цюріху
- 5.5. На шляху до сумісності комп’ютерів
- 5.6. Розбіжності Нового Світу
- 6. Десятиліття динамічного розвитку
- 6.1. Перші кроки непроцедурної мови
- 6.3. Алфавітне хрещення
- 6.4. Успіх та суперечки
- 6.5. Інженерний підхід
- 6.6. Структурний підхід
- 6.7. Поява мови “Ада”
- 7. Програмування приходить у наші домівки
- 7.1. Розквіт Бейсіка
- 7.2. Поява мови Модула-2
- 7.3. Музикальний француз
- 7.4.Довгожитель Lisp – інструмент функціонального програмування
- 7.5. Prolog – нездійснена мрія еом V покоління
- 7.6. Революція на ім’я Java
- 8. Історія і шляхи розвитку супер-еом
- 8.1. Усе починалося з менфреймов
- 8.2. Напрями розвитку обчислювальної техніки
- 8.3. Розвиток елементної бази. Закон Мура
- 8.4. Вдосконалення архітектури
- Звичайна послідовн обробка
- Конвеєрна обробка
- 9. Сучасний стан та перспективи розвитку програмування
- 9.1. Криза у програмуванні
- 9.2. Методологія процедурно-орієнтованогопрограмування
- 9.3. Методологія об’єктно-орієнтованогопрограмування
- 9.4. Методологія об’єктно-орієнтованогоаналізу та проектування
- 9.5. Технології програмування
- 9.6. Case –засоби
- 9.7. Методологія rad
- 9.11.1. Знайомство с LightSwitch
- 9.11.2. Архитектура LightSwitch
- 9.11.3. Створення проекту в Microsoft Visual Studio LightSwitch
- 9.11.4. Дванадцять основних переваг LightSwitch
- 9.12. Огляд WinDev
- 9.12.1. ПризначенняWinDev
- 9.12.2. Деякі характеристики wLanguage
- 9.13. Технологія model checking
- 9.14. NeoBook – программирование для непрограммистов
- 9.14.1. Введення для секретарок
- 9.14.3. Можливості та області застосування
- 9.15. Файлові системи найближчого майбутнього
- 9.15.1. Зетта-повінь настає
- 9.15.2. Файлова система zfs
- 9.15.3. Файлова системаBtrfs
- 9.15.4. Файлова системаHammer
- 10. Історія операційних систем
- 10.1. Послідовна обробка даних
- 10.2. Прості пакетні системи
- 10.3. Багатозадачні пакетні системи
- 10.4. Системи з режимом розподілу часу
- 10.5. Основні досягнення
- 10.6. Сучасні системи unix
- 10.7. Os/2. Битва двох гігантів
- Список літератури