Baumann, C. (2010). Efficiently implementing PostScript in C# [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://resolver.obvsg.at/urn:nbn:at:at-ubtuw:1-44638
PostScript; interpreter; C#; .NET; stack; execution speed; name resolution
en
Abstract:
PostScript ist eine sehr mächtige Sprache zur Beschreibung von Grafiken zum Anzeigen und Ausdrucken. Etwas, das viele Leute aber nicht wissen, ist, dass PostScript auch eine großartige, stackbasierte Programmiersprache ist. Das .NET Framework wurde von Microsoft entwickelt und ist eine riesige Sammlung von Klassenbibliotheken, Programmiersprachen und Standards. Ziel dieser Arbeit ist es, einen Interpreter für PostScript mit Hilfe des .NET Frameworks zu entwickeln, bei dem das Hauptaugenmerk auf der Ausführungsgeschwindigkeit von PostScript-Programmen liegt. In einem ersten Schritt werden wir die Bottlenecks bei der Ausführung von PostScript-Programmen herausfinden.<br />Dazu werden wir einige "Real-World" Programme analysieren. Ein weiterer, wichtiger Punkt bei der Ausführung sind sogenannte Prozeduren, die in PostScript als Arrays dargestellt werden. Diese können sich sogar noch während ihrer eigenen Ausführung verändern und erlauben unendliche Rekursion mittels Tail-Calls. Die Namensauflösung in PostScript ist auch besonders wichtig, da sie einen großen Anteil an der Gesamtausführungszeit von Programmen hat. Wir werden sehen, dass es durchaus möglich ist einen Interpreter für PostScript in einer höheren Programmiersprache wie C# zu entwickeln, der in Sachen Ausführungsgeschwindigkeit mit aktuellen (kommerziellen) Interpretern mithalten kann.<br />
de
PostScript is a very powerful language for describing graphics for displaying and printing. What most people don't know, is that PostScript is also a mighty stack-based programming language. The .NET Framework is a huge collection of class libraries, programming languages and standards built by Microsoft. The aim of this work is it to develop a PostScript interpreter with the .NET Framework whose main focus lies on the execution speed of PostScript programs. In a first step we will find out the bottlenecks of the execution of PostScript programs. For this purpose we will analyse some "real-world" programs. Another important point for the execution are so-called procedures. These are represented by arrays in PostScript. They can be changed even when they are being executed by the interpreter and allow infinite tail-call recursion. Name resolution in PostScript is also of importance, because of its impact on the overall execution time. We will see that is is possible to write an interpreter for PostScript in a high-level programming language like C# which can keep up with current (commercial) interpreters.