Programmiersprachen
LVA 185.208, VL 2.0, 2007 S
2. Übungsaufgabe
Entwickeln Sie in ML oder Haskell (oder einer anderen stark typisierten
funktionalen Programmiersprache) ein Programm zur Verwaltung von Software
(z.B. Texte, Filme, Musikstücke, Computerspiele, etc.) auf
unterschiedlichen Datenträgern. Datenträger können physisch sein
(wie Buch, CD, DVD, Festplatte und Speicherkarte) oder abstrakt (wie
Web-Adresse oder Adresse innerhalb eines anderen Datenträgers).
Von jeder Software kann es mehrere Versionen geben, und jede Version kann auf
mehreren Datenträgern gespeichert sein. Daten wie Titel, Autoren und
Entstehungszeit sollten für jede Software (sofern bekannt) angegeben sein,
weitere Kommentare können dazugegeben werden. Implementieren Sie geeignete
Suchmöglichkeiten nach Software wenn solche Daten bekannt sind.
Jeder physische Datenträger hat einen eindeutigen Eigentümer und kann
verborgt sein. Es soll möglich sein, Datenträger zu kaufen bzw. zu
verkaufen (also den Eigentümer zu ändern) und auszuborgen bzw. an
andere zu verborgen wobei entsprechende Daten erfasst werden sollen.
Die Daten sollen beim absichtlichen Beenden des Programms nicht verloren gehen,
sondern persistent (in einer Datei) gespeichert werden. Die Datenmengen werden
klein bleiben. Es ist daher problemlos möglich, alle Daten beim
Programmstart einzulesen und vor Beendigung neu zu schreiben.
Bei dieser Aufgabe kommt es darauf an, Daten zu verwalten. Dies scheint in
Widerspruch zu modernen funktionalen Sprachen zu stehen. Bei genauerer
Betrachtung ergeben sich aber viele Lösungsmöglichkeiten.
Auf dem Übungsrechner (b3) sind Objective Caml als ML-Interpreter bzw.
Compiler und Hugs als Haskell-Interpreter installiert. Umfangreiche
Informationen zu Objective Caml (z.B. ein Manual und Interpreter bzw. Compiler
zum Herunterladen) finden Sie unter http://caml.inria.fr/. Falls Sie Ihr Programm
in Objective Caml schreiben, schränken Sie sich bitte auf Standard-ML ein.
Verzichten Sie auf die Verwendung der objektorientierten Erweiterungen.
Informationen zu Haskell (beispielsweise die Sprachdefinition) finden Sie unter
http://www.haskell.org/.
Wenn Sie die Software selbst installieren haben Sie die Wahl zwischen GHC und
Hugs. GHC (http://www.haskell.org/ghc/) is ein eher
umfangreicheres System, das auch für größere Anwendungen
geeignet ist, aber daher vielleicht auch einen etwas höheren
Einlernaufwand mit sich bringt. Der GHC-Compiler produziert relativ effizienten
Code. Hugs (http://www.haskell.org/hugs/) ist ein
im Vergleich zu GHC einfacheres auf einem Interpreter basierendes System, das
für die Lösung dieser Aufgabe vollkommen ausreicht.