* “Principles of Programming Languages” (PoPL), SS2012
* Dauer ~ 30min
* Prüfer: Ronald Veldema
* Beisitzer: Michael Philippsen
Vll hilfreich: Eine MindMap mit den zusammengefassten Inhalten im {{:pruefungen:hauptstudium:ls2:popl_mindmap.pdf|PDF}} und {{:pruefungen:hauptstudium:ls2:popl_mindmap.mm|FreeMind}}-Format
====== Prüfling 1 ======
P: was ist Lieblingssprache, wo kennen sie sich gut aus?\\
S: Haskell
P: was ist eine Monade?\\
S: Data und Metadaten mit unit und bind function
P: Was macht Logiksprachen aus?\\
S: clause und fact
P: Prolog - wie schreibe ich "Ronald und Michael sind reich, wer reich ist hat viele Fahrräder
wie in Prolog?"\\
S:
reich(roland).
reich(michael).
bikes(X) :- reich(X).
P: wie sieht eine anfrage aus? wie können sie eine liste aller Menschen mit Fahrräder ausgeben?\\
S: unifikation und backtracking
P: Wie geht Constraint programming\\
S:
x = 3
y = x + 1
P: Wie geht DataFlow programming\\
S:
a = 5
b = a + 1
P: Sie haben Klasse liste und node, implementieren sie add(node) (am anfang der liste) mittels
duck typing\\
S:
class list {
add(Node n) {
n.next = h
h = n
}
}
====== Prüfling 2 ======
P: Was ist ihre Lieblingsprogrammiersprache? \\
S: Java, Go (ganz gut)
P: was ist Introspection?\\
S: Reflections!
P: Was kann man damit machen?\\
S: Meta informationen zu den Klassen / Objekten einholen
P: Was sind delegates?
S verpeilts, antwort ist funktionspointer
P: C-Präprozessor
#define x y
void test() {
int x = 5;
#if x == 5
y++
#endif
}
Ist y++ im resultierenden Code?
P: Funktional: was ist das? "ich definiere mir mal globale variable x" \\
S: gibt keine globale Variablen
P: Wie sind Listen aufgebaut?\\
S: rekursiv definiert
P: Programmieren sie eine Funktion (Syntax egal) die zählt wie oft der String "ronald" in einer Liste enthalten ist
P: Was ist ducktyping?\\
S: "if it walks like a duck, if it quacks like a duck, its a duck"
P: da Python bei der Erklärung erwähnt, wie läuft das konkret bei Python? Beispiel verkettete liste, programmieren sie mal, Klassen: Node, List\\
S hat hier etwas gehangen weil er sich nicht zu 100% sicher war ob man die Instanzvariablen von einem Objekt (hier next referenz) explizit bei der Definition von der Node-Klasse angeben muss.
P: logisch, wie funktioniert eine Anfrage?\\
S: Fakten und Regeln
P: konkret - wenn man viele Fahrräder hat, dann ist man reich (aufschreiben
)
viele_fahrraeder(X) : reich(X).
reich(ronald).
reich(michael).
P: skizzieren sie was bei der Anfrage passiert \\
S erklärt Backtracking
P: was ist Unification?
//Das war's dann auch schon, war relativ langsam bei den Erklärungen → nicht alle Fragen konnten gestellt werden, daher nur 2.0
alles in allem mehr konkrete Abläufe als nur die Idee dahinter!//