Concurrency; Synchronization; Language Design; Typestates
en
Abstract:
Diese Diplomarbeit befasst sich mit nebenläufiger Programmierung in objektorientierten Programmiersprachen. In aktuellen Sprachen wird Nebenläufigkeit oft nur zweitrangig und orthogonal zum Objektkonzept behandelt. Durch die unzureichende Integration ist die korrekte Implementierung von nebenläufigen Programmen kompliziert und fehleranfällig. Das Ziel dieser Arbeit ist die Frage zu klären, wie Konzepte der Nebenläufigkeit mit Methoden des Typestate Trackings besser in das objektorientierte Paradigma integriert werden können, und welche Vor- und Nachteile ein solches Modell mit sich bringt. Zur Untersuchung dieser Punkte wird eine Java-ähnliche Programmiersprache entworfen, die diesen Ansatz zum Ausdruck nebenläufiger Aspekte verfolgt. Es wird ein Prototyp eines Compilers für diese Sprache entwickelt. Dieser wird dazu benutzt, um die Machbarkeit zu demonstrieren und um das Konzept zu bewerten. Zur Evaluierung werden nebenläufige Programme mit der neu erstellten Sprache und mit Java erstellt. Die daraus resultierenden Implementierungen werden anhand vordefinierter Kriterien miteinander verglichen. Die Arbeit zeigt, dass durch eine bessere Integration von Nebenläufigkeit in objektorientierte Sprachen der Implementierungsaufwand von Programmen gesenkt werden kann. Ebenso kann die Fehleranfälligkeit verringert und die Ausdruckskraft erhöht werden. Die Ausführungszeit solcher Programme ist zur Zeit länger, aber es ist noch offen, wie effizient eine optimierte Implementierung wäre.
This diploma thesis deals with concurrent programming in object-oriented programming languages. Even modern programming languages do not include concurrency in the object-oriented paradigm. Due to this lack of integration, it is complicated and error-prone to write correct concurrent programs in object-oriented languages. We want to use Typestate Tracking to let concurrency be a core part of an object-oriented language. The aim of this thesis is to evaluate the consequences of such an integration and to determine how programmers can benefit from this approach. We design a Java-like language that uses this technique to handle concurrency. Subsequently we develop a prototype of a compiler for this language. We use the prototype to demonstrate the feasibility of this approach and to evaluate the concept. For the evaluation we implement typical concurrent programs with our language and with Java. We compare the resulting programs with each other using predefined criteria. Our conclusion is that a better integration of concurrency concepts into object-oriented languages can make concurrent programming easier. It is easier to implement programs in such a system. In addition the resulting programs are also less error-prone and more concise. A current drawback is that the execution time of the programs is longer. It is an open question how efficient an optimized implementation would be.
en
Additional information:
Abweichender Titel laut Übersetzung der Verfasserin/des Verfassers Zsfassung in engl. Sprache