Логічне програмування і кому воно потрібне, geekbrains - навчальний портал для програмістів
Пару місяців назад ми з вами побіжно обговорили функціональне програмування. а тепер прийшов час торкнутися ще один тип - логічне програмування. В деякій літературі ці два типи часто об'єднують, протиставляючи імперативного, проте основні принципи все ж різні.
Логічне програмування грунтується на поданні інформації, що є результатом вивчення фактов.Образно кажучи, це чимось схоже на процес навчання дитини, коли вам чітко треба задати навколишні об'єкти, які торгують «не можна», інші ж спочатку позначаються, як «доступні». Отримавши ваші настанови дитина починає вивчати світ і, зіставляючи дані, приймає рішення. У логічному програмуванні цей принцип повторюється практично в точності, але зрозуміло в трохи більш складній формі.
Найвідомішим представником і мабуть найпопулярнішим з використовуваних, є мова Prolog.
Раз ми заговорили про це популярному представника гілки логічного програмування, то зупинимося на ньому трохи докладніше. Він був заснований на початку 70-х років 20 століття, коли комп'ютери тільки-тільки стали доступними для широких мас. З точки зору побудови і синтаксису це не найпростіший мова, але з точки зору розуміння дій машини - майже ідеальний. Просто погляньте на код, яким можна описати автомобіль:
auto ( 'Model', 'Year', 'Engine', Power ( 'h.p.', 'kW')).
Погодьтеся, таку структуру легко зрозуміти і ідентифікувати параметри, але ж це чи не найскладніше, що можна побачити в Prolog.
Спочатку саме тому йому була уготована більше просвітницька доля, ніж реально корисна. Але з часом Prolog виявився корисним на передовій - в створенні штучного інтелекту і при роботі з базами даних. У свіжому рейтингу TIOBE Prolog зайняв вельми гідне 38 місце.
Розглянемо основні плюси і мінуси цієї мови.
Операції, що здійснюються в логічному програмуванні завжди зрозумілі;
Результат практично завжди не залежить від обраного шляху реалізації;
Може бути використаний як необчислювальних мови використовуючи тільки вираження і факти.
Якщо брати за приклад логічного мови програмування Prolog, то на обличчя неможливість створення комплексних завдань. Тобто в реальності логічна мова може йти доповненням до процедурного, але самостійно використовується вкрай рідко;
Через нестачу в інвестиціях і простої уваги, логічні мови слабо розвиваються;
Якщо доведеться мати справу з обчислювальними операціями, то логічні мови програмування - не найкращий вибір.
Кому вивчати
Наслідуючи приклад радянських студентів, вивчати логічне програмування буде корисно практично всім і в будь-якому віці, просто тому, що це здорово розвиває вміння мислити поступально і логічно. Плюс, як уже було сказано, якщо ваша робота так чи інакше пов'язана зі створенням штучного інтелекту або хоча б з даними, то мова Prolog і йому подібні - стануть корисним інструментом.
Вивчення мови, а тим більше цілого класу мов немислимо без читання хороших книг. Ось деякі з них:
Програмування на мові Пролог. Вільям Клоксін - базовий навчальний курс логічного і, що важливо, практичного програмування;
Алгоритми штучного інтелекту на мові PROLOG. Іван Братко - цікава книга, покроково і досить цікаво знайомить Новомосковсктеля з мовою Prolog через операції по створенню ІІ;
Problem Solving With Prolog. Джон стобой - це творіння відрізняється трохи більше поглибленої подачею матеріалу, рекомендується використовувати, як 2-3 книгу для вивчення Prolog;
The Art Of Prolog: Advanced Programming Techniques. Леон Стерлінг - книга, випущена в MIT в далеких 80-х роках, не втрачає свою актуальність і сьогодні, в основному завдяки великій кількості прикладів коду;
From Logic to Logic Programming. Кіс Доетс - ще один твір з MIT, але на цей раз про логічне програмування в цілому. Рівень підготовки потрібно досить серйозний, тому підготуйтеся багато "гуглити".
Logic-Based Artificial Intelligence. Джек Мінкер - найстаріше творіння, але при цьому одне з найбільш фундаментальних.