it-swarm-eu.dev

Ist Prolog beruflich nützlich?

Ich habe Prolog vor vielen Jahren an der Universität gelernt. Während meines Berufslebens musste ich Prolog nie verwenden. Habe ich etwas Besonderes verpasst?

Soweit ich mich erinnere, erfordert Prolog eine völlig andere Denkweise als bekannte Programmiersprachen.

Wird Prolog wirklich jemals verwendet, um etwas professionell Nützliches zu implementieren?

15
Gursel Koca

Meiner Ansicht nach lohnt es sich sehr, die Grundlagen von Prolog zu lernen, unabhängig davon, ob Sie es jemals in der realen Welt verwenden werden. Es ist auch sehr lohnenswert, die Grundideen zu verstehen, die der Vereinigung zugrunde liegen, und wie mit einer (trivialen und ineffizienten) Implementierung umgegangen werden kann.

Wenn Sie ein Problem haben, das am besten mit deklarativer Logik gelöst werden kann, sollten Sie dies idealerweise erkennen und wissen (wenn Sie die Wahl haben), die richtigen Werkzeuge für diesen Job zu verwenden.

Ich stimme jedoch zu, dass Prolog eine ganz andere Denkweise als herkömmliche imperative Sprachen und auch eine ganz andere Denkweise als funktionale Sprachen benötigt. Ab einem bestimmten Punkt scheint es viel Erfahrung zu erfordern (genau wie bei allem anderen), und es gibt sogar viel "Lehrbuch" -Wissen, das mein Gehirn aus meinen Ohren tröpfeln lässt.

Mein Eindruck ist ... wir vermissen wahrscheinlich beide etwas Besonderes bis zu einem gewissen Grad, aber es wäre nicht praktisch, die Zeit darauf zu verwenden, auch nur ein einigermaßen vollständiges Wissen auf Lehrbuchebene für Prolog zu erlernen, geschweige denn versuchen, reale Erfahrungen zu entwickeln, es sei denn, Sie erwägen eine mögliche Karriere als Logikprogrammierer.

Ich habe kürzlich ein 1989 veröffentlichtes Buch über KI und Expertensysteme gelesen - ein glücklicher Fund in einem Antiquariat. Zu einem wesentlichen Teil handelt es sich um ein spezielles Tutorial zu LISP und Prolog. Das meiste, was es abdeckt, war zwar schon eine ganze Weile nicht mehr so ​​beeindruckend (Suche, Heuristik usw.), aber es ist immer noch sehr interessant, und IMO ist eine lohnende Sache, in die man ein bisschen Zeit investieren kann.

Neuere Bücher, die speziell Prolog beschreiben, sind besser zum Erlernen der Sprache geeignet, aber das Risiko besteht dann darin, dass Ihr Gehirn irgendwo im Material für Fortgeschrittene bis Fortgeschrittene aus Ihren Ohren tropft.

12
Steve314

Dies war nicht ich, aber unter der Annahme, dass die Frage lauten könnte: "Hat jemand etwas Ernstes mit Prolog umgesetzt?" das könnte zählen:

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

Watson wird von 10 Racks mit IBM Power 750-Servern unter Linux betrieben, verwendet 15 Terabyte RAM, 2.880 Prozessorkerne und kann mit 80 Teraflops betrieben werden. Watson wurde hauptsächlich in Java, aber auch in bedeutenden Codeabschnitten sind C++ und Prolog geschrieben, alle Komponenten werden mithilfe von UIMA bereitgestellt und integriert.

10
Kate Gregory

Ich weiß, A.I. Programmierer benutzen es ..... weil ich einen Prolog-Kurs in meinem A.I. Klasse, aber außerdem habe ich nicht viel anderes darüber gesehen. Hier ist eine ähnliche Frage mit vielen Antworten! https://stackoverflow.com/questions/130097/real-world-prolog-usage

7
user6791

Prolog eignet sich hervorragend für ein schnelles Prototyping. Zum Beispiel wird in http://www.cri.ensmp.fr/classement/doc/A-381.pdf eine SSA-Transformation für GCC zuerst in Prolog und dann in C implementiert.

Ich verwende Prolog in Compilern für eine schnelle und schmutzige Implementierung von Typsystemen, bestimmte Optimierungen und semantische Überprüfungen, und ich schreibe diesen Prolog-Code nur dann in etwas Gebotliches um, wenn seine Leistung nicht akzeptabel ist.

