Einmal nicht da gewesen und schon komplett aus dem Bild

MaMaj
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 158
Registriert: 8. Okt 2007 15:38
Wohnort: Dreieich
Kontaktdaten:

Einmal nicht da gewesen und schon komplett aus dem Bild

Beitrag von MaMaj »

Hallo,

letzte Woche konnte ich aus beruflichen Gründen nicht an der Vorlesung teilnehmen und bin nun schon seit geraumer Zeit dabei dieses Fehlen nachzuarbeiten: Leider komplett ohne Erfolg.
Während die ersten Übungen noch "Kindergarten" waren, verstehe ich bei der zweiten Übung gar nichts mehr.
Die Folien sind auch nur nettes Beiwerk zu dem in der Vorlesung gesagten, erklären aber kaum die auftauchenden Begriffe (was ist WAE? Google ist auch überfragt... Wofür steht das?).
Das vorlesungsbegleitende Buch gibt mir auch mehr Rätsel als Antworten. Die Interpreter-Aufgabe scheitert z.B. beim "WithDB" und "RefDB". With wird zwar im Zusammenhang mit F1WAE und FWAE in den Folien plakativ angezeichnet, aber ein Bild ohne Text gibt mehr Interpretationsspielraum, als Erkenntnisse. Ref wird meiner Erkenntnis nach gar nicht beschrieben. Die Aufgabenstellung hätte in meinem Fall auch lauten könnten: "Implement an interpreter featuring Huey, Dewey and Louie". :shock:

Somit muss ich das mir jetzt selbst herleiten, aber damit kann ich nur 7 von 14 Tests bestehen.

Meine allererste Frage (auch an die Veranstalter): Bringt es mir, welcher nun Mal drei Tage die Woche arbeiten und und auch öfters geschäftlich wegfahren muss, überhaupt etwas diese Vorlesung weiterhin zu besuchen? Musterlösungen konnte ich auf der Webseite auch noch keine finden und die Materialien sind aus meiner Sicht keinerlei Ersatz für das gesagte Wort in der Vorlesung.

Meine zweite Frage: Liege ich richtig in der Annahme, dass WithDB im Grunde eine Ersetzung des Elements in RefDB ist? Die Folien sagen: "with immediately replaces free identifiers in the scope of its binding instance with a value/expression"
Was genau bedeutet das? Was bedeutet der Satz, welcher einige Seiten weiter zu with steht: "with simply “stores” associations of identifiers to values in a repository of deferred substitutions" ??

Über ein konstruktive Einschätzung der ersten Frage und eine erklärende Antwort bzgl. der zweiten Frage wäre ich sehr dankbar.

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Re: Einmal nicht da gewesen und schon komplett aus dem Bild

Beitrag von Osterlaus »

MaMaj hat geschrieben:Meine zweite Frage: Liege ich richtig in der Annahme, dass WithDB im Grunde eine Ersetzung des Elements in RefDB ist? Die Folien sagen: "with immediately replaces free identifiers in the scope of its binding instance with a value/expression"
Was genau bedeutet das? Was bedeutet der Satz, welcher einige Seiten weiter zu with steht: "with simply “stores” associations of identifiers to values in a repository of deferred substitutions" ??
WithDB öffnet quasi einen Block mit einer Variablen. Diese gibst du als ersten "Parameter" deines Scopes an, danach kommt der Block, in dem dieser Parameter verwendet wird. RefDB sucht dann in der Liste der schon vorab angelegten Parameter denjenigen heraus, der als n dort angelegt ist. Wenn du noch weitere Unklarheiten hast, verweise ich mal auf den Hinweis auf der Übersichtsseite zu den beiden Aufgaben:
Please read section 3.5 from the Programming Languages: Application and Interpretation book before proceeding with this task.

MaMaj
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 158
Registriert: 8. Okt 2007 15:38
Wohnort: Dreieich
Kontaktdaten:

