TU Wien:Programmiersprachen VL (Puntigam)/Prüfungsberichte

Aus VoWi
Zur Navigation springen Zur Suche springen

September 2011[Bearbeiten | Quelltext bearbeiten]

1) Was ist der dynamic link ? Wozu wird dieser benötigt ? Wohin zeigt dieser ?

2) Was ist der satic link ? Was ist das und wozu benötigt man es ? Warum braucht Java keinen static link ?

3) Welche Arten der Parameterübergabe gibt es ?

4) Was ist der Unterschied zwischen Call by Reference und Call by Value-Result ?

5) Call by Name erklären ? Gemeinsamkeiten von Makros in C und Call by Name erklären.

6) Codeausschnitt erklären. Der erste war ein LISP Programm (das Reversebeispiel aus dem Buch). Die Sprache musste man selbst sagen. Puntigam legt einen Codeausschnitt vor und man muss erklären was das für eine Sprache ist und was der Code genau macht. Das zweite Beispiel war bei mir ein Smalltalk Code. Dabei wurde genau gefragt welche Nachrichten an wen geschickt werden und was der Code ganz genau macht (Hinweis: Der Punkt ist in Smalltalk wie das Semikolon in Java).

Oktober 2011[Bearbeiten | Quelltext bearbeiten]

  • Einstiegsfrage: Ueberblick ueber den Stoff geben
  • Was ist ein Static Link? Wofuer braucht man den? Dynamic Link? Wofuer? Braucht man in Java Static Links?
  • Arten von Parameteruebergabe? Unterschied zwischen Call by Reference und Call by Value-Result? Was ist der Unterschied bei Call by Name bei C-Makros und Lambdakalkuel?
  • Exceptionhandling (man durfte zwischen Java und C++ waehlen). Was macht `throws'? Wie findet das Laufszeitsystem den Exceptionhandler? Was ist das teuerste beim Behandeln von Exceptions?
  • Synchronisation in Ada. Unterschied zwischen Rendezvous und protected types. Wie wird `wait()' und `notify()' von Java in Ada realisiert?
  • Codelistings: LISP (rev Beispiel aus Folien), Smalltalk (Beispiel aus Folien), Ada (tagged types), ML (Beispiel aus Folien)


sehr angenehmes Pruefungsklima

Februar 2012[Bearbeiten | Quelltext bearbeiten]

Termin 1[Bearbeiten | Quelltext bearbeiten]

Fragen:

1) Was für Arten von Synchronisation-Konstrukten wurden in der Vorlesung besprochen?

-1.1) Erklären Sie Monitore in einer beliebiger Sprache. (Ging sehr ins Detail, am besten im Buch gut durchlesen)


2) Welche Arten der Parameterübergabe gibt es?

-2.1) Erklären Sie den Unterschied zwischen Call by Value-Result und Call by Name

-2.2) Unterschied Call by Name und C-Makros (der Lambda-Kalkül wurde als Hilfestellung im Buch gezeigt, der Unterschied im Übersetzungszeitpunkt zählt nicht!)


3. Code-Erklärung: Lisp (Reverse-Bsp)

4. Code-Erklärung: Smalltalk (allgemeine Semantik)

Termin 2[Bearbeiten | Quelltext bearbeiten]

(3 Personen)

  • Arten der Parameterübergabe - Unterschied Call by Ref und Call by Value Result
  • Dynmaic Link u. Static Link erklären - gibts in Java static links
  • Allg. Exceptions erklären
  • Exceptions in Java & C++ erklären
  • Exceptions in Eiffel
  • Allg. Sync: Welche Arten gibt es
  • Syncronisation: Monitore erklären
  • Syncronisation: Rendzvous
  • Codebsp: LISP
  • Codebsp: ML
  • Codebsp: Smalltalk

Oktober 2013[Bearbeiten | Quelltext bearbeiten]

(3 Personen)

Erst eine aufwärmrunde einfach alle Sachen aufzählen die wir gemacht haben. Das macht er so lange bis keinem mehr was einfällt. Damit das Hirn warm wird.

Dann fragen:

  • Was ist ein Stack Frame
  • Dynamic link
  • Static link, warum gibts den nicht in Java

Parameter Übergabe:

  • Welche Arten gibt es
  • Wann kann man einen Unterschied zwischen call-by-ref und call-by-value-result feststellen
  • Was ist der Unterschied zwischen C-Makros und call-by-came.

Synchronisation:

  • Semaphore
  • Monitor, Unterschied zw. notify/notifyAll.
  • Protected type: was für eine Einschränkung hat man bei guards.
  • ADA Task types/Rendezvous

Ein Code bsp jeweils in ML, Lisp und Smalltalk (aus Folien/Buch)

  • Syntax erklären
  • Was machen einzelne Teile
  • Warum muss man bei ML Typen hinschreiben wenn +,-,*,< etc vorkommen. (Antwort siehe Seite 360 im Buch)
  • Wie übergibt man mehrere Parameter bei Smalltalk + Blocks und Conditionals


Dezember 2013[Bearbeiten | Quelltext bearbeiten]

Zwei Personen:

  • Einstiegsfrage an beide abwechselnd: Stoffüberblick (Schlagwörter)


Person 1)


Erklären Sie Dynamic Link.

  • Was ist das?
  • Warum braucht man ihn?
  • Haben alle Sprachen einen Dynamic Link?
  • Wann braucht man keinen Dynamic Link?


