Todesengelprogramm oder def werLebtNoch():
Bei meinen früheren Büchern gab es viel zu recherchieren – hier, beim »Mauersegler« zur Abwechslung mal etwas zu programmieren.
Zu dem Pakt, den die fünf Alten schließen, gehört der gegenseitige Beistand in der Sterbestunde. Jeder soll sich denjenigen erwählen, den er in diesem Moment an seiner Seite haben will. Ernst, der Programmierer unter den fünfen, schreibt dafür ein Programm. Dieses soll einen geregelten Wahlvorgang garantieren, die Ergebnisse vertraulich kapseln, und dann, wenn es ernst wird, die Benachrichtigung aussenden.
Das war so die Idee.
Aber funktionieren sollte sie auch. Also habe ich das Programm – so nebenher zur Arbeit am Roman – entwickelt. Eine zweite Sprachebene, sozusagen. Eine Beispielsfunktion daraus:
def werLebtNoch(): bewohner_aktuell = [] try: dahingegangen = DateiManager.lese("src/data/", "verstorben.log") except: dahingegangen = None if dahingegangen is None: pass else: if wgliste[0] in dahingegangen: ui.checkbox_name1.setCheckState(True) ui.button_name1.setEnabled(False) ui.editFeld_1.enabled = False ui.meldung_name1.setEnabled(False) else: ...
Jeder Programmtext (auch der Code-Schnipsel oben, geschrieben in Python 3) folgt nicht nur einer Rechtschreibung (Syntax), einer Grammatik, sondern – das ist für mich das Faszinierende am Programmieren –, ermöglicht auch einen Stil, einen individuellen Ausdruck. Der selbe Output lässt sich auf viele Weisen erreichen. Aber elegant ist die Knappheit, der direkte Ansatz, derjenige, der das Ziel mit dem geringsten Aufwand und der größten (scheinbaren) Leichtigkeit erreicht.
Das ist im Grunde nicht viel anders als das Romanschreiben (für mich jedenfalls). Sicher, da hat man dazu noch die Grauschattierungen, die Bedeutungsunschärfen der natürlichen Sprache, die Leerstellen, das nicht Gesagte, all die Möglichkeiten der Kostümierung, und deshalb auch die Möglichkeit der Entblößung, des klaren, unverkleisterten Textes. Programmtext ist dagegen gewissermaßen immer schon nackt und unzweideutig:
try: dahingegangen = DateiManager.lese("src/data/", "verstorben.log") except: dahingegangen = None
Das kann im Grunde jeder lesen. Es ist eine Anweisung, die Variable dahingegangen mit Daten zu füllen, die ein DateiManager aus einer Datei namens verstorben.log im Verzeichnis src/data lesen soll. Ein Versuch, also try:, weil das Lesen fehlgehen kann; entweder, weil die Datei nicht existiert oder nichts enthält. Und except: weil die Variable für den Fehler-Fall den Wert None zugewiesen bekommt. Im Klartext: »dahingegangen« ist die Liste derjenigen, die in der Datei »verstorben.log« gespeichert sind.
Kann jemand verstehen, dass solche Programmzeilen zu schreiben mir ähnlich Spaß macht wie das Schreiben einer (gelungenen) Romanzeile?
Weiter: wgliste[0] bezeichnet den ersten in der alphabetischen Liste der WG-Bewohner, Carl, den Erzähler.
if wgliste[0] in dahingegangen: ui.checkbox_name1.setCheckState(True) ui.button_name1.setEnabled(False) ui.editFeld_1.enabled = False ui.meldung_name1.setEnabled(False) else:
Wenn Carl in der Liste der Dahingegangenen steht, ist er offensichtlich verstorben. Also erhält das »Verstorben«-Kästchen neben seinem Namen ein Häkchen (setCheckState(True)), und noch ein paar andere Dinge werden entsprechend eingerichtet.
Ich bin bei weitem kein perfekter Programmierer – aber das »Todesengelprogramm« aus dem Mauersegler funktioniert, wie dort beschrieben. Oder folgt der Roman der Programmierung? Wer weiß.
Wer’s ausprobieren möchte, auf dem eigenen PC, kann das tun.