Die Qual der Wahl - Die Wahl der primären Programmiersprache
Hallo und herzlich willkommen. Version 1.0 meines Fahrplans steht und ich möchte mit dem ersten Punkt starten. Heute wähle ich meine primäre Programmiersprache.
Die Frage „Was solltest du zuerst lernen?“ wird im englischsprachigen Raum kurz und prägnant beantwortet:
„The skills that pay the bills.“
Damit sind die essentiellen Fähigkeiten gemeint, mit denen du in der Lage bist, erste nützliche Aufgaben zu bearbeiten und zu erfüllen.
Und mit welcher Fertigkeit starten wir am besten? Genau, wir lernen unsere erste Programmiersprache.
Eine, mehr braucht es nicht
Du denkst wahrscheinlich, es gibt DIE richtige Programmiersprachen für den Einstieg, doch die Wahl ist gar nicht so ausschlaggebend. Viel wichtiger ist allerdings, dass du dich auf eine konzentrierst und nicht direkt versuchst, alle, die es gibt, auf einmal zu lernen.
Natürlich wirst du im Laufe der Zeit weitere Sprachen lernen. Manche Situationen können dies verlangen. Vielleicht möchtest du dich später in einer bestimmten Technologie spezialisieren und dort wird hauptsächlich mit einer anderen Sprache gearbeitet. Es kann aber auch sein, dass zur Lösung eines Problems ein Framework einer anderen Sprache viel besser geeignet oder sogar die einzige Möglichkeit ist.
Trotzdem rate ich dir, dich erstmal auf eine Programmiersprache zu fokussieren. Das verhindert Verwechslungen und Verwirrung. Zudem brauchst du noch genügend Zeit und Energie, die weiteren wesentlichen Fähigkeiten zu erlangen. Also steige tief in deine primäre Programmiersprache ein und meistere die Besonderheiten.
Welche ist nicht wichtig
Warum ist es nicht so wichtig, mit welcher Sprache du beginnst? Der Hauptgrund ist, dass viele Programmiersprachen im Kern sehr ähnlich sind. Ja, die Syntax ist anders. Ja, Programmiersprachen können unterschiedlich aussehen. Sie haben vielleicht sogar völlig unterschiedliche Leistungsmerkmale. Im Kern teilen sich jedoch alle Programmiersprachen mehr, als man zunächst vermuten könnte.
Fast alle Programmiersprachen haben grundlegende Konstrukte für Verzweigungen, Schleifen und Aufrufe. Auch bieten alle eine Möglichkeit, Code auf hoher Ebene zu organisieren. Es gibt sogar viele Programmiersprachen, die sich so ähnlich sind, dass man, wenn man eine Sprache beherrscht, die andere fast schon kennt.
Die erste Programmiersprache ist am schwierigsten zu lernen. Du wirst merken, dass, wenn du eine Sprache gut beherrschst, dir das Erlernen einer weiteren viel leichter fallen wird. Entscheidest du dich nach kurzer Zeit, sogar deine Hauptsprache zu wechseln, wirst du selbst dann schon Vorteile bemerken. Du gewinnst also nur dazu.
C++ == C + 1;
Ich habe mich für C++ als meine primäre Programmiersprache entschieden. Und bevor du die Hände über den Kopf zusammenschlägst und fragst - Ja, ich weiß, worauf ich mich einlasse.
C++ ist als Erweiterung der Programmiersprache C entwickelt worden und gilt als sehr schwierig. Die Lernkurve ist flach und es ist für unerfahrene Programmierer ziemlich leicht, ineffiziente Anwendungen zu schreiben. Der Entwickler wird gezwungen, mit großer Disziplin seinen Code zu entwerfen.
Die Anzahl unterstützender Tools ist auch nur spärlich. Proprietäre Compiler generieren selten optimierten Code und sind wenig nützlich. Überbrückt wird diese Lücke vom freien GNU gcc/g++ Compiler.
Obwohl es einen anerkannten ISO C++ Standard gibt, ist die Standardisierung nicht ganz flächendeckend. So hat jeder Compiler eigene Interpretationen in undurchsichtigen Randfällen. Leider beinhalten diese Diskrepanzen häufig genutzte Funktionen wie Templates und die Standard Template Library.
Die zur Unterstützung aller C++-Funktionen erforderliche Laufzeitumgebung kann sehr umfangreich sein. So kann beispielsweise die Unterstützung von Exception Handling und Runtime Type Identification schwerwiegende Laufzeitfolgen haben.
Die C++-Laufzeitumgebung ist nicht nur rechenintensiv, sondern kann auch für Laien irreführend sein. Scheinbar harmlose Anweisungen können dazu führen, dass der Compiler große Mengen an Code erzeugt.
Die Möglichkeit, in C geschriebenen Code zu verlinken, oder Casts und Pointer-Arithmetik sind wie Trojanische Pferde in C++. Dadurch wird das ansonsten sichere Datentypenmodel geschwächt.
Unerfahrene C++-Entwickler haben somit viele Gelegenheiten, der Softwarestruktur eines Projekts zu schaden.
Und gibt es auch Licht im Schatten?
Das sind einige Umstände und Fallen, mit denen ich umzugehen lernen muss. Warum möchte ich mir die Mühen machen und habe C++ als meine primäre Programmiersprache gewählt? Wieso gestalte ich die ohnehin schon fordernde Aufgabe nicht leichter und nehme eine beliebtere Sprache?
Beliebteste Programmiersprachen
Zunächst einmal ist C++ sehr breit einsetzbar und für eine Vielzahl unterschiedlichster Aufgabenstellungen nützlich. In deiner Videospielkonsole, deinen Videospielen, deiner Kamera, deinem Auto, überall wird C++ eingesetzt.
Im Embedded Bereich konnte sie sich noch nicht gegen C durchsetzen, obwohl sich durch die enge Verwandtschaft Code ebenso mit prozeduralen, aber zusätzlich auch mit objektorientierten Paradigmen schreiben lässt. Objektorientierte Programmierung ist heute sehr weit verbreitet, doch können gerade grundlegende Problemstellungen einfacher prozedural gelöst werden.
Aus der High-Level Sicht sind die beiden Hauptvorteile von C++, dass sie eine viel strengere Disziplin während der Code-Entwicklung erzwingt. Aufgrund der Art und Weise, wie auf Klassen zugegriffen wird, verlangen C++-Compiler schnittstellenorientierte Abstraktion. Die Sprache beinhaltet eine Vielzahl von objektorientierten Konzepten, wie Vererbung, Abstraktion, Polymorphismus oder Verkapselungen, die bei sachgemäßer Anwendung eine Wiederverwendung von Software ermöglichen.
Zudem verfügt C++ über eine dynamische Speicherzuweisung, die compilergestützt und robuster als das C-Modell ist. Das macht C++ zu einer Low-Level Sprache mit High-Level Bibliotheken. Damit kann auf beiden Ebenen der Programmierung diskutiert werden. Die besten Programmierer können bei Bedarf auf niedrigster Ebene „handverdrahten” und nutzen High-Level Bibliotheken sowie Anwendungsprogrammierschnittstellen, um die Entwicklungszeit zu verkürzen.
Aus meiner Sicht ist C++ eine gute Wahl. Sobald du gelernt hast, Probleme in C++ zu lösen, wirst du es in jeder Programmiersprache können. Der paradigmenübergreifende Ansatz und der Schwierigkeitsgrad lassen die erlernten Fähigkeiten besonders gut auf alle anderen Sprachen übertragen.
C++ ist der „Real Deal”. Es ist programmieren ohne Stützräder. Das mag anfangs beängstigend sein, aber sobald du erfolgreich in C++ programmierst, hast du das gute Gefühl, das Handwerk ordentlich zu beherrschen.
Kannst du meine Wahl nachvollziehen oder habe ich dir sogar C++ schmackhaft machen können? Für welche primäre Programmiersprache entscheidest du dich und warum?
Ich wünsche dir maximalen Erfolg!