Чи є Prolog професійно корисним?


15

Я дізнався Пролог багато років тому в університеті. Протягом свого професійного життя мені ніколи не потрібно було користуватися Prolog. Я пропустив щось особливе?

Наскільки я пам’ятаю, Prolog вимагає зовсім іншого мислення у порівнянні з відомими мовами програмування.

Чи Prolog справді коли-небудь використовувався для впровадження чогось професійно корисного?


3
Prolog (і poplog) дуже хороші для кодування AI. Якщо ви не займаєтесь AI справами професійно / серйозно, ви можете взагалі не використовувати їх. На кшталт того, як неінженер може ніколи серйозно не використовувати MATLAB.
glasnt

1
Гарне питання. Prolog - це перша мова програмування, яку викладають в обчислювальній лінгвістиці в Uni Potsdam, але після цього ми не дуже її дуже використовуємо, навіть якщо ми в ній досить добре вміємо. Жаль. Кожен раз, коли я бачу запитання типу "Як використовувати акумулятор" або "Як отримати всі можливі відповіді" на StackOverflow, я змушую замислюватися про те, де фактичні професійні користувачі - більшість матеріалів здається домашніми завданнями. Або, можливо, досвід Prolog перетворює вас на робота, який ніколи не має питань.
Фелікс Домбек

Я колись чув про систему виявлення несправностей, написану в Пролозі та впроваджену десь в Австрії (Клагенфурт?). Відповідно до того, що мені було сказано, продукт був досить хорошим і продавався покупцям. Якщо ви вважаєте це "професійно корисним", то відповідь "так".
Джорджіо

Відповіді:


12

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

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

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

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

Нещодавно я читав книгу про ІС та експертні системи, видану в 1989 році - щасливу знахідку в книгарні секонд-хенду. У значній частині це спеціалізований підручник з Lisp та Prolog. Правда, більшість того, що він охоплює, вже давно не вражає (пошук, евристика тощо), але це все-таки дуже цікаво, і ІМО - річ, яку варто вкласти трохи часу.

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


AI / prolog новачок тут. Будь-які інтернет-ресурси, які ви б рекомендували?
yati sagade

@yati - Спробуйте amzi.com/AdventureInProlog/advtop.php - Я одного разу пробіг підручник на сайті Amzi, ​​який здався нормальним, наскільки я пам’ятаю, але це було дуже давно. Все, що я нещодавно (напевно, останні 5 років) переглядав Пролог, - це те, що я згадував у цій відповіді книгу AI. Ви повинні шукати / задавати тут питання, а не публікувати коментарі, особливо коментарі, додані до відповідей, написаних тим, хто в основному є новачком на довгостроковий період. Пролог - це те, на що я дивлюся рідко і в дуже невеликій глибині - інакше я б перестав бути новичком десять років і більше тому.
Стів314

10

Це не я, але припускаючи, що питання може бути "хтось реалізував щось серйозне з прологом?" це може врахувати:

http://asmarterplanet.com/blog/2011/02/the-watson-research-team-answers-your-questions.html

Ватсон працює на 10 стелажах серверів IBM Power 750, що працюють під управлінням Linux, і використовує 15 терабайт оперативної пам’яті, 2880 процесорних ядер і здатний працювати на 80 терафлопсах. Уотсон був написаний здебільшого на Java, але також значні фрагменти коду написані на C ++ та Prolog, всі компоненти розгорнуті та інтегровані за допомогою UIMA.


7

Я знаю, що програмісти AI використовують його ..... тому, що я проходив курс Prolog в моєму класі AI, але, крім того, я не бачив багато іншого про це. ось подібне запитання з відповідями лота! /programming/130097/real-world-prolog-usage


6

Prolog чудово підходить для швидкого прототипування. Наприклад, у http://www.cri.ensmp.fr/classement/doc/A-381.pdf перетворення SSA для GCC спочатку реалізується в Prolog, а потім у C.

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


2

Ви відповіли досить швидко, але я використовував Prolog в середині 90-х, щоб створити калькулятори страхових ставок, які визначали б для нас певні сегменти клієнтів (читання ризику), які б відповідали межах ставок премії. Це не те, що ви необов’язково бачити щодня, але, безумовно, вплинуло на ваші надбавки з ПЗ за ці роки.


2

Відповідно до (This FAQ) 1 частини Ватсона, машини IBM, яка грала в небезпеку, були написані в пролозі. (див. питання № 6)


1

Я використовував Prolog професійно (у значних) кількох випадках (діагностична експертна система; перетворення HTML; встановлення членства). У мене глибока прихильність до мови, так що так, тут є упередженість, але легко бути об'єктивним щодо того, коли Prolog (більше / настільки ж) підходить - вам дійсно потрібно обробляти рекурсивні структури ; найкращим прикладом, який я можу навести, є таблиця реляційних баз даних, але є незліченна кількість інших прикладів (можливо, простіше перерахувати зустрічні приклади, такі як введення випадкових користувачів або (більшість) математичних функцій (однак, багато математичних функцій мають рекурсивну структуру, отже цілком доречні (наприклад, дискретна швидка трансформація фур'є).

Але, звичайно, дуже небагато «кінцевих систем» можна визначити виключно з точки зору обробки рекурсивних структур (виняток: доведення теореми - але це досить академічна вправа *), тож пощастило, що процес прологів можна привернутись до «більш стандартного імперативного процесу», використовуючи всілякі різні методи (навряд чи це важливо, але, окрім, як правило, інтерфейс веб-сервісу підходить); тож ви можете мати справу з інтерфейсом користувача та обробкою випадкових подій тощо, а потім передавати їх у разі необхідності (для виконання складних запитів у базі даних або будь-якої кількості речей, які ви можете зробити з вашими рекурсивними структурами). Я вважаю, що це працює прекрасно - краще, ніж, наприклад, LINQ.

Отже, захопіть свої рекурсивні структури за допомогою чутливих бітів і напишіть чудовий, чистий, елегантний, ремонтопридатний Prolog! :)

PS, коли я не використовую Prolog, я повертаюся до C #

  • Хоча я прагну того дня, коли хоча б деякі аспекти комерційних програм виявляться правильними як стандартна практика.

1

Спробуйте написати розв’язувач судоку на улюбленій мові, а потім перевірте, як це робиться в Prolog. Загалом, будь-яка проблема CLP добре підходить із такою мовою декларацій, як Prolog.

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

Нарешті, на Ерланг глибоко впливає Пролог, маючи на увазі віротерпимість та одночасність.


0

Програмне забезпечення, яке читає та сортує більшу частину пошти у США та кількох інших країнах, написане у Prolog, використовуючи високо оптимізований компілятор. Синтаксис поштових адрес записаний у певних граматиках пункту, що робить технічне обслуговування легким та спрощує адаптацію читача до конвенцій різних країн та промислових користувачів. У поштових службах часто є складні набори правил щодо таких адрес, як адреси переадресації, скриньки поштових відділень та адреса вулиці тощо. Ці правила також сформульовані в Prolog для зручного обслуговування.

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