Erklären Sie Static Link.

  • Braucht JAVA einen Static Link?
  • Wie kann man in JAVA nested functions irgendwie simulieren?


Exceptions

  • Eklärung Allgemein
  • Wie wird Propagation umgesetzt. (wann / wie)
  • Wie funktionieren Exception im JAVA
  • checked Exceptions
  • Exceptions und Klassen
  • Wie funkionieren Exception in C++
  • Im neuen C++ ist die Exception Liste in der Signatur depricated, warum glauben Sie dass das so ist?


Code Snippet LISP REVERSE aus Buch.

  • Welche Sprache ist das?
  • Was macht der Code Snippet?


Person 2)


Parameter Übergabe.

  • Welche Arten gibt es
  • Unterschied zwischen Call-by-Ref und Call-by-Value-Result
  • Macros vs Call-by Name


Synchronisation

  • Welche Arten von Synchronisationsmechanismen haben wir kennengelernt?
  • Wie funkioniert Rendezvous in ADA.
  • Was sind protected Types?
  • Was ist das gegenstück zu java notify()/notifyAll() in ADA?
  • Unterschied notify()/notifyAll()
  • Was ist ein Monitor?


Code Snippet SMALLTALK aus Buch.

  • Welche Sprache ist das?
  • Wie wird der ausdruck x < y evaluiert?
  • Wer sendet an wen Nachrichten?


Frohe Weihnachten ... :)

Nächster Termin 2 Personen, folgende Fragen

  • Stoffübersicht
  • Dynamic Link, static Link in Java?
  • Parameterübergabe, unterschied Call by Value-Result/Call by Reference, Call by Name - gleich/unterschied zu Makros, wie funktioniert das mit der Übersetzung (lambda zeugs im buch - was passiert da genau)
  • Exceptions in C++ (ziemlich genau), wie sieht das in Eiffel aus
  • Synchronisation, was gibts alles, was ist Rendezvous, Monitore genauer, wie ist das in Java und Ada
  • ML Beispiel
  • Ada Beispiel (protected types genauer)


Oktober 2016[Bearbeiten | Quelltext bearbeiten]

Aufzählen was wir in der Vorlesung so gemacht haben, zum Hirn aufwärmen

  • Activation Record, Dynamic link, static link, gibts das in Java, gibts ihn in C, welche Sprachen können nested Funktions, wo werden die Klassen in Java gespeichert
  • Parameter passing, vorallem Call-by-name im Vergleich zu C-Makros und im Hinblick auf das Lambda-Kalkül (Als unterstützung wurde im Buch die Lambda Ersetzung hergezeigt), wo is dann der Unterschied zu Call-by-reference
  • Synchronisation: Protected Typ, Monitor, Monitor in Java, wie stehts da um wait() und notifiyAll(), was ist Rendezvous, was passiert da. ("Rendezvous dient zur Sync. in Ada" reicht nicht, man sollte zumindest eine grobe Ahnung haben wie das mit den Entries ist, wer wann blockiert, usw.)

Codesnippets aus dem Buch erklären: LISP (reverse), Smalltalk, Ada

Prüfungsklima sehr angenehm, Benotung ebenso

November 2018[Bearbeiten | Quelltext bearbeiten]

  • Was haben wir in der Vorlesung gemacht?

Implementierung:

  • Was ist ein Dynamic Link? Wohin zeigt dieser? Wann braucht man sowas?
  • Was ist ein Static Link? Wohin zeigt dieser? Wann braucht man sowas?
  • Was macht die Funktion fp(d). Was ist d?
  • Was ist ein Activation Record? Was wird darin alles gespeichert?
  • Warum braucht man in Java keinen Static Link? Weil in Java Klassen am Heap liegen.

Synchronisation:

  • Was ist ein Protected Type in Ada? Welche Rolle spielt hier der Compiler?

Code Snippets:

  • Code Snippets in Smalltalk aus den Folien: Wichtig hier vor allem wer ist der Empfänger der Nachricht und was ist die Nachricht.
  • Code Snippets in ML aus den Folien: Reverse Beispiel, was macht der Code. Insert Beispiel, was bedeutet der Doppelpunkt? Warum steht da ein Typ dabei? Weil es in ML keine Typklassen gibt.

Prüfungsklima sehr angenehm und Benotung sehr fair.

September 2019[Bearbeiten | Quelltext bearbeiten]

Implementierung:

  • Activation Record
  • Dynamic/Static Link
  • Arten der Parameterübergabe, wann ist Call-by-Reference nicht gleich Call-by-Value-Return?
  • Was berechnet fp(d) und wozu, was ist d?

Exceptions:

  • Welche Möglichkeiten gibt es, Exceptionhandling zu implementieren?
  • try-catch-finally in Java
  • Exceptionhandling in Eiffel

Synchronisation:

  • Monitor allgemein
  • Monitor in Java, was machen notify, notifyAll, wait, und warum sollte man notifyAll statt notify verwenden?
  • Protected Types in Ada
  • Rendezvous in Ada

Code:

  • Lisp: Reverse aus dem Buch
  • Smalltalk: Was bedeutet "Nachricht senden", was wird an wen geschickt?
  • ML: Beispiel aus Buch, wozu Typangabe?
  • C++: Beispiel aus dem Buch. Default-Implementierungen von Funktionen; public, private und protected Inheritance unterscheiden; was sind virtual Functions?