6
SK-logic

Sie haben ziemlich schnell geantwortet, aber ich habe Prolog Mitte der 90er Jahre verwendet, um Rechner für Versicherungstarife zu entwickeln, die für uns bestimmte Kundensegmente (Leserisiko) bestimmen, die in die Prämiensätze passen. Es ist etwas, das Sie nicht unbedingt täglich sehen würden, das sich aber im Laufe der Jahre sicherlich auf Ihre P & C-Prämien ausgewirkt hat.

2
Jé Queue

Laut (Diese FAQ) 1 Teile von Watson, der IBM-Maschine, die Jeopardy spielte, wurden in Prolog geschrieben. (siehe Frage 6)

2
GSto

Ich habe Prolog bei einer (signifikanten) Handvoll Gelegenheiten professionell verwendet (diagnostisches Expertensystem; HTML-Transformation; festgelegte Mitgliedschaft). Ich habe eine tiefe Zuneigung zur Sprache, also gibt es hier Voreingenommenheit, aber es ist leicht objektiv zu sein, wann Prolog (mehr/genauso) geeignet ist - Sie müssen wirklich rekursive Strukturen verarbeiten ; Das beste Beispiel, das ich geben kann, ist eine relationale Datenbanktabelle, aber es gibt unzählige andere Beispiele (es ist wahrscheinlich einfacher, Gegenbeispiele wie zufällige Benutzereingaben oder (die meisten) mathematischen Funktionen aufzuzählen (jedoch haben viele mathematische Funktionen eine rekursive Struktur und daher sind vollkommen geeignet (z. B. diskrete schnelle Fourier-Transformation).

Aber natürlich können nur sehr wenige "End-to-End-Systeme" nur im Hinblick auf die Verarbeitung rekursiver Strukturen definiert werden (Ausnahme: Theorembeweis - aber dies ist eine eher akademische Übung *), so dass es ein Glück ist, dass ein Prologprozess durchgeführt wird kann mit allen möglichen Techniken auf einen „Standard-Imperativ-Prozess“ übertragen werden (es spielt kaum eine Rolle, was, aber eine Web-Service-Schnittstelle ist wahrscheinlich allgemein geeignet); So können Sie sich mit der Benutzeroberfläche, der Verarbeitung zufälliger Ereignisse usw. befassen und diese bei Bedarf übergeben (für komplexe Datenbankabfragen oder eine beliebige Anzahl von Aufgaben, die Sie möglicherweise mit Ihren rekursiven Strukturen ausführen möchten). Ich finde, es funktioniert wunderbar - besser als zum Beispiel LINQ.

Ergreifen Sie also Ihre rekursiven Strukturen an den empfindlichen Stellen und schreiben Sie einen schönen, sauberen, eleganten und wartbaren Prolog! :) :)

PS Wenn ich Prolog nicht benutze, greife ich auf C # zurück

  • Obwohl ich mich nach dem Tag sehne, an dem sich zumindest einige Aspekte kommerzieller Programme als Standardpraxis als richtig erwiesen haben.

Versuchen Sie, einen Sudoku-Löser in Ihrer Lieblingssprache zu schreiben, und überprüfen Sie dann, wie dies in Prolog gemacht wird. Im Allgemeinen passt jedes CLP-Problem zu Nizza mit einer deklarativen Sprache wie Prolog.

Es wird auch häufig bei der formalen Überprüfung von Hardware und Software verwendet (akademisch und wahrscheinlich beruflich, aber ich habe keine Verweise auf Unternehmen).

Schließlich ist Erlang stark von Prolog beeinflusst, wobei Fehlertoleranz und Parallelität berücksichtigt werden.

1
sakisk

Die Software, die einen Großteil der E-Mails in den USA und mehreren anderen Ländern liest und sortiert, wird in Prolog mit einem hochoptimierten Compiler geschrieben. Die Syntax von E-Mail-Adressen ist in bestimmten Klauselgrammatiken geschrieben, was die Wartung vereinfacht und die Anpassung des Lesers an die Konventionen verschiedener Länder und industrieller Benutzer vereinfacht. Postdienste haben oft komplizierte Regeln für Dinge wie Weiterleitungsadressen, Postfächer oder Straßenadressen usw., und diese Regeln sind auch in Prolog formuliert, um die Wartung zu vereinfachen.

0