Skeptische Betrachtungen zu C++ und Objective C

Die Programmiersprache C++ wurde von Bjarne Stroustrup als Verbesserung der Programmiersprache C entwickelt und enthält eine Reihe von Optimierungen. Die wohl wichtigste besteht in den integrierten Funktionen für ein objektorientiertes Programmdesign, wie bereits aus einem im Frühstadium der Entwicklung des Projekts verwendeten Arbeitstitel „C with Classes“ (C mit Klassen) hervorgeht.

Die Sprache ist bei Softwareentwicklungen sehr verbreitet, in denen die Performance im Vordergrund steht, vor allem bei sehr komplexen Anwendungsentwicklungen, in denen ein wenig objektorientierte Programmierung viel dazu beitragen kann, diese Art von Komplexität in den Griff zu bekommen. Leider ist aber C++ selbst eine unglaublich komplexe Sprache.

Ursprünglich versprach sie, ein Superset der Sprache C mit Funktionen für objektorientierte Programmierung zu bilden. Eine weitere, etwa zur gleichen Zeit entwickelte Sprache (die gerade mal drei Jahre später veröffentlicht wurde) mit denselben Zielsetzungen war Objective-C. Die Unterschiede zwischen den beiden Sprachen lassen sich weitgehend auf folgende Faktoren zurückführen:

  • Einflüsse auf ihr Design
  • Wie gut sie diese ursprünglichen Ziele erreicht haben

C++ wird auf Wikipedia als durch zahlreiche Sprachen beeinflusst beschrieben, darunter C (natürlich), Ada 83, ALGOL 68, CLU, ML und Simula. Die meisten gelegentlichen Nutzer dieser Sprache würden wohl kaum von selbst auf diese Einflüsse kommen, und selbst wenn ihnen einmal etwas bekannt vorkommt, handelt es sich dabei nur um persönliche Eindrücke, die von einem C++-Programmierer zum anderen variieren. Die Einflüsse, denen C++ unterlag, sind nicht mehr klar zu erkennen, weil sie zur Anpassung an die neue Sprache stark abgeändert wurden.

Objective-C wurde dagegen von zwei Sprachen beeinflusst, die selbst jemand, der sehr selten mit Objective-C programmiert, sofort erkennen wird (ausgenommen all diejenigen, die nicht einmal wissen, dass die Sprache älter als MacOS X ist): C und Smalltalk. Der Wikipedia-Artikel über Objective-C nennt daher nur diese beiden Einflüsse für das Design der Sprache und betont dadurch, wie offensichtlich diese Einflüsse sind.

Was die ursprünglichen Zielsetzungen der Bereitstellung eines objektorientierten Supersets von C anbelangt, scheint Objective-C in allen wichtigen Aspekten erfolgreich gewesen zu sein, während C++ in mancher Hinsicht eher so wirkt, als habe man diese Ziele nach und nach aufgegeben, um stattdessen spektakulärere Aspekte umzusetzen.

Genau wie die Objective-C zugrundeliegenden Einflüsse viel einfacherer Natur sind als die von C++, so ist auch der Aufbau der Sprache viel einfacher. Der Grund, weshalb Apple (wie zuvor bereits NeXT) Objective-C als seine primäre Sprache für objektorientierte Anwendungs- und Systementwicklung gewählt hat, scheint offensichtlich: Objective-C bietet ein einfaches und elegantes Design, zumindest im Vergleich zu dem Design von C++. Doch abgesehen von der Wahl von Objective-C zur bevorzugten Sprache auf Apple-Plattformen wie MacOS X und Apples iOS, ist C++ ganz klar der Sieger in Hinblick auf Beliebtheit und Marktbedeutung. Selbst heute, so viele Jahre nach seiner Entstehung, und ohne nennenswerte Comebacks wie Objective-C sie erlebt hat, wird C++ weithin eingesetzt. So bildet es beispielsweise die zentrale Implementierungssprache für die gängigsten großen Webbrowser für Nicht-Apple-Plattformen: Chromium, Firefox, Internet Explorer und Opera sind allesamt weitgehend mit C++ erstellt. Selbst der Safari-Browser von Apple ist primär in C++ geschrieben, obwohl andere Browser für MacOS X stattdessen Objective-C verwendet haben.

Vielleicht war es der Umstand, dass C++ drei Jahre früher auf dem Markt war, der den enormen Erfolg der Sprache sowie die vergleichsweise geringe Popularität von Objective-C begründete. Heute findet man zwar endlich Bücher über Programmierung in Objective-C in allen großen Buchläden, doch behandeln diese immer die Entwicklung für MacOS X und Apples iOS. Die allgemeine, plattformunabhängige Verwendung der Sprache ist offenbar derart wenig gefragt, dass noch nicht einmal Bücher dazu verfasst werden.

Die Kritiken an C++ scheinen gegenüber dessen Vorteilen bei Weitem zu überwiegen. Allerdings wird Objective-C (meistens) nur von Entwicklern für Apple-Plattformen besprochen. Da Entwickler, die ausschließlich für Apple-Plattformen programmieren, im Allgemeinen von den meisten anderen Programmierern als wenig vertrauenswürdig eingestuft werden, da sie für Apple voreingenommen sind, werden ihre Lobeshymnen auf Objective-C von Entwicklern, die Apple-Plattformen meiden, kaum ernst genommen.

