Hallo Cracks,
Ich hoffe, auch ich als 'nicht-Crack' darf dir antworten ;)
Hier also meine Frage(n):
Wenn ich jetzt C++ oder C# lernen will, geht das überhaupt ohne C zu beherrschen?
Bei C# ein klares ja. C# hat außer der Syntax nicht wirklich viel mit C gemeinsam, sondern ist quasi Microsofts Version von Java und auch als Anfängersprache geeignet.
Wie lange braucht man, wenn man nicht ganz auf den Kopf gefallen ist, um so eine Sprache zu lernen bzw. einigermaßen zu beherrschen?
'Einigermaßen' beherrschen - vielleicht ein paar Wochen? 'Richtig' beherrschen? Jahre.
Ich vermute mal, dass man die Syntax relativ schnell intus hat und das Gros dann aus einem Sammelsurium von Bibliotheksfunktionen besteht, die man gut kennen sollte, d.h. besonders die einzelnen Bugs jeder Funktion und den entsprechenden Workaround. Kommt das etwa hin und kann man das irgendwann überschauen, oder sehe ich das zu schwarz oder zu optimistisch?
Bei C# würde ich deiner Einschätzung zustimmen.
Um vernünftig mit C klarzukommen, braucht man etwas mehr an Übung. Dafür kann man aber auch z.B. mit Zeigern und einem kleinen Bisschen Makro-Magie Dinge anstellen, die in eigentlich 'höheren' Sprache teilweise weniger elegant zu lösen sind. Das schöne dabei ist, dass man (soweit ich das mit meinem Wissen abschätzen kann) die Sprache C vollständig verstehen kann.
C++ hingegen kann alles, was C kann - aber eben noch VIEL mehr. C++ ist eine Multi-Paradigmen-Sprache - Objekt-Orientierung, Meta-Programmierung mit Templates (und was es da noch so alles gibt) führen dazu, dass es angeblich niemanden gibt, der tatsächlich alle Möglichkeiten, die die Sprache bietet, verinnnerlicht hat (was aber auch gar nicht nötig ist).
Was habt ihr für Erfahrungen?
Auch wenn du nicht direkt danach gefragt hast, vielleicht noch ein paar weitere Hinweise zu den genannten Sprachen:
C# ist für Anfänger geeignet, besitzt eine große Standardbibliothek und man hat wenig Möglichkeiten, sich selbst 'in den Fuß zu schießen'. Die Stärken von C# liegen klar in der Anwendungsentwicklung, die Sprache ist in meinen Augen aber eher 'langweilig'.
C ist für viele Anwendungsgebiete nicht mehr erste Wahl - es sei denn, höchstmögliche Performance oder Hardware-nahe Programmierung ist von Nöten (grundsätzlich kann man in solchen Fällen auch zu C++ greifen). Mir persönlich macht C-Programmierung Spaß, auch (oder gerade weil - Masochismus und so? ;)), wenn es ziemlich mühsam werden kann.
Um C++ habe ich bisher einen Bogen gemacht - die Sprache ist mir zu 'monströs' - was man der Sprache natürlich auch positiv anrechnen kann: Niemand wird schleßlich dazu gezwungen, tatsächlich alle Sprach-Features zu verwenden.
Und weil's so schön ist, würde ich noch zwei weitere C-ähnliche Sprachen in die Runde werfen:
Objective-C ist C erweitert um Smalltalk-inspirierte Objekt-Orientierung. Als Hybrid aus Hardware-naher und dynamischer Sprache gefällt sie mir konzeptionell, die Syntax hingegen finde ich eher hässlich.
Die Sprache D von Digital Mars ist eine Art Re-Implementierung von C++ - quasi 'C++ done right'. Ich habe noch nie damit gearbeitet, aber nach dem, was ich bisher davon gesehen habe, könnte ich mir durchaus vorstellen, dass sich das in Zukunft ändert.
Gruß
Christoph