Eric Normand: Grokking Simplicity

Eric Normand: Grokking Simplicity -
Taming complex software with functional thinking.
Eric Normand beschäftigt sich seit über 20 Jahren mit Funktionaler Programmierung. Ich bin auf sein Buch über diesen Podcast aufmerksam geworden. In dem Buch unternimmt er den Versuch, Funktionale Programmierung greifbar zu machen, indem er die komplexen akademischen Ideen herunterbricht und anwendbar macht. Der Autor hat auch einen eigenen Podcast über Funktionale Programmierung.
Das Hauptziel dieses Buches sei es, Funktionale Programmierung als eine praktische Option für professionelle Programmierer zu legitimieren. Wolle ein Programmierer etwas über Objektorientierte Programmierung lernen, so könne er viele Bücher zu diesem Thema finden, die genau für ihn geschrieben seien, den beginnenden professionellen Programmierer. Diese Bücher benennen Muster, Prinzipien und Best Practices auf denen der Lernende seine Fähigkeiten aufbauen könne. Funktionale Programmierung habe nicht die gleiche pädagogische Literatur. Die Bücher, die dazu existierten, seien hauptsächlich akademisch. Und jene, die der Software-Industrie gefallen wollten, würden der Ansicht des Autors nach darin scheitern, die grundlegendsten Konzepte abzubilden. Aber das Wissen und die Erfahrung seien da draußen, in den Köpfen von Tausenden von Funktionalen Programmierern.
Dieser Post soll eine Art digitaler Notizzettel für mich sein. Ich werde nach und nach von meinen Aha-Momenten beim Lesen dieses Buches und beim Machen der Übungen darin berichten.
Aha Moment No. 1
Der Funktionale Programmierer macht schon beim reinen Anschauen eines bestehenden Codes (und beim Konzipieren sowieso) die Unterscheidung in folgende drei Bereiche:
- Action (sozusagen eine Handlung ausführen)
- Calculation (eine Berechnung anstellen)
- Data (auf Daten zurückgreifen bzw. Daten lesen)
Damit unser Code funktioniere, müsse er Folgendes können, schreibt der Autor:
WISSEN, ENTSCHEIDEN, TUN ...
- Wissen
-> Daten lesen - Entscheiden
-> eine Kalkulation / Berechnung anstellen (pure bzw. mathematische Funktionen) - Tun
-> eine Handlung ausführen (nicht pure bzw. Funktionen mit Seiten-Effekten)
Das Trennen der Aktionen (also Handlungen (action)) von Berechnungen (calculation) ist wie das Trennen vom Entscheiden darüber, was man kaufen wolle und dem tatsächlichen Kaufen, schreibt der Autor. Entscheidungen und Planung seien gute Kandidaten für Kalkulationen.
Eine Aktion (action) könne man daran erkennen, dass sie davon abhängt, wann sie ausgeführt oder wie oft sie ausgeführt werde. Das beste Beispiel: Versenden einer E-Mail: hängt auf jeden Fall davon ab, wann sie verschickt wird bzw. wie oft sie verschickt wird. Man will sie genau einmal verschicken und zwar genau dann, wenn man soweit ist.
... Fortsetzung folgt
