Чому (не) логічне програмування?


13

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

Це змушує мене замислитися, чому ви повинні використовувати логічне програмування, а чому ні? Чому він не отримує спостережуваного використання в галузі?

Відповіді:


8

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

Мої здогадки про відсутність широкого прийняття:

  • Це дивно - більшість людей не звикли програмувати в ньому, і вони можуть робити все, що потрібно на інших мовах.
  • Відсутність підтримки постачальників - Якщо Microsoft раптом почала натискати на Prolog # (з повною вагою бібліотеки .NET і набором інструментів та формальною підтримкою за ним) як «Наступна велика річ» - і тоді IBM і Oracle придумали щось, щоб конкурувати. бачу, це забрати!
  • Відсутність інтеграції - я не знаю, які бібліотеки доступні для Prolog - востаннє я перевірив, що не було багато графічних чи мережевих бібліотек, це означає, що "додаток" Prolog повинен бути перетворений в інший додаток, який взаємодіє з рештою світ.

"додаток Prolog" має бути обгорнуто в інший додаток, який взаємодіє з рештою світу ". Це насправді була особливістю для нас. Ми могли б легше виділити біти прологів, оскільки інтерфейс до нього був таким простим.
S.Lott

@ S.Lott: Гаразд, я також бачу, що це, можливо, позитивно, хоча, коли я навчався в школі і хотів насправді зробити заявку на Пролог, я вважав, що сантехніка та електропроводка між шматками є головною проблемою і перешкодою.
FrustratedWithFormsDesigner

5

Ми використовували його для створення парсерів. З ним було легше працювати, ніж з lex / yacc.

Чому він не отримує спостережуваного використання в галузі?

Це невідчутно. Що означає "детектируемость"? Кому потрібно отримати нагадування про виявлення?

http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp

Запитайте у програмі Meridian Software про їхні пропозиції прологів, якщо ви хочете фактів.

Однак, я зазнав певних перешкод на шляху до входу.

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

По-друге, пролог не є процедурним або функціональним, тому багато програмістів не можуть використовувати його. (Цікаво, що деякі програмісти теж балакають на використанні SQL. З цього питання, деякі програмісти неохоче використовують SQL і роблять дивні речі, як-от уникнення операцій приєднання, або стверджують, що COUNT(*)це магічно неефективно.)

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

Наступне є прийнятним у більшості кіл.

b = a + 1
if a > b: # always False

Таке похмуре мислення спричиняє вам проблеми в пролозі.


2

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

За логікою, судження може бути істинним, неправдивим чи не доведеним. Prolog має лише доведене, а не доведене, "не доведене", як правило, означає хибне. Більше того, порядок пропозицій Prolog може вплинути на виконання, що не стосується логічних пропозицій. З часом, коли я його використовував, я почав думати про Prolog як про мову, що відповідає візерункам, більше, ніж логічну мову.

Тому програмування Prolog залежить не стільки від логічної коректності, скільки від самої мови Prolog. Деяка корисна мова, але вона ніде не знаходиться поблизу мейнстріму, і вона не мала інструменту та переваг спільноти для такої мови, як C ++.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.