Beiträge

Programmieren Lernen für Anfänger: Basics, Apps, Games, Native und Web

Programmieren lernen für Anfänger

In diesem Artikel findest du alle Informationen zum Programmieren für Anfänger. An dieser Stelle ist wirklich KEIN Vorwissen aus der Programmierung notwendig!

Der Artikel sieht das Programmieren Lernen realistisch. Auch, wenn das Programmieren einfach ist, kann das Lernen und der Einstieg kompliziert sein.

Die Idee

Du kennst das Gefühl, du hast diese eine Idee, aber um diese umzusetzen musst du Programmieren lernen. An dieser Stelle muss ich dir schon einmal sagen, du bist mit deiner Idee weiter als viele andere und du hast es verdient Programmieren zu lernen. Du bist auch bereit Programmieren zu lernen, möchtest allerdings schnelle Ergebnisse sehen. Das ist vollkommen verständlich.

Auch wenn es viele Tutorials, Bücher und andere Medien behaupten. Programmieren lernen ist ein niemals endender Prozess. Fängst du einmal an mit dem Programmieren, wirst du zunächst kleine Programme umsetzen. Danach wirst du probieren deine erste eigene App zu erstellen oder dein erstes eigenes Spiel. Mit diesem wirst du allerdings noch viel rumprobieren und oft Fehler suchen. Sobald du merkst, du musst eigentlich etwas Programmieren, was du bisher noch nicht programmiert hast, wirst du wieder anfangen zu lernen. Das ist ganz normal und gehört zum Programmierer-dasein dazu. Bis zu einem gewissen Punkt überschneiden sich die Lernwege aller Programmierer am Anfang. Das heißt, ein Anfänger der später Spiele programmieren möchte, muss am Anfang dasselbe lernen wie der zukünftige Webentwickler. Irgendwann gehen die Lernpfade auseinander. Jemand der Webseiten programmiert braucht nicht zu wissen, wie er der Grafikkarte 3D-Befehle gibt.

Ich möchte dir einen Lernweg vorstellen, der dir helfen wird Programmieren zu lernen. Dabei ist es völlig egal ob du normale Programme, Spiele, Apps oder Webseiten erstellen willst.

Dabei möchte ich das Lernen des Programmierens mit dem Hausbau vergleichen. Warum? Wie ein Haus gebaut wird, kannst du dir einfach vorstellen. Dir ist klar, dass du am Anfang noch keinen Wolkenkratzer bauen kannst. Zuerst lernst du alle nötigen Werkzeuge wie Hammer, Schraubendreher und Säge zu benutzen. Danach musst du die Materialien kennen lernen wie Holz, Beton, Nägel und Stahl. Nun hast du das Grundwissen um kleine Konstruktionen zu bauen und auszuprobieren wie man eine kleine Hütte baut. Danach baust du deine erste richtige eigene Hütte, zu diesem Zeitpunkt kannst du perfekt mit deinen Werkzeugen und den Materialien umgehen. Was dir hier noch fehlt ist die Erfahrung. Also lernst du weiter wie man Hütten und Häuser richtig aufbauen muss, damit diese stabil sind und nicht einstürzen. Mit diesem Wissen baust du dein erstes eigenes großes Haus. Danach baust du weitere Hütten und Häuser, bis du genug Erfahrung gesammelt hast, dass du dir vorstellen kannst, wie so ein Wolkenkratzer aufgebaut werden kann.

Damit du deinen Wolkenkratzer bauen kannst, erstellst du einen Plan und die Architektur. Damit du dir auch sicher bist, erstellst du einen Prototyp um zu gucken ob so ein Wolkenkratzer auch stabil und umsetzbar wäre. Dabei lernst du wiederum alle nötigen Techniken für den Bau eines solchen Gebäudes. Und dann geht es los, Etage für Etage baust du deinen Wolkenkratzer.

Kurz und Knapp: Sicherlich hat man schnelle Ergebnisse beim Lernen, aber um große komplexe Programme zu entwickeln, braucht man eine Menge Erfahrung und muss sich viele Technologien aneignen.

