Ist Prolog beruflich nützlich?


15

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?


3
Prolog (und Poplog) eignen sich sehr gut für die AI-Codierung. Wenn Sie AI-bezogene Dinge nicht professionell / ernsthaft ausführen, dürfen Sie sie überhaupt nicht verwenden. Zum Beispiel, wie ein Nichtingenieur MATLAB niemals ernsthaft einsetzen kann.
Glasnt

1
Gute Frage. Prolog ist die erste Programmiersprache, die an der Uni Potsdam in Computerlinguistik unterrichtet wird, aber danach verwenden wir sie nicht mehr so ​​oft, auch wenn wir ziemlich gut darin sind. Es ist ein Jammer. Jedes Mal, wenn ich eine Frage wie "Wie verwende ich einen Akku?" Oder "Wie erhalte ich alle möglichen Antworten?" Auf StackOverflow sehe, frage ich mich, wo sich die tatsächlichen professionellen Benutzer befinden. Die meisten Dinge scheinen Hausaufgaben zu sein. Oder vielleicht verwandeln Sie sich in einen Roboter, der keine Fragen hat.
Felix Dombek

Ich habe einmal von einem System zur Fehlererkennung gehört, das in Prolog geschrieben und irgendwo in Österreich (Klagenfurt?) Implementiert wurde. Nach dem, was mir gesagt wurde, war das Produkt ziemlich gut und wurde an Kunden verkauft. Wenn Sie dies für "beruflich nützlich" halten, lautet die Antwort "Ja".
Giorgio

Antworten:


12

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.


KI / Prolog Neuling hier. Welche Online-Ressourcen würden Sie empfehlen?
Yati Sagade

@yati - Try amzi.com/AdventureInProlog/advtop.php - Ich habe einmal ein Tutorial auf der Amzi-Site durchgearbeitet, das, soweit ich mich erinnere, in Ordnung zu sein schien, aber das ist schon sehr lange her. Alles, was ich mir in letzter Zeit (wahrscheinlich in den letzten 5 Jahren) für Prolog angesehen habe, ist das AI-Buch, das ich in dieser Antwort erwähnt habe. Sie sollten hier nach einer Frage suchen / fragen, anstatt Kommentare zu veröffentlichen, insbesondere Kommentare, die zu Antworten hinzugefügt wurden, die von jemandem verfasst wurden, der im Grunde genommen sowieso ein Langzeitneuling ist. Prolog ist etwas, das ich selten und in sehr geringer Tiefe betrachte - sonst hätte ich vor einem Jahrzehnt oder länger aufgehört, ein Neuling zu sein.
Steve314

10

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

Watson wird von 10 Racks mit IBM Power 750-Servern unter Linux betrieben, benötigt 15 Terabyte RAM, 2.880 Prozessorkerne und kann mit 80 Teraflops betrieben werden. Watson wurde hauptsächlich in Java geschrieben, aber auch in C ++ und Prolog. Alle Komponenten werden mithilfe von UIMA implementiert und integriert.



6

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.


2

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.


2

Laut (This FAQ) 1 wurden Teile von Watson, der IBM-Maschine, auf der Jeopardy gespielt wurde, in einem Prolog geschrieben. (siehe Frage 6)


1

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

  • Obwohl ich mich nach dem Tag sehne, an dem sich kommerzielle Programme zumindest in einigen Aspekten als richtig erwiesen haben.

1

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.


0

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.