Keylearnings:
- Warum programmieren lernen einfach ist.
- Welche Programmiersprache du lernen solltest.
- Was du als erstes Programmieren solltest.
- Was ist die wichtigste Fähigkeit beim Programmieren?
- Welche Ressourcen du verwenden solltest.
Programmieren lernen ist einfach aber nicht leicht.
Die Wunderpille kenne auch ich nicht.
Während des Mittagsschlafs Millionär werden. Am Wochenende trainieren und am Montag-Morgen Mister Universum sein. Totaler quatsch!
So ist es auch beim Programmieren lernen. Die Abkürzung nach, der wir so gerne suchen gibt es nicht!
Programmieren lernen ist kein Ereignis sondern ein Lernprozess der Geduld und Ausdauer erfordert.
Allerdings bin ich davon überzeugt, dass Programmieren lernen einfach ist.
Kennst du den Unterschied zwischen einfach und leicht?
Sachen die leicht sind fallen einem in den Schoß.
Bei einfachen Sachen ist zwar klar was zu tun ist, dennoch ist Anstrengung erforderlich um diese Erfolgreich zu beenden.
Einen Berg zu erklimmen ist im Prinzip einfach. Du musst nur solange einen Fuß vor den anderen setzen bis du den Berggipfel erreicht hast.
Ziemlich einfach! Aber trotzdem bist du nass geschwitzt, wenn du oben ankommst, denn es war anstrengend und überhaupt nicht leicht.
Aber weißt du was das schöne an Dingen ist, die einfach aber nicht leicht sind? Du kannst stolz darauf sein, wenn du sie gemeistert hast.
Warum Programmieren lernen einfach ist
Ähnlich wie du beim Bergsteigen einen Fuß vor den anderen setzt, bis du den Gipfel erklommen hast, musst du beim Programmieren solange eine Anweisung nach der anderen schreiben bis dein Progamm das macht was es soll.
Die einzelnen Anweisungen sind nicht kompliziert, denn Computer sind doof. Dafür aber ziemlich schnell!
Jepp, so einfach ist das! 🙂
Du brauchst keinen Kung-Fu Supermeister Guru, der dich in irgendwelche Geheimnisse einweiht.
Tatsächlich gibt es Dank Tante google und Onkel YouTube das meiste Wissen sogar für Umme!
Jedoch ist das Thema Programmieren lernen sehr umfangreich und zu Beginn einer Programmierer-Karriere nicht leicht zu durchschauen.
Sich mit Programmierthemen auseinanderzusetzen ist sehr zeitaufwändig und gerade am Anfang weiß man nie, ob man sich mit den richtigen Sachen beschäftigt.
Da wird die Angst davor Zeit zu verschwenden schnell so groß, dass man resigniert und lieber die Flinte ins Kornfeld schmeißt.
Daher möchte ich dir in diesem Artikel einige Fragen beantworten, die ich häufig von Programmieranfängern höre und ich auch selber damals hatte.
Natürlich sind manche dieser Fragen von subjektiver Natur und haben nicht die eine EINZIGE richtige Antwort.
Welche Programmiersprache lernen?
Die häufigste Frage, die ein Anfänger stellt ist: Welche Programmiersprache soll ich zuerst lernen?
Warum ich JAVA für eine gute Wahl halte, habe ich hier bereits beschrieben.
Allerdings hängt die Wahl der Programmiersprache auch sehr stark davon ab, warum du eigentlich programmieren lernen willst.
Hast du bereits eine konkrete Programmidee, dann solltest du eine Programmiersprache verwenden, in der du möglichst schnell vorzeigbare Ergebnisse produzieren kannst.
In diesem Fall ist sicher Python oder Ruby eine sehr gute Wahl.
Ruby ist insbesondere durch das Framework Ruby on Rails prominent geworden, mit dem sich hervorragend Webanwendungen erstellen lassen.
Python wird unter anderem gerne für die Programmierung des Einplatinenrechner Raspberry Pi verwendet, mit dem sich tolle Sachen, wie eine sprachgesteuerte Kaffeemaschine, bauen lassen.
Man mag Windows lieben oder hassen.
Fakt ist Windows hat enorme Präsenz und daher ist eine Sprache, welche die Entwicklung von Anwendungen für Windows unterstützt extrem nützlich. Auf diesem Gebiet ist ohne jeden Zweifel die Programmiersprache C# der Platzhirsch.
Außerdem hat C# einen weiteren nicht zu unterschätzenden Vorteil. Viele Leute haben den Wunsch ein Spiel zu programmieren und hierfür gibt es das C# Framework Unity 3D.
Häufig träumen Programmieranfänger auch von der eigenen App im Store.
Um eine App für das Apple-Betriebssystem IOS zu entwickeln finden die Sprachen Swift und Objective-C Verwendung. Für Android Geräte wird nachwievor schwerpunktmäßig in Java entwickelt.
Ach ja, und natürlich gibt es auch noch PHP. Eine Sprache, mit der sich dynamische Webseiten entwickeln lassen.
Dynamische Webseiten sind Webseiten deren Inhalt abhängig von den Eingaben des Benutzers serverseitig aufgebaut werden.
Vielleicht hast du schonmal eine Urlaubsreise im Internet gebucht.
In diesen Reiseportalen gibst du dein Reiseziel und den Zeitraum, an dem du verreisen möchtest in ein Formular ein. Drückst auf einen Bestätigungs-Button und erhältst eine dynamisch generierte Webseite mit entsprechenden Reiseangeboten.
Eine Sprache, die derzeit von den Big Boys wie Google stark gepusht wird ist JavaScript . JavaScript spielt im Frontend-Bereich eine wichtige Rolle, da mit dieser Sprache interaktive Elemente auf Webseiten entwickelt werden können.
Aber vielleicht möchtest du das Programmieren auch nur lernen, weil du verstehen willst wie ein Computer funktioniert und falls du in diese Kategorie fällst, dann gibt es eigentlich nur zwei Kandidaten, mit denen du dich beschäftigen solltest.
Nämlich C++ oder Assembler.
Viele der oben genannten Programmiersprachen (Ruby, Java etc.) sind sehr abstrakt und arbeiten weit von der Bits- und Byte-Ebene entfernt.
Das hat zur Folge, dass wir uns seltener Gedanken darüber machen müssen, wie ein Programm auf Speicher und CPU-Ebene abgearbeitet wird und wir uns mit komplizierten Themen wie Speicheradressierung oder CPU-Pipelines zunächst einmal nicht beschäftigen müssen.
Nachteil hierbei ist allerdings, dass uns die funktionsweise eines Computers verborgen bleibt worunter das Verständnis der systemnahen Verarbeitung leidet.
Bei C++ und noch mehr bei Assembler müssen wir vieles von dem was obige Programmiersprachen auf systemnaher Ebene für uns übernehmen, Stichwort Garbage Collector, selber in die Hand nehmen.
Aber bitte nicht falsch verstehen! Ich will damit nicht sagen, dass Assembler und C++ nur noch zu Lehrzwecken existieren.
Sowohl Assembler als auch C++ kommen bei zeitkritischen Anwendungen zum Einsatz. Da wir mit beiden Programiersprachen systemnah arbeiten, können wir für die zugrundeliegende Hardware angegossene Programme schreiben, die das letzte Tröpfchen Performance aus dem System quetschen.
Ein anderes wichtiges Anwendungsgebiet dieser beiden Sprachen ist die Entwicklung von Treibersoftware für Hardwarekomponenten.
In allen Sprachen (mit Ausnahme von Assembler) sind insbesondere die Grundkonzepte sehr ähnlich. Sobald du eine Sprache gut beherrschst, wird es dir deutlich leichter fallen dich in neue Sprachen einzuarbeiten.
Was programmiere ich?
Um programmieren zu lernen müssen wir zunächst einmal die Grundkonzepte kennenlernen.
Hierfür spielt es weniger eine Rolle was du programmierst. Viel wichtiger ist wie du programmierst.
Du musst dringend ein Gefühl dafür entwickeln in welcher Situation, welches Sprachmittel geeignet ist.
Dieses Gefühl entwickelst du nur mit Erfahrung und Übung, Übung und Übung.
Eine Typische Übungsaufgabe für den Anfang wäre beispielsweise:
Schreiben Sie ein Programm welches Zahlen in zwei Felder einliest. Anschließend beide Felder sortiert und in ein drittes Feld zusammenführt. Das dritte Feld soll aufsteigend sortiert sein.
Diese Übungsaufgabe trainiert die Verwendung von Dateneingaben und das Konzept der Arrays.
Wie würdest du vorgehen?
Lass uns ein Prinzip verwenden, das bereits unsere Großeltern in der Schule kennengelernt haben. Das sogenannte EVA Prinzip. Hierbei steht EVA für Eingabe, Verarbeitung und Ausgabe.
Überlegen wir uns was wir in den einzelnen Ebenen benötigen.
Bei der Eingabe müssen wir Daten in zwei Felder einlesen. Hierfür müssen wir die Einlese-Operation unserer Programmiersprache verwenden. In Java gibt es hierfür beispielsweise den sogenannten Scanner.
Schauen wir uns die Verabeitungsbene an. Auf dieser Ebene ist höchste Kreativität gefordert. Für das Sortieren der beiden eingelesenen Felder stellen die meisten Programmiersprachen entsprechende Algorithmen zur Verfügung. Um allerdings die beiden Felder zu verschmelzen bleibt uns nichts anderes übrig als uns einen Algorithmus auszudenken.
Auf der Ausgabe-Ebene haben wir es allerdings wieder einfach. Hier müssen wir lediglich das verschmolzene Feld ausgeben.
Zu guter letzt müssen wir die Ebenen in einem Programm zusammenführen.
Was ist die wichtigste Fähigkeit?
Wie wir bereits festgestellt haben, geht es beim Programmieren im Kern darum solange Anweisungen aneinander zu Reihen bis wir ein Programm haben, das die uns gestellte Aufgabe löst.
Dazu müssen wir das uns gestellte Problem in überschaubare Happen aufteilen. Idealerweise so, dass wir jeden Happen mit einer Anweisung verarbeiten können.
Die Fähigkeit ein großes Problem auf eine Anzahl von kleinen Problemen herunterzubrechen, nennt man analytische Denkfähigkeit.
Das Trainieren dieser Fähigkeit ist ein wichtiger Bestandteil beim programmieren lernen.
Analytische Denkfähigkeit können wir ganz unabhängig von einer Programmiersprache üben.
Ein Klassiker um analytische Denkfähigkeit zu trainieren ist das Eimer Problem.
Stell dir vor du hast zwei Eimer. In den ersten Eimer passen drei Liter und in den zweiten Eimer passen fünf Liter. Deine Aufgabe ist es den fünf Liter Eimer mit vier Liter Wasser zu befüllen.
Hast du eine Idee?
Hier die Lösung:
- Mach den drei Liter Eimer randvoll.
- Kipp den vollen drei Liter Eimer in den noch leeren fünf Liter Eimer.
- Befülle den drei Liter Eimer erneut bis zum Rand mit Wasser!
- Im fünf Liter Eimer ist jetzt noch Platz für zwei weitere Liter. Wenn du den Inhalt des vollen drei Liter Eimer verwendest um den fünf Liter Eimer randvoll zu machen, verbleibt noch genau ein Liter im drei Liter Eimer.
- Kippe den fünf Liter Eimer ins Klo.
- Fülle den verbliebenen Liter des drei Liter Eimers in den leeren fünf Liter Eimer.
- Befülle den jetzt wieder leeren drei Liter Eimer randvoll mit Wasser.
- Kippe den drei Liter Eimer vollständig in den fünf Liter Eimer, der bereits ein Liter enthält.
- Tataa, 1Liter + 3Liter ergibt 5 Liter. Die Aufgabe ist gelöst.
Genau wie wir das Bergsteigen in einzelne Gehschritte oder das schreiben eines Programmes in einzelne Anweisungen herunterbrechen, haben wir dieses Problem auf das hintereinander geschaltete Umfüllen von Eimern heruntergebrochen.
Welche Ressourcen kannst du verwenden?
Eine weitere wichtige Frage, die sich beim programmieren lernen stellt ist: „Wo finde ich die richtigen Informationen?“.
Menschen lernen unterschiedlich! Manche können sich Dinge am besten merken, die sie hören andere sind eher die visuellen Lerntypen, die sich am besten Sachen merken, die sie sehen.
Für mich hat sich eine Mischung aus Video-Tutorials und Fachbüchern als ideal herausgestellt.
Tutorials sind geeignet um einen ersten Überblick über ein Thema zu bekommen.
Bücher vermitteln häufig ein tieferes Verständnis und haben den Vorteil, dass man ein Buch bequem zum Nachschlagen neben die Tastatur legen kann.
Eine preisgünstige Möglichkeit um an Lehrmaterial zu kommen, die ich dir sehr empfehle, ist der Gang in eine Universitäts-Bibliothek. Dort kannst du ungestört in unzähligen Lehrbüchern schmökern und dir das Buch, welches dir am meisten zusagt ausleihen und mit nach hause nehmen.
Video-Tutorials findest du bei YouTube sehr zahlreich. Meine persönlichen Favoriten sind folgende Kanäle:
- Brotcrunsher
- Derek Banas (Englisch)
- Codingtutor (Sehr geeignet für die App Entwicklung)
- Codeadventurer (Ja, das ist mein bescheidener Kanal)
Nur eines haben beide Medien gemeinsam! Du lernst das Programmieren nicht durch reines konsumieren von Büchern und Tutorials. Programmieren lernen erfordert TUN und Erfahrungen sammeln.
Anfänger haben oft das Problem den roten Faden zu finden und die richtigen Fragen zu stellen und deshalb Schwierigkeiten die richtigen Tutorials zu finden.
Daher ist zu Beginn ein Videokurs, in dem dich ein Lehrer an die Hand nimmt hilfreich und enorm zeitsparend. Um die Programmiersprache Java zu lernen kann ich folgenden Kurs empfehlen.
Sobald ich diesbezüglich auch in anderen Programmiersprachen Erfahrungen gesammelt habe, werde ich berichten.
Nur Übung macht den Meister
Zum Schluss muss ich erneut auf einer Sache herumreiten. Es ist sehr wichtig, dass du übst.
Natürlich ist es so, dass es für eine Aufgabe in der Regel nicht nur die EINE Lösungsmöglichkeit gibt.
Denn wie heißt es so schön: Viele Wege führen nach Rom.
Allerdings gibt es unter diesen Wegen gute und schlechte.
Und wie findest du gerade als Selbstlerner heraus, ob du einen guten Weg gewählt hast?
Richtig, durch Feedback!
Und hier bin ich auf ein sehr interessantes Projekt gestoßen, wo du genau das erhältst.
Schau mal bei Codewars vorbei. Hier findest du Übungsaufgaben (sogenannte Katas) von jedem Schwierigkeitsgrad.
Und das beste ist! Du bist nicht allein. Alle Teilnehmer veröffentlichen ihre Lösung und stimmen darüber ab welcher Lösungsweg der optimalste ist.
Auf diese Weise bekommst du Feedback darüber, ob du mit deiner Lösung auf dem richtigen Weg bist.
Eine weitere Möglichkeit ist es ein aktives Mitglied in Themenrelevanten Facebookgruppen zu werden.
Fazit: Ich hoffe ich konnte dir in diesem Artikel einem roten Faden an die Hand geben und du jetzt weißt, in welche Richtung du Laufen musst um das Projekt „Programmieren lernen“ erfolgreich zu stemmen.
Hast du weitere Tipps wie man das Programmieren am besten erlernt? Dann rein in die Kommentare damit!
Hat dir der Artikel gefallen? Dann würde ich mich freuen, wenn du mir auf Facebook folgst!
Biackcounter
24. Oktober 2018 at 20:42Super Beitrag! Ich lerne das Programmieren gerade bei Code Construct 🙂
Über http://code-construct.de – Zum Glück alles kostenlos ;D
Kim Peter
27. Oktober 2018 at 16:36Okay, interessant.
Linh
1. Januar 2019 at 20:41Die Aufgabe mit den Eimern kann man doch auch auf einem anderen Weg lösen, wenn ich mich nicht irre:
1. 5l Eimer befüllen
2. 3l aus dem 5l Eimer in den 3l Eimer füllen
3. 3l Eimer ausleeren
4. Die verbleibenden 2l aus dem 5l Eimer in den 3l Eimer füllen
5. Den 5l Eimer füllen
6. Den mit 2l befüllten 3l Eimer mit 1l aus dem 5l Eimer auffüllen
–> 4l im 5l Eimer
Ich hoffe ich habe keinen Denkfehler gemacht und mir ist bewusst, dass diese Methode deutlich komplizierter ist als der von Dir vorgeschlagene Lösungsweg.
Viele Grüße und ein frohes neues Jahr
Kim Peter
2. Januar 2019 at 7:40Hallo Linh, natürlich. Für vieles gibt es mehr eine Lösung. Dir auch ein frohes neues Jahr! Viele Grüße Kim
Franzi
7. Oktober 2019 at 8:21Hi Kim, ich finde diesen Blogbeitrag klasse. Endlich erklärt jemand das Programmieren einfach und verständlich. Ich tu mir da schon etwas schwer. In den letzten Monaten habe ich viel probiert; auch Tutorials, Artikel und auch Bücher lesen. Habe gleich mal mit Javascript probiert und habe gemerkt, dass ich nur Bahnhof verstehe. Dann bin ich letzte Woche auf einen Beitrag gestolpert, der Bücher für die Programmiersprache Scratch beleuchtet hat: https://kinderprogrammieren.de/buch/5-buecher-fuer-kinder-scratch-programmierung/ Dadurch habe ich mir verschiedene Bücher angeschaut und ich muss sagen, Scratch ist auch für Erwachsene eine gute Möglichkeit, um in die Programmierung reinzuschnuppern. Und das kombiniert mit diesem Artikel von Dir, Kim – einfach super. Ich persönlich finde es super, dass technik-affine Leute, wie Du, uns nicht Technikern unterstützen die Materie zu verstehen. Danke dafür
Kim Peter
14. Oktober 2019 at 19:03Hallo Franzi, vielen Dank für dein Feedback. Ehrlich gesagt kennen ich Scratch nicht.Aber eigentlich ist es auch nicht so wichtig, in welcher Sprache man das Programmieren beginnt. Viele Grüße Kim
Choose a style: