Also prinziell halt ich Java für das geeignetere Einsteigerwerkzeug.
Das liegt schon mal daran, das Java einem relativ viel, was einem am Anfang eher verwirrt abnimmt. eben z.B. die Speicherverwaltung.
Man sollte erstmal die Grundlagen der Programmierung beherschen bevor man sich um Sachen wie richtiger umgang mit Systemresourcen und so weiter kümmert. Ich glaube jeder Forgeschrittene C programmierer ist schonmal Stunden vor seinem Programm gesessen, mit Debugern, und hatt versucht entflohene
Pointer wieder einzufangen. Oder hatt sich darüber den kopf zerbrochen den zu allozierenden Speicherplatz möglichst genau zu berechnen.
Natürlich sollte man darüber bescheid wissen, keine Frage, aber man sollte einem Einsteiger, die ernüchternde Erfahrung, Stunden vor einem Debugger zu sitzen und keinen Fehler zu sehen erspaaren. Vor allem schon deshalb, weil ein totaler Neuling auf dem Gebiet, die zusammenhänge die dahinter stecken nicht sofort durchblickt, und damit ziemliche Probleme hatt einen Debuger der auf niedriger eben leuft, überhaupt richtig zu verwenden.
Und vor allem, Java ist zukunftsweisend. Java leuft mittlerweise auf so vielen Plattformen und erfreut sich immer größerer beliebtheit.
Außerdem kommst du mit Java relativ schnell zu einem akzeptablen Ergebniss, und das ist genau die Erfahrung die einen Einsteiger im endeffekt bei der Stange hält.
also ich möchte doch stark dem widersprechen, dass Java einen dazu zwingt einen guten Programmierstil zu verwenden. Vielleicht versucht Java dies, aber ich glaube nicht das es eine Frage der Programmiersprache ist (auch wenn das mit reinspielen mag) wie sauber man programmiert, da hab ich bei Java auch schon sehr unschöne Sachen gesehen.
Ich bin daher eher der Meinung das eine Programmiersprache einen möglichst wenig einschränken sollte - und der Programmierer sollte auch ohne das ihn jemand zwingt immer schönen code schreiben (ich möchte hier nicht behauptne das ich das machen würde)
da musste dich aber schon extrem dumm anstellen das du das schaffst...
z.B.: In Java kommste um EH einfach nicht rum. Entweder du nutzt, es oder du stirbst an einem Herzinfarkt vor lauter Aufregung darüber das dein Compiler dich das Progy nicht kompilieren läst.
Daher, warum NICHT mit c anfangen?
Weil du damit ziemliche schwierigkeiten bekommen kannst.
C++ läst eben doch einiges zu was du in ANSI-C nicht schafft... und die restriktionen können ganz schön lästig sein.
Schonmal n COM objekt in ANSI-C benutzt? ich sag dir, das is alles andere als lustig, und wenn ich an die vielen arrays denke, dann wird mit schlecht.
Ein kleines Beispiel:
Code:
das hier:
void test(int parm) {
char* myName = malloc(parm);
memset(myName, 0, parm);
return myName;
}
An diesem einfachen Stück code, beist sich ein ANSI-C Compiler die Zähne aus.
wiso? zuweisung von initialisierungs parametern bei der Variablendeklaration, is in C nicht erlaubt. das ist C++.
also heißt es in ANSI-C plötzlich:
void test(int parm) {
char* myName;
myName = malloc(parm);
memset(myName, 0, parm);
return myName;
}
ANSI-C ist überhohlt, alle welt setzt auf OOP Sprachen. Und alle Programmiersprachen die halbwegs was auf sich halten unterstützen OOP.