Der Anfang deines Lernwegs

Dieser Lernweg ist für alle Anfänger gleich und es gibt nur wenige Grundvoraussetzungen. Wenn du es geschafft hast alleine bis zu dieser Webseite zu kommen, hast du schon einen Großteil der Voraussetzungen erfüllt.

Die Voraussetzungen

Die Voraussetzungen zum Programmieren lernen sind folgende: Zunächst Lesen, Schreiben und Rechnen. Das hört sich vielleicht doof an, aber es gehört einfach dazu. Du musst kein Mathematikwissenschaftler sein oder Romane schreiben können, aber in der Grundschule solltest du diese Dinge gelernt haben. Der Umgang mit einem modernen Computer. Es ist interessiert keinen ob du mit dem Smartphone etwas tippen kannst, oder du stundenlang auf einer Konsole zocken kannst. Du musst wissen wie man einen Computer mit Tastatur und Maus bedient. Wenn du eine neue Datei erstellen und bearbeiten kannst, hast du schon einen ausreichenden Wissensstand. Das nächste ist Neugier und Interesse. Glaub mir, manchmal kann das stundenlange Schreiben von Programmcode echt nerven. Wenn du Interesse am Programmieren hast, wirst du auch noch nach Stunden Spaß haben. Ohne die richtige Neugierde wirst du gar nicht das Durchhaltevermögen bei der Fehlersuche aufbauen können. Mehr dazu findest du im Artikel zum Thema: Kann jeder Programmieren lernen?

Die Grundlagen

Wie ich bereits die Werkzeuge Im Hausbau erwähnt habe, gibt es auch in der Programmierung bestimmte Grundwerkzeuge die ein Anfänger erlernen sollte. Und zwar sind dies die Grundelemente (ich nenne sie weiterhin Grundwerkzeuge) einer Hochsprache. Diese Werkzeuge werden in jeder Programmiersprache in etwas gleich benutzt! Das bedeutet für dich, lernst du diese Werkzeuge kannst du bereits jede Programmiersprache lesen.

Diese Grundwerkzeuge sind unter anderem:

  • Folgestruktur
  • Funktionen und Funktionsaufrufe
  • Operationen
  • Variablen
  • Entscheidungen
  • Wiederholungen
  • Bibliotheken

Wenn du diese Grundwerkzeuge gelernt hast, kannst du bereits an deine erste Hütte… an dein erstes kleines Programm denken. Übrigens: Die ersten Grundwerkzeuge bringe ich dir kostenlos bei in diesem Tutorial bei, klicke hier um mit dem Tutorial zu starten.

ACHTUNG: DIESE GRUNDLAGEN DÜRFEN NICHT ÜBERSPRUNGEN WERDEN!

Ganz ehrlich, wenn du diese Werkzeuge nicht im Schlaf benutzen kannst, macht es absolut keinen Sinn weiterzumachen. Und glaub mir, auch ich habe probiert, diesen Weg abzukürzen um schnell zu sein. Aber damit bin ich ganz kräftig auf die Nase gefallen um habe damit meinen Weg um Jahre verlängert!

Also: Wenn du nicht weißt, wie du ein Problem mit diesen Werkzeugen lösen kannst, solltest du diese Grundwerkzeuge erstmal lernen (Klicke hier um dies zutun).

Diese Grundwerkzeuge müssen definitiv mit einem bestimmten Material benutzt werden. So wie du mit einem Hammer Nägel in Holz reinhauen kannst, kannst du die Grundwerkzeuge in einer bestimmten Programmiersprache anwenden. Also wirst du zwangsläufig am Anfang eine Programmiersprache verwenden um deine ersten Programme zu schreiben. Hier gebe ich dir den Tipp: Es ist egal, welche Programmiersprache du lernst. Jede Programmiersprache hat dieselben Grundwerkzeuge.

