Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5fan_ru_ПАРАДИГМИ ПРОГРАМУВАННЯ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.32 Mб
Скачать

Основи Лісп

Базис Ліспу досить лаконічний — атоми і структури з найпростіших бінарних вузлів, а також декілька базових функцій і функціоналів. Базис містить вбудовані (примітивні) функції, які аналізують та будують будь-які структурні значення (atom, eq, cons, car, cdr), і вбудовані спеціальні функції і функціонали, які управляють обробкою структур, що представляють обчислювані вирази (quote, cond, lambda, label, eval). Над базисом будуються прості формули у вигляді списків, де перший елемент — функція, інші — її аргументи, у тому числі змінні, реалізовані за допомогою різних варіантів стека або асоціативного списку. Вся решта механізмів обчислення і перетворення формул може бути зведена до цього базису, розглядатися як його варіант або розширення.

Програма на Ліспі – це функція, яка застосовується до вхідних даних (аргументів) та повертає результат:

output = program(input)

Не дивлячись на важливість, у нас Лісп не отримав поширення, а його застосування обмежено лише кількома науковими проектами.

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

Із сучасних мов елементи функціонального програмування є в Pyton, C#. Мова F# є мовою функціонального програмування на платформі DOT.NET.

Елементи функціонального програмування в С#:

-делегати (розширення показчика на функцію в C++);

- лямбда-вирази і дерева виразів.

7.3 Основи логічного програмування

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

На відміну від функціонального, логічне програмування засновано на логіці предикатів – напряму формальної логіки, що отримав розвиток у XX столітті.

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

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

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

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

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

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

Сфера застосування

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]