Prof. Dr. Detlef Stern

Die lange Woche vom 11.3.24

Beginn der Vorlesungszeit. Für mich relativ entspannt, mit zwei Lehrveranstaltungen in diesem Semester. Ich baue Überstunden ab, bevor diese verfallen.

Auch witzig: Überstunden können verfallen, Unterstunden nicht.

Zunächst Projektstudie im siebten Semester. Es kamen mehr als gedacht. Hatte gar nicht so viele Zettel zu verbindlichen Anmeldung dabei. Gruppen wurden rasch gebildet, Themen ausgewählt. Fertig. Pflegeleicht. Noch?

Mittwoch Softwaretechnik. 8–13 Uhr. Anstrengend, von der Dauer her. Meine Stimme muss sich erst noch an die Belastung gewöhnen. Wie üblich. Wie üblich auch der Überblick, meine Erwartungen, nette kleine Diskussionen. Für den Laborteil haben sich wieder acht Gruppen gefunden. Die Nachzügler bilden wohl eine neunte Gruppe. Somit etwas mehr als im letzten Semester. Das Semesterprojekt befasst sich wieder mit dem Zettelstore, diesmal unter dem Gesichtspunkt von Qualität im allgemeinen Sinne.

Thementitel der acht Gruppen: URL-Checker, Rechtschreibung-/Grammatikprüfung, Verknüpfungs-/Erreichbarkeitsanalyse, Zettelähnlichkeit, Sprachausgabe, Schreibtischfunktion, Lernzettelapp, eBook. Was sich die vorurteilshafte Gruppe neun ausdenkt?

Nach der Mittagspause leicht zu spät zur Fakultätsratssitzung erschienen. Ich sollte vorher mal in den Kalender sehen, das Gehirn ist löchrig. Business as usual. Meine These: der Name einer Sitzung sagt viel über den Ablauf der Sitzung aus.

Was wohl passieren würde, wenn die Sitzung in eine Stehung gewandelt wird.

Freitag war noch eine Dauersitzung. Berufungskommission. Was für eine Verschwendung an Lebenszeit. Und damit meine ich nicht die Sitzung selbst. Ursprünglich locker 30 Bewerber. In früherer Sitzung aufgeregte Diskussion, wer eingeladen werden soll. Grob 12 werden eingeladen. Vier erscheinen. Davon haben einige die Stellenausschreibung offenbar nicht gelesen. Oder wir die Bewerbungen nicht.

In diesem Sinne war der Freitag Training für den Super Saturday, dem letzten Spieltag der Six Nations im Rugby. 15–23 Uhr, drei Spiele, natürlich mit Pausen. Faire Spiele, technisch meist gut, klare Kante, echter Mannschaftssport. Dagegen ist Fussball ein Spiel für Schauspieler. Passt so für viele Gesellschaften.

Vielleicht sollten sich selbsternannte Agilisten, sog. agile Coaches das mal ansehen. Dann wird klar, dass ein agiles Vorgehen kein Kuschelkurs mit Befindlichkeiten ist.

Am Dienstag wurde ich zum Thema PMBOKv6 vs. PMBOKv7 interviewt. Während des Interviews suchte ich nach einem Wort, um agile / leane & Co Vorgehensweisen zu charakterisieren. Echte Agilisten sehen das Wasserfallmodell als Feindbild, auch wenn es das nie wirklich gab. Ich nannte das schon länger „plangetriebenes“ Vorgehen. Den anderen Pol nenne ich nun „wertgetriebenes“ Vorgehen. Natürlich liegt ein tatsächliches Vorgehen dazwischen, mit etwas von beidem. Selbst in diesem ominösen Scrum wird geplant.

Sehr lustig die Reaktion des Interviewers auf meinen agile Variante des Arzttests: würde er sich in ein Flugzeug setzen, dessen lebenswichtige Steuerungssystem agil (also: hauptsächlich wertegetrieben) entwickelt wurden?

Diese Woche habe ich die Ausführungsgeschwindigkeit meines LISP-1-Systems Sx etwas verbessert. Je nach Plattform ist Faktor drei bis vier herausgekommen. Wieder einmal galt die alte Heuristik, sich auf die Daten zu fokussieren. Dynamisch allozierte Daten sind teuer, spätestens in der Garbage Collection. Go alloziert gerne unter der Motorhaube dynamisch Speicher, z.B. für Slices oder Interface-Werte. Hashmaps sind in Go erstaunlich klein und schnell, zumindest für meinen Use case, teilweise vergleichbar mit Slices. Aber auch diese allozieren dynamisch Speicher.

Einer meiner Benchmarks, gleichzeitig ein Test für Tail-Call-Optimization, benötigt nun für jeden Funktionsaufruf als Interpreter nur noch zwei Datenstrukturen. Einmal für die lexikalische Ausführungsumgebung (für Tail-Call-Optimization, Tracing, …) und einmal für die Bindung von Symbolen an Werte.

(defun even? (n) (if (= n 0) T (odd? (- n 1))))
(defun odd? (n) (if (= n 0) NIL (even? (- n 1))))

Mal sehen, ob ich das auf eine dynamische Speicherallokation runterbringe. Ideen habe ich. Diese könnten aber etwas aufwändig werden und mir geht Klarheit des Codes vor dem letzten Zipfel an Geschwindigkeit / Speicherverbrauch.

Bei dem ganzen Experimentieren habe ich einen Befehl meines Versionskontrollsystems schätzen gelernt: fossil revert. Damit lösche ich alle Änderungen seit dem letzten Commit. Im Unterschied zu den entsprechenden Befehlen in vielen anderen Versionskontrollsystemen lässt sich diese bei Fossil sogar wieder rückgängig machen.

Einer Projektgruppe habe ich am Dienstag die Frage gestellt, warum sie (und so gut wie alle Softwareentwickler) ausgerechnet dieses Git verwenden. Nicht nur bei den Studenten ist die Antwort der Art „alle anderen nutzen es&lbquo; oder „GitHub“ oder ähnliches. Also der gleiche Grund, weshalb alle Windows nutzen, MS Office, WhatsApp, Instagram, TikTok, Java, Python, u.s.w. Zumindest diese Gruppe denkt nach unserer Diskussion vielleicht nicht mehr so faul, sondern auch öfter mal nach. Zum Beispiel über das jeweils gerade aktuelle Buzzword, die Kuh, die durchs IS/IT-Dorf getrieben wird.

Zum guten Schluss nach gutem Brauch der gute Link der Woche: Four things about threads.net. Auch wenn es hier nur über den Facebookkonzern geht, denkt man besser auch mal über sich selbst nach. Wie schon oben: faul oder denken. Exklusiv-Oder, nicht Inklusiv-Oder.