Wie man Programmieren lernt

Aus den Kursen, die ich bisher gehalten habe, habe ich folgende Erkenntnisse für Programmier-Anfänger gezogen. Es sind die Tipps und Anmerkungen, auf die ich am meisten hinweise.

In Kleinen Schritten vorgehen

Die meisten Einsteiger lassen sich durch die Aufgabenstellung aus der Bahn bringen. Man möchte das fertige Programm am Stück schreiben – und weiß entsprechend nicht, wo man am besten anfängt. Mein Tipp: Einfach mal mit einem kleinen Teil des Programms anfangen. Wir haben ein Quiz? Hey, dann schreiben wir erstmal einfach nur irgendeinen Text auf den Bildschirm. Wenn das funktioniert können wir weiter sehen.

Wo ein alert / echo / trace / puts (etc.) steht …

… da kann auch beliebig viel richtig cooler Code stehen. Manchmal braucht man erstmal eine schnelle Überprüfung, ob etwas wie gewünscht abläuft – bei einer komplizierten Überprüfung zum Beispiel. Es ist nicht gut, hier dann eine Code-Schlacht zu beginnen. Man trägt erstmal einfach nur eine kleine Zeile zum testen ein – eben einen der oben genannten Befehle1 – wenn man die einfache Textausgabe geschafft hat, kann man an größere Ziele denken.

Es hilft, wenn man sich immer im Kopf behält: Da, wo ich eine Zeile Code ausführen kann, da kann ich auch beliebig viele Zeilen Code hin schreiben2.

Es hilft auch, wenn man sich im Kopf behält: Man kann ja jede Zeile (insbesondere so eine schnelle Textzeile) schnell wieder entfernen oder ersetzen.

Im Zweifelsfall erstmal Drauf los coden

Ihr habt keine Ahnung, wie man die Mammut-Aufgabe anfängt? Gut, legt schonmal los! Manchmal ist es das richtige, einfach einen kleinen Teil davon anzufangen. Manchmal löst man dadurch die Probleme ganz nebenbei((manchmal muss man solchen Code aber auch komplett wieder verwerfen)).

Im Zweifelsfall erstmal auf Papier anfangen

Das steht irgendwie im Konflikt zum vorherigen. Das macht aber nichts. Wenn ihr nicht wisst, wo ihr anfangen sollt, kann es helfen das Problem erst einmal auf Papier zu bringen. Man kann sich hierbei Ablaufdiagrammen bedienen oder eine ganz eigene Notation verwenden. Hauptsache ist, dass man sie nachher noch versteht. Wenn man die Aufgabe dann in kleine Schritte aufgeteilt hat, kann man wesentlich einfacher mit einem der Schritte beginnen.

Wer eine Programmiersprache kann, kann alle

Ich bin nicht sonderlich glücklich damit, dass ich im Moment ActionScript 2 lehre. Ich kann damit aber gut leben, weil es in dem Einsteigerkurs eigentlich gar nicht um eine Sprache geht. Es geht um eine Art zu denken. Wer sich in eine Sprache vertieft hat, dem wird die nächste wesentlich leichter fallen.

Programmiersprachen unterscheiden sich wie normale Sprachen zwar zum Teil sehr stark in Syntax und Vokabular – die Denkweise ist aber ziemlich allgemeingültig.

Auskommentieren

Das Prinzip des Auskommentierens ist nicht für jeden sofort verständlich – aber sehr mächtig. Ein großer Vorteil ist, dass etwas vergleichbares in quasi jeder Computersprache von Config-Files bis C-Code existiert. Die meisten Sprachen kennen ein besonderes Zeichen3, das sagt: Das folgende ignoriert der Computer. Diese Funktionen werden benutzt um den Quellcode menschenlesbar zu dokumentieren.

Nehmen wir nun an, wir hätten in unserem Programm 20 Zeilen Code neu geschrieben und nun funktioniert nichts mehr. Ich kann diese 20 Zeilen natürlich löschen – ich könnte dem Computer aber auch einfach sagen: „Das hier ignorierst du bitte“. Man macht also die Kommentarzeichen vor diesen Code. Der Vorteil ist: Man kann die Zeilen nach und nach überprüfen und immer ein Stückchen mehr in das Programm übernehmen. Bis man den Fehler oder die Fehler hat.

Die richtige Lösung

