Prolog-Lab: logische Programmierung mit Fakten, Regeln und Fragen, im Browser

Dieses Lab gibt jedem Lernenden einen eigenen Prolog-Interpreter mit drei kleinen Dateien zum Lesen und Ändern: eine Datei mit Fakten über eine Familie, eine mit Regeln darauf und eine mit Regeln über Listen. Ein Prolog-Programm sagt nicht Schritt für Schritt, was zu tun ist. Es sagt, was wahr ist, und es auszuführen heißt, eine Frage zu stellen.

Es ist kein Angriffs-Lab. Jede Kopie hat keinen Weg ins Internet und keinen zu anderen Lernenden, es kann also nichts hineingeladen werden, und nichts darin kann jemand anderen erreichen. Es ist nur der Standard-Interpreter: Zusätzliche Pakete lassen sich nicht installieren, und es ist weder ein Constraint-Solver noch ein Webserver noch eine Datenbank.

Was die Lernenden lernen

Dass ein Programm aus Fakten und Regeln bestehen kann und dass eine Frage die Art ist, es auszuführen. Die Lernenden lesen die Fakten, fragen, ob etwas wahr ist, fragen mit einer Variable, wer, lesen eine Regel aus zwei anderen Aussagen und folgen einer Regel, die sich selbst aufruft, um alle Vorfahren zu finden. Sie lernen auch, dass keine Ausgabe bedeutet, dass sich die Antwort aus den aufgeschriebenen Fakten nicht zeigen lässt, und nicht, dass das Programm kaputt ist. Es eignet sich als Einführung in Programmierparadigmen und in Logik in der Informatik; prüfen Sie den genauen Wortlaut in der Einheit Ihrer eigenen Prüfungsstelle, hier wird keiner zitiert.

Im Browser ausführen

Das Lab startet einen Dienst, prolog, aus dem offiziellen Image swipl, als Konto ohne Sonderrechte. Es gibt keine Webseite, daher hat die Leiste des Labs keinen Link unter Im Browser, und das Terminal ist der Weg, Fragen zu stellen. Es erreicht den Interpreter mit docker exec prolog, gefolgt von swipl und der Frage. Jeder Befehl der Lektion lädt eine Datei, stellt mit der Option -g eine Frage und endet mit -t halt, er ist also immer fertig. Die Antworten sind jedes Mal gleich, in der Reihenfolge, in der die Fakten stehen. Alles, was ausgegeben wird, ist Englisch, egal in welcher Sprache die Seite steht.

Für ein Gespräch mit dem Interpreter klicken Sie auf Terminal öffnen und tippen docker exec -it prolog swipl -q family.pl. Tippen Sie am Prompt ?- eine Frage, die mit einem Punkt endet, etwa parent(tom, X). Er gibt X = ann aus, und ein Semikolon fragt nach der nächsten Antwort. Mit halt. verlassen Sie ihn.

  1. Container-Seite öffnen. Öffnen Sie in der Leiste „Entwickeln“ und wählen Sie „Einen Container ausführen“. Die Seite kann jeder öffnen, und das Git-Lab und das SQL-Lab starten ohne Konto. Alle anderen Labs brauchen ein kostenloses Konto: Erstellen Sie eines, melden Sie sich an und klicken Sie dann auf „Starten“.
  2. Lab suchen. Die Karte „Beispiel-Labs“ listet alle Beispiele auf. Suchen Sie Prolog: Fakten, Regeln und Fragen.
  3. Auf „Starten“ klicken. „Starten“ führt das Lab unverändert mit einem einzigen Klick aus. „Zuerst die Datei bearbeiten“ öffnet die Compose-Datei, damit Sie sie vor dem Start ändern können.
  4. Öffnen. Es gibt keine Webseite zu öffnen. Klicken Sie auf der Seite des Labs auf „Terminal öffnen“ und tippen Sie docker exec prolog swipl -q -g "forall(parent(tom, X), writeln(X))" -t halt facts.pl, um die Kinder von tom auszugeben: ann, dann ben.

Was die Lernenden abgeben sollen

Die Fragen, die sie gestellt haben, und was jede antwortete: eine Ja-Nein-Frage, eine Frage mit einer Variable und eine, die die Regel grandparent oder ancestor benutzt. Dann eine eigene Regel in family.pl, zum Beispiel für eine Tante oder einen Cousin, mit der Frage, die sie in Aktion zeigt, und ein bis zwei Sätze in eigenen Worten dazu, wie sich ein Fakt von einer Regel unterscheidet. Nichts wird automatisch bewertet: Die Regel und die Sätze zeigen, ob es verstanden wurde. Für anspruchsvollere Arbeit fragen Sie, warum eine Frage ohne Ausgabe nicht dasselbe ist wie eine falsche Aussage.

