6

Kann jeder programmieren lernen?

Mit dem Smartphone mit allen Freunden kommunizieren, mit dem Computer Online einkaufen. So sieht unsere heutige Zeit aus. Von den ganz neuen Technologien abgesehen, sind Computer fest in unser Leben getreten.

Wir können gar nicht mehr ohne Software, aber wissen nicht wie diese Software funktionert. Grund genug sich einmal damit zu beschäftigen, wie schwierig es tatsächlich ist Softwareprogramme zu verstehen und diese zu programmieren.

Was man direkt vorweg nehmen kann: Man muss kein Mathegenie oder Computerfreak sein, um das Programmieren zu lernen.

In diesem Artikel sollst ud erfahren, was man eigentlich benötigt um Programmieren zu können. Damit kannst du dich direkt selbst einschätzen. Neben den Voraussetzungen erfährst du, was man eigentlich lernen muss und wie man anfängt. Beim Lernen selbst gibt es noch ein paar Dinge zu beachten. Auch das möchte ich dir mitgeben.

Voraussetzungen zum Programmieren lernen

Neben Lesen, Schreiben und Rechnen solltest du bereits grundlegende Computerkenntnisse mitbringen. Es gibt zwar tatsächlich auch Material, bei dem man selbst diese Vorkenntnisse wegglassen kann, aber schneller geht es definitiv, wenn du diese Voraussetzungen bereits mitbringst.

Die Computerkenntnisse belaufen sich darauf, dass du in der Lage sein solltest, Programme zu installieren, Dateien zu laden/spechern/erstellen und löschen zu können. Ein Textprogramm solltest du ebenfalls bedienen können, aber du musst kein Profi an der Tastatur sein.

Eine wichtige Voraussetzung ist das Interesse die technischen Vorgänge verstehen zu wollen. Ohne dieses Interesse verliert man bei ersten Programm bereits die Lust am programmieren, denn die erste Fehlersuche wird kommen. Fehlersuche und Behebung ist eine alltägliche Arbeit beim Programmieren. Da kann man sich schonmal ein paar Stunden über dem eigenen Programm den Kopf zerbrechen und merkt dann, dass nur ein Zeichen fehlte. Im übrigen ist das das genialste Gefühl überhaupt, wenn man nach Stunden Fehlersuche den Fehler endlich behoben hat.

Neben dem technischen Interesse muss man ein gewisses abstraktes Vorstellungsvermögen sowie etwas Kreativität mitbringen.

Immer wieder wirst du dir Gedanken machen müssen, wie ein bestimmtes Programm bisher abgelaufen ist und wie es ablaufen sollte. Ausserdem wirst du immer wieder Probleme aus dem echten Leben in kleine Ablaufprozesse zerteilen und diese als Programm beschreiben musst:

  • Was soll passieren, wenn der Benutzer eine bestimmte Taste drückt?
  • Was, wenn er plötzlich mit der Maus klickt?

Programmieren lernen - Aber was lernt man konkret?

Als erstes lernst du den Einsatz einer Programmiersprache. Eine Programmiersprache hilft dir, dem Computer Befehle zu geben. Ohne eine Programmiersprache müsstest du ständig mit der Maschinensprache, also mit Einsen und Nullen, deinem Computer Befehle geben.

Das ist nicht nur zeitaufwändig sondern viel zu schwierig zu verstehen. Dafür gibt es die Programmiersprachen, welche im Prinzip alle gleiche Grundelemente enthalten:

  1. Befehle
  2. Operationen
  3. Variablen
  4. Entscheidungen und
  5. Wiederholungen.

Alles andere basiert auf diesen 5 Grundelementen.

Wenn du diese im Schlaf benutzen kannst, programmierst du ein Programm nach dem anderen.

Damit man nicht alles selbst programmieren muss, gibt es Technologien die auf diesen Grundelementen aufsetzen: Bibliotheken mit fertigen Funktionen, Standards und Protokolle für Kommunikation und so manche Spezialität die dazu kommt, wenn man was bestimmtes Programmieren will.

So unterscheidet sich die Programmierung von Videospielen zu Onlineshop, aber in der Basis werden immer dieselben Werkzeuge verwendet. Wie im echten Leben auch: Ein Baumhaus baut man lieber aus Holz, aber für einen Wohnhaus braucht man zusätzlich noch Beton, Stahl.

