Beste Antwort
Emacs ganz unten!
Für eine ernsthafte Prolog-Entwicklung empfehle ich GNU Emacs mit dem von Stefan Bruda gepflegten Prolog-Modus. Die SWI-Prolog-Homepage erklärt die Einrichtung und enthält Hinweise auf weiteres Material:
Verwenden von SWI-Prolog mit GNU Emacs
Tatsächlich wird SWI-Prolog sogar mit einem eigenen Emacs-Klon ausgeliefert, der für kleinere Bearbeitungsaufgaben nützlich ist. Sie können es mit? – emacs aufrufen.
Einige alternative Vorschläge finden Sie in dieser Diskussion:
Was ist gut? Prolog-IDE für Linux?
Antwort
Prolog stirbt nicht. Im Allgemeinen wird es jedem Comp-Sci-Studenten beigebracht, der auf eine Promotion hinarbeitet! Teil aufgrund der Tatsache, dass Sie „bemerkt haben, obwohl jeder gezwungen ist, es zu lernen“, dass die Menge an neu geschriebenem Prolog-Code nicht den jungen, weniger „bewährten“ Sprachen entspricht? Bewerten Sie in den letzten zwei Jahren, wie viele neue Projekte oder Blog-Beiträge es gibt: Clojure, F #, Brain4uck, Go, Cobra, miniKanren und Scala. Leider haben selbst die wenigsten davon die Anzahl der neu gestarteten Prolog-Bibliotheken und -Projekte in den letzten 10 Jahren überschritten! (Tut mir leid, wenn einige dieser Sprachen nicht sehr jung sind. Aber denken Sie darüber nach, wie viel Traktion jeder in so kurzen Zeiträumen gewonnen hat.)
Ich denke, der Prolog der nächsten zwei Jahre wird mindestens zwei oder drei von mehr als drei Jahren überschreiten die oben genannten Sprachen in Blog-Posts und neuen Projekten.
Weitere Gedanken
Ich schreibe einen allgemeinen Lisp-Compiler in Prolog. Es sieht nach einem zweimonatigen Projekt aus. Der Compiler konvertiert den Lisp-Quellcode in Prolog und optimiert dann den Prolog-Code, anstatt das Backend den Prolog kompilieren zu lassen. Dieser Datenfluss scheint für Haskell oder Idris bereits schwierig zu sein. Ich bin der Meinung, dass das eigentliche grundlegende Problem darin besteht, dass die beiden letztgenannten Sprachen nicht aussagekräftig genug sind, um das, was ich gerade deklarativ gesagt habe, auf der Detailebene zu beschreiben, um dies zu erreichen.
Hier ist ein Beispiel für „beschreibende Details“ (z das Paketsystem) https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/package.pl
Oder der Optimierer: https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/mizepro.pl
Ist es einfach, Haskell dazu zu bringen, seine Quelle vor dem Ausführen zu optimieren? Ich erwarte auch, dass es in Haskell eine Art Zwischen-Haskell-Darstellung braucht, die es interpretieren kann. Wahrscheinlich wäre es nicht allzu schwer, einen Lisp-Interpreter in Haskell zu schreiben. Der Compiler ist viel mehr Arbeit?
Die Indoktrinationsstufen von Haskell sind für akademische Zwecke gut geeignet, und daher auch Haskell hat mehr Ph.D. Trophäenfrauen als Prolog. Es gibt viel mehr Komplexität und Handbücher, wie sie ihren Männern gefallen können (der Haskell-Programmierer liest HoTT-Buch nach HoTT-Buch). Aber ich denke, sie erkennen möglicherweise nicht, dass sie in einer missbräuchlichen Beziehung stehen: Was pervers ist, ist, dass sie denken (hoffen) Der Ehemann namens Haskell gewährt ihnen die gleichen Privilegien wie die Prolog-Ehefrauen (nehmen Sie sie in den gleichen Ferien). (Sie sind sich jedoch der tatsächlichen Existenz von Prolog-Ehefrauen nicht bewusst oder unterliegen der Propaganda ihres Ehemanns (wie in diesem Thread zu sehen). ) …. Die erhalten Privilegien nur, wenn sie sehr gut funktionieren. Ich denke, eine solche Ehe wäre nur für die Nubilen geeignet. Was sie nicht wissen, ist, dass sie niemals „gut genug“ sein werden, um die gleichen Ferien (Programmfähigkeiten) zu bekommen, von denen ihnen gesagt wird, dass solche Wünsche falsch sind und sich abkühlen Sieh dir ein anderes Wadler-Video an.
Versteh mich nicht falsch, Prolog hat Indoktrination. . „Verwenden Sie keine Schnitte. Verwenden Sie nicht setarg / oder asserta /“. Wenn Sie jedoch in Haskell Ihre Methodik verfeinern, werden Sie feststellen, dass Ihre Absicht falsch ist. Wenn Sie in Prolog Ihre Methodik verfeinern, stellen Sie fest, dass Ihre Absicht war nie falsch.
Weitere Aspekte der dysfunktionalen Beziehung:
Sowohl Haskell als auch Prolog sind deklarative Systeme zur Beschreibung der Abschwächung von Zuständen. Beide Sprachen scheint der Programmierer eine Sprache entwickeln zu müssen um Datenübergänge. In Prolog wird es über Sätze ausgedrückt. (Aber in Haskell müssen diese Sätze in Typen vorliegen.)
Beide bauen mühsam einen Hindernisparcours für Nagetiere mit Papier-Toilettenpapierrollen … Der Kampf ist intellektuell In Prolog bauen Sie die Toilettenpapierrollen und dann Toilettenpapiergeneratoren, die als Meta-Prädikate bezeichnet werden, anstelle der Konstrukteursrechnung.
Für mich sehe ich Haskell so Ein Extra meiner logischen Sätze von Prolog muss zu Typen werden (einer pro Klausel) verwenden). Dies scheint ziemlich langweilig zu sein (die Toilettenpapierrollen haben eindeutige Namen) (der Versuch, einige meiner Prologklauseln zu typisieren, wäre schwierig), da die meisten meiner Prologprogramme, die erstaunliche Dinge tun, Tausende von Klauseln enthalten. Der einzige Grund, mir das schwer zu machen, wäre, es dem Typprüfer leichter zu machen?Ich bin mir nicht sicher, ob diese zusätzlichen Runden in der Verzweiflung mir helfen würden. Außerdem muss ich nicht jede Klausel (jeden Satz) in ein Typsystem (in einen Typ) einpassen!
In Prolog entwerfe ich mein Typensystem neben der Manschette dynamisch. Nicht terminierbar Begriffe. (unendlich ungebundene Begriffe, wie ich sie in der Implementierung der Lisp-Umgebung verwende) Haskell möchte, dass ich das verliere. Doch was bietet es im Gegenzug? Eine gewisse Konsistenz? Warum sollte sich ein Prolog-Programmierer für das philosophische Mikromanagement anmelden?
Alles, was Haskell will, ist, dass ich Fähigkeiten verliere. Das scheint eine Ehe im schlimmsten Fall zu sein, wenn ich ein nubiler Programmierer wäre, den ich nicht besser gewusst hätte.
Haskell hat einen „Kult“ der Indoktrination. Vielleicht für die meisten OO-Programmierer, da sie Haskell immer noch als Aufwärtsbewegung in Richtung realer Generika sehen würden.