C++Now! – Boost-Konferenz im neuen Gewand

Veranstaltungsberichte  –  36 Kommentare

(Bild: Guillaume Schmid)

Mitte Mai fand die aus der BoostCon hervorgegangene Konferenz C++Now! statt. Neben dem Schwerpunkt auf dem neuen C++11-Standard sorgten Überlegungen hinsichtlich eines modularen und einfacheren C++ für Aufsehen.

Die Boost-Community organisierte die BoostCon in den vergangenen Jahren, um die Entwicklung der Boost Bibliotheken voranzutreiben. Mit der Verabschiedung des neuen C++-Standards im vergangenen Jahr, in den viele Ideen der Boost-Community geflossen sind, hat sich nun der Schwerpunkt der Konferenz von den Boost Bibliotheken zu C++11 verschoben. Während sich der Name der Konferenz änderte, blieb der Veranstaltungsort derselbe: Die C++Now! fand wiederum in Aspen, Colorado, statt.

Die Konferenzteilnehmer konnten sich auf Präsentationen einiger Mitglieder des C++-Standardkomitees freuen. So stellte Howard Hinnant, Mitglied des C++-Standardkomitees und verantwortlicher Entwickler der Bibliothek libstdc++, Rvalue-Referenzen vor. Er erklärte zum Beispiel, dass Referenzen aus C++03 im neuen Standard in Lvalue-Referenzen umbenannt wurden und Referenzen in C++11 sowohl Lvalue- als auch Rvalue-Referenzen bedeuten. Er präsentierte verschiedene Arten von Ausdrücken und zeigte deren Zusammenhänge auf. So gibt es nicht nur Referenzen, sondern zum Beispiel auch glvalues, xvalues und prvalues. Schließlich gab Hinnant praktische Tipps, etwa Rückgabewerte von Funktionen nicht zwangsläufig als Rvalue-Referenz zu definieren, da es mit der RVO (Return Value Optimization) eine schnellere und bessere Möglichkeit gebe, Werte von Funktionen zurückzugeben.

David Vandevoorde, Mitglied des C++-Standardkomitees

(Bild: Guillaume Schmid)

David Vandevoorde, ebenfalls Mitglied des Standardkomitees, stellte seine Idee der Module vor. Module sind nicht in C++11 definiert, sollen aber nach Vandevoordes Willen Bestandteil einer zukünftigen Version von C++ sein. Bei Modulen handelt es sich nicht um dynamische oder statische Bibliotheken, vielmehr geht es um die Möglichkeit, die Kompilierung zu beschleunigen – vor allem, wenn ein Projekt aus vielen Header-Dateien besteht.

Bei den von Vandevoorde vorgeschlagenen Modulen geht es eher um eine intelligente vorkompilierte Header-Datei, die nicht jedes Mal neu zu kompilieren ist, wenn sich eine Header-Datei ändert. Interessanterweise unterstützt Clang Compiler-abhängige Module, die den gewünschten Effekt haben und die Kompilierung beschleunigen können, ohne dass C++-Code zu ändern ist.

Sumit Kumar, Programm-Manager bei Microsoft für Visual Studio, präsentierte eine Vorabversion von Visual Studio 11 und stellte einige der Neuheiten der Entwicklungsumgebung vor. Beispielsweise lassen sich mit der IDE Projekte asynchron laden, sodass ein Entwickler sofort mit dem Startprojekt arbeiten sowie Code ansehen und verändern kann, während andere Projekte noch im Hintergrund geladen werden. Visual Studio 11 kann automatisch Grafiken erstellen, die die internen Zusammenhänge einer Software erkennen lassen. Zum Beispiel kann man in einer Grafik in eine ausführbare Datei hineinzoomen, um Namensräume, Klassen oder Funktionen sichtbar zu machen.

Laut Kumar wird der Debugger in Visual Studio als eines der wichtigsten Werkzeuge erachtet, weswegen ihn Microsoft erkennbar optimiert hat. Zu guter Letzt hat sich Microsoft die Kritik seiner Entwickler-Community zu Herzen genommen, die Symbole in der IDE farbiger zu gestalten, auch wenn die auf der Konferenz vorgestellte Vorabversion von Visual Studio 11 noch eintönige Symbole besaß.

Sean Parent, Principal Scientist und Softwarearchitekt bei Adobe

(Bild: Guillaume Schmid)

Am meisten beeindruckt hat die Teilnehmer wahrscheinlich die Keynote von Sean Parent, Principal Scientist und Softwarearchitekt bei Adobe. Er versuchte eine Richtung vorzugeben, in der sich C++ weiterzuentwickeln habe. Seiner Meinung nach ist C++ drastisch zu vereinfachen. Beispielhaft zeigte er eine Implementierung von std::pair und scrollte die Header-Datei seitenlang nach unten, obwohl diese Datenstruktur letztlich lediglich zwei Werte speichert. Außerdem müsse C++ einen standardisierten Zugriff auf Komponenten wie die GPU bieten, damit Entwickler mit C++ tatsächlich von der Leistungsfähigkeit eines Computers – und zwar aller Komponenten eines Rechners – profitieren können. Während sich mit Threads, die mit C++11 Einzug in den Standard gehalten haben, nun Multithreaded-Anwendungen entwickeln lassen und sich somit auf mehrere Kerne eines Prozessors zugreifen lässt, haben C++-Entwickler derzeit keine Möglichkeit, über eine im C++-Standard definierte Schnittstelle auf leistungsfähige Komponenten wie die GPU zuzugreifen.

Weitere Vorträge der C++Now! hielten etwa Alisdair Meredith, der erklärte, welche Lehren das Komitee aus der Entwicklung des neuen C++-Standards gezogen hat, und Stephan T. Lavavej, der bei Microsoft für die C++-Standardbibliothek verantwortlich ist. Dieser gab eine Präsentation zu regulären Ausdrücken in C++11. Chandler Carruth, der das Clang-Team bei Google leitet, erklärte schließlich, wie Clang beim Refactoring von C++-Code helfen kann.

Wer nicht zu den rund 130 Konferenzteilnehmern zählte, kann auch unter eine Übersicht zu allen Vorträgen aufrufen. Für zahlreiche Präsentationen stehen PDF-Dateien zum Download zur Verfügung. Videos der Präsentationen werden in Kürze auf der Konferenz-Website veröffentlicht.

Die nächste C++Now! findet vom 12. bis 17. Mai 2013 wieder in Aspen statt. (ane)

Boris Schäling
ist aktives Mitglied der Boost-Community. Er vertrat die Community auf Googles Summer of Code Mentor Summit 2010, präsentierte mehrere Themen aus dem Boost-Umfeld auf der BoostCon 2011 und der C++Now! und ist Autor des Buchs "Die Boost C++ Bibliotheken".