Re: Einmal nicht da gewesen und schon komplett aus dem Bild

Beitrag von MaMaj »

Vielen Dank für die Antwort.

Ich habe mir Kapitel 3 des Buches bereits durchgelesen und auch wenn ich tatsächlich den Hinweis auf der Übersichtsseite übersehen habe, so musste ich nun feststellen, dass es kein Abschnitt 3.5 in meinem Buch gibt!?
Hier im Forum hat jemand bereits gefragt, ob es mehrere Versionen des Buches gibt. Dieser Frage möchte ich mich nun anschließen.

Edit: Ah, auf der DL Seite gibts noch eine 2007er Version. Da ist auch tatsächlich 3.5 vorhanden... d'oh!

Edit2: Hey, da steht auch was zur Bedeutung von WAE... Oh mann...

MaMaj
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 158
Registriert: 8. Okt 2007 15:38
Wohnort: Dreieich
Kontaktdaten:

Re: Einmal nicht da gewesen und schon komplett aus dem Bild

Beitrag von MaMaj »

WithDB(5, RefDB(0)) müsste doch laut Buch und der syntaktischen Analogie bereits ein De Bruijn Ausdruck ohne Namen sein. Also ist die 5 der Wert, den ich einem Identifier im Block "RefDB(0)" zuweisen soll. Da es laut offiziellem Hinweis keiner Substitution benötigt, kann ich doch direkt das Element an Pos 0 zurückgeben.

Habe ich das jetzt richtig verstanden?

Edit: Na ja, egal... ich blick da nicht durch. Mir fehlt die entscheidende Idee, wie das, was ich in dem Buch gelesen und imho auch verstanden habe, hier umzusetzen sein soll. Die "eigenen" Testfälle kriege ich hin, aber die sind eh so gewählt, dass sie gar nichts aussagen. Man kann daraus nicht mal Schlüsse ziehen, was genau die eigene Implementierung leisten soll, bzw. was z.B. mit RefDB genau gemeint ist. Die eigenen Testfälle sind schon abgedeckt, wenn man nur die namedExpr mit Hilfe von NumDB() zurückliefert. :roll:
Zuletzt geändert von MaMaj am 1. Mai 2013 16:31, insgesamt 1-mal geändert.

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Re: Einmal nicht da gewesen und schon komplett aus dem Bild

Beitrag von Osterlaus »

MaMaj hat geschrieben:WithDB(5, RefDB(0)) müsste doch laut Buch und der syntaktischen Analogie bereits ein De Bruijn Ausdruck ohne Namen sein. Also ist die 5 der Wert, den ich einem Identifier im Block "RefDB(0)" zuweisen soll. Da es laut offiziellem Hinweis keiner Substitution benötigt, kann ich doch direkt das Element an Pos 0 zurückgeben.
Ich würde das eher umgekehrt verstehen: pro WithDB-Block eröffnest du einen neuen Scope, in dem eine bestimmte Zahl als Variable gespeichert ist. RefDB(n) sucht dann im n. umgebenden Scope nach einem Wert und nutzt diesen.

MaMaj
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 158
Registriert: 8. Okt 2007 15:38
Wohnort: Dreieich
Kontaktdaten:

Re: Einmal nicht da gewesen und schon komplett aus dem Bild

Beitrag von MaMaj »

Der erste Parameter von WithDB ist doch ein Wert, kein Index, kein komplexerer Ausdruck. Das ist doch analog zum Buch der zu substituierende Wert ohne Namen, da das ganze ja schon De Bruijn ist, oder nicht?
Wenn dann als zweiter Parameter RefDB(0) steht, dann ist der Body doch direkt ein Listen-Wert Aufruf an Stelle 0, oder? So habe ich das jetzt aus deiner Erklärung heraus verstanden. Damit komme ich aber auf gar keinen grünen Zweig.

Finde es auch nicht gerade hilfreich, dass man sich innerhalb so eines match blocks keinerlei Ausgaben geben kann. Ich würde z.B. mal gerne wissen, was in den Listen drin steht, um vielleicht weitere inhaltliche Hinweise schließen zu können.

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Re: Einmal nicht da gewesen und schon komplett aus dem Bild

Beitrag von Osterlaus »

MaMaj hat geschrieben:Der erste Parameter von WithDB ist doch ein Wert, kein Index, kein komplexerer Ausdruck.
Die Definition sagt:

Code: Alles auswählen

case class WithDB(namedExpr: WAEDB, body: WAEDB) extends WAEDB
Also kann in namedExpr alles mögliche vorkommen.
MaMaj hat geschrieben:Wenn dann als zweiter Parameter RefDB(0) steht, dann ist der Body doch direkt ein Listen-Wert Aufruf an Stelle 0, oder? So habe ich das jetzt aus deiner Erklärung heraus verstanden. Damit komme ich aber auf gar keinen grünen Zweig.
WithDB hat einen Variablenanteil und einen Body. Im Body kann wiederum eine beliebige WAE stehen, darunter auch(!) ein RefDB oder irgendwas total anderes. Und wo leite ich dich da gerade in die Irre?

Kineese
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 111
Registriert: 14. Feb 2008 18:33

Re: Einmal nicht da gewesen und schon komplett aus dem Bild

Beitrag von Kineese »

MaMaj hat geschrieben: Finde es auch nicht gerade hilfreich, dass man sich innerhalb so eines match blocks keinerlei Ausgaben geben kann. Ich würde z.B. mal gerne wissen, was in den Listen drin steht, um vielleicht weitere inhaltliche Hinweise schließen zu können.
Mit eclipse + scala-ide hast du die Möglichkeit zu Debuggen. Dafür musst du am besten ein assert machen und das scalaobjekt von app erben lassen und den breakpoint setzen. Der debugger ist etwas buggy aber funktioniert ansonsten ausreichend.

Gruß K.

f_jakob
Mausschubser
Mausschubser
Beiträge: 50
Registriert: 27. Okt 2009 14:05

Re: Einmal nicht da gewesen und schon komplett aus dem Bild

Beitrag von f_jakob »

Ich habe leider seit Mittwoch nicht mehr in das Forum gesehen und meinen streikenden Feed-Reader noch nicht ersetzt, daher kann ich leider erst jetzt nach der Deadline antworten – Entschuldigung dafür.
Bringt es mir, welcher nun Mal drei Tage die Woche arbeiten und und auch öfters geschäftlich wegfahren muss, überhaupt etwas diese Vorlesung weiterhin zu besuchen?
Das kommt ganz darauf an, ob du über den Rest der Woche die Zeit aufbringen kannst, dich selbst mit dem Stoff zu beschäftigen. Wie bei jeder Veranstaltung ist es wichtig, dass du den Stoff in den Übungen vertiefst und aktiv damit arbeitest. Die Vorlesung gibt dir eine Übersicht und eine erste Erklärung, langt alleine aber wahrscheinlich nicht, um alle Fragen direkt beantworten zu können.

Zur Frage zu DeBruijn und With: Hat sich das in der Übung heute geklärt?

MaMaj
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 158
Registriert: 8. Okt 2007 15:38
Wohnort: Dreieich
Kontaktdaten:

Re: Einmal nicht da gewesen und schon komplett aus dem Bild

Beitrag von MaMaj »

Vielen Dank für alle Antworten,

ich habe mich allerdings nun dazu entschieden die Veranstaltung dieses Semester nicht weiter zu verfolgen. Die Übungen freitags kollidieren durchgehend mit meiner Arbeitszeit, welche sich nicht so leicht verschieben lässt.
Vielleicht besuche ich die Veranstaltung zu einem späteren Zeitpunkt.

Gruß!

Antworten

Zurück zu „Archiv“