iX 12/2017
S. 62
Titel
Programmiersprachen III
Aufmacherbild

C++ damals und heute

State of the Union

Fast vierzig Jahre reichen die Anfänge des objektorientierten C++ zurück. Vieles ist dazugekommen, andere Funktionen werden noch immer schmerzlich vermisst. Eine subjektive Einschätzung des heutigen Stands der Sprache und ihrer Zukunft.

C++ ist im Laufe der Jahre zu einer „runden“ Sprache herangewachsen, und inkrementelle Updates der Neuerungen des C++11-Standards lassen sie weiter wachsen. Besonders auf Bibliotheksebene existieren aber Defizite. Der vorliegende Artikel wirft einen kritischen Blick auf die Entwicklung von C++.

Neue Programmiersprachen müssen sich Ziele setzen. Diese orientieren sich sowohl an den zu lösenden Aufgaben als auch an der technischen Machbarkeit, dem Marktumfeld und natürlich den Vorkenntnissen ihrer Macher. Decken sich die anvisierten Einsatzfelder mit denen einer größeren Zahl von Entwicklern, wird sich schnell eine Community bilden mit einem lebendigen Ökosystem an Bibliotheken für verschiedene Einsatzzwecke. Wie erfolgreich eine Sprache dann langfristig ist, hängt davon ab, wie gut es gelingt, die Weichenstellungen der Frühzeit an neue Einsatzfelder anzupassen, neue Fähigkeiten aktueller Hardware auszunutzen und die existierende Community für die Bedürfnisse anderer Nutzerkreise zu sensibilisieren.

Je größer die Codebasis ist, umso schwerer wird ein Schwenk fallen, jedenfalls wenn neue Spracheigenschaften rückwärtskompatibel bleiben sollen; ebenso können zu viele gleichberechtigte Entscheider oder ein Perfektionismus an den falschen Stellen Anpassungsprozesse stark verlangsamen.

Anpassungen im richtigen Maß

Bleiben Neuerungen auf Sprach- oder Bibliotheksebene oder bei der Unterstützung neuer Hardware aus, wählen Entwickler für ihre Projekte bald eine der neuen hippen und im aktuellen technischen Umfeld entstandenen Sprachen. Time-to-Market ist für jeden Entwickler wichtig, egal ob im kommerziellen oder im Open-Source-Umfeld – und jeder hat schließlich auch ein Leben jenseits von Tastatur und Bildschirm. Schrumpft die Community, leidet auch die Verfügbarkeit und Pflege von Bibliotheken für neue Einsatzzwecke, und weitere Entwickler wandern ab bis hin zum effektiven Tod einer Sprache.

Glaubt man den Auguren des TIOBE-Index [a], befindet sich etwa das ab 1987 geschaffene und einst für vielfältige Aufgaben genutzte Perl bereits seit 2006 auf einer Art Todesspirale (siehe dazu auch den Artikel „Happy Birthday, Perl!“ auf Seite 108). Ausschlaggebend dafür dürften unter anderem zu ambitionierte (perfektionistische?) Ziele bei der nun schon 17 Jahre anhaltenden Überarbeitung in Form von Perl 6 sein, das fast eine neue Sprache darstellt. (Zu Verweisen auf Quellen im Web wie [a] siehe ix.de/ix1712062.)

Das mit seinem Erscheinungsjahr 1991 nicht viel jüngere Python zeigt im Vergleich eine deutlich weitere Verbreitung und befindet sich bei TIOBE unter den Top 5 der populärsten Sprachen – nach vier Sprachen der C-Familie, darunter C++. Python wird, auch dank seiner umfangreichen Ausstattung mit Bibliotheken, für eine große Bandbreite unterschiedlicher Aufgaben eingesetzt und wildert dabei gern in besonders rechenintensiven Einsatzfeldern – nicht ohne allerdings auf in nativen Sprachen wie C++ implementierte Backends zu verzichten.

Hardwarenäher als Simula

C++ soll eine direkte Abbildung auf die Hardware und gleichzeitig eine hohe Abstraktionsebene durch Objektorientierung realisieren (Abb. 1).

C++ selbst befindet sich in seiner Popularität am Scheideweg. Zwar liegt es bei TIOBE immer noch auf Platz drei der beliebtesten Sprachen, seine Beliebtheit sinkt aber seit Beginn der Messung im Jahr 2001 kontinuierlich. Wie weit zurück diese Entwicklung reicht, lässt sich nicht sagen. Der Peak der Popularität dürfte aber nach der ersten formalen Standardisierung 1998 erreicht worden sein.

Bjarne Stroustrup hat C++ bereits seit 1979 in den damaligen AT & T Bell Laboratories entwickelt, zunächst als „C with Classes“. An derselben Örtlichkeit hat seinerzeit auch das Unix-Betriebssystem das Licht der Welt erblickt. Und auch die Programmiersprache „C“ als älteste der drei hier genannten Sprachen hat dort ihren Ursprung.

Während seiner Doktorarbeit mit dem Titel „Communication and Control in Distributed Computer Systems“ in Cambridge (England) versuchte Stroustrup, ein verteiltes Betriebssystem mithilfe der ersten objektorientierten Programmiersprache Simula zu simulieren und zu erforschen. Simula hatte er bereits zuvor während seines Studiums an der Universität Aarhus in Dänemark kennengelernt. Die mit dieser Sprache möglichen Abstraktionen erwiesen sich dann zwar als gut geeignet für das Design; Simula selbst war jedoch zu schwerfällig für die Aufgabe, sodass Stroustrup auf eine hardwarenähere Sprache ausweichen musste [b].