- •Парадигми програмування
- •8.080401: Інформаційні управляючі системи та технології
- •Тема 1. Парадигма імперативного програмування Лекція 1. Огляд парадигм програмування
- •1.1 Базові поняття і визначення
- •1.2 Класифікація парадигм програмування
- •Парадигми
- •Объектно-ориентированные возможности
- •Функциональные возможности
- •1.3 Огляд парадигми імперативного програмування
- •1.4 Програмування, кероване подіями
- •1.5 Узгоджене програмування і паралельні обчислення
- •1.6. Підтримка різних парадигм програмування в ms.Net
- •Тема 2. Парадигма об’єктно-орієнтованого програмування Лекція 2. Об'єктно-орієнтоване програмування та його реалізація в c# на платформі ms.Net
- •2.1 Основні принципи об’єктно-орієнтованого програмування
- •2.2 Чисто об'єктно-орієнтовані і гібридні мови програмування
- •2.3. Реалізація принципів ооп в мові c#
- •Тема 3. Програмування за прототипом і сценарне програмування Лекція 3. Програмування за прототипом і сценарне програмування
- •3.1 Програмування за прототипом
- •3.2 Сценарне програмування
- •Тема 4. Парадигма компонентного програмування Лекція 4. Компонентне програмування як розвиток об’єктного
- •4.1 Основні ідеї компонентної розробки
- •4.2 Компонентна об'єктна модель com (Component Object Model).
- •4.3. Технологія ActiveX – основні можливості
- •Лекція 5. Компонентне програмування в .Net
- •5.1 Основні концепції платформи ms.Net
- •5.1.1 Структура fcl
- •5.1.2 Загально мовне середовище виконання – clr – динамічна складова ms.Net Framework
- •5.1.3. Система типів даних в Microsoft .Net
- •Управління типами в cts
- •5.2. Розробка компонентів на платформі .Net
- •5.3. Поняття збірки і маніфесту в .Net
- •1. Створення dll-бібліотеки
- •2. Створення консольного проекту для тестування функції з бібліотеки.
- •3. Підключення проекту бібліотеки до консольного проекту.
- •4. Встановлення стартового проекту.
- •5. Створення Windows-проекту в тому самому рішенні.
- •6. Робимо проект стартовим і запускаємо на виконання. Результат:
- •7. Документування коду
- •Лекція 6. Візуальне програмування
- •6.1. Парадигма візуального програмування
- •1. Підключення до сервера бд
- •2. Створення власної бд і таблиць
- •3. Заповнення таблиці тестовими даними
- •4. Створення Windows-застосунку (форми)
- •5. Зв'язування елементів форми з джерелом даних
- •7. Створення запитів до даних і їх відображення на формі у вигляді таблиці (Grid)
- •Тема 5. Парадигма декларативного програмування Лекція 7. Основи парадигми декларативного програмування
- •7.1 Основи парадигми декларативного програмування
- •7.2 Основи функціонального програмування
- •Основи Лісп
- •7.3 Основи логічного програмування
- •7.4 Основи Пролог
- •Лекція 8. Основи xml
- •8.1. Визначення і структура xml-документа
- •8.2. Створення xml-документа
- •8.2.1. Структура xml-документа
- •8.3. Способи відображення xml-документа
- •8.4. Правила створення коректного xml-документа
- •8.4.1. Визначення коректного документа
- •8.4.2. Складові частини коректно сформованого хмl-документа
- •8.4.3. Додавання елементів в документ
- •8.4.4. Типи вмісту елементу
- •Лекція 9. Робота з xml в .Net
- •9.1. Класи для роботи з xml .Net
- •9.2. Читання і запис потоків даних Xml
- •9.2.1. Використання класу XmlReader
- •9.2.2. Методи читання даних
- •9.2.3. Контроль типів даних при читанні Xml-документа
- •9.3. Створення xml-документа в Visual Studio
- •Лекція 10. Створення xml-документів в .Net
- •10.1. Використання класу XmlWriter - запис потоків даних Xml
- •10.2. Використання dom в .Net
- •10.2.1. Читання xml-документа за допомогою XmlNodeList
- •10.2.2. Вставка елементів (вузлів) в xml- документ
- •10.3. Обробка атрибутів
- •10.3.1. Витягання атрибутів за допомогою XmlReader
- •10.3.2. Вставка атрибутів в документ за допомогою XmlWriter
- •Лекція 11. Елементи функціонального програмування в c#
- •11.1. Елементи функціонального програмування в c#
- •11.2. Делегати
- •11.3. Лямбда-вирази і лямбда-функції
- •Приклади
- •Лекція 12. Мова linq
- •2. Linq: узагальнення і інтерфейси
- •3. Основні операції запиту
- •4. Перетворення даних з linq
- •12.1. Основи мови linq
- •1.1 Джерело даних
- •1.2. Запит
- •1.3. Виконання запиту
- •12.2. Linq: узагальнення і інтерфейси
- •12.2.1. Змінні iEnumerable в запитах linq
- •12.3. Основні операції запиту
- •12.3.1. Визначення джерела даних
- •12.3.2. Фільтрація
- •12.3.3. Впорядкування
- •12.3.4. Угрупування
- •12.4. Перетворення даних з linq
- •12.4.1. З'єднання декількох вхідних послідовностей в одну вихідну
- •12.3.5. З'єднання
- •12.3.6. Вибір (Проектування)
- •12.4.2. Вибір підмножини кожного вихідного елементу
- •12.4.3. Перетворення об'єктів, що знаходяться в пам'яті, в xml
- •12.4.4. Виконання операцій над вихідними елементами
- •12.5. Зв'язки типів в операціях запиту
- •12.5.1. Запити, що не виконують перетворення вихідних даних
- •12.5.2. Запити, що виконують перетворення вихідних даних
- •12.5. 3. Дозвіл компілятору визначати відомості про типа
- •12.6. Синтаксис запиту або синтаксис методу
- •12.6.1. Методи розширення стандартних операторів запитів
- •12.6.2. Лямбда-вирази
- •Тема 7. Парадигма агентно-орієнтованого програмування Лекція 13. Агентно-орієнтоване програмування
- •13.1 Основні поняття агентно-орієнтованої парадигми програмування
- •1. За архітектурою побудови агентів і їх властивостями:
- •За функціональним призначенням:
- •3. За здатністю до мобільності:
- •3Адачні агенти
- •13.2 Мультиагентні інформаційні системи
- •1. Формальна мова опису системи моделей (ментальної, соціальної):
- •2. Інструменти перетворення звичайних програм у відповідні агентні програми.
- •13.3. Приклади практичного застосування агентної парадигми
- •3Асоби пошуку в Інтернет
- •Тема 8. Парадигма теоретичного програмування Лекція 14. Основні парадигми теоретичного програмування
- •Основна література
- •Додаткова література
Тема 3. Програмування за прототипом і сценарне програмування Лекція 3. Програмування за прототипом і сценарне програмування
3.1 Програмування за прототипом
В цьому стилі програмування поняття класу відсутнє, а повторне використання (наслідування) виконується клонуванням існуючого екземпляра об'єкту - прототипу.
На відміну від стилю ООП, базованого на класах і концентруючого увагу розробника на ієрархії класів і на зв’язках між ними, стиль прототипного програмування загострює увагу на поведінці невеликої кількості «зразків», які далі використовуються як «базові» об'єкти для створення інших об'єктів.
Створення нового об'єкту виконується одним з двох методів: шляхом клонування існуючого об'єкту, або шляхом створення об'єкту «з нуля». Для створення об'єкту з нуля надаються синтаксичні засоби додавання властивостей і методів в об'єкт. Потім, для побудованого об'єкту може бути отримана повна копія, клон. В процесі клонування копія успадковує всі характеристики свого прототипу, але з цієї миті стає самостійною і може бути змінена. В деяких реалізаціях копії зберігають посилання на об'єкти-прототипи, делегуючи їм частину своєї функціональності; при цьому зміна прототипу може торкнутися всіх його копій. В інших реалізаціях нові об'єкти знаходять повну незалежність від своїх прототипів: прототип копіюється один-в-один, з усіма методами і атрибутами, і копії привласнюється нове ім'я (посилання). Перевага даного підходу полягає в тому, що творець копії може її міняти, не побоюючись побічних ефектів серед інших нащадків свого предка. Крім того, істотно знижуються обчислювальні витрати на диспетчеризацію, оскільки немає необхідності обходити весь ланцюжок можливих делегатів у пошуках відповідного методу або атрибута. В числі недоліків підходу - труднощі з розповсюдженням змін в системі: модифікація прототипу не спричиняє за собою негайну і автоматичну зміну всіх його нащадків. Канонічним прикладом прототипної мови є мова Self. Прототипний стиль програмування покладено також в основу JavaScript.
3.2 Сценарне програмування
Сценарні мови (або мови скриптів (scripting languages)) мають достатньо тривалу історію розвитку. Концепція сценарного програмування з'явилася як розвиток мови LISP (парадигми функціонального програмування). До перших сценарних мов відносять вбудовані засоби управління командної оболонки операційною системою. Командний файл на мові операційної системи, представляє собою управляючий сценарій, який виконує задану послідовність дій ( *.bat-файл ).
За останні роки, завдяки розвитку web-технологій, сценарні мови програмування, зробили величезний крок уперед. Сценарні мови використовуються для створення динамічних інтерактивних web-сторінок, зміст яких модифікується залежно від дій користувача і стану решти сторінок і даних.
Характерною рисою сценарних мов є формування програми на деякій зовнішній мові як результату виконання сценарію (наприклад, PHP). Сценарна мова мало спирається на створення кінцевого продукту з нуля і більшою мірою – на використання тих можливостей, які має операційна система, графічне середовище, прикладна сервісна машина та інші подібні компоненти, взаємодія яких здійснюється за допомогою сценаріїв.
Сценарна парадигма припускає розбиття задачі на окремі частини, кожна з яких розв'язується спеціалізованими програмними засобами, а сценарій виступає в ролі «диспетчера», відповідального за організацію їхньої взаємодії.
Сценарні мови для web-розробки створені в 90-і роки XX століття і включають елементи різних парадигм програмування від імперативної до об'єктно-орієнтованої. Серед найбільш популярних сценарних систем можна відзначити: Perl, PHP, ASP, VBScript, JavaScript, Pyton. Синтаксис і семантика різних сценарних мов схожі. Це обумовлено значним впливом мов С і С++ на програмістів.
Крім Web-застосунків сценарні мови використовуються для настройки і розширення різних прикладних програмних продуктів (наприклад, OPIMA-Workflow), для запису сценаріїв тестування в інструментальних засобах тестування тощо.
Основна принципова відміна сценарних мов від компілюючих полягає в тому, що в них відсутній виконуваний код (.exe- файл). Кожна команда сценарію інтерпретується і одразу виконується.
Питання
1. Які мови сценаріїв вам відомі?
2. У чому відміна сценарної парадигми програмування від імперативної?
3. Які основні ознаки сценарної парадигми програмування та основні мови?