Bei einem Wolkenkratzer hat man noch mehr Anforderungen an das Baumaterial. Ähnlich kann man das auch bei Software sehen, je nach Funktionalität verwendet man andere Technologien und unter Umständen auch andere Programmiersprachen. Aber im Grunde basieren diese auf den selben Grundelementen. Diese möchte ich dir kurz vorstellen, damit diese für dich in Zukunft nicht mehr als zu fremd sind.

Ein Real-Welt Beispiel

Karte mit WegbeschreibungDas Schöne bei den Grundelementen einer modernen Programmiersprache ist, dass diese mit lediglich auf reiner Logik basieren und damit auch mit Beispielen aus der echten Welt funktionieren.

Aus diesem Grund möchte ich dir in diesem Aritkel zeigen, wie diese im echten Leben aussehen. Wenn du jetzt denkst, "Ich möchte lieber gleich losprogrammieren!!!", dann lies noch aufmerksam die nächsten Abschnitte.

Im Anschluss zeige ich dir wie du dann mit der Programmierung anfängst.

Wegbeschreibung

Stell dir vor, du hast kein Navigationssystem und kein Internet. Ich weiß, schwierig aber machbar. Ein guter Freund möchte dich besuchen. Er steht grad am Bahnhof und er fragt dich nach einer Wegbeschreibung in Textform, wie er zu dir nachhause kommt.

Mit der Schwierigkeit, dass er quasi nur 3 Anweisungen versteht. Links Drehen, Rechts Drehen und Vorwärts Gehen. Da er keinen Computer hat musst du ihm diese per Post zu schicken. Das heißt, wenn da ein Fehler ist, wird er nicht bei dir zuhause ankommen. Jetzt bist du dran, du schreibst die Wegbeschreibung und schickst im diese per Post.

Er steigt aus dem Zug aus und hat deine Wegbeschrebiung in der Hand.

  • Links drehen oder Rechts drehen?
  • Wieviel vorwärts?

Das alles musst du vorher in Erfahrung bringen und sogar testen, ansonsten wird dein Besuch nie ankommen.

Dein Kollege hört sich hier zwar etwas "doof" an, aber Fakt ist, dass dein Computer genauso arbeitet. Allerdings arbeitet dieser so schnell, dass es den Anschein macht, dass er "schlau" wäre.

Beim Programmieren schreibst du genau diese Wegbeschreibungen, bzw. Befehlsfolgen.

Dein Computer arbeitet diese ganz stupide durch und wenn er irgendwo nicht weiterkommt, musst du das Programm anhalten und schauen wo das passiert ist. Bei deinem Kumpel wäre das noch ein Riesenaufwand, im Computer kannst du solche Änderungen innerhalb von Sekunden erledigen, vorausgesetzt du hast den Fehler gefunden.

Das ist das erste Grundelement: Befehl und Befehlsfolge. Dein Computer arbeitet prinzipiell einen Befehl nach dem anderen ab. Ein cooles Feature gibt es in den Programmiersprachen, denn man kann mehrere Befehle zu neuen Befehlen zusammenfassen. Das erleichtert dir die Arbeit.

Das Busticket

Bei deiner Wegbeschreibung würde es dir sicherlich helfen, wenn du deinem Kumpel sagen könntest: 10 Mal vorwärts oder 25 m gerade aus. Auch wenn wir keine Mathe Genies sind, stimmst du sicherlich zu, dass man hin und wieder mit Zahlen arbeiten muss.

Stell dir vor dein Kumpel muss auf seinem Weg in einen Bus steigen und sich ein Busticket kaufen. Schwierig genug, wenn er nur 3 Befehle zur Verfügung hat.

In diesem Fall erhält er jedoch ein weiteres Grundelement: Die Operationen. Die Operationen erlauben ihm mit Zahlen zu arbeiten und das bedeutet, dass er ALLE Grundrechenarten beherrscht. Damit weiß er zumindest dass er Geld braucht und er kennt nun den Preis.

Er könnte auch mit diesen Operationen berechnen ob er denn genug Geld für ein Busticket hat.

Genauso beherrscht dein Computer alle Grundrechenarten, und er rechnet in einer Geschwindigkeit, dass du nicht mal im Traum schneller wärst. Das bedeutet, dass du mittels Programmiersprache einfache Rechenaufgabe durchführen kannst.

