Da im Moment das Freizeitangebot wegen Corona stark eingeschränkt ist, will ich diese ruhige Zeit zur Verbesserung meiner Programmierkenntnisse einsetzen.
Ich benutze weiterhin als Programmiersprache Python, Kotlin/Java hat mich nicht so recht überzeugt. Und als neues Buch habe ich mich für “Algorithmen in Python” von David Kopec entschieden (Rheinwerk-Verlag, 2020, 978-3-8326-7747-1). Im Inhaltsverzeichnis finden sich auch interessante Spiele, die mit passenden Algorithmen dann in Python programmiert werden sollen. Auf Grafik wird weitgehend verzichtet, reines Python ohne viele Erweiterungen ist angesagt. Ich selbst habe im Moment die Python-Version 3.9 mit IDLE auf meinem Windows-10-PC.
Parallel habe ich mir die IDE PyCharme installiert. Vielleicht bringt sie mir doch einige Vorteile oder hilft mir zumindest, kleine Fehler zu vermeiden. Das Anzeigen der erwarteten Syntax und passender Parameter ist ja meist hilfreich.
Relativ schnell stolperte ich im Buch über zwei nicht erwartete Probleme: Der Autor David Kopec benutzt “typing-hints” und an vielen Stellen “generische” Lösungen. Beides finde ich im Prinzip gut, aber einfacher wird das Programieren für mich damit nicht. Python ohne feste Typisierung fand ich sehr angenehm. Vielleicht bin ich auch kein typischer “moderner” Programmierer, COBOL von 1970 lässt grüßen. Ich will möglichst einfach überschaubare Probleme aus unterschiedlichen Bereichen verstehen und dann mit Python lösen.
Im Internet sehe ich mich um, wie man die Probleme mit einem anderen Ansatz hätte lösen können. Damit umgehe ich den starken “generischen” Ansatz. Und auf die “typing- hints” verzichte ich bei meinem eigenen Code weiterhin.
Folgende Themen waren für mich interessant:
- Spiel: Die Türme von Hanoi
- Spiel: Ein Labyrinth
- Spiel: Missionare und Kannibalen
- Logik: Einfärben einer Landkarte mit wenigen Farben
- Logik: Acht-Dame-Problem
- Logik: Worte in einem Buchstabengitter verstecken
Im Moment bin ich bei Graphen und versuche mich als Beispiel am eigenen Stammbaum.
Stammbäume werden oft mit Hilfe von Graphen dargestellt und die Graphentheorie liefert auch hier anwendbare Lösungen für typische Fragestellungen. Man wird allerdings ständig abgelenkt: Bei der Arbeit mit meinem Stammbaum bin ich über “dataclasses” gestolpert, “dictionaries” sind auch interessant und SQlite wäre auch wieder mal hilfreich. Die Arbeit geht einem nicht aus.
Das Folgethema “Genetische Algorithmen” ist etwas seltsam. “k-Means-Clustering” klingt auch eher lebensfern.
Zur Abwechslung schweife ich ab zur Bildverarbeitung und Objekterkennung mit Python, also zu “PIL und OpenCV”. Das Kapitel zu “Neuronalen Netzwerken” kommt aber bestimmt noch dran.
Dieser Artikel wird fortgesetzt.