
- •Міністерство освіти і науки україни
- •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. Битва двох гігантів
- •Список літератури
2.5. Пошук та усунення помилок
Едсгер Дейкстра, зробивши свій внесок до перегляду принципів складання програм і створення самих мов програмування, на цьому не заспокоївся. Не менше, ніж оператор GOTO, його дратували відлагодження та тестування – складові завершального етапу створення будь-якого програмного забезпечення. На тестування та відлагодження часто потрібно більше часу, ніж на інші фази розробки програми, разом узяті. До того ж, як вказував Дейкстра, тестування може показати лише наявність помилок, але не їх відсутність. Навіть коли здавалося, що програма повністю відлагоджена, нові вхідні дані могли викликати відмову, або, як говорять програмісти, “аварію”.
Замість того, щоб займатися тестуванням програм, Дейкстра запропонував перевіряти їх математичними методами. Стосовно маленьких програм йому вдалося добитися певних успіхів, проте великі програми не піддавалися таким прийомам. Дейкстра визнав, що це завдання важко досяжне, але не обов’язково нереальне.
Останнім часом широко звстосовується технологія попереднього моделювання та верифікації і розробки програм за допомогою скінченних автоматів – MODEL CHECKING. При цьому кожна верхівка таких автоматів передбачає опис дій, які мають виконуватись у відповідному стані автомату. Вони описуються спеціальним чином за допомогоютак званих структур Крипкеіззастосуванням темпоральної логіки. Остання визначає порядок виконання певних дій і забезпечує синхронізацію виконання окремих гілок (потоків) програм у часі. Ця технологія широко застосовується для створення розподілених та паралельних програм і на даний час має реальне промислове впровадження. Автори цієї технології – Е. Кларк, О. Грамберг та Д. Пелед нагароджені престижною премією імені А. Тюринга в галузі комп'ютерних наук.
2.6. Нелегке мистецтво програмування
Написання комп’ютерних програм вимагає особливої точності. Це справедливо для програмного забезпечення будь-якого рангу – від простої до складної програми, наприклад, для управління повітряним рухом у районі аеропорту.
Складання програм було б особливо складним, якби для цього використовувалися нулі та одиниці двійкового коду. На самому нижньому рівні це – єдиний доступний комп’ютеру спосіб спілкування. Проте програмісти створили спеціальні мови, які дозволяють конструювати набори машинних команд, не оперуючи рядками, що складаються з двійкових символів. Існує безліч мов високого рівня, які призначені для розв’язку певного класу завдань. Жодна з цих мов не може бути повністю визнана універсальною. Наприклад, мова для розробки наукових програм-додатків погано підходить для програми обробки текстової інформації. Хоча в принципі її можна було б пристосувати для нового завдання, але це зажадало б певних витрат та зусиль.
Таким чином, вибір відповідної мови високого рівня – це перший крок у процесі створення програмного забезпечення. Наступний крок полягає в описі як самої роботи, що покладається на комп’ютері, так і методів її виконання. Такий опис робиться у вигляді алгоритму, тобто складання покрокового плану дій. Алгоритм повинен бути бездоганний з логічної точки зору – інакше в результаті виконання програми або виходять неправильні результати, або програма зовсім не працюватиме.
Нарешті, програміст повинен проаналізувати які дані підлягають обробці, підібравши для них якнайкращі методи обробки. Якщо програма пов’язана з процесами, де вирішальну роль видіграє чинник часу, то найкращими методами вважаються ті, які забезпечують максимальну швидкість.