Blockseminar im SS05
Lehrveranstaltung: Fortgeschrittene Konzepte in C++
Veranstaltungsform: S2: Seminar im Hauptstudium Hochschullehrer: Prof. J. Buchmann / C. Ludwig (cludwig@cdc.informatik.tu-darmstadt.de) Ort / Zeit: S2|02-E202 / 23.+24.06.2005 (Blockveranstaltung!) Voraussetzungen: Solide Kenntnisse in C++ Anmeldung: über das Anmeldesystem der RBG Vorbesprechung: Do., 07.04.2005, 10 - 11 Uhr in S2|02-A214 Turnus: unregelmässig
Ausarbeitungen:
Die Teilnehmer haben sich bereit erklärt, ihre Ausarbeitungen im Netz zu veröffentlichen:
- D. Bausch: Garbage Collection in C++
- T. Franke: Erweiterte Konzepte in C++: Multithreading
- S. Fuhrmann: Garbage Collection Techniques in C++: Smart Pointers for Automated Memory Management
- G. Hoffmann: C++-Metaprogrammierung
Inhalt:
Seit der Verabschiedung des ISO C++ Standards in 1998 hat sich der alltägliche Gebrauch der Programmiersprache stark geändert. Viele Entwickler haben die Grenzen der im Standard festgelegten Sprachfeatures ausgelotet und dabei zahlreiche Anwendungen aufgetan, die das Standardisierungskomitee gar nicht im Auge hatte. Es gibt aber auch Problemfelder, in denen die innerhalb des Standards von 1998 möglichen Lösungen unbefriedigend sind. Prominentestes Beispiel ist die Unterstützung von Multi-Threading. Auch fordern immer mehr Entwickler eine bessere Unterstützung von (optionalem) Garbage Collecting.
Derzeit laufen viele Diskussionen, wie die Sprache C++ verbessert werden kann. Für manche Anwendungen sind Bibliotheken entwickelt worden, die bestehende Probleme zufriedenstellend lösen. In anderen Bereichen sind Änderungen der Sprachregeln vorgeschlagen, um portable, elegante und damit nicht zuletzt auch wartbare Lösungen für typische Anwendungen zu ermöglichen. Schließlich gibt es auch Problemfelder, die nur gelöst werden können, indem das vom Standard unterstellte Rechnermodell geändert wird: Die bei Mehrprozessormaschinen auftretenden Fragen, wann Modifikationen des Speicherinhalts für Threads, die auf verschiedenen Prozessoren laufen, sichtbar werden, können für die abstrakte Maschine, die der Standard derzeit definiert, nicht einmal formuliert werden. Auch die von Microsoft vorangetriebene Standardisierung des Common Language Interface für .NET Umgebung und die dadurch aufgeworfenen Fragen zur C++ Kompatibilität sind Anlass für viele z.T. hitzig, aber auch mit viel technischem Sachverstand geführte Debatten.
In diesem Seminar sollen die Entwicklungen, die C++ in den vergangenen Jahren genommen hat und die sich für die nähere Zukunft abzeichnen, vorgestellt und diskutiert werden. Eine Hauptaufgabe der Teilnehmer wird sein, den Stand der Diskussion sowie im Gebrauch befindliche Lösungen zu recherchieren: Neben diversen Büchern und den Diskussionspapieren des Standardisierungsgremium sind hier v.a. die Archive einschlägiger Mailinglisten und Newsgroups als Quellen zu benutzen. Mögliche Themen sind u.a.:
- Speicher-/Resourcenmanagement
- Multi-Threading
- Internationalisierung und Lokalisierung
- Metaprogramming mit Templates und Präprozessor
- Verbesserte Unterstützung für generisches Programmieren
- Interaktion mit anderen Programmiersprachen, z.B. zur skriptgesteuerten Kontrolle
- Unterstützung funktionaler Programmierkonzepte
- Erweiterungen der Standardbibliothek (z.B. mathematische Funktionen, Zufallszahlengeneratoren, dezimale Arithmetik)
- Anwendungsspezifische Bilbliotheken, die nicht zur Standardisierung vorgeschlagen sind (z.B. zum Parsen, Serialisieren etc.)
- …
- C++ Standardkomitee (ISO JTC1/SC22/WG21)
- Boost.org: Peer reviewed libraries, z.T. für die Standardisierung vorgesehen.
Technisch anspruchsvolle Diskussionen auf der Developer Mailing Liste. - Newsgroup compl.lang.c++.moderated: Nicht plattformspezifische Diskussionen rund um C++
- Newsgroup comp.std.c++: Diskussionen zum C++ Standard, meist sehr technisch
- Vandevoorde, D. and Josuttis, N.: C++ Templates - The Complete Guide. Addison-Wesley, 2003.
- Alexandrescu, A.: Modern C++ Design. Addison-Wesley, 2001.
- Abrahams, D. and Gurtovoy, A.: C++ Template Metaprogramming. Addison-Wesley, 2005.
Einordnung in Studienplan und Prüfungsordnung:
Das Seminar richtet sich an Studenten der Informatik und Wirtschaftsinformatik im Hauptstudium


