Virtuelle Maschine zur Bildmanipulation

Eine virtuelle Maschine für eine Spezialsprache zur Bildmanipulation

PPL-Maschine
Im Rahmen der Vorlesung Compilerbau ist als Beispiel für die Übersetung eine Spezialsprache PPL, Picture Programming Language, entwickelt worden zur Erzeugung und Manipulation von Bildern. In dieser Pascal-ähnlichen Sprache sind Bilder ein eingebauter Datentyp, auf dem eine Reihe von Standard-Operationen definiert sind: Vergrößern, Verkleinern, Ausschneiden und Zusammensetzen, Drehen, Spiegeln, Helligkeitswerte verändern, Addieren, Subtrahieren und Multiplizieren und andere mehr.

Die PPL wird in Zukunf sicher noch ausgebaut werden: Weitere Bildmanipulationsoperationen und Bilderzeugungsoperationen sind hier angedacht. Auch werden in dem exisiterenden Prototyp bisher nur Graustufenbilder bearbeitet.

Für diese PPL-Sprache gibt es einen Compiler und eine virtuelle Maschine, PPL-VM, ähnlich der Java Virtual Machine, mit der die Programme übersetzt und anschließend interpretiert werden können. Dieses System ist vollständig in der funktionalen Programmiersprache Haskell realisiert worden. Diese Sprache ist produktiver und durch das ausgereifte Typsystem viel sicherer als Java und C, also ideal geeignet für die Entwicklung von Prototypen. Um größere Bilder zu verarbeiten und diese Verarbeitungsschritte auch effizienter mit maschinennäheren Techniken zu realisieren, bietet sich eine Implementierung der virtuellen Maschine in Java und/oder C an. Für Java gibt es bereits ein Compiler-Backend, so dass PPL nach Java übersetzt werden kann. Was fehlt ist eine in Java realisierte PPL-VM.

Die Aufgabe kann in zwei Teile gegliedert werden: Die Ablaufsteuerung innerhalb der virtuellen Maschine und die Bildbearbeitungsoperationen. Die Haskell-Implementierung dient für diese Aufgabe als Spezifikation und Prototyp.

Programmiersprachen
und Werkzeuge
1.Variante
Implementierung in Java: Vorteil ist hier insbesondere die automatische Speicherverwaltung von Java
2.Variante
Implemetierung in C: Vorteile sind hier noch mehr Geschwindigkeit wegen der Maschinennähe von C, aber es besteht Mehraufwand bei der Speicherverwaltung. Diese kann hier aber durch einfache Techniken wie Referenzzähler realisiert werden.
Umgebung
Linux und Java 2,
für Haskell der Glasgow Haskell Compiler (GHC), dieser ist in der z.B. in der SuSE Linux Distribution enthalten,
zum Ausprobieren von Haskell gibts den Haskell-Interpretierer Hugs 98.
etc.
Die Quellen des PPL-Prototyp Compilers, der PPL-VM als Interpretierer und einiger Beispiel als tar.gz Archiv. Auspacken in einem neuen leeren Verzeichnis, z.B. ppl, und ausprobieren.

Hauptnavigation