Visionäre der Programmierung

Berühmte Entwickler ganz privat

16.11.2009
Von 


Simon Hülsbömer betreut als Senior Research Manager Studienprojekte in der Marktforschung von CIO, CSO und COMPUTERWOCHE. Zuvor entwickelte er Executive-Weiterbildungen und war rund zehn Jahre lang als (leitender) Redakteur tätig. Hier zeichnete er u.a. für die Themen IT-Sicherheit und Datenschutz verantwortlich.

C++ 2.0

Werden wir je ein C++ 2.0 sehen?

Bjarne: Das hängt davon ab, was Sie mit "C++ 2.0." meinen. Wenn Sie auf eine neue Sprache anspielen, die mehr oder weniger von Grund auf neu entwickelt wurde und das Beste von C++ enthält, aber alles Schlechte weglässt (für bestimmte Definitionen von "Bestes" und "Schlechtes"), ist die Antwort: "Ich weiß es nicht." Ich würde mich über eine richtige neue Sprache in der Tradition von C++ freuen, aber ich sehe keine am Horizont, daher möchte ich mich auf den nächsten ISO-C++-Standard konzentrieren, der den Arbeitstitel C++0x trägt.

Für viele wird das ein "C++ 2.0" sein, da es neue Sprachfeatures und neue Standardbibliotheken enthalten wird, aber es wird auch zu 100 Prozent kompatibel zu C++98 sein. Wir nennen es C++0x, in der Hoffnung, dass es ein C++09 wird. Wenn wir langsam sind - sodass x hexadezimal werden muss - werde ich (und andere auch) ziemlich enttäuscht und verärgert sein.

C++0x wird nahezu 100 Prozent kompatibel zu C++98 sein. Wir haben kein besonderes Interesse daran, Ihren Code ungültig werden zu lassen. Die größten Inkompatibilitäten entstehen durch die Verwendung ein paar neuer Schlüsselwörter wie static_assert, constexpr und concept. Wir haben versucht, die Auswirkungen minimal zu halten, indem wir neue Schlüsselwörter wählten, die nicht so viel genutzt werden. Die wichtigsten Verbesserungen sind:

  • Unterstützung von modernen Maschinenarchitekturen und Nebenläufigkeit: ein Maschinenmodell, eine Thread-Bibliothek, Thread-lokaler Speicher und atomare Operationen, sowie ein Mechanismus zur asynchronen Werterückgabe ("Futures").

  • Eine bessere Unterstützung der gegnerischen Programmierung: Konzepte (ein Typensystem für Typen, Kombinationen aus Typen und Kombinationen aus Typen und Integern), um Template-Definitionen und -Anwendungen besser prüfen und sie besser überladen zu können. Typdeduktion basierend auf Initialisierern (auto), verallgemeinerte Initialisiererlisten, verallgemeinerte konstante Ausdrücke (constexpr), Lambda-Ausdrücke und mehr.

  • Viele "kleine" Spracherweiterungen, zum Beispiel statische Assertions, Verschiebesemantiken, verbesserte Enumerations, ein Name für den Nullzeiger (nullptr) und so weiter.

  • Neue Standardbibliotheken für reguläre Ausdrücke, Hash-Tabellen (zum Beispiel unordered_map), "smarte" Zeige und so weiter.

Alle Details finden Sie auf der Website des "C++ Standards Committee". Einen Überblick finden Sie auch in meinen Online-FAQ zu C++0x.

Beachten Sie bitte, dass ich mich bei "den Code nicht ungültig werden lassen" auf die Kernsprache und die Standardbibliothek beziehe. Alter Code wird eventuell tatsächlich nicht mehr funktionieren, wenn er Erweiterungen eines Compileranbieters außerhalb des Standards oder altertümlicher Bibliotheken nutzt. Meiner Erfahrung nach beziehen sich die Leute vor allem auf proprietäre Features und Bibliotheken, wenn sie sich über "kaputten Code" oder "Instabilitäten" beschweren. Wenn Sie zum Beispiel das Betriebssystem wechseln und nicht eine der portablen GUI-Bibliotheken verwenden, werden Sie sicherlich einiges am Code für die Benutzerschnittstelle zu korrigieren haben.