Programmieren lernen

Gestern wurde ich vom Sohn meiner besten Freundin gefragt, was denn die passende Programmiersprache sei, wenn man programmieren lernen wolle. Offenbar war er dann etwas irritert von meiner Antwort, weil ich nicht „lern X!“ sagte.

Ich finde es toll, dass jemand programmieren lernen will, weil er es halt können will. Allerdings ist das mit dem „können“ so eine Sache. Ist wie mit „ich kann Auto fahren“ wenn man das letzte Mal das Lenkrad zur Prüfung in der Hand hatte. Seither wird Bus und Bahn gefahren. Oder Beifahrer. Deshalb fragte ich wofür. Wenn etwas nachhaltig sein soll — wovon ich erklärter Fan bin — ist das Lernen von etwas mit einem Ziel vor Augen sehr hilfreich.

Möglichkeiten

Die Antwort zeigte eine gewisse Orientierung. Ich will vielleicht mal Apps1 oder so programmieren. Was soviel bedeutet wie: Ich habe keine konkrete Idee für etwas. Das war aber immerhin schon ein Richtungsweiser. Den könnte man sich jetzt nehmen und auf App-Baukästen verweisen. Frage beantwortet. Hat halt mit „programmieren können“ nichts zu tun. Bei genauerer Betrachtung sind diese Baukästen vor allem für den Anbieter interessant. Die lassen sich ihre Bastelkisten nämlich fürstlich entlohnen.

Wie dem zitierten Link entnommen werden kann, basieren viele Apps auf HTML5. Gestandene Entwickler werden sich womöglich schütteln, allerdings ist auch das bereits eine Programmiersprache. Aus dem — für nicht eingeweihte durchaus kryptischem — HTML(5)-Text wird vom Browser eine Webseite gemacht. Die typischerweise eine freundlichere Anmutung hat, als das zugrunde liegene HTML-Programm.

Für native Apps wäre „C“ in diversen Derivaten ein adequates Mittel, Firemonkey könnte sich dazu als ernsthafte Alternative etablieren. Das geht über Delphi auf Pascal zurück, das mal als Lehrsprache von Nicklaus Wirth an der ETH Zürich entwickelt wurde. Das lässt sich leichter erlernen als „C“, liefert trotzdem hochwertige Programme und lässt Türen zu anderen Entwicklungssprachen offen2.

Die richtigen Entwicklungsumgebungen haben allerdings überwiegend eine für Anfänger und Einsteiger unangenehme Eigenschaft: sie kosten richtig Geld. Was den oben genannten Bastelstuben vermutlich die Kundschaft zutreibt und denen, über die Monatsmiete clever getarnt, richtig Geld in die Kasse spült.

Aktuell kann man sich das Visualstudio von Microsoft in einer Community-Version herunter laden. Allerdings ist das Kleingedruckte da etwas eigentümlich. Und die Version läuft immer nur so lang, bis die nächste kommt. Was eine nachhaltige Produktpflege erschwert.

Für Delphi gibt es eine Starter Edition, allerdings ist diese Version in Ihren Möglichkeiten beschränkt. Eine freie Pascal-Lösung ist Lazarus. Allerdings ist mir nicht bekannt, ob sich damit (mobile) Apps entwickeln lassen.

Es geht aber auch ganz anders.

Wie anfangen?

Als Dozent war und ist mir immer eine Sache sehr wichtig: Lernende sollen ihren Lernerfolg sehen. Das ist psychologisch bedeutsam, denn wenn sichtbar wird, das da was geht, will man weitermachen. Weil beim ausprobieren durchaus herauskommen kann, dass es dann doch nix ist, sollte das monetäre Engagement im ersten Wurf überschaubar bleiben.

HTML und das drumherum

Dafür bietet sich HTML und das, was dranhängt an. HTML (bzw. HTML5, etc.) anschauen geht mit jedem Browser. Typischerweise genügt ein Klick mit der rechten Maustaste. Dort im Menü wird dann Quelltext anschauen (oder ähnlich) angeboten. Schon ist man mittendrin. Wer das mal auf verschiedenen Seiten macht, wird feststellen, dass es lesbares und ziemlich kryptisches HTML gibt. Außerdem wird man sich schnell die Frage stellen, warum vermeintlich Gleiches so völlig unterschiedlich aussehen kann. Womit klar wird: Nur HTML ist es nicht.

Damit eine Webseite (bzw. eine App, die auf HTML basiert) schick wird oder Funktionalität bietet, ist einiges mehr erforderlich:

