Hallo.
Es sollte für Rolf in erster Linien darum gehen, 'Programmieren' zu lernen - die Details des eingesetzen Frameworks sind von Projekt zu Projekt verschieden, und wer z.B. Java verstanden hat, wird auch in C# keine Probleme bekommen, mit C aber erstmal wenig anfangen können. Mein Rat daher: So viel wie möglich ausprobieren und sich zumindest mit einer Hardware-nahen, einer Objekt-orientierten und einer funktionalen Sprache auseinandersetzen...
Jetzt zu deinen Aussagen:
C
eher nicht.
[...]
Assembler
LOL...
Das würde ich so nicht stehen lassen - gerade diese beiden Sprachen werden vermutlich auch noch in 5 Jahren wichtig sein, nämlich überall dort, wo es auf Hardware-nahe Programmierung ankommt - Betriebssysteme, 3d-Spiele, Embedded-Geräte, ... - und um guten C Code zu schreiben, sollte man wenigsten ein wenig Ahnung vom Funktionieren der zugrundeliegenden Architektur haben, da ist Assembler hilfreich. (Es ist generell immer wichtig, die 'Stufe' unterhalb der eingesetzen Umgebung zu kennen, in Java/C# z.B. in etwa zu wissen, wie die VM funktioniert, um bewerten zu können, wie sich der eigene Code in Sachen Performance, Speicherauslastung, etc. auswirkt...)
Hardware-nahe Sprachen wie C eignen sich natürlich weniger für Anwendungsentwicklung oder Webdevelopment (bzw. man macht sich das Leben unnötig schwer, kann aber durchaus ansehliche und performante Resultate erzielen - dieses Forum hier ist in C geschrieben!).
Alles, was man in C machen kann, geht natürlich auch in C++, das für Anwendungsentwicklung geeigneter ist - der Vorteil von C als Anfängersprache ist, dass der Sprachumfang relativ überschaubar ist - man kann C viel leichter 'verstehen' als C++. Allerdings besitzt C auf Grund der historischen Entwicklung einige Eigenarten, z.B. eine Syntax, die nicht unbedingt intuitiv ist (wo muss ich 'const' platzieren, wenn ich einen konstanten Zeiger und keinen Zeiger auf ein konstantes Objekt möchte, wie muss ich klammern, wenn ich ein Array von Zeigern und kein Zeiger auf ein Array haben möchte,...)
Man sollte auch anmerken, dass alle genannten Sprachen (mehr oder weniger) dem imperativen Paradigma genügen - funktionale Sprachen wie z.B. Haskell, Dylan, Lisp, Erlang, OCaml,... verfolgen einen anderen Ansatz, sind aber meist weniger populär (aus der Arbeitsmarkt-Perspektive sind wohl vor allem Java und C# gefragt(?) - angeblich gibt es aber auch vor allem im Bankwesen noch viele COBOL-Anwendungen, die seit Jahrzehnten im Einsatz sind, und in den Naturwissenschaften ist FORTRAN noch weit verbreitet - man sollte also vorsichtig damit sein, nur 'populäre' Sprachen zu empfehlen ;)).
Funktionale Sprachen erlauben viele Dinge, die in imperativen unmöglich sind: Z.B. operieren Lisp-Makros direkt auf dem Syntaxbaum und können das Programm 'transformieren', und Erlang erlaubt es, zehntausende Prozesse parallel zu verwalten...
Christoph