Dazu kommt noch ein bisschen Logik, also zum Beispiel "größer  als"- und "kleiner als"-Vergleiche sowie einfache UND/ODER Verknüpfungen: Das sind die Operationen.

Die meisten davon wirst du bereits beherrschen, allerdings wirst du lernen müssen, wann du diese beim Programmieren benötigst.

Notizblock und Geldbörse

Wie soll dein Kumpel sein Busticket bezahlen, wenn er keine Geldbörse mit Geld dabei hat?

Und vielleicht muss er sich ja während seines Weges merken, in welche Buslinie er steigen muss. Dafür braucht er einen Notizblock. Dein Kumpel muss Dinge und Informationen speichern und diese bei Bedarf abrufen und ändern könnten.

Du könntest ihm den Weg zur nächsten Bushaltestelle erklären, aber es fahren mehrere Linien von dort ab. Damit er weiß in welchen Bus er steigen soll muss er sich vorher an der Informationstafel diese Information holen und diese aufschreiben bzw. "abspeichern".

Außerdem steht direkt nebenan die Preistafel für jede Buslinie und Haltestelle. Wenn du deinem Kumpel nicht die Möglichkeit gibst, diese Informationen zu holen und bei Bedarf abzurufen, wird er in den falschen Bus steigen und auch noch für das Schwarzfahren bestraft werden.

Informationen speichern und abrufen: Buslinie 3, Preis 3,50 Haltestelle B. Solche Daten nennen sich im Programm Variablen. Mit einer Variable erhält man die Möglichkeit, Daten im Programm zu speichern und zu laden. Nur solange das Programm aktiv ist.

Dein Kumpel würde also quasi vergessen, was das Ticket gekostet hat, wieviel Geld er noch übrig hat (ausser er schreibt sich seinen Kontostand im Notizblock auf) und in welcher Buslinie er gefahren ist.

Haltestellen und Bahnsteige

Bei dem Niveau, auf dem du deinem Kumpel erklären musst, wie er zu dir nachhause kommt, musst du noch ein paar Dinge beachten. Denn du musst beachten, dass wir bisher davon ausgehen, dass der Zug mit dem dein Kumpel ankommt, immer am selben Bahnsteig ankommt.

Aber was, wenn der Zug plötzlich an einem anderen Bahnsteig anhält?

Wie soll dein Kollege nun zum Ticketautomat kommen? Du musst in deiner Wegbeschreibung etwas vorsehen, woran sich dein Freund orientieren kann und damit selbst entscheidet, je nachdem an welchem Bahnsteig er angekommen ist.

Ganz nach dem Motto: Wenn du am Bahnsteig 3 bist gehe folgenden Weg, wenn du am Bahnsteig 4 bist gehe den anderen Weg. Weitere Entscheidungen wären:

WENN Bus 1 früher als Bus 2 da ist DANN gehe zu Haltestelle A, ANSONSTEN gehe zur Haltestelle B“.

Du merkst, es gibt immer eine Bedingung, die geprüft wird und je nachdem, wie diese aussieht wird darauf reagiert bzw. entschieden. Beim Programmieren wirst du genauso solche Entscheidungen immer wieder erstellen.

Damit lässt du deinen Computer durch das Programm schlau wirken, denn er weiß ab sofort, bei welcher Bedingung welche Befehle ausgeführt werden müssen.

An der 4. Straße rechts und an der 3. Haltestelle aussteigen

Nachdem dein Kumpel also selbst entscheiden kann, welchen Weg er geht (solange er die passenden Bedingungen kennt) gibt es noch ein weiteres Werkzeug.

Du könntest dir bei deiner Wegbeschreibung viel Arbeit ersparen, wenn du deinem Kollege etwas könntest wie: Geh solange weiter bis du an der 4. Ampel angekommen bist.

Oder wie wäre es mit: Bleibe 5 Haltestellen im Bus sitzen und steige danach aus. Auch hier gibt es ein bestimmtes Muster:

SOLANGE noch nicht 5. Haltestelle DANN bleib sitzen.
oder
SOLANGE noch nicht 4. Ampel DANN gehe weiter.

Diese Art von Befehl nennt sich Wiederholung oder Schleife. Solange die Bedingung zutrifft, werden die Befehle der Schleife wiederholt. Auch dies findet sich in jeder Programmiersprache wieder.

GPS-Rätsel

Du bist zuhause und wartest auf deinen Kumpel. Du hast alles für ihn vorbereitet. So gut, dass er quasi Blind bis zu dir nachhause kommen kann, er sollte vom Zug zu dir etwa 56 Minuten brauchen.

Du weißt um 14:00 kommt der Zug an und dann geht seine Reise los, du erwartest ihn also gegen 14:56. 16:00 Uhr, 17:00 Uhr, er ist immer noch nicht da. Was ist passiert? Anscheinend hat irgendwas an deiner Wegbeschreibung nicht gepasst.

Was machst du nun?

Beim Programmieren würdest du jetzt in etwa folgendes tun, das wirkt im echten Leben zwar etwas komisch aber, beim Programmieren haben wir keine andere Wahl.

Da du nicht weißt wo dein Kumpel falsch abgebogen ist, musst du ihm das Signal geben wieder zurück an den Start zu gehen. Diesmal bekommt er allerdings einen Positionssender damit du auf einer Karte sehen kannst wo er sich befindet. Und dazu sagt er dir, welche Anweisung aus deiner Wegbeschreibung er gerade ausführt. Dann geht er los. Da du den Weg kennst, verfolgst du seine Position und die Wegbeschreibung die gerade abgelaufen wird.

HA! An der dritten Kreuzung hätte er links anstatt rechts gehen müssen.

Du hast also einen „Programmierfehler“ gefunden. Du hast sogenanntes Debugging betrieben und konntest damit deine Wegbeschreibung korrigieren. In der Programmierung wird es dir sehr oft passieren, dass du solche Fehler suchen musst, es ist wie das Lösen eines Rätsels.

Allerdings kannst du dein Programm selbst neustarten und an den Anfang setzen, es wird also nur Sekunden dauern bis du weißt ob das Programm erfolgreich abgearbeitet wurde. Selbst wenn man Stunden mit Suchen verbringt, ist es ein super Gefühl, wenn du diese harte Nuss  geknackt hast.

Der nächste Fehler wartet schon!

Was hat das mit Programmieren zu tun?

Stell dir vor dein Kumpel will wieder vorbei kommen. Jetzt ist er aber ein Roboter in einer virtuellen Welt!

Nun wirst du dieselbe Wegbeschreibung schreiben müssen, allerdings in einer Programmiersprache. Das schöne ist, du hast die wichtigsten Werkzeuge kennen gelernt: Befehle, Operationen, Variablen, Entscheidungen und Schleifen.

Wenn du also in der Lage bist (vom Zeitaufwand abgesehen) so eine detaillierte Wegbeschreibung zu schreiben, hast du eine gute Grundlage zum Starten. Dazu kommt noch der notwendige Fleiß, denn ohne diesen wirst du nicht genug Motivation haben um Fehler zu suchen und zu finden.

Du merkst ja, dass Programmierern nicht nur für Genies ist, sondern jeder die Prinzipien verstehen kann.

Das Problem ist folgendes, wenn ich dir zuerst „Hello World“ und irgendwelche kryptischen Befehle um die Ohren werfe, hast du gar nichts gelernt. Zuerst legt man mit den absoluten Grundlagen los und benutzt diese zusammen mit Beispielen aus der echten Welt.

Erst wenn diese einigermaßen sitzen, versucht man sich an eigenen Programmen. Denn dort gibt es noch genug Weiteres zu entdecken.

Fazit zu "Kann jeder Programmieren lernen"?

Wenn man sich auf das Programmieren lernen einlässt, wird man nicht nur das Programmieren lernen, sondern alles was dazu gehört.

Abstraktes und Logisches Denken, Vorausplanen und Fehlersuche. Und wenn 13-Jährige bereits Apps im Appstore haben, weil sie sich diese Grundlagen selbst beigebracht haben, dann kann man folgendes sagen: Es kann jeder Programmieren lernen, der bereit ist fleißig zu sein. Ohne Arbeit wird man es nicht schaffen.

Solltest du dennoch zögern, weil du noch nicht weißt ob du sowas wie eine Wegbeschreibung schreiben könntest, dann schlage ich dir vor, dass du das kostenlose lerneProgrammieren-Tutorial abschließt.

Dort erkläre ich dir das erste Werkzeug und darfst direkt mit dem lerneProgrammieren-Roboter üben.

Wenn du Fragen dazu hast, hinterlasse hier ein Kommentar.

  • 6. April 2017
Click Here to Leave a Comment Below 6 comments
Rainer - 10. Oktober 2017

