Undurchdringliche Barrieren

Abstraktionen: Inhärent schädlich?

Michael Thomas

© Shutterstock/naddi

Abstraktionen dienen bekanntlich der Komplexitätsreduzierung, was erst einmal eine gute Sache ist. Dass sie jedoch auch problematisch sein können, führte kürzlich Anna Sopova, Mitarbeiterin des API-Anbieters Apico, aus. Der Back-End-Entwickler Tyler Treat (Workiva) schlägt nun in eine ähnliche Kerbe und stellt die Frage, ob Abstraktionen die Wurzel allen Übels oder bloß missverstanden sind.

Die Grundlage seiner Überlegungen bildet die Keynote des Informatik-Juniorprofessors Peter Alvaro (University of California Santa Cruz) auf der letztjährigen Strange Loop. In dieser hatte Alvaro postuliert, dass Abstraktionen „manchmal schädlich“ sind.

Wie Treat rekapituliert, muss ein Programmierer im Zuge einer Problemlösung gewöhnlicherweise verschiedene Unterprobleme lösen. Erweist sich ein gegebenes Unterproblem als häufig und komplex genug, so erblickt in der Regel eine Abstraktion das Licht der Welt. Nun kann Treat zufolge eines von zwei Szenarien eintreten: Entweder die Abstraktion ist derart solide, dass sich der Programmierer nie wieder um die Details kümmern muss. Oder das zugrundeliegende Problem ist derart komplex, dass die Abstraktion leckt.

Letzteres betrachtet Treat als grausame Ironie: Da der Programmierer – weil sein Hauptaugenmerk auf dem größeren (Gesamt-)Problem liegt – im Grunde gar nicht an der Lösung des Unterproblems interessiert ist, schafft er eine Abstraktion, die dessen Komplexität verdeckt. Gleichzeitig beschwert er sich jedoch darüber, dass die Abstraktion leckt, ergo nicht perfekt ist. In Treats Worten: Der Programmierer bemerkt an diesem Punkt, dass schwierige Probleme tatsächlich schwierig sind. Abstraktionen, so Treat weiter, machen ein gegebenes Problem nicht auf magische Weise weniger knifflig, vielmehr verstecken sie die Schwierigkeit bloß. Oder anders ausgedrückt: Nur weil die Semantik simpel ist, ist es die Lösung noch lange nicht.

Lesen Sie auch: Vier gute Absichten beim Coden – die direkt in die Programmierhölle führen

Abstraktionen sind Treat zufolge auch deshalb knifflig, weil man nie weiß (bzw. nicht wissen kann) wie sie später genutzt werden. Auch deshalb erfordern Abstraktionen laut Treat einen heiklen Balanceakt zwischen Präzision und Grobkörnigkeit. Im Rückgriff auf eine Aussage des Informatikers Edsger W. Dijkstra, derzufolge das Ziel von Abstraktionen darin besteht, eine semantische Ebene zu schaffen, auf der man absolut präzise sein kann, gibt Treat zu bedenken, dass Anforderungen in der Regel nicht in Stein gemeißelt sind, sondern sich verändern. Ist man, so Treat weiter, also zu präzise, büßt man seine Anpassungsfähigkeit ein. Geht man andererseits zu grobkörnig vor, wird die Abstraktion geschwächt.

Die wichtigste Erkenntnis ist Treat zufolge, dass sich Programmierer mit der Tatsache arrangieren müssen, dass Abstraktionen lecken – ab einem gewissen Komplexitätsgrad existiert kein Allheilmittel. Alvaro drückte es in seiner Keynote folgendermaßen aus: Programmierer müssen sich selbst zutrauen, hinter die Fassaden zu blicken und sich mit der zugrundeliegenden Komplexität auseinandersetzen. Sie sollten, so Alvaro weiter, keine statischen Abstraktionen erschaffen, sondern, eingedenk der Tatsache, dass sie lecken, ausschließlich fluide. Treats Fazit lautet demnach auch, dass Abstraktionen nicht inhärent schädlich sind. Schädlich sind sie nur dann, wenn sie undurchdringliche Barrieren darstellen, die den Programmierer von den schwierigen Problemen abschirmen – denn seiner Ansicht nach sollte sich jeder Programmierer (zumindest ab und zu) die Finger schmutzig machen.

Aufmacherbild: Abstract communication backgrounds von Shutterstock / Urheberrecht: naddi

Verwandte Themen:

Geschrieben von
Michael Thomas
Michael Thomas
Michael Thomas studierte Erziehungswissenschaft an der Johannes Gutenberg-Universität Mainz und arbeitet seit 2013 als Freelance-Autor bei JAXenter.de. Kontakt: mthomas[at]sandsmedia.com
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: