PROLOG



  • --linuxuser-- schrieb:

    ich will prolog nicht lernen da ich rekursionen speicherfressend finde *kich*. aber wir nehmen in der schule gerade prolog durch und dadurch moechte ich mich dazu etwas informieren... also nicht excessiv buecher lesen darueber!

    Der Speicher sollte dir egal sein, die Logik alleine reich schon um Prolog abartig zu finden 🙂 Es ist für gewisse Problemstellungen echt gut, aber im allgemeinen würde ich mir sowas nie freiwillig antun und ehe man diese Denkweise zu Programmieren drin hat, löst man ein Problem meist auch schon schneller auf klassische Art, wenn auch eventuell um Längen nicht so elegant wie's in Prolog möglich wäre.



  • Das Schwierigste an Prolog ist der Backtracking-Algorithmus. Wenn man den nicht verstanden hat, hat man auch Prolog nicht verstanden. Ohne den kommt man nie dahinter, wie Prolog zu seinen Ergebnismengen kommt.



  • Ich weiß gar nicht, was an Prolog so unglaublich schwer sein soll. Ist eine "etwas" andere Art zu programmieren, gut und schön, hatte in der Uni auch vor dem Lernen von Prolog das Vergnügen mich ausgiebig mit Logik beschäftigen zu müssen, aber trotzdem ... so wild is es doch echt nicht.
    Aber gut, ich kapier auch nicht, wie man z.B. Zeiger nicht verstehen kann ...



  • sarfuan schrieb:

    Ich weiß gar nicht, was an Prolog so unglaublich schwer sein soll. Ist eine "etwas" andere Art zu programmieren, gut und schön, hatte in der Uni auch vor dem Lernen von Prolog das Vergnügen mich ausgiebig mit Logik beschäftigen zu müssen, aber trotzdem ... so wild is es doch echt nicht.
    Aber gut, ich kapier auch nicht, wie man z.B. Zeiger nicht verstehen kann ...

    Zeiger sind aber ein triviales Konzept, was man aber von Prolog nicht gerade behaupten kann.

    Kennst Du die theoretischen Grundlagen von Prolog?



  • Power Off schrieb:

    sarfuan schrieb:

    Ich weiß gar nicht, was an Prolog so unglaublich schwer sein soll. Ist eine "etwas" andere Art zu programmieren, gut und schön, hatte in der Uni auch vor dem Lernen von Prolog das Vergnügen mich ausgiebig mit Logik beschäftigen zu müssen, aber trotzdem ... so wild is es doch echt nicht.
    Aber gut, ich kapier auch nicht, wie man z.B. Zeiger nicht verstehen kann ...

    Zeiger sind aber ein triviales Konzept, was man aber von Prolog nicht gerade behaupten kann.

    Kennst Du die theoretischen Grundlagen von Prolog?

    Kennst Du die theoretischen Grundlagen von Prolog?



  • Power On schrieb:

    Kennst Du die theoretischen Grundlagen von Prolog?

    Nein. Ich versuche zwar immer wieder mal, zu verstehen, wie sie funktionieren, aber bis jetzt ist mir das noch nicht geglückt.

    Es würde mich interessieren, eine gute Erklärung für die Arbeitsweise von Prolog zu bekommen.

    Erstaunlicherweise habe ich grade, als ich betreffendes Kapitel in betreffendem Buch mal wieder lesen wollte, festgestellt, daß ich es jetzt besser verstehe als früher (vor 15 Jahren). Allerdings sind immer noch einige Dinge unklar.

    Wenn also jemand hier die theoretischen Grundlagen von Prolog kennt, könnte er/sie mir mal erklären, wie z.B. die Reduktion von Teilbäumen funktioniert.



  • Power Off schrieb:

    Kennst Du die theoretischen Grundlagen von Prolog?

    Wenn du damit sowas wie Unifikation, Backtracking oder Rekursion meinst, selbstverständlich. Wie sollte man sonst etwas in Prolog schreiben können?
    Falls du etwas anderes meinst, denn theoretische Grundlagen ist wirklich nicht gerade sonderlich präzise, kenne ich es mit Sicherheit, wenn es hier:
    Programming in Prolog | ISBN: 3540006788
    steht und vermutlich auch, wenn es mit mathematischer Logik zu tun hat. Wenn du etwas anderes meinst, dann nenn beim Namen.

    Und selbstverständlich ist Prolog an sich nicht trivial. Das ist C aber auch nicht gerade. Aber die Bestandteile - ob jetzt Zeiger oder "dein" Backtracking - sind es sehr wohl. Wobei trivial ein etwas hartes Wort ist, das du da gewählt hast. Ich würde "nicht wirklich schwer zu verstehen" vorziehen.



  • Power Off schrieb:

    Wenn also jemand hier die theoretischen Grundlagen von Prolog kennt, könnte er/sie mir mal erklären, wie z.B. die Reduktion von Teilbäumen funktioniert.

    Ah, alles klar. Dachte wir reden hier von der Anwendung von Prolog. Tja, damit lautet dann die Antwort vermutlich eher "nein" 😉



  • sarfuan schrieb:

    Und selbstverständlich ist Prolog an sich nicht trivial. Das ist C aber auch nicht gerade.

    Doch. C ist trivial. Ich wende es schon seit 1986 an, und hatte nie ein Verständnisproblem. Wie C funktioniert, habe ich innerhalb von 2 Tagen gelernt (1986), und seitdem meine Kenntnisse lediglich weiter vertieft.

    Aber mein Prolog-Buch ("Prolog" von Gianessini/Kanoui/Pasero/van Caneghem) liegt schon seit Ewigkeiten bei mir rum, weil ich nie über die ersten paar Seiten hinauskomme.

    Bäume z.B. sind mir klar, wie die funktionieren, aber die Art wie Prolog sie einsetzt ...

    Danke jedenfalls für den Buchtip! 🙂



  • Prolog ist nicht komplizierter als C, vorausgesetzt, man kennt sich bereits gut mit Prädikatenlogik 1. Stufe aus 😉
    Meiner Meinung nach ist die Hauptschwierigkeit die Art und Weise wie in Prolog programmiert wird, besonders, wenn man sich "normale" Sprachen wie C/C++, Perl o.ä. gewohnt ist. Der Dozent, bei dem ich Prolog hatte war sogar der Meinung, dass es leichter ist Prolog als erste Programmiersprache zu lernen, als wenn man bereits durch eine "normale" Sprache quasi "verdorben" wurde...
    Man formuliert eben in Prolog logische Formeln (d.h. Fakten und Prädikate) und keine "klassischen" Kontrollstrukturen wie Schleifen und Verzweigungen. Auch die Darstellung und der Einsatz von Datenstrukturen wie Listen odern Bäumen wurde in Prolog quasi "logifiziert", was zwar einerseits konsequent ist, andererseits aber z.T. ziemlich furchtbar aussieht.
    Für Anwendungen, die nichts mit Prädikatenlogik zu tun haben, ist Prolog deswegen wenig geeignet. Ursprünglich wurde Prolog ja (auch) für die computergestützte Sprachverararbeitung entwickelt, und da wollte man es offensichtlich den Linguisten, die wenig mit Computern und deren Programmierung zu tun hatten, einfacher machen. So wird z.B. im Studiengang Computerlinguistik an der Uni Zürich (wo ich studiere) nur Prolog regelmässig als Programmierkurs angeboten (2 Semester obligatorisch vor der Zwischenprüfung), und andere Sprachen (Perl und Java) nur durch sporadische (freiwillige) kurze Einführungskurse behandelt.



  • So und jetzt sagen sie mir, ob ihr Ergebnis eine Folgerung ist und was passiert wenn sie die NAF-Regel anwendet haben. 😡 Man hab ich den Kram gehast.



  • Soll ich euch mal ein lustiges Beispiel aus der Industrie sagen, in dem PROLOG verwendet wird?

    Tivoli TME 10 (heißt heute anders) hat zur Ereignis-Klassifizierung PROLOG verwendet, und schaffte auf den größten Mainframes nur 25 Events pro Sekunde.

    Mit selbstgeschriebener Event-Klassifizierung in C oder C++ kommt man locker in den Millionen Events-Bereich pro Sekunde. 😉

    Trotzdem frage ich mich, wie man PROLOG sinnvoll einsetzen kann. Vielleicht muß man zuerst LISP lernen, das ja auch mit Prädikaten arbeitet.

    Vielleicht kann man auch optimierende PROLOG-Systeme entwickeln.

    Z.B. für Data Mining ist PROLOG bestimmt ganz toll, wenn's schnell genug ist.



  • Andreas2 schrieb:

    Ursprünglich wurde Prolog ja (auch) für die computergestützte Sprachverararbeitung entwickelt, und da wollte man es offensichtlich den Linguisten, die wenig mit Computern und deren Programmierung zu tun hatten, einfacher machen.

    Sehr merkwürdige Erklärung. Ich würde einfach sagen, dass in der modernen Linguistik Semantik und Pragmatik im Grunde eben reine Logik sind. Wenn man also ein Werkzeug entwickelt, um mit diesen Dingen einfach arbeiten zu können, dann kommt eben etwas wie Prolog raus. Jede Sprache hat ihr Anwendungsgebiet. Perl ist wunderbar um mal eben Texte zu zerlegen, C++ um große und effiziente Anwendungen zu schreiben und Prolog eben um mit Logik zu arbeiten.
    Hat doch nichts mit Geisteswissenschaftlern zu tun, die voller Angst weg rennen, wenn sie einen Computer sehen 🙄 ...
    Bei uns werden in Computerlinguistik regelmäßig Kurse in C, C++, Perl, Java, Prolog und Python angeboten. Verpflichtend davon ist keiner. Allerdings ist es bei Prolog z.B. so, dass man im 3. Semester ein natürlichsprachliches Analyse- und Generierungssystem in Prolog mitentwickelt. Und das ist verpflichtend.


Anmelden zum Antworten