Programmiersprachen
LVA 185.208, VL 2.0, 2005 S
2. Übungsaufgabe
Entwickeln Sie in ML oder Haskell (das sind funktionale Programmiersprachen)
eine persistente Datenbank zur Verwaltung eines kleinen Lagers. Es bleibt
Ihnen überlassen, welche Arten von Produkten im Lager zu finden sind -
Fahrradbestandteile, Gemüse, Gesteinsproben, etc. Es sollte jedenfalls
möglich sein, den Inhalt der Datenbank vom Programm aus zu ändern
(zumindest Einfügen und Löschen von Datensätzen) und nach
beliebigen Zeichenketten zu suchen. Weiters sollen die Produkte in der
Datenbank in mehrere Kategorien eingeteilt werden, und Datensätze in
unterschiedlichen Kategorien sollen aus unterschiedlichen Datenfeldern bestehen
können. Es soll möglich sein, neue Kategorien hinzuzufügen bzw.
nicht mehr benötigte Kategorien zu entfernen, sowie die Suche auf
bestimmte Kategorien einzuschränken. Die in der Datenbank gespeicherten
Daten sollen beim absichtlichen Beenden des Programms nicht verloren gehen,
sondern persistent (in einer Datei) gespeichert werden. Die Datenbank wird
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 auf
den ersten Blick in Widerspruch zu modernen funktionalen Sprachen wie ML und
Haskell zu stehen, bei genauerer Betrachtung ergeben sich aber zahlreiche
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/,
weitere Informationen zu Hugs (Dokumentation und Download) unter
http://www.haskell.org/hugs/.