Ich habe Prolog vor vielen Jahren an der Universität gelernt. Während meines Berufslebens habe ich Prolog nie gebraucht. 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?
programming-languages
prolog
Gursel Koca
quelle
quelle
Antworten:
Aus meiner Sicht lohnt es sich sehr, die Grundlagen von Prolog zu lernen, unabhängig davon, ob Sie es jemals in der realen Welt verwenden werden. Es lohnt sich auch, die grundlegenden Ideen zu verstehen, die der Vereinheitlichung zugrunde liegen, und wie eine (triviale und ineffiziente) Implementierung gehandhabt 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 eine Menge "Lehrbuch" -Wissen, das mein Gehirn aus meinen Ohren tröpfeln lässt.
Ich habe den Eindruck, dass uns wahrscheinlich beide etwas Besonderes fehlt, aber es wäre nicht praktisch, die Zeit dafür zu verwenden, auch nur einigermaßen vollständiges Wissen auf Lehrbuchebene für Prolog zu erlernen, geschweige denn zu versuchen, Erfahrungen in der Praxis zu sammeln , es sei denn, Sie erwägen eine mögliche Karriere in der Logikprogrammierung.
Ich habe kürzlich ein 1989 veröffentlichtes Buch über KI und Expertensysteme gelesen - ein glücklicher Fund in einem Antiquariat. Zum großen 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 es lohnt sich, ein bisschen Zeit in IMO zu investieren.
Neuere Bücher, die speziell Prolog beschreiben, sind besser für das Erlernen der Sprache geeignet. In diesem Fall besteht jedoch die Gefahr, dass Ihr Gehirn irgendwo im Material für Fortgeschrittene aus Ihren Ohren tropft.
quelle
Dies war nicht ich, aber unter der Annahme, dass die Frage lauten könnte: "Hat jemand etwas Ernstes mit Prolog implementiert?" das könnte zählen:
http://asmarterplanet.com/blog/2011/02/the-watson-research-team-answers-your-questions.html
quelle
Ich weiß, dass KI-Programmierer es verwenden ... weil ich in meiner KI-Klasse einen Prolog-Kurs gemacht habe, aber ansonsten habe ich nicht viel anderes darüber gesagt. Hier ist eine ähnliche Frage mit vielen Antworten! /programming/130097/real-world-prolog-usage
quelle
Prolog eignet sich hervorragend für ein schnelles Prototyping. Beispielsweise 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 fehlerhafte Implementierung von Typsystemen, bestimmte Optimierungen und semantische Überprüfungen und schreibe diesen Prolog-Code nur dann in etwas Notwendiges um, wenn seine Leistung nicht akzeptabel ist.
quelle
Sie haben recht schnell geantwortet, aber ich habe Mitte der 90er Jahre Prolog verwendet, um Versicherungstarifrechner zu entwerfen, die für uns bestimmte Kundensegmente (Leserisiko) bestimmen, die in die Prämientarife 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.
quelle
Laut (This FAQ) 1 wurden Teile von Watson, der IBM-Maschine, auf der Jeopardy gespielt wurde, in einem Prolog geschrieben. (siehe Frage 6)
quelle
Ich habe Prolog eine (bedeutende) Handvoll Mal professionell verwendet (diagnostisches Expertensystem; HTML-Transformation; Mitgliedschaft festlegen). Ich habe eine tiefe Vorliebe für die Sprache, also gibt es Voreingenommenheit, aber es ist leicht, objektiv darüber 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 aufzulisten) sind vollkommen angemessen (zum Beispiel diskrete schnelle Fouriertransformation).
Natürlich können nur sehr wenige "End-to-End-Systeme" als rekursive Strukturen definiert werden (Ausnahme: Theorembeweis - dies ist jedoch eine eher akademische Übung *) kann mit den verschiedensten Techniken auf einen „imperativeren Standardprozess“ übertragen werden (es ist kaum wichtig, was, aber eine Web-Service-Oberfläche ist wahrscheinlich allgemein geeignet); Sie können sich also mit der Benutzeroberfläche, der Verarbeitung von Zufallsereignissen usw. befassen und diese dann bei Bedarf übergeben (um komplexe Datenbankabfragen oder eine beliebige Anzahl von Dingen auszuführen, 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 sensiblen Stellen und schreiben Sie einen schönen, sauberen, eleganten und wartbaren Prolog! :)
PS Wenn ich Prolog nicht benutze, greife ich auf C # zurück
quelle
Versuchen Sie, einen Sudoku-Löser in Ihrer Lieblingssprache zu schreiben, und überprüfen Sie dann, wie dies in Prolog geschieht. Im Allgemeinen passt jedes CLP-Problem gut zu einer deklarativen Sprache wie Prolog.
Es wird auch ausgiebig bei der formalen Verifizierung von Hard- und Software verwendet (akademisch und wahrscheinlich professionell, aber ich habe keine Referenzen zu Unternehmen).
Schließlich ist Erlang stark von Prolog beeinflusst, wobei Fehlertoleranz und Parallelität im Vordergrund stehen.
quelle
Die Software, mit der ein Großteil der E-Mails in den USA und in mehreren anderen Ländern gelesen und sortiert werden kann, wurde in Prolog mithilfe eines hochoptimierten Compilers geschrieben. Die Syntax der E-Mail-Adressen ist in bestimmten Klauselgrammatiken geschrieben. Dies erleichtert die Wartung und vereinfacht die Anpassung des Lesers an die Konventionen verschiedener Länder und industrieller Benutzer. Postdienste haben oft komplizierte Regeln für Dinge wie Weiterleitungsadressen, Postfächer im Vergleich zur Straße usw., und diese Regeln sind auch in Prolog formuliert, um die Wartung zu vereinfachen.
quelle