1. Einführung

Diese Veranstaltung hat den Anspruch, Sie in die Welt des Programmierens einzuführen, auch wenn Sie zuvor noch nie einen Rechner angefasst haben. Ich würde Ihnen nun gerne einen Überblick über die Lernziele geben, aber was sollen Sie mit Begriffen wie abstrakte Datentypen oder Breitensuche überhaupt anfangen? Lieber gebe ich Ihnen stattdessen ein konkretes Beispiel, was Sie in ein paar Monaten hoffentlich können werden. Klicken Sie auf das Bild und spielen Sie eine Runde Cops and Robber.

Nehmen wir kurz auseinander, welche konkreten und abstrakteren Dinge Sie meistern müssen, um dies oder ähnliches zu programmieren.

  1. Daten: aus welchen Punkten und Verbindungslinien besteht mein Netzwerk, und wie wird das auf einem Rechner dargestellt?
  2. Algorithmische Fragen: Wie stellen wir sicher, dass die blauen Polizisten überhaupt einen Weg zum roten Räuber haben, dass das Netzwerk also zusammenhängend ist? Welches ist der beste Zug für die Polizisten, und wie bestimmen wir den rechnerisch?
  3. User-Interface-Design: Wie stellen wir das Netzwerk grafisch dar? Wie erreichen die Benutzereingaben (z.B. Tastendrücke) unser Programm, und wie soll es damit umgehen?
  4. Programmierstil: Wie sollen Sie programmieren, so dass Sie Ihren eigenen Code auch in ein paar Wochen noch verstehen? Dass andere Leute, die eventuell das Spiel erweitern wollen, Ihren Code verstehen?
  5. Fehler: Ich habe haufenweise Programmierfehler gemacht, bis das Cops-and-Robber-Spiel fertig war. Welche typischen Fehler gibt es? Wie können Programmiersprachen bestimmte Fehler abfangen? Wie können wir selbst Fehlern vorbeugen?

Die Wahl der Programmiersprache: Elm

In dieser Vorlesung werden wir die Programmiersprache Elm verwenden. Meine Gründe dafür sind:
  • Sie ist niederschwellig: man kann gleich loslegen.
  • Abstrakte Prinzipien des Programmierens lassen sich mit Elm wunderbar demonstrieren.
  • Es ist eine strenge Sprache: Sie zwingt sie, einigermaßen ordentlich zu programmieren.
  • Durch die eben erwähnte Strenge kommen Fehler frühzeitig zum Vorschein, und man muss meist nicht lange nach ihnen suchen.
  • Man kann recht leicht grafische Oberflächen erstellen und das ganze dann in eine Webseite umwandeln.

Im ersten Kapitel programmieren Sie noch nicht am Rechner. Arbeiten Sie mit Papier und Stift, und nehmen Sie, wenn nötig, einen Taschenrechner zu Hilfe.