Immer wieder taucht die Frage nach der richtigen Lösung auf. Ein Schlüssel zum Verständnis ist aber, dass es nicht nur eine Lösung gibt. Wenn es funktioniert ist es eine richtige Lösung. Es muss nicht die Beste sein, aber sie ist dennoch richtig. Um eine beste Lösung zu wählen muss man auch etwas genauer werden: Soll es die sein, die am besten zu pflegen ist? Die, die am schnellsten ist? Diejenige mit dem wenigsten Code?

Experimentiert damit!

Ihr habt ein paar Zeilen Code geschrieben / gefunden? Sehr schön! Spielt damit herum. Versucht sie zu verstehen. Da steht eine drei am Anfang? Was passiert, wenn ihr eine vier eintragt? Der Autor benutzt den Code um ein Auto zu steuern? Hey, vielleicht könnt ihr euer Raumschiff damit bewegen?

Wie Garrit es ganz richtig sagte: Das wichtige ist, dass man in dem Lernprozess so viel Spaß wie möglich hat. Der Spaß beginnt leider erst, wenn man sich lange genug zum lernen der Grundlagen überwunden hat. Die Lernphase kann sprachbedingt unterschiedlich ausfallen. Außerdem ist die Lernphase nie so richtig abgeschlossen: Programmiersprachen verändern sich mit der Zeit.

Lernt eine zweite Sprache

Versteift euch nicht auf das, was ihr gelernt habt. Probiert andere Sprachen aus, wenn ihr eine bereits könnt.

Programming Languages are like Girlfriends: The new one is better because you are better
Derek Sivers

Meine Sicht der Dinge

Programmieren lernt man nicht aus der Vorlesung oder aus einem Buch. Programmieren lernt man an der Tastatur. So wie Fahrradfahren4.

Eure Sicht der Dinge?

Was würdet ihr Programmieranfängern raten? Wo waren/sind eure Probleme? Findet ihr Programmieren spannend oder öde? Was programmiert ihr? Was wolltet ihr schon immer mal wissen?

  1. je nach Sprache natürlich []
  2. gilt natürlich auch andersrum []
  3. je nach Sprache unterschiedlich! []
  4. Hier ist die Tastatur meistens ein Fahrrad []

2 Gedanken zu „Wie man Programmieren lernt“

  1. diesen kommentar wollte ich schon sooo lange schreiben 🙂 jetzt hab ich mir endlich mal die zeit genommen ein paar gedanken dazu loszuwerden.

    ich glaube das wichtigste beim programmieren ist die art zu denken. eine sprache bringt dir nix, wenn du nicht weisst wie du sie einsetzen musst um zum ziel zu kommen.
    das ist auch der punkt der mir am stärksten aufgefallen ist während den tutorien die ich gehalten habe. das schwierigste ist jemand diese spezielle art zu denken zu vermitteln, sobald er das kann, ist alles ein klacks im vergleich.

    es wäre sicherlich auch eine interessante diplomarbeit geworden ein informatik 1 seminar zu konzeptionieren mit übungen und vorlesungen. aber generell reizt mich das thema weiterhin, auch noch nach ein wenig frust und diversen spring/autumnschoolkursen und sogar einer richtigen vorlesung.

    was man dabei beachten muss ist denk ich in erster linie, dass man es macht weil man es möchte, weil man das ergebnis mag und nicht weil der professor gesagt hat, mach mal! das war auch während den übungen immer ein großes problem. die frage nach dem sinn. das umgeht man sehr schnell indem man kleine, schaffbare spiele als aufgaben konzeptioniert. dadurch gibt es einen schnellen, relativ großen lernerfolg.

    man muss die leute begeistern von den möglichkeiten die einem offen stehen wenn man programmieren kann und ihnen auch vermitteln wie gross der spaß daran sein kann.
    der nächste schritt ist dann den leuten diese spezielle art zu denken zu vermitteln (ich bin ehrlich, ich weiss noch nicht wie genau, aber das schaffen wir auch noch ;)).
    die eigentliche sprache zu lernen ist dann ein ständiger prozess, weil sich jede sprache über die zeit leicht verändert.

    insgesamt würde es mich glaube ich immer wieder reizen eine vorlesung oder ein tutorial über sowas zu halten. also falls die h-da mal wieder wen braucht 😉

Kommentare sind geschlossen.