Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Gmail / Лекция3.Дубль1.doc
Скачиваний:
56
Добавлен:
12.05.2015
Размер:
658.94 Кб
Скачать

ПЛАН

МОВИ І СИСТЕМИ ПРОГРАМУВАННЯ 1

Основні парадигми програмування 1

Еволюція засобів програмування 4

Мови програмування та їх класифікація 4

Покоління мов програмування 6

Огляд алгоритмічних мов програмування 7

Формальні мови та граматики 7

Основні поняття теорії мов та граматик 7

Класифікація формальних граматик та мов 10

Засоби подання правил граматики 11

Технологія обробки тексту програми 14

Трансляція програм 14

Послідовність обробки тексту програми 17

IDE-середовища створення програм 18

Структура IDE 18

IDE BORLAND РASCAL 7.0 18

Мови і системи програмування Основні парадигми програмування

Програмування—процес створення комп'ютерних програмта/абопрограмного забезпечення.

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

У більш вузькому значенні програмування розглядається як кодування — реалізація у вигляді програми одного чи кількох взаємопов'язаних алгоритмівна деякіймові програмування.

Паради́гма програмува́ння—цеконцептуально погоджена сукупність засобів, що базується на деякій логіці побудови програм (принципи, за якими будуються програми). Парадигма програмування визначає те, як програміст описує логіку програми.

Для підтримки програмування відповідно до тієї або іншої парадигми розроблені спеціальні алгоритмічні мови.

Виділяють такі основні парадигми програмування:

  • імперативне програмування;

  • об'єктно́-орієнтоване програмування;

  • декларативне програмування.

Імперативне програмування - парадигма програмування, заснована на використанні алгоритмічної структури програмного коду, згідно з якою процес отримання результатів описується як послідовність інструкцій (команд) зміни стану програми. Основні ознаки цієї парадигми - послідовна організація процесу і поняття змінної, якою може бути присвоєно значення.

Програма на імперативній мові програмування складається з послідовності операторів (інструкцій), які задають процедуру вирішення задачі. Основним є оператор присвоювання, що служить для зміни вмісту областей пам'яті. Концепція пам'яті як сховища значень, вміст якого може оновлюватися операторами програми, є фундаментальною в імперативному програмуванні.

Виконання такої програми зводиться до послідовного виконання її команд з метою перетворення вихідного стану пам'яті, тобто значень вихідних даних, в кінцеве, тобто в результати. Таким чином, з точки зору програміста є програма і пам'ять, причому перша послідовно оновлює вміст останньою.

Таким чином, наголос уімперативномупрограмуванні робиться на обробці даних за допомогою алгоритму.Активним початком при цьому підході вважається програма (код), яка повинна виконати всі необхідні для досягнення потрібного результату дії над пасивними даними.

Імперативнімовипрограмування: Basic, Pascal, С.

Різновиди підходів до розробки імперативних програм:процедурна та модульна їх організація.

Процедурне програмува́ння засноване на концепції виклику спеціальної синтаксичної конструкції – процедури, що є логічно завершеним фрагментом програми. В ході виконання програми будь-яка процедура може бути викликана для виконання з будь-якого місця програми.

Використання процедур дозволило розбивати великі задачі на підзадачі і таким чином спростило написання великих програм. Окрім того, процедурний підхід дозволив зменшити об'єм програмного коду за рахунок написання часто використовуваних частин коду у вигляді про-цедур і їх використання в різних частинах програми.

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

Основна ідея модульного програмува́ння полягає в реалізації обчислювальних процесів у вигляді окремих програмних одиниць – модулів.

Модулем зазвичай називають сукупність зв'язаних процедур і тих даних, якими вони управляють. При звертанні до цих модулів із програм здійснюється передача даних, необхідних для обчислювального процесу.

Модульність часто є засобом спрощення задачі проектування програмного забезпечення і розподілу процесу його розробки між групами розробників. При розбитті програмного забезпечення на модулі для кожного модуля вказується функціональність, що реалізовується ним, а також зв'язки з іншими модулями.

Модульне програмування дозволяє зменшити обсяг вихідних текстів програм, зробити їх більш прозорими, прискорити написання і тестування програм, зменшити витрати на супровід (експлуатацію) програм

Роль модулів можуть грати структури даних, бібліотеки функцій, класи, сервіси та інші програмні одиниці, що реалізовують деяку функціональність і що надають інтерфейс до неї.

Ця парадигма відома також як "принцип приховування даних". Якщо в мові немає можливості згрупувати зв'язані процедури разом з даними, то він погано підтримує модульний стиль програмування.

Імперативна модель є переважною у програмуванні, проте, існують й альтернативні підходи, засновані на зовсім інших принципах.

Об'єктно́-орієнтоване́ програмува́ння (ООП)— одна з парадигмпрограмування, яка розглядає програму як сукупність взаємодіючих сутностей (об'єктів), що мають певний стан та певну поведінку (вміють виконувати певні операції). Об’єкти взаємодіють між собою, використовуючи повідомлення.

