Die Webwurst hat geschrieben:PS: Noch eine 2. (Grundsatz-)
Frage: Ich glaube nicht, dass das Lernen oder Verstehen mein vorrangiges Problem ist, sondern die "Denke" eines Programmierers (a: problem, b: wie lösen, c: lösen). Gibt es dafür die 'richtigen' Seiten, die z.B. Schüler und Studenten ansteuern können (die müssen es ja auch irgendwo her haben) und eine 'gute Einstiegssprache'. Ich will keine Diskussion über Programmiersprachen beginnen, die gibt es zur Genüge. Ich will wissen, ob C genau so gut geeignet ist, wie PHP oder JavaScript oder Java (ich weiß, was Compiler- und was Interpreter-Sprachen sind

)
Im Prinzip sprichst Du da etwas wichtiges an, um nicht zu sagen "Das Wichtigste".
Die "Denke" eines Entwicklers ist eigentlich sehr einfach und je später man anfängt programmieren zu lernen, desto aufwendiger ist es, zu begreifen, dass man vieles an Lebenserfahrung einfach vergessen oder wenigstens ignorieren muss.
Computer arbeiten sehr einfach: Ja und Nein. Kein Vielleicht. Ein Vielleicht ist nur eine Ansammlung von mehreren Ja und Nein.
Computer finden keine Lösungen. Computer exekutieren Lösungen und zwar genau so, wie man es ihnen gesagt hat und ohne nach links und rechts zu gucken, weil ein Computer wirklich ein eindimensionales Wesen ist. Das Programm schreitet vorwärts und manchmal springt es zurück. Es gibt kein links, kein rechts, kein oben, kein unten. Es gibt einfach nur Befehle, die einer nach dem anderen ohne darüber nachzudenken abgearbeitet werden.
Und dieses einfache Prinzip - dass ein Computer ohne hinzusehen, ohne über irgendwelche Konsequenzen nachzudenken - einfach tut, was man ihm gesagt hat, das ergibt die Denke des Entwicklers: Der muss nämlich das in Gedanken nachverfolgen können und dabei alle Selbstverständlichkeiten abschalten, die er im normalen Leben gelernt hat - weil ein Computer darüber auch nicht nachdenkt.
Der Entwickler muss genauso stupide einfach Befehl für Befehl durchgehen und sich aber der Konsequenzen bewusst sein.
Wenn ich a durch b teile, dann muss ich mich fragen, ob b 0 sein könnte und deswegen eine Division vielleicht nicht funktioniert.
Der Entwickler muss alle Möglichkeiten im Kopf haben, für die er die Befehle schreibt und dafür sorgen, dass die Befehle in allen Fällen zu den gewünschten Ergebnissen führen.
Welche Sprache er verwendet ist dabei nebensächlich, darin formuliert er ja lediglich seine Gedanken für den Computer.
TODO: Diese Frage ins Wiki aufnehmen!
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.