Die weiteren Punkte für die Grundlagen findest du in der 12-Punkte Checkliste zum Programmieren lernen.

Die Objektorientierung

Hast du die Grundlagen erlernt, wirst du erlernen müssen was Objekte sind und was Objektorientierung ist. Wenn dir die Begriffe noch nichts sagen, ist es nicht schlimm, denn diese lernst du automatisch nach den Grundlagen (und es bedeutet für dich, dass du die Grundlagen noch erlernen musst). Falls du neugierig bist, kannst du in diesem Artikel nachlesen, worum es sich bei Objektorientierung handelt.

 

Du bist dran!

Wenn du nun neugierig geworden bist und du deine Softwareidee umsetzen willst, kannst du jetzt anfangen und die Grundlagen der Programmierung hier lernen. Ich würde auch gerne erfahren: Welche Idee hast du, für die du Programmieren lernen musst? Kommentiere unten und erzähl mir deinen Anfang, ich helfe dir, den richtigen Weg zu finden.

 

10 Puzzleteile zum Programmieren lernen

Es geht ja nicht nur um das, wie man anfängt, die Frage beim Programmieren Lernen ist ja hauptsächlich auch: „Was muss ich alles lernen damit ich sagen kann, ich kann jetzt programmieren?“ Ich möchte hier eine Übersicht geben welche Themen man beherrschen muss um sich „Programmierer“ nennen zu können. Hier fallen bereits ein paar Grundbegriffe (die ich in „8 Begriffe die du“ erklärt habe), aber die sind für Anfänger auch zu verstehen.

Das Programmiererpuzzle

Hier ein kleines Schaubild, welche Themen bzw. Puzzleteile wichtig sind.

Puzzle

Ganz wichtig, ich konzentriere mich hier auf Hochsprachen aus der 3. Generation. Was das genau bedeutet kannst du in diesem Artikel lesen: Warum die Sprache egal ist.

Entwicklungsumgebung

IDE

Screenshot einer IDE (Eclipse)

Du brauchst ein Programm in dem du deinen Quellcode eintippen kannst und aus dem dein fertige Applikation erstellt wird. Dieses Programm ist dein Hauptarbeitsplatz beim Programmieren. Es wird Entwicklungsumgebung oder auf englisch Integrated Development Environment (kurz IDE) genannt. Die IDE beinhaltet alle Werkzeuge um dein Programm fertigzustellen. Kleine Übersicht über die typischen Werkzeuge:
  • Texteditor: In diesem kannst du deinen Quellcode bearbeiten und anzeigen. Je nach Programmiersprache werden Elemente besonders hervorgehoben, damit du den Code leichter lesen kannst.
  • Compiler/Interpreter: Dein Quelltext muss in die Maschinensprache übersetzt werden. Dies kann auf verschiedene Art und Weise geschehen. Wichtig ist hierbei, dass der Compiler/Interpreter dich hinweist wenn du Fehler in deinem Quelltext hast. Er ist dann nicht in der Lage den Code zu übersetzen. Dies ist nicht schlimm, die Fehler werden dir im Texteditor angezeigt damit du diese beheben kannst.
  • Debugger: Dieses hilfreiche Werkzeug brauchst du dann, wenn dein Programm abstürzt oder nicht das macht was es machen sollte. Du kannst dein Programm also an bestimmten Stellen anhalten und in Ruhe alles überprüfen was falsch sein könnte. So löst du Schritt für Schritt jedes Problem in deinem Quellcode.

Grundelemente einer Hochsprache

