Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Prüfling 1

  • “Principles of Programming Languages” (PoPL), SS2012
  • Dauer ~ 30min
  • Prüfer: Ronald Veldema
  • Beisitzer: Michael Philippsen

Vll hilfreich: Eine MindMap mit den zusammengefassten Inhalten im PDF und 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 Data­Flow 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!