Функціональне і логічне програмування
Суть функціонального програмування можна визначити як спосіб складання програм, у яких єдиною дією є виклик функції, єдиним способом розчленування програми на частини є введення імені функції, а єдиним правилом композиції – оператор суперпозиції функцій. Ключовим поняттям у функціональних мовах є вираз. До них відносяться константи, структуровані об'єкти, функції, їхні тіла та виклики функцій. Функціональна мова програмування складається з: сукупності базових функцій; класів констант, події з яких можуть виконувати функції; приписів, що встановлюють правила побудови виразів та нових функцій на основі базових чи рекурсивних через себе.
Концепція логічного програмування базується на понятті відносин. Логічна програма – це сукупність аксіом та правил, що визначають відносини між об'єктами та метою. Виконання програми є спробою доказу логічного затвердження, побудованого з програми за правилами, визначеними семантикою мови, що використовується. Результатом обчислень є висновок наслідків із аксіом. Алгоритм логічної програми передбачає визначення та перелік специфічних властивостей об'єктів та відносин між ними, а чи не визначення порядку виконання окремих кроків. Це засвідчує декларативний характер логічної мови програмування. Логічні програми не відрізняються високою швидкодією, оскільки процес виконання зводиться до побудови прямих і зворотних ланцюжків міркувань різноманітними методами пошуку.
Програма, написана функціональною мовою, нагадує визначення та перелік специфічних особливостей завдання і є послідовністю описів функцій і виразів. Вираз обчислюється редукційним методом, тобто зведенням складного до простого. Звернення до базових функцій призводять до їх заміни відповідними значеннями. Виклики функцій, які є базовими, замінюються їх тілами, параметри – фактичними аргументами.
Функціональне програмування не розглядає пам'ять як місце зберігання даних, у ньому використовується поняття математичної функції та змінної. Змінні тимчасово означають об'єкти програми. Як і в математиці, функції функціональних мов відображають одні об'єкти в інші, аргументи – у значення.
Немає важливих відмінностей між константами і функціями, тобто між операціями та даними. Функція може бути результатом звернення до іншої функції та може бути елементом структурованого об'єкта. При зверненні до функції число її аргументів необов'язково має збігатися з числом параметрів, визначених в її описі.
Першою мовою став Лісп (LISP, LISt Processing – обробка списків), створений 1959 р. Джоном Маккарті. Ця мова орієнтована на структуру даних у формі списку і дозволяє організувати ефективну обробку великих обсягів текстової інформації. Істотна риса мови – однаковість програмних структур і структур даних: всі висловлювання записуються як списки.
Створення мови штучного інтелекту Пролог (PROLOG, PROgramming in LOGic – програмування у термінах логіки) 1973 р. французьким ученим Аланом Кольмерое відкрило нову область – логічне програмування.
Програма мовою Пролог, основою якої покладено математична модель теорії обчислення предикатів, будується з послідовності фактів і правил, потім формулюється твердження, яке Пролог намагатиметься довести з допомогою введених правил. Користувач лише визначає структуру завдання, а внутрішній механізм Прологу сам шукає рішення за допомогою методів пошуку та зіставлення.