Ich habe es im Studium zw. dem 2. und 3. Semester (1974) versucht mit einem 1-wöchigen Blockkurs „Fortran“. Ich habe mir davon viel, sehr viel versprochen. Aber ich wurde enttäuscht: denn ich habe es bis heute nicht verstanden!. Habe es bis heute nicht geschafft auch nur die Gleichung „a + b = c“ zu programmieren, geschweige denn eine Gleichung höheren Grades oder die Lösung eines linearen Gleichungssystems mit beliebig vielen Unbekannten.
Ich bin seit meinem 13. LJ. Schachspieler – aber ich könnte niemals ein Schachporgramm schreiben. Ich verwende heute Programme zur Audio-Bearbeitung, und auch div. Plug-Ins, könnte aber nicht das einfachste davon programmieren. Ich bin von „Hause aus“ Hardware-Entwickler von elektron. Schaltungen.
Ich glaube nicht, daß JEDER die Fähigkeit hat Programmieren zu lernen, denn ich bin fast der Ansicht, daß gewisse technische Vorbelastungen für das Verständnis für Programmierung eher hinderlich sind.

Reply
    Arek - 29. November 2017

    Hallo Rainer,
    vielen Dank für deinen Kommentar! Darf ich fragen was du seit 1974 noch programmiert hast? Immerhin sind über 30 Jahre seitdem vergangen 🙂
    Die Programmiersprachen sowie Möglichkeiten das Programmieren zu erlernen haben sich seit 1974 schon etwas geändert. Das Programmieren also das Anwenden einer Programmiersprache zu erlernen ist an sich ein simpler Prozess. Etwas mit diesem Wissen zu erschaffen bedarf dann Erfahrung und diese erhält man nur durch Übung (Mehr als eine Woche). Es ist wie beim Lesen und Schreiben lernen: Man fängt mit den Buchstaben und Wörtern an und geht dann über zu Sätzen und kleinen Texten, was man liest und schreibt wird nach und nach immer schwerer. Man würde ja auch nicht von jemanden verlangen einen Bestseller Roman zu schreiben, wenn er seit einer Woche angefangen hat zu schreiben. Beim Programmieren fängt man ebenfalls mit den kleinsten Programmen an und wird nach und nach immer besser. Dann werden auch die Programme, die man schreibt, immer komplexer und erhalten mehr Funktionalität.
    Beste Grüße
    Arek

    Reply
      Rainer - 8. Juni 2020

      Hallo Arek,
      Auch wenn es schon 3 Jahre her ist, meine Antwort (ich hatte schon gar nicht mehr an dieses Posting gedacht, bis ich es heute zufällig entdeckte!):
      Nach 1974 habe ich dann im Studium mich auf den Bereich „Hochfrequenz- und Übertragungstechnik“ konzentriert und war dann nach dem Examen in der Fertigung und Entwicklung von elektro- akustischen- und Tonregieanlagen für Rundfunk/Fernsehen/Theater tätig. Hatte mit Programmieren gar nichts mehr zu tun. Nach dem Horrortrip mit dem Fortran-Kurs hatte ich gewissermaßen die Schnauze voll von jeglicher Softwareerstellung.

      Reply
    Axel - 24. Oktober 2019

    Geht mir genauso. Aber dennoch guter Artikel

    Reply
Erhard Pullig - 23. Februar 2019

Hallo Arek,

hier ein ganz anderes Thema.
„Blockchain“?!?
Was ist das (ausser Bitcoin) und was kann man damit machen, bzw. wie komme ich dahin um z.B. als Blockchainer zu arbeiten ?

Gruss
Erhard

Reply
    Arek - 4. März 2019

    Hallo Erhard,

    ich kenne den Beruf/Begriff Blockchainer nicht. Ich denke du meinst den Vorgang um die Kryptowährung zu „schürfen“, dafür muss man sich mit Kryptomining beschäftigen. Ich habe dieses Thema schonmal bei #fragArek behandelt: https://www.youtube.com/watch?v=K5Oaaa0yiwY Ich bin mir aber nicht sicher, ob dir das weiterhilft. Ich packe das Thema Blockchain mal auf die Liste für die nächste Folge #FragArek, denn eine Erklärung zu Blockchain ist schon etwas umfangreicher 🙂

    Beste Grüße
    Arek

    Reply

Leave a Reply: