Новини високих технологій
» » "Пролог" - мова програмування або основа штучного інтелекту

"Пролог" - мова програмування або основа штучного інтелекту

5-07-2018, 11:14
1 289
Поява "Прологу" було обумовлено розвитком логіки, математики і програмування. Останнім відіграла найістотнішу роль. Фахівці з логіки та математики зробили спробу поставити програмування на «правильний шлях», але розвиток інформаційних технологій показало зовсім інший результат. Прагматичне імперативне програмування виявилося перспективніше. "Пролог" як мова програмування відбувся, але основою для штучного інтелекту не став.

Класичне програмування проти логіки

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


Цей факт завжди давав примарне підставу вважати створення інструменту для прийняття рішень простою справою. З появою "Прологу" здавалося: питання штучного інтелекту - справа техніки, і людина розумна придумав три закони робототехніки. Проте штучний інтелект так і залишився примарою, а три закони робототехніки виявилися з казки - «зроби те, не знаю що». Програмування в класичному значенні цього слова (часто використовують терміни "процедурна", "імперативний" або "функціональне") розвивалося і успішно подолало «смутні часи» 80-90-х років, коли мов програмування було незліченну кількість. Показова боротьба між "Паскалем" і "Сі" тривала довго, була жорстокою, але закінчилася нейтрально і тихо. Залишилася ідея гарного мови програмування і кілька вдалих її реалізацій. Не можна сказати, що "Пролог" як мову програмування не розвивався. Але він не досяг позначених цілей. Сьогодні можна не тільки сказати, але і обґрунтувати: "Пролог" - це академічний мова для: цілей навчання; логіки предикатів; математики; вузького застосування. Сумнівно, що це твердження можна спростувати. Штучний інтелект - це не тільки широке застосування, але і занадто серйозна подія, що кардинально змінює суспільний устрій і картину світу.


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

"Пролог" - мова декларативного програмування

Мати інструмент опису фактів і правил - добре, але який сенс? Факти і правила чудово лягають в звичайну базу даних. Кваліфікований класичний програміст надає інтерактивний діалог користувача, і останній вирішує свої завдання. При необхідності програміст допрацьовує діалог, а користувач доповнює базу даних фактів і правил. Абсолютно робочий і перевірений десятиліттями варіант реалізації маси вже вирішених і розв'язуваних завдань.
Декларативне виклад фактів і правил на будь реалізації мови програмування "Пролог" - це умовність, спроба формалізувати реальність в її інтелектуальному стані. Звичайне програмування не чіпає інтелект. Класичне програмування влаштовує позиція: опис і обробка даних. Тут є маса проблем, але є безліч блискучих і працюючих рішень.
"Пролог" як мова програмування - це факти: мама Марія, Наталя); - Марія - мама Наташі; тато (Євген, Марина); - Євген - батько Марини. Тут відразу за бортом виявляється факт: «Марія» і «Марина» - різні імена. Нічого не заважає дописати факт: тато (Євген, Марія); - Євген - батько Марії. Ці описи дають життя правилами: батько (x, y) <- папа (x, y); батько (x, y) <- мама (x, y); Але не дозволяють зробити висновок, що тато - батько Марини, а Марина - мама Марії. Ця проблема розв'язувана, можна дописати ще одне правило, додати ще один факт. Але скільки таких дій слід вжити в реальній ситуації? Фактично "Пролог" як мова програмування - приклад декларації фактів і правил, але не логіка, до якої звикло свідомість класичного програміста. "Пролог" позиціонує себе як мова логіки предикатів, але вчитися програмування на ньому можна лише за прикладами та зразками описів від розробників конкретної реалізації мови.

Сімейство "Прологов"

Франція вважається батьківщиною "Прологу", а 1973 рік - роком народження. Інтерес до мови періодично поновлювався, але із завидною стабільністю затихав. Девіз мови: «Логіка предикатів - це елементарно! Це спосіб пояснити, як працює мислення» - так і залишився девізом.
Будь-яка реалізація мови програмування "Пролог" суворо дотримувалася логіці предикатів, але завжди включала в себе класичні ідеї процедурного програмування. Правильніше сказати "імперативного", оскільки цей термін вживається з більшою формальністю, ніж процедурне, функціональна, об'єктно-орієнтоване або інше.
Будь-програмування - це дані та їх обробка. Конструкції мови повинні максимально точно описувати вирішувану задачу, саме тому всі відомі реалізації "Прологу": Turbo Prolog, Win Prolog, Prolog SWI, GNU Prolog, Visual Prolog та інші - містять, крім декларативних конструкцій, звичайні імперативні висловлювання. Вважається, що сімейство "Прологов" розвивається в академічних та науково-дослідних організаціях і тому як про загальну мовою можна говорити тільки в концептуальному сенсі. Проте сам факт, що концепція "Прологу" жива і розвивається, можна вважати: у цієї мови є область застосування, і вона затребувана в певному спектрі завдань.

Основа штучного інтелекту

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

Результат не був досягнутий, надто багато фактів і правил потрібно було написати на "Пролозі" як мовою програмування, які носять банальний імперативний характер. Між тим паралельно була реалізована маса успішних програмних продуктів на звичайних мовах.
На початку 90-х років був успішно реалізований проект реальної інтелектуальної системи, що моделює поведінку дитини віком до 3 років на мові асемблера ЕС ЕВМ! Варіант використання "Прологу" навіть не розглядалося. Ця інтелектуальна система не тільки «міркувала», що таке мама, тато, і чим відрізняється Марія від Марини, але і без особливої напруги самостійно перескочила з набутих знань з цих питань до м'ячиках та їх відмінностей від кубиків, до квітів предметів і (!) до елементарної математики: прості арифметичні операції виявилися їй по силам на основі знань, набутих при вирішенні зовсім інших завдань. Можна стверджувати, що класичне програмування випереджає "Пролог" в частині освоєння території штучного інтелекту, але воно дає реальні результати. Що стосується інтелекту як завдання - мабуть, питання тут лежить не в мові, а в реалізації ідеї. Якщо асемблер 1991 року зміг стати основою» для інтелектуальної системи ситуативного інтелекту, то питання явно лежить не в мові реалізації, а в ідеї.
Цікаво по темі
Зміст і використання JavaScript void
Зміст і використання JavaScript void
Відсутність значення і значення undefined - раритет найдавніших часів інформаційних технологій, але навіть в сучасному світі у них є місце і
Синтаксис JavaScript parseInt: приклади використання
Синтаксис JavaScript parseInt: приклади використання
Розпізнати в рядку число і бути впевненим, що в алгоритмі використовується значення змінної, тип якої - число, необхідно майже в кожному алгоритмі.
Конструкція PHP if else: прихована логіка
Конструкція PHP if else: прихована логіка
Умовний оператор - найдавніша конструкція синтаксису будь-якої мови програмування. Програми завжди щось порівнювали і «вирішували, що робити далі.
Що таке програмування? Мови програмування. Комп'ютерне програмування
Що таке програмування? Мови програмування. Комп'ютерне програмування
В період появи перших комп'ютерних систем гостро постало питання того, як «навчити» машину сприймати ...