Тобто, у даній парадигміпрограмуванняпервинними вважаються об'єкти (дані), які можуть активно взаємодіяти один з одним за допомогою механізму передачі повідомлень (механізму виклику методів). Роль програміста у цьому випадку полягає у формуванні і реалізації таких об'єктів, взаємодія яких після старту програми приведе до досягнення необхідного кінцевого результату.

При цьому будується ієрархія об’єктів: програма в цілому – це об’єкт, для виконання своїх функцій вона звертається до об’єктів що містяться у ньому, які у свою чергу виконують запит шляхом звернення до інших об’єктів програми. Щоб уникнути безкінечної рекурсії у зверненнях, на якомусь етапі об’єкт трансформує запит у повідомлення до стандартних системних об’єктів, що даються мовою та середовищем програмування. Стійкість та керованість системи забезпечуються за рахунок чуткого розподілення відповідальності об’єктів (за кожну дію відповідає певний об’єкт), однозначного означення інтерфейсів міжоб’єктної взаємодії та повної ізольованості внутрішньої структури об’єкта від зовнішнього середовища (інкапсуляції).

На сьогодні об'єктно́-орієнтовану ідеологію підтримують мови програмуванняObject Pascal, Java,C#,C++,PHP.

Принциповим відходом від фон-неймановскої моделі є декларативне програмування.

Декларативне програмування—парадигма програмуваннявідповідно до якої програма деяким чиномописує що потрібно отримати як результат, а не як це треба зробити (не задається покроковий алгоритм рішення задачі). Тут головним є точне формулювання задачі, а вибір і застосування необхідного для її алгоритму рішення - проблема виконуючої системи, а не програміста.

Наприклад, веб-сторінки HTML— декларативні, оскільки вони описують, що містить сторінка тащо має відображатись — заголовок, шрифт, текст, зображення — але не містить інструкцій як її слід відображати; інструкція вибірки SQLконкретизує властивості даних, які слід отримати відбази даних, але не процес отримання цих даних.

Різновидами декларативного програмування є функціональне і логічне програмування.

Функціональне програмування— парадигма програмування, у відповідності із якою програма представляється у вигляді множини визначень функцій без станів (математичних функцій), які, в свою чергу, можуть викликати інші функції.

Відмінність математичної функції від поняття «функції» в процедурному програмуванні полягає в тому, що процедурні функції можуть спиратися не лише на аргументи, але і на стан зовнішніх по відношенню до функції змінних, а також мати побічні ефекти і міняти стан зовнішніх змінних. Тому в процедурному програмуванні при виклику однієї і тієї ж функції з однаковими параметрами, але на різних етапах виконання алгоритму, можна отримати різні дані на виході із-за впливу на функцію стану змінних. У функціональній же мові при виклику функції з одними і тими ж аргументами завжди отримується однаковий результат, оскільки вихідні дані залежать лише від вхідних.

Тобто, функціональне програмування є способом створення програм, в яких єдиною дією є виклик функції, єдиним способом розбиття програми є створення нового імені функції та задання для цього імені виразу, що обчислює значення функції, а єдиною операцією, що використовується при визначенні функцій, - композиція (суперпозиція функцій), тобто взяття функції від функції. При цьому - жодних комірок пам'яті, операторів присвоєння, циклів, ні, тим більше, передачі управління.

Композиція / суперпозиція функцій — функція, побудована з двох функцій таким чином, що результат першої функції є аргументом другої. Наприклад, у = f(x) = x2, а z = g(y) = sin(y), тоді суперпозиція z = g( f(x) ) = (g o f)(x) = sin(x2).

Наприклад, вираз а + bx функціональною мовою програмування може виглядати так: плюс (а, множ (b, х)).

Таким чином, у функціональномупрограмуванніакцент ставитьсяна застосуванні функцій,тоді як вімперативному-на змінах в стані та виконанні послідовностей команд.

До відомих функціональних мов програмування належить Лісп,Mathematica (символьні обчислення), XSLT (XML).

Логічне програмування —парадигма програмування,в основі якої лежить механізм автоматичноговиведення нових фактів із даних фактів згідно із заданими логічними правилами. Логічне програмування заснованенатеорії і апараті математичної логіки з використанням математичних принципів резолюцій.

Для будь-якої системи логічного програмування характерним є те, що для виконання програми (побудови виведення результату) використовується вбудована система автоматичного пошуку.

Найбільш поширеною мовою логічного програмування є мова Пролог.

Програми на мовах декларативного програмування легко піддаються методикам мета-програмування — коли програма може генеруватися по її опису. Наприклад XSLT-програма може бути згенерована із файлу XML.

Слід відзначити, що парадигма програмування не визначається однозначно мовою програмування — багато сучасних мов програмування є мультіпарадигменними, тобто допускають використання різних парадигм. Так на мові С можна писати програми як процедурним, так і об'єктно-орієнтованим способом.

Соседние файлы в папке Gmail