Die beiden treffendsten Kritiken an C++ werden beide Stroustrup selbst zugeschrieben. Die erste Kritik hat er in Form eines Vergleichs formuliert: Man könne sich mit C leicht selbst in den Fuß schießen, was bei C++ erschwert ist. Wenn man sich aber doch einmal mit C++ in den Fuß schieße, büße man dabei meist gleich sein ganzes Bein ein. Die zweite Kritik besteht in einem Interview für das IEEE Computer Magazine, das letztlich nicht veröffentlicht wurde. Darin „gesteht“ Stroustrup, dass C++ von Anfang an nur als Witz gedacht war, wobei er auf humorvolle Weise alle Mängel der Sprache aufzählt. Stroustrup hat sich von dem Artikel distanziert, den er als Fälschung bezeichnet, mit dem Hinweis, dass er selbst das Ganze viel witziger geschrieben hätte.

Wer dieses erfundene Interview gelesen hat, könnte sich durchaus einen Moment lang fragen, ob C++ nicht wirklich von Anfang an ein Witz war. Doch wenn dem so wäre, ginge dieser Witz auf Kosten von Objective-C, das fast eine Generation lang ein Schattendasein führte – im Bereich Computertechnologie sind das Äonen –, bevor es schließlich seine Nische im Apple-Ghetto fand. Fakt ist, dass Apple ohne Objective-C und Cocoa ernsthafte Schwierigkeiten gehabt hätte, Entwickler zu finden, die seine Plattformen unterstützen. Die Freude, die manche Programmierer an der Entwicklung mit diesen Tools haben, lässt Entwickler, die Ziel systematischer Ausgrenzung durch die Rechts- und Marketingabteilungen von Apple sind, einige ihrer Zweifel beiseite schieben.

Manch einer mag vielleicht meinen, dass die Tage von C++ nun gezählt sind. Der Markt ist mit Alternativen überschwemmt, die für dieselben Aufgaben viel besser gerüstet sind, und der vermeintliche direkte Wettbewerber – Objective-C – ist in gewisser Hinsicht die unbedeutendste dieser Alternativen. Objective Caml wird regelmäßig als Beispiel für eine hochgradig leistungsfähige Sprache zitiert, die C++ in Benchmarktests oft weit hinter sich lässt, einen kürzeren und besser organisierten Quellcode bietet und den Entwicklern viel übersichtlichere und interessantere Entwicklungsmodelle bereitstellt, wobei sie nicht einmal aus derselben Familie von Programmiersprachen stammt. D versucht ebenfalls in diesem Bereich mitzuhalten, obwohl seine proprietären Wurzeln seiner Verbreitung im Wege stehen könnten. Die Google-Sprache Go weist zwar verschiedene umstrittene Nachteile auf, doch besteht kein Zweifel, dass ihr Design für bestimmte Arten von Softwareentwicklung, etwa Nebenläufigkeit, enorme Vorzüge zu bieten hat.

Die Erfahrung lehrt jedoch, dass C++ durchaus noch eine ganze Weile in seiner Nische weiter existieren wird. Die Sprache wurde sogar einige Jahre lang für die Entwicklung von Betriebssystemkerneln verwendet, auch wenn dies für all diejenigen, die etwa auf die Zuverlässigkeit von Betriebssystemen Wert legen, erschreckend war. Zweifellos besitzt C++ einige Vorzüge im Vergleich zu C, was bestimmte Arten von leistungsorientierter Programmierung anbelangt, und seine Library-Unterstützung ist umfassend, ja sogar legendär. Trotzdem scheint die anhaltende Beliebtheit von C++ bei den Entwicklern zumindest teilweise auch auf der Unkenntnis der Alternativen zu beruhen, ein Umstand, gegen den etwaige Konkurrenzsprachen nur schwer ankommen.

ZDNet.de Redaktion

Recent Posts

SmokeBuster bekämpft SmokeLoader

Malware SmokeLoader wird weiterhin von Bedrohungsakteuren genutzt, um Payloads über neue C2-Infrastrukturen zu verbreiten.

4 Stunden ago

Taugen Kryptowährungen als Unterstützer der Energiewende?

Bankhaus Metzler und Telekom-Tochter MMS testen, inwieweit Bitcoin-Miner das deutsche Stromnetz stabilisieren könnten.

20 Stunden ago

Supercomputer-Ranking: El Capitan überholt Frontier und Aurora

Mit 1,7 Exaflops ist El Capitan nun der dritte Exascale-Supercomputer weltweit. Deutschland stellt erneut den…

1 Tag ago

Ionos führt neue AMD-Prozessoren ein

Der deutsche Hyperscaler erweitert sein Server-Portfolio um vier Angebote mit den neuen AMD EPYC 4004…

1 Tag ago

Lags beim Online-Gaming? DSL-Vergleich und andere Tipps schaffen Abhilfe

Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…

1 Tag ago

GenKI-Fortbildung immer noch Mangelware

Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…

1 Tag ago