Ehmann, S. (2009). Evaluation of support for generic programming in C++ and Java [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://resolver.obvsg.at/urn:nbn:at:at-ubtuw:1-33020
Generisches Programmieren hat sich zu einer wichtigen Programmiertechnik entwickelt, die von vielen Programmiersprachen direkt unterstützt wird. Während Java Generics vergleichsweise neu sind, ist die nächste C++ Version (die oft als C++0x bezeichnet wird) gerade in Arbeit. Diese versucht bekannte Probleme bezüglich Templates zu beheben.<br />Diese Diplomarbeit behandelt das Thema, wie gut generisches Programmieren von C++ und Java in der Praxis unterstützt wird. Ziel ist es, sowohl die positiven als auch negativen Eigenschaften von C++ und Java, die bei der Benutzung von generischem Programmieren auftreten, herauszuarbeiten. Das Hauptaugenmerk liegt dabei auf jenen Aspekten, die in echten Programmen auftreten, und nicht auf theoretischen Beispielen.<br />Um gute Unterstützung zu erreichen, sind verschiedene Aspekte wichtig, etwa knappe und präzise Syntax, verständliche Fehlermeldungen des Compilers und schnelle Ausführung.<br />Es wird gezeigt, welche Bereiche gut funktionieren und wo noch Verbesserungsbedarf besteht. Im Fall von Problemen werden deren Ursachen erforscht und gezeigt, wie man diese umgehen kann. Spracherweiterungen, die manche der gezeigten Probleme beheben, werden ebenfalls betrachtet.<br />Um die Unterstützung zu evaluieren, werden drei generische Bibliotheken implementiert. Dabei werden die aktuelle Version von Java und ein C++ Prototyp, der C++ Konzepte unterstützt, eingesetzt. Anhand von kleinen Codeausschnitten werden die Eigenschaften von C++ und Java erläutert.<br />Es wird veranschaulicht, dass beide Sprachen geeignet sind, um sie für generische Programmierung einzusetzen. Es existieren zwar einige Einschränkungen, diese können jedoch meist umgangen werden. Die besprochenen Spracherweiterungen zeigen jedoch, dass beide Sprachen noch verbessert werden können.<br />
de
Generic programming has become an important programming technique that is directly supported by many programming languages.<br />While Java generics are comparatively new, the next version of C++ (commonly referred to as C++0x) is currently in development. C++0x aims to address known problems concerning templates.<br />This thesis deals with the subject how well generic programming is supported by C++0x and Java in practice. The goal is to find the characteristics - both positive and negative - of C++ and Java when using generic programming. The focus is on those aspects that occur in real programs rather than theoretical examples. To provide good support several aspects are important, for example, concise syntax, comprehensible compiler error messages, and fast execution.<br />We will demonstrate what is working well and where shortcomings can be found. In the case of problems, we will explore their reasons and show how we can work around them. We will also look at language enhancements that can solve some of these issues.<br />To evaluate the language support we implement three generic libraries in both languages. We apply the current version of Java and a prototype compiler supporting C++ concepts. Small excerpts from the code demonstrate the properties of C++ and Java.<br />We will show that both languages are suitable for generic programming.<br />While there are some limitations, most of them can be circumvented. But there is still room for improvement, as demonstrated by the proposed language extensions.