Was sollte ich vor C++ lernen?
C
Und davor, kommt drauf an was Du machen willst. Du kannst aber auch mit C anfangen.
Man kann C/C++ als erste Sprache lernen. Dabei lernt man viel.
Letzendlich kommt es darauf an was und wie man etwas machen möchte. Ich bin nicht der Meinung, dass man unbedingt mit C/C++ anfangen muss. Es kommt einfach an was für Ziele man hat.
Allerdings: Bin ich sehr stark der Meinung, dass man in seinem Leben auf keinen Fall NUR EINE PROGRAMMIERSPRACHE lernen sollte. Am besten lernt man sehr unterschiedliche Sprachen. Und jeder sollte sich auch mit den theoretischen Grundlagen der eigenen Sprachen befassen.
Du hast Deine Sprache nicht gelernt, wenn Du nicht weißt was daraus gemacht wird. Was für Code erzeugt der Compiler? Auf was für einer Maschine läuft der Maschinencode? Stackmachine, Registermaschine, Automat, Turingmaschine, etc…
Wie werden Konzepte der Hochsprache (Schleifen, Funktionen, Objekte, etc.) tatsächlich im (physikalischen oder virtuellen) Speicher umgesetzt? Welche Rolle spielt das Betriebsystem bei der Programmausführung?
Das mag zwar nichts sein, das man sich bei der täglichen Arbeit ständig vor Augen führen muss. Es sollte jedoch wenigstens mal gelernt und verstanden worden sein. Denn sonst wird man auch nicht verstehen, was man eigentlich tut.
Leider… muss ich sagen, dass solches Wissen eigentlich kaum vermittelt und gelernt (allerdings gelehrt) wird, wenn man lediglich eine Programmiersprache lernt. Egal welche. Es ist jedoch wichtig. Es macht im Alltag, so vieles einfacher, wenn man einfach versteht was dort passiert. Anstatt zu raten und zu vermuten.
Leider kenne ich auch zu viel schlechten C-Code, um nun sagen zu können, dass dies nicht so wäre, wenn man C als erstes lernt. Komplexe Dinge werden nur dann gelernt, wenn man sie lernen möchte und dazu die Möglichkeiten hat. Nicht durch Zwang. Da versucht man eher darum herum zu navigieren…
Dabei spielt es auch keine Rolle, ob es sich um eine Virtuelle Maschine handelt oder nicht. Hier ist jedoch Transferwissen hilfreich, also sich jeweils mit einer Sprache zu beschäftigen, die auf der jeweiligen Maschine dann umgesetzt wird. Und natürlich mit beiden Maschinen (sowohl physikalische, als auch der Virtuellen) . Es geht darum zu verstehen wie das resultierende Programm technisch funktioniert. Oder zumindest dann in Reality eine begründete Vermutung und Erklärung zu haben. Deshalb sollte man auch möglichst verschiedene Sprachen aus verschiedenen Bereichen beschäftigen.
Deshalb würde ich auch empfehlen, dass man sich auch mal Assembler anschaut. Hier bietet sich MMIX – Wikipedia
an. Das wurde genau dafür entwickelt, für die Lehre, nicht an irgendwelche IT-Trends gebunden zu sein und ein zeitloser Klassiker zu sein.
Damit lassen sich auch Konzepte der Hochsprache selbst nachvollziehen. Hat man wirklich verstanden, wie eigentlich eine Schleife funktioniert? Do not believe, prove it!
Zusätzlich würde ich auch empfehlen, sich auch mit formalen Sprachen und formaler Grammatik zu beschäftigen. Gerade auch mit der Turingmaschine und Parser-Generatoren (antlr, yacc, etc.) Denn jeder Compiler und jede Scripting-Engine ist ein Parser.
Und erst dann, hast Du eine Sprache wirklich gelernt - zumindest im Ansatz - wenn Du weißt, wie sie funktioniert und was eigentlich passiert. Anders als bei natürlichen Sprachen, kann man das bei Programmiersprachen tatsächlich in endlicher und absehbarer Zeit tun. Nicht wenn Du weißt welche Fancy Features und coole Frameworks es gibt.
Dafür gibt es die Doku und Google.
Es geht nicht darum, dass Du gleich am Anfang alles lernst und perfekt kannst. Es geht darum, dass Du auch in Zukunft weiterhin lernst und mit dem Lernen nicht aufhörst.
Und je mehr Hintergründe und Zusammenhänge Du mit der Zeit verstehst, desto einfacher ist das.
Und das(!) macht einen guten Entwickler aus.
Lerne Lernen.
Befasse Dich mit dem, was Du tust.
Wissen veraltet, Fähigkeiten bleiben.
Überprüfe deshalb, ob das was Du gelernt hast, wirklich stimmt.
Das ist dann eigentlich gemeint, wenn es heißt: Die Programmiersprache ist egal! Computer und Informatik, verhält sich wie Teleskope und Physik.
Weil das halt wirklich nur Werkzeuge sind.
Durch's Sägen lernst Du etwas über das Sägen. Jedoch nicht's über die Schreinerei. Auch wenn Du 100 Jahre sägst - mit der besten Säge der Welt - lernst Du nicht wie man einen Schrank baut.