Ob du Apps programmierst, Spiele entwickelst oder professionelle Büroanwendungen erstellst. Diese Grundelemente gelten für ALLE Hochsprachen. Ich erkläre diese detailliert in meinem Kurs. Hat man diese Grundelemente vollständig gelernt, steht der Programmiererkarriere nichts mehr im Wege. Hier eine kleine Übersicht, wie diese Elemente funktionieren lernst du dann in meinem kostenlosen Tutorial.
  • Folgestruktur: Jede Programmiersprache arbeitet eine Abfolge an Befehlen ab, hast du einmal gelernt in Abfolgen und Anweisungslisten zu denken bist du bereit für den nächsten Schritt.
  • Befehle und Operationen: Nun kann man nicht einfach irgendwelche Befehle in eine Folgestruktur packen, jeder Befehl muss bekannt sein. So  kommt man auch zu den Operationen. Hast du gelernt wie man die 4 Grundrechenarten in einem Programm benutzt hast du schon mal jemanden der dir immer Rechenaufgaben für dich löst.
  • Benutzereingabe und -ausgabe: Programme müssen Befehle vom Computernutzen entgegennehmen können. Außerdem müssen sie auch am Bildschirm Informationen ausgeben können. Somit ist es wichtig zu lernen, was man im Quelltext eingeben muss, damit dies möglich ist.
  • Start und Ende: Wo fängt ein Programm an und wo ist es zuende? Damit man die Orientierung beibehält, sollte man immer wissen wo das Programm startet und auch wo es zuende ist.
  • Vergleiche: Du kennst es aus der Grundschule: 6 ist größer als 2. 5 ist kleiner als 10. 3 ist gleich 3. Beim Programmieren ist es sehr wichtig diese Vergleiche benutzen zu können, aber das ist sehr leicht zu erlernen.
  • Variablen: Es wird Punkte in deinen Programmen geben, wo du dir bestimmte Sachen abspeichern musst. Dafür benutzt man Variablen. Sie speichern Daten und Werte im Arbeitsspeicher deines Computers. Damit dein Programm nicht alles vergisst!
  • Arrays: Das sind Variablen aber in Listen und Tabellenform. Ein Array kann also mehrere Variablen speichern. Hört sich doch einfach an!
  • Zeiger/Pointer: Eine Variable muss wiedergefunden werden. Also bekommt sie im Arbeitsspeicher eine eindeutige Nummer. Diese Nummer nennt man Zeiger.
  • Entscheidungen: Ab hier wird es richtig spannend, du bringst deinem Programm bei eigene Entscheidungen zu treffen. Du stellst die Bedingungen und dein Programm entscheidet.
  • Schleifen: Hier werden keine Messer geschliffen, es geht hier um Befehle die sich wiederholen. Damit du deinem Programm nicht alles 1.000 Mal programmieren musst, benutzt du Schleifen.
  • Funktionen: Es gibt Codeabschnitte die du immer wieder verwenden kannst, das hilft dir Ordnung in deinem Programm zu halten.
  • Strukturen: Strukturen braucht man um bestimmte Datengebilde im Quelltext abzubilden. Ein Rechteck hat zum Beispiel zwei Seiten und demnach immer zwei Werte die gespeichert werden müssen. Dafür benutzt man Strukturen.
  • Klasse: Dies ist eine Weiterentwicklung zur Struktur aber noch viel mächtiger! Hier programmierst du nicht nur welche Seiten dein Rechteck hat sondern kannst auch programmieren wie es zu zeichnen ist!
Mit diesen Grundelementen kannst du bereits Programmieraufgaben lösen. Es ist nicht nur wichtig diese Elemente zu kennen, du musst vor allem wissen, wann du welches Element benötigst! Wenn du gut bist, lernst du diese Themen innerhalb eines Tages! Bist du etwas langsamer, hast du das in ca. 5-10 Tagen gelernt!

Programmiersprache

Java_func_while

Java: Funktion, Klassen, Variablen und Schleife in Aktion

Die Grundelemente machen natürlich nur Sinn in einer Programmiersprache. Die Sprache ist eine Festlegung zwischen dir und deinem Computer. Die Sprache legt fest wie du die Grundelemente im Quelltext aufschreiben musst, damit der Computer diese versteht!
Somit sehen die oben genannten Grundelemente in jeder Programmiersprache etwas anders aus und auch aus diesem Grund sagt man: „Hast du eine Programmiersprache gelernt, kannst du alle!“, da sich diese Elemente in den Sprachen immer wiederholen!
Sinnvoll ist es die Grundelemente natürlich direkt in einer Programmiersprache zu lernen. Welche Programmiersprache du zum Lernen wählst ist egal, denn welche Sprache du später benutzt, hängt vom Einsatzzweck ab. Hier ist eine kleine Übersicht für dich: Mit welcher Sprache fange ich an?.

 

