CCD

Social Bookmarking

Durch Klick auf den nachfolgenden Button können Sie diese Seite bequem bei vielen Bookmark-Diensten und Social Websites anmelden bzw. bookmarken:

Publicons

Lizenz

Creative Commons License
Quo vadis, C++? PDF Drucken E-Mail
Montag, den 19. Oktober 2009 um 19:37 Uhr

Es gibt mittlerweile wohl so einige hundert Programmiersprachen, aber es gibt nur wenige von denen man wirklich behaupten kann sie seien populär. Der TIOBE Programming Community Index (TPCI), ermittelt vom niederländischen Unternehmen Tiobe Software, wertet seit einigen Jahren jeden Monat die weltweite Zahl von Programmierern, Sprachschulungen und weiteren Angeboten aus und veröffentlicht diese in einer Statistik. Der Index erfasst nicht die Zahl des weltweit verfügbaren Codes und äußert sich auch nicht zu den Stärken und Schwächen einzelner Programmiersprachen.

Glaubt man diesem Index, so sind im Oktober 2009 die Programmiersprachen Java mit einem Rating von ca. 18.7% und C mit 16.9% nach wie vor die Spitzenreiter, gefolgt von der aufstrebenden Skriptsprache PHP. C++ befindet sich mit einem Anteil von 9.9% auf Rang 4. Microsofts C# legt zwar seit dessen Erscheinungsjahr 2001 Jahr für Jahr kontinuierlich zu und steht derzeit auf Platz 6 mit 4.4%, der firmeneigene Konkurrent Visual Basic ist aber nach wie vor weiterer verbreitet (8.7%) und steht auf Platz 5. Im Verhältnis dazu geradezu explodiert sind die Zahlen von Objective-C, der primären Sprache für das Cocoa-API unter Mac OS X und für die freie, plattformübergreifende und objektorientierte API GNUstep: im Oktober 2008 rangierte Objective-C noch auf Platz 49, ein Jahr später liegt es bereits auf Rang 13, Tendenz steigend.

NeroJeder kennt vielleicht die kontroversen Diskussionen, welches Betriebssystem denn nun das Beste sei: Microsoft Windows, Linux oder Mac OS? Derartige Diskussionen werden häufig sehr leidenschaftlich, man könnte mitunter sogar sagen: fundamentalisch, geführt. Es scheint kaum möglich zu sein, sich diesem Thema objektiv, befreit von irgendwelchen Betriebssystem-Ideologien, zu nähern. Meiner bescheidenen Meinung nach gibt es nicht das Betriebssystem, sondern höchstens das, welches für den jeweiligen Einsatzzweck das am besten passendste ist. Ein ähnliches Verhalten ist aber auch bei den glühenden Verfechtern von bestimmten Programmiersprachen zu beobachten, die sog. Language Wars. Hardcore C++-Entwickler rümpfen über Java-Programmierer nur verächtlich die Nase und stempeln Java als "Kiddie Sprache" ab, wogegen die Java-Apologeten es als vollkommen rückständig ansehen, das C++'ler ihren Speicher und ihre Ressourcen immer noch selber verwalten müssen.

Schon seit geraumer Zeit mache ich mir auch so meine Gedanken wohin die Reise wohl gehen wird. Wie sieht die Zukunft der Programmiersprachen, speziell C++, aus? Auch auf der von mir besuchten SEACON 2009 gab es eine Fishbowl zum Thema "Die Zukunft der Programmiersprachen". Welche Bedeutung wird C++ in der Zukunft noch haben?

Hier erst einmal meine grundsätzlichen Gedanken:

  • C++ ist eine Multiparadigmen-Sprache. Man kann mit ihr sowohl prozedural als auch objektorientiert entwickeln, neuerdings auch funktional (mit dem neuen Standard wird C++ Lambda-Funktionen und Funktionen höherer Ordnung unterstützen), sowie jegliche Mischform dazwischen wählen. Man kann mit C++ ausgiebig Template-Metaprogrammierung betreiben, oder auch ganz auf Templates verzichten. Das alles macht die Sprache extrem flexibel, aber auch sehr komplex und wirkt auf Einsteiger häufig abschreckend!
  • C++ ist nach wie vor die Sprache der Wahl, wenn es auf Performance oder Hardwarenähe ankommt, beispielsweise bei anspruchsvollen Computerspielen, Video- und Bildverarbeitung, Audioprozessierung, hochwertige 3D-Animationen und Ray-Tracing, Finanz-Applikationen, Echtzeit-Simulationen, skalierbare Echtzeit-Systeme aller Art, Enterprise DBMS, Embedded Systems (hier wird C++ nach und nach C ablösen), Gerätetreiber, usw. Es soll "Laborexperimente" (Benchmarks) geben, die einem Java-Programm eine höhere Ablaufgeschwindigkeit bescheinigen als einem vergleichbaren C++-Programm. Das mag sein, aber derartige Benchmark-Ergebnisse sind insofern irrelevant, da sie zumeist nicht mit einer realen, mitunter aus mehreren 100.000 Zeilen Code bestehenden, komplexen Applikation vergleichbar sind.
  • Die Verwaltung der Ressourcen (z.B. Allokation und Freigabe von Speicher) liegt bei C++ voll in der Hand des Entwicklers. Das birgt natürlich die Gefahr, das die Ressourcen nicht sauber ausbalanciert werden und es beispielsweise zu resource oder memory leaks kommt. Bei jeder Applikation allerdings, wo man die explizite Kontrolle über z.T. sehr große Speicherbereiche benötigt (wie z.B. bei einem großen, skalierbaren DBMS) ist der Einsatz eines Garbage Collector (wie bei Java oder .NET) ein absoluter Show-Stopper!
  • Die meisten Software-Entwickler entwickeln keine Computerspiele, Video- oder Bildverarbeitungsprogramme, hochwertige 3D-Animationen, DBMS, usw. Die meisten Entwickler bauen normale Geschäftsanwendungen oder Web-Applikationen. Performance und effizientes Ressourcen-Handling spielen dabei meistens keine so große Rolle. Daher wird man die Programmiersprache in solchen Fällen häufig eher hinsichtlich der Produktivität auswählen. Die kontrollierten Umgebungen und umfangreichen Bibliotheken und Frameworks, die bei Sprachen wie Java oder C#/.NET zur Verfügung stehen, sind für viele Anwendungen daher sehr reizvoll. Der exzessive Einsatz von Libraries und Frameworks geht zumeist aber einher mit vielen Abhängigkeiten und mit einer höheren Komplexität, vor allem beim Konfigurationsmanagement. Das kann durchaus die Produktivität wieder spürbar drücken.

Ich glaube, das C++ noch über viele Jahre eine signifikante Rolle in der anspruchsvollen Software-Entwicklung spielen wird. Ich glaube aber auch, das für viele Anwendungsfälle andere Sprachen genauso gut oder sogar besser geeignet sind. Mein Statement:

Die Wahl der geeigneten Programmiersprache
muss von Projekt zu Projekt immer wieder neu getroffen werden!

Es gibt also nicht die Programmiersprache, sondern höchstens die, die für den jeweiligen Einsatzzweck die am besten passendste ist. Wie denken Sie, werte Leser, darüber? Kommentare ausdrücklich erwünscht.

 

Kommentare  

 
0 #1 codeschneider 2010-04-01 12:32
Wenn man mal bedenkt, dass laut Scott Meyers C ein Bestandteil von C++ ist, kommen wir schon auf 27%. Also 27% für die hardwarenahe Programmierung. Das ist absolut gewaltig. Trotzdem hast du natürlich Recht, muss Entwickler sich die 'Quo Vadis'-Frage stellen, wo ER denn hinwill. Wer die Wahl hat, hat die Qual, und das drückt das Bild doch sehr schön aus. Was hilfts eine Sprache super zu können, aber nicht das optimale Einsatzgebiet dafür zu haben. Andererseits muss zwar auch noch die Entwickler des Legacy-Codes geben.
Zitieren
 

Kommentar schreiben


Sicherheitscode
Aktualisieren