- •Лекція №1 з курсу: «Застосування засобів ооп в лінгвістичних задачах»
- •1.6. Програмування під Windows
- •1. Об’єктно-орієнтоване програмування, основна методологія програмування 90 років.
- •1. 1. Покоління мов програмування.
- •1.2. Топологія мов першого і початку другого покоління.
- •1.3. Топологія мов другого і раннього третього покоління.
- •1.4. Топологія мов кінця третього покоління.
- •1.5. Топологія об’єктних і об’єктно-орієнтованих мов.
- •1.6. Програмування в середовищі Windows1
- •1.6.1 Подієво-кероване програмування
1.2. Топологія мов першого і початку другого покоління.
Для пояснення вище наведеного розглянемо структури, що характерні для кожного покоління. На рис. 1.2 показана топологія, типова для більшості мов першого покоління і першої стадії другого покоління. Коли кажемо "топологія", ми маємо на увазі основні елементи мови програмування і їх взаємодії. Для таких мов, як FORTRAN і COBOL, основним будівельним блоком є підпрограма (параграф в термінах COBOL). Програми, що реалізуються на таких мовах, мають відносно просту структуру, що складається тільки із глобальних даних і підпрограм. Стрілками на рисунку позначено вплив підпрограм на дані. В процесі розробки можна логічно розділити дані різного типу, але механізми мов практично не підтримують такого розділення. Помилка в деякій частині програми може мати досить серйозні наслідки, в зв’язку з тим що область даних відкрита всім підпрограмам. В більшості системах важко гарантувати цілісність даних при внесені змін в будь-яку частину системи. В процесі експлуатації вже через деякий час виникає плутанина за рахунок великої кількості перехресних зв’язків між підпрограмами, заплутаних схем управління, незрозумілого змісту даних, що загрожують надійності системи і знижують зрозумілість програми.
Рис. 1.2. Топологія мов першого і початку другого покоління.
1.3. Топологія мов другого і раннього третього покоління.
Починаючи з середини 60-х років стали усвідомлювати роль підпрограм як важливого проміжного ланцюга між задачею що вирішується і комп’ютером [1].
Використання підпрограм як механізму абстрагування мало три суттєвих наслідки. По-перше, були розроблені мови, які підтримують різноманітні механізми передачі параметрів. По-друге, були закладена база структурного програмування, що визначилась в мовній підтримці механізмів вкладеності підпрограм і в науковому дослідженні структур управління і області видимості. По-третє, виникли методи структурного проектування, що стимулювали розробників створювати великі системи, використовуючи підпрограми як готові будівельні блоки. Архітектура мов програмування цього періоді (рис. 1.3), представляє собою варіації на теми попереднього покоління. В неї внесенні деякі удосконалення, а саме, підсилено управління алгоритмічними абстракціями, але залишається невирішена проблема програмування "в великому" і проектування даних.
Рис. 1.3. Топологія мов пізнього другого і раннього третього покоління.
1.4. Топологія мов кінця третього покоління.
Починаючи з FORTRAN II і далі, для рішення задач програмування "в великому" почав розвиватися новий важливий механізм структурування. Зростання програмних проектів означає збільшення розмірів і колективів програмістів, і як наслідок, необхідність незалежної розробки окремих частин проекту. Відповіддю на цю необхідність стало окремо компільований модуль, який спочатку був випадковим набором даних і підпрограмам (рис. 1.4). В такі модулі збирали підпрограми, які, як здавалося, швидше всього будуть змінюватися разом, і мало хто розглядав їх як нову техніку абстракції. В більшості мов цього покоління, хоча і підтримувалося модульне програмування, але не вводилося ніяких правил, що забезпечують узгодження інтерфейсів модулів. Програміст, що розробляє підпрограму в одному з модулів, міг, наприклад, очікувати, що її будуть викликати з трьома параметрами: дійсним числом, масивом з десяти елементів і цілим числом, що означає логічне значення. Але в деякому іншому модулі, ця підпрограма могла помилково викликатися з фактичними параметрами у вигляді: цілого числа, масиву з п’яти елементів і від’ємного числа. Аналогічно, один з модулів міг встановити спільну область даних і зчитувати, що це його власна область, а другий модуль міг порушувати це припущення, вільно маніпулюючи з цими даними. Нажаль, оскільки більшість мов представляло в ліпшому випадку рудиментарну підтримку абстрактних даних і типів, такі помилки виявлялися тільки при виконанні програми.
Рис. 1.4. Топологія мов кінця третього покоління.