Grundprinzipien

Jeder Programmierer denkt anders und somit programmiert jeder anders. Damit andere Programmierer deine Programme verstehen können ist es ratsam sich an ein paar Prinzipien zu halten. Außerdem bleibt dein Quellcode somit wartbar. Stell dir vor du müsstest den Code in 5 Jahren nochmal bearbeiten, dafür gibt es diese Prinzipien. Hier eine kleine Auswahl:
  • EVA: „Eingabe“, „Verarbeitung“ und „Ausgabe“ – Hier geht es darum zu erst alles an Werten zu sammeln die bereits vorhanden sind. Erst dann werden diese verarbeitet. Das Ergebnis wird erst zum Schluss ausgerechnet und ausgegeben.
  • DRY: „Don’t Repeat Yourself!“ oder auf deutsch „Wiederhole dich nicht!“ – Hier geht es um doppelten Quellcode. Kein Programmierer kann es abstreiten, jeder wird einmal einen Code kopieren und irgendwo anders einfügen. Problem dabei: Versteckt sich in diesem Code ein Fehler  hat man diesen Fehler verdoppelt.
  • KISS: „Keep it simple stupid“ oder auf deutsch „Mach es einfach du Dummerchen!“ – Anstatt Probleme möglichst kompliziert zu lösen solltest du dich darauf konzentrieren deinen Quelltext einfach zu gestalten. In 5 Jahren wirst du dir dafür danken.
  • MVC: Model View Controller – Dieses Prinzip ist schon für sehr fortgeschrittene Programmierer. Es geht hier darum die Anzeige von Daten sowie die Daten selbst und die Verarbeitung der Daten immer in separaten Komponenten zu halten. Dies hat den Vorteil, dass sich diese einzelnen Komponenten ohne Probleme verändern lassen. Bei diesem Prinzip ist man bereit ganz schnell in der Welt der Objektorientierten Programmierung.

Objektorientiertes Programmieren (OOP)

Mit den Grundelementen kannst du bereits kleine Programme schreiben, die großen Programme und Spiele sowie Apps programmiert man objektorientiert. Dennoch MUSST du die Grundelemente drauf haben, denn darauf baut die Objektorientierung auf. In den Grundelementen taucht bereits der Begriff Klasse auf. In der OOP dreht sich alles um diese Klassen. Klassen haben Methoden, Klassen können vererben. Klassen können ihre Elemente kapseln. Sobald du anfängst grafische Oberflächen (GUIs) zu programmieren benutzt du etliche Klassen und schreibst auch selber welche.

Grafische Programmierung (GUIs)

MessageBox_OK

Ein Dialogfenster mit OK-Knopf ist auch schon eine GUI

Wenn du das hier gerade liest, sitzt du gerade am Handy oder am Computer (wenn du es ausgedruckt hast, hast du ihn vorhin benutzt). Somit hast du bereits grafische Oberflächen benutzt. Fenster, Textfelder, Buttons, Listen und Auswahlboxen. Das sind alle Steuerelemente mit denen du den Computer bedienst. Alles über Maus, Tastatur und sogar über Touchbildschirme. Lernst du Programmieren, kommst du nicht drumherum deinem Nutzer eine Oberfläche zu bieten mit der er interagieren kann. Du solltest also lernen wie du in deiner gewählten Programmiersprache und Bibliothek grafische Oberflächen programmierst.

Daten und Datenbanken