Eine Grundlagenlektion zu diesem Lab

Prolog Basics ist eine kleine Lektion, die in diesem Lab bearbeitet wird. Darin liest ein Lernender die Fakten, fragt, ob etwas wahr ist, fragt mit einer Variable, wer, liest eine Regel und folgt einer Regel, die sich selbst aufruft.

Kostenlose persönliche Konten haben sie im Modul Basics, das auf der Startseite liegt, und jede Einrichtung kann sie aus dem Basics-Ordner der Bibliothek kopieren. Sie ist absichtlich klein: Sie zeigt einer Lehrkraft, was eine in einem Lab bearbeitete Lektion ist, den Rest übernimmt das Lab. Kopieren Sie sie in ein eigenes Modul, um sie zu ändern.

Der Code auf GitHub

Die Compose-Datei hat kein Dockerfile: Sie startet ein einziges offizielles öffentliches Image, SWI-Prolog, auf Version 9.2.9 festgelegt, als Konto ohne Sonderrechte mit 128 MB Speicher. Das Image steht unter der Lizenz BSD-2-Clause und wird nicht von uns verteilt. Die Datei schreibt beim ersten Start drei kleine Übungsdateien und hält sie auf einem Volume, sodass das, was ein Lernender ändert, nach einem Stopp und einem Start noch da ist. Die Grenzen sind ehrlich: Das Lab hat keinen Weg nach draußen, also lassen sich keine zusätzlichen Pakete installieren, und es vermittelt den Gedanken der logischen Programmierung an einem Stammbaum, nicht die großen Programme, für die Prolog eingesetzt wird.

Als Aufgabe stellen

Sagen Sie in der Aufgabe, was abzugeben ist.

  1. Lab erstellen. Fügen Sie in Ihrem Modul eine Aufgabe hinzu und wählen Sie die Karte „Container-Lab“, dann „In einem GitHub-Repository“. Geben Sie https://github.com/mitsurutech/lab-prolog-lab mit dem Branch main an. Die Compose-Datei ist standardmäßig compose.yaml. Forken Sie das Repository zuerst, wenn Sie es ändern möchten, um zum Beispiel weitere Fakten zu den Startdateien hinzuzufügen.
  2. Veröffentlichen und ausprobieren. „Veröffentlichen“ legt den Commit fest, den Sie gesehen haben. Eine spätere Änderung im Repository verändert also kein Lab, das Sie bereits gestellt haben. Starten Sie zuerst Ihre eigene Kopie.
  3. Zuweisen. Weisen Sie es wie jede Aufgabe zu, auf Wunsch mit Fälligkeitsdatum, und schreiben Sie in die Aufgabe, was zu tun ist und was abgegeben werden soll.
  4. Abgaben bewerten. Öffnen Sie die Kopie einer lernenden Person und die abgegebene Arbeit, bewerten Sie sie und geben Sie sie mit einer Begründung zur Überarbeitung zurück, wenn mehr nötig ist.

Dieses Lab ausprobieren, und was es kostet

Mit einem kostenlosen persönlichen Konto können Sie die Grundlagenlektionen in diesem Lab durcharbeiten, mit genug kostenlosem Guthaben pro Monat für die meisten Lektionen und ohne Karte. Für eine Klasse sind die ersten 365 Tage für eine Schule kostenlos, für bis zu 50 Lernende; danach zahlt sie je lernender Person und Jahr, alle Labs inklusive und Lehrkräfte kostenlos.

Häufige Fragen

Warum gibt eine Frage manchmal nichts aus?
Weil das Ziel gescheitert ist: Es lässt sich aus den aufgeschriebenen Fakten und Regeln nicht als wahr zeigen. Das ist kein Fehler und nicht dasselbe wie eine im echten Leben falsche Aussage. Füge einen Fakt hinzu, und dieselbe Frage kann gelingen. Ein unbekannter Name ist etwas anderes: Er gibt einen Fehler aus, der Unknown procedure sagt.
Warum bleiben Namen und Meldungen auf einer Seite in einer anderen Sprache Englisch?
Die Fakten, die Dateinamen und jede Meldung des Interpreters sind Englisch, und das Lab ändert sie nicht. Die Lektion sagt das und erklärt jede Antwort in der Sprache der Seite.
Bleiben die Änderungen der Lernenden erhalten?
Ja, für diese Kopie: Die Dateien liegen auf einem Volume, sie sind also noch da, wenn das Lab gestoppt und wieder gestartet wird. Eine Datei, die ein Lernender löscht, wird beim nächsten Start des Labs in ihrer ursprünglichen Form neu geschrieben.