Reine Textseite
Dafür ist HTML ausreichend. Wird mit den Standardeistellungen des Browsers angezeigt, d.h. je nach Browser sieht sie z.T. völlig unterschiedlich aus.
Textseite mit Formatierung
HTML und CSS. Das wird anspruchsvoller und ermöglicht bereits sehr interessante Effekte, z.B. Überstreichen von einem Element und daraus resultierende Änderungen auf der Seite.
Textseite mit „Action“
Hierfür kommt Javascript zum Einsatz, das ist eine Script-Sprache, mit der eine ganze Menge Sachen realisiert werden können.
Textseite mit Interaktion zum Server
Da geht es dann Richtung PHP, Python, Perl, Datenbanken, SQL, Serverkenntnisse, Linux u.v.a.m.

Hier lässt sich ein beliebig großes Fass auf machen.

Zu HTML, CSS [&] Co. gibt es — natürlich — eine Unmenge Bücher und selbstverständlich Schulungsangebote, etc. Allerdings liefert Google im Grunde alles, was man braucht. Mit der Suchanfrage „HTML programmieren“ gibt es eine stattliche Liste. Da klickt man durch, bis eine Seite auftaucht, die dem eigenen Leseanspruch gerecht wird und fängt einfach mal an.

Die deutschsprachige Instanz in Sachen HTML ist die Seite selfhtml.org. Da gibt es die Erläuterung für alle HTML-Befehle, CSS, Javascript, Beispiele, Erklärungen und ein Forum. Wenn dann weitere Neugier entsteht, kann man sich auch mal XAMPP ansehen. Das ist eine vollständige Webserver-Umgebung, die auf Windows oder Mac-Rechnern installiert werden kann. Da lässt sich dann auch PHP etc. ausprobieren.

Ziel setzen

„Programmieren lernen“ geht am einfachsten, wenn man sich ein konkretes Ziel steckt und es hartnäckig anstrebt. So kann man sich beispielsweise vornehmen, eine Webseite zu programmieren, die man sich auf einem Blatt Papier vorgezeichnet hat.

Keine Idee? Hier wäre eine:

Programmiere eine HTML-Seite, auf der sich fünf Felder wie die Augen auf einem Würfel auf der Seite verteilen. Und in Jedem Auge soll eine Zahl (1-5) stehen. Das ganze natürlich so, dass die Felder immer proportional zur Größe des Browserfensters 20% der Breite bzw. Höhe ausmachen. Die Zahlen sollten selbstverständlich ebenfalls immer proportional rein passen. Das geht mit HTML und CSS in einer einzigen HTML-Datei.

Ehrlicherweise müsste ich mich für eine Beispiellösung hinsetzen und darüber nachdenken. Ich bin allerdings sicher, dass es keine unlösbare oder besonders schwierige Aufgabe ist. Und es gibt sicher mehr als eine Lösung dafür.

Lösungen für die Aufgabe nehme ich gern entgegen und veröffentliche sie hier.

Werkzeug

Für das Erstellen von HTML, CSS und Co. braucht es einen vernünftigen Editor. Das sollte einer sein, der die Befehle hervorhebt oder das Schreiben von Code unterstützt. Gute und trotzdem kostenfreie Lösungen (die man aber bei regelmäßiger nutzung durchaus monetär oder sonstwie unterstützen darf!) sind

um nur drei zu nennen. Es gibt noch viel mehr, auch hier gilt: Runterladen, ausprobieren, was persönliche Vorlieben am besten bedient. Mein persönlicher Favorit ist momentan SynWrite. Warum das so ist, kann ich nicht verbindlich sagen, ich komme damit halt prima zurecht und er kann, was ich haben will.

Und wie genau jetzt,… ?

Es gibt kein „und genau so ist es richtig“. Jedenfalls nicht von mir. Programmieren ist etwas Kreatives, auch wenn es im ersten Augenschein nicht unbedingt danach aussieht. Wer keine Idee „wofür“ hat, braucht — das ist meine persönliche Überzeugung und Meinung — über das „womit“ und „wie“ nicht nachdenken. Denn nur mit diesem Antrieb wird man über die Schlaglöcher kommen, die auf dem Weg unumfahrbar lauern. Wenn ich nichts habe, dass mich vorantreibt, werde ich mich schnell fragen, warum ich mir das antue.

Wer sich jetzt ob des fehlenden „Kochrezeptes“ nicht entmutigen lässt, hat schon die erste Hürde genommen. Dann wünsche ich viel Spass bei den nächsten Schritten in die Welt der Programmierung!


  1. Hier unterstelle ich, dass es sich um Anwendungen für mobile Geräte handelt. Objektiv betrachtet ist ein normales Windows-Programm ebenfalls eine App, da das Wort die Abkürzung für application ist. „App“ ist daher als präzise Spezifikation für etwas ziemlich untauglich – abgesehen, es wird allgemein üblich verstanden. ↩︎

  2. In der aktuellen Entwicklungsumgebung von Embarcadero können Code-Teile unterschiedlicher Sprachen gemischt werden. Warum das interessant ist? Weil sich dann für jede Aufgabe der Code nutzen lässt, mit dem man das am besten/einfachten hinbekommt. ↩︎