Dasselbe wie für GUIs gilt für die Daten. Ob du ein Spiel programmierst oder du eine Onlineshop entwickelst. Die Daten deiner Nutzer müssen irgendwie gespeichert und geladen werden. In der Spieleentwicklung musst du also Spielstände und Einstellungen speichern und laden können. Der Onlineshop sollte die bestellten Artikel speichern und laden können, damit die Bestellung ausgeführt werden kann. Diese Daten können in Dateien oder in Datenbanken gespeichert werden. Welche Methode man wählt ist die Frage des Einsatzzwecks. Allerdings solltest du dies beherrschen können, sonst müssen deine Spieler immer wieder von vorne anfangen und deine Bestellungen erreichen dich nie.

Bibliotheken oder APIs

Das Rad ist bereits erfunden, du musst es nicht nochmal erfinden. Genauso ist es beim Programmieren, die meisten Funktionen die du benötigst wurden bereits von anderen Programmierern entwickelt. In den Grundelementen wirst du bereits mit Bibliotheken gearbeitet haben. Sei es nur die einfache Benutzereingabe und -ausgabe oder professionelle Benutzeroberflächen. Stell dir mal vor du müsstest jedes mal den OK-Knopf selber programmieren. Solche Funktionen sind bereits entwickelt worden. Wichtig ist für dich, dass du lernst diese Bibliotheken benutzen zu können! Wie schreibt man eine Datei auf die Festplatte? Wie liest man eine Datei von der Festplatte? Solche Funktionen sind bereits fertig. Du musst nur wissen wie du diese in deinem Programm ausführen kannst. Wenn du z.B. Apps für Android schreibst benutzt du das Android SDK. Bist du mit C# unterwegs benutzt du das .NET-Framework. Für die Spielentwicklung gibt es nochmal andere Bibliotheken. Manche sind kostenlos für andere sind Lizenzgebühren fällig. Benutzt du mein Roboterprogramm verwendest du bereits eine Bibliothek!

Entwurfsmuster

Hier kommst du in den professionellen Bereich der Softwareentwicklung. Arbeitest du mit Entwurfsmustern (auf Englisch Design Pattern) versteht dich jeder Software Entwickler. Entwurfsmuster zu lernen und richtig anzuwenden ist die Profiliga der Programmierer. In der Spieleprogrammierung wirst du nicht drumherum kommen bis zu diesem Schritt zu arbeiten. Arbeitest du bei großen Softwareprojekten mit wird auch dort oft von Entwurfsmustern gesprochen. Entwurfsmuster beschreiben Standardlösungen für oft auftretende Probleme. Hast du dir schonmal Gedanken gemacht wie der Rückgängig-Befehl programmiert wird? Andere schon und dafür gibt es ein Entwurfsmuster. Beherrscht du diese sicher und hast auch schon alle anderen „Puzzleteile“ zusammen hast du nun alles was du benötigst um Programmieren zu können. Der nächste Schritt geht dann in Richtung Softwarearchitektur.

Erfahrung

Ein wichtiges Puzzleteil. Du kannst dir quasi für jedes Puzzleteil ein Buch kaufen und es durcharbeiten. Allerdings wird dir dann noch die Erfahrung fehlen. Erst wenn du anfängst die Sachen einzusetzen und Programme zu entwickeln wirst du die nötige Erfahrung sammeln die du benötigst das nächste Große Ding zu machen. Mit viel Übung passiert es auch schon vorher.

Fazit

Du siehst, es ist nicht wenig Arbeit die du investieren musst. Du brauchst viel Durchhaltevermögen und Interesse an diesen Themen. Wichtig ist auch, dass du diese Dinge nicht immer nacheinander lernen kannst. Die IDE, Programmiersprache und die Grundelemente gehören zwangsläufig zusammen, es ist schwierig diese separat zu erlernen. Das sind also die 10 Themen die du beachten musst um Programmieren lernen zu können. Jetzt geht es darum direkt anzufangen! Starte hier und verdiene dir deine ersten drei Puzzleteile! Es ist noch Platz für zwei weitere Puzzleteile, habe ich eins vergessen? Kommentiere unten den Beitrag und wir unterhalten uns darüber!