Wie oft haben Sie schon einen Kommentar über C++ wie diesen gelesen:
C++ ist selbst für erfahrene C++-Entwickler eine schwierige Sprache. Selbst bei den einfachsten Algorithmen muss man viele Feinheiten der Sprache erklären. Betrachten wir ein Hello-World-Beispiel:
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
}Was ist dieser #include Befehl? Was ist std::cout. Warum der ::? Was ist <<? Oh, das ist ein überladener Operator! Was ist ein überladener Operator? Also: für ints, führt er Bitverschiebungen aus, aber für was auch immer std::cout ist, it outputs stuff to the console. Ohhh, std::cout ist ein Stream, und Streams haben ihren << und >> Operator überladen.Sehen wir uns dasselbe Beispiel in Python an:
print("Hello World!")Diese Beobachtung mag zutreffen, wenn wir direkt die vom Standard bereitgestellten Methoden und Hilfsmittel verwenden. In realen C++-Projekten sieht es jedoch anders aus. Tatsächlich findet man in vielen C++-Projekten Code wie diesen:
#include "utilities"
int main()
{
print("Hello World!");
}Dass uns mit std::cout ein Low-Level-Mechanismus für die Konsolenausgabe zur Verfügung steht – mitsamt all den Möglichkeiten, die er bietet –, verleiht der Sprache eine Vielfalt, die viele andere Sprachen nicht besitzen. Es liegt an Ihnen, diese Vielfalt optimal zu nutzen und Code zu schreiben, der gut lesbar, wartbar und effizient ist.
Dasselbe gilt für jeden C++-Code, der als übermäßig kompliziert empfunden wird. C++ bietet uns alles, was wir brauchen, um die Nutzung zu vereinfachen und Bibliotheken bereitzustellen, die die Komplexität verbergen und die Arbeit mit der Sprache erleichtern.
Nehmen wir ein weiteres Beispiel: eine Datei öffnen und ihren gesamten Inhalt einlesen. In C# lässt sich das so erledigen:
string text = System.IO.File.ReadAllText(@"C:\Users\Public\TestFolder\WriteText.txt");
Aber hindert uns irgendetwas daran, dasselbe in C++ zu tun?
string text = FileHelper.ReadAllText(@"C:\Users\Public\TestFolder\WriteText.txt");
Viele Entwickler könnten jedoch fragen: Warum brauche ich eine weitere Bibliothek, um auf einfache Weise das zu tun, was ich möchte? Warum werden solche Funktionen nicht direkt in die Standardbibliothek aufgenommen?
Die beste Antwort darauf ist vielleicht eine Gegenfrage: Warum gibt es für jede Programmiersprache so viele Bibliotheken? Früher oder später müssen wir selbst bei den einfachsten Sprachen externe Bibliotheken einsetzen. Und in realen Projekten werden sogar mit Python häufig unternehmenseigene Bibliotheken verwendet – zusätzlich zu zahlreichen externen Bibliotheken natürlich.
Man sollte nicht vergessen, dass eine Programmiersprache für Entwickler gedacht ist, die über die grundlegenden Fähigkeiten verfügen, ihre Möglichkeiten sinnvoll einzusetzen. Besteht die Aufgabe eines Ingenieurs nicht in jedem Bereich darin, ein Problem zu analysieren, sich an die Gegebenheiten anzupassen und eine effiziente Lösung zu finden? C++ mag eine Low-Level-Sprache sein, doch gerade dadurch eröffnet sie uns mehr Möglichkeiten. Diese Vielfalt kann uns helfen, Probleme effizient zu lösen.
In vielen C++-Projekten, an denen ich persönlich gearbeitet habe, hatten wir eine interne Bibliothek, die wiederkehrende Aufgaben vereinfachte. Jeder Entwickler, der auf einen wiederkehrenden Bedarf stieß, konnte vorschlagen, der Bibliothek ein entsprechendes Hilfswerkzeug hinzuzufügen. Davon profitierte anschließend das gesamte Team. Für diesen Ansatz braucht man weder C++-Gurus noch ausgewiesene Experten im Team – er beruht schlicht auf gesundem Menschenverstand.
