Unter der Haube: was passiert, wenn dein Code läuft
Eine Ausarbeitung aus meiner Ausbildung, als interaktives Karten-Deck statt als PDF.
Mein Ausbilder hat mir eine kleine Ausarbeitung zu Programmier-Basics aufgegeben. Ich hätte ein PDF abgeben können. Stattdessen ist ein interaktives Dokument daraus geworden. Unter der Haube hat zehn Kapitel, eines pro Bildschirm, jedes Konzept als Animation statt als Absatz.
Warum nicht die üblichen Basics
Zu Variablen, Schleifen und Verzweigungen gibt es tausend Erklärungen, und alle sagen dasselbe. Interessanter finde ich die Ebene darunter: Was macht der Computer eigentlich mit meinem Text?
Das Deck geht deshalb den Weg vom Quelltext zur laufenden Maschine. Es zeigt, wie aus einer Zeile C zehn Bytes Maschinencode werden, warum ein Typ nur eine Leseanweisung für ein Stück Speicher ist, wie sich bei jedem Funktionsaufruf ein Rahmen auf den Stapel legt, und warum ein Stack Overflow, ein Memory Leak und ein Segmentation Fault am Ende genau daraus folgen.
Was man anfassen kann
Kapitel 05 ist der Kern. Dort baut sich der Aufrufstapel für fakultaet(3)
Schritt für Schritt auf: Man klickt sich durch acht Zustände, sieht die Rahmen
übereinander wachsen, jeden mit seinem eigenen n, und dann auf dem Rückweg
wieder verschwinden. Die markierte Zeile im Code läuft mit.
Der Rest ist bewusst ehrlich gehalten: Jede Karte hat unten eine Fußnote, die sagt, was die Vereinfachung verschweigt. Dass die ersten Argumente auf x86-64 in Registern übergeben werden und gar nicht im Rahmen landen, zum Beispiel. Oder dass „Python ist interpretiert” genau genommen CPython beschreibt und nicht die Sprache. Das ist der Unterschied zwischen einem hübschen Bild und einer Ausarbeitung.
Die Zahlen darin sind nachgerechnet, nicht geschätzt. Die Assembly stammt aus
gcc -O2 und objdump, die Stack-Größe aus ulimit -s.