Abstraktion - Fluch oder Segen?

Fr, 28. Mai 2021, Ralf Hersel

In der Philosophie bezeichnet Abstraktion ein gedankliches Verfahren, durch das von bestimmten gegebenen, jedoch als unwesentlich erachteten Merkmalen eines Gegenstandes abgesehen wird. Auf diese Weise soll sich das Augenmerk auf das Wesentliche konzentrieren. In der IT-Welt beobachten wir seit Beginn Abstraktion auf verschiedenen Ebenen: bei der Hardware, bei den Protokollen, bei der Software und bei Bedienkonzepten.

Bevor wir zur IT-Welt kommen, möchte ich ein praktisches Beispiel aus dem normalen Leben nennen, um Abstraktion zu verdeutlichen:

Um ein Auto fahren zu können, muss ich nichts vom Motor verstehen!

Unter normalen Umständen, und mit gesundem Menschenverstand betrachtet, ist diese Aussage sinnvoll. Die Details sind für mich nicht relevant (Motor), stattdessen konzentriere ich mich auf das Wesentliche (Fahren). Dabei handelt es sich um eine Optimierungsstrategie; lässt man die Details ausser Acht, kann man sich mit viel mehr Wesentlichem beschäftigen. In einer immer komplizierter werdenden Welt erscheint das als stimmiges Vorgehen.

Kommen wir nun zur IT-Welt. Wer programmiert noch in Assembler, wenn es doch Python gibt? Wer interessiert sich für Transistoren, wenn es doch Systems-on-a-Chip gibt? Wer interessiert sich für Dateien, wenn es doch Smartphone-Apps gibt? Vermutlich ist euch bei der letzten Frage ein Licht aufgegangen.

Den Segen der Abstraktion habe ich oben bereits beschrieben. Durch Abstraktion wird mein Leben einfacher und ich kann mich mit mehr Dingen beschäftigen; ich werde zum Universal-Gelehrten (quasi) und muss nicht im dunklen Spezialisten-Verliess verharren.

Wie kann dann Abstraktion ein Fluch sein? Nun, Abstraktion führt dich in eine Abhängigkeit, bzw. Abstraktion kostet dich Geld. Bleibst du auf der Autobahn liegen, musst du warten und zahlen, weil du den Reifen nicht mehr selbst wechseln kannst. Wenn dein Betriebssystem rumzickt, musst du deine Töchter und Bekannte belästigen, damit sie dir helfen. Wenn dein MS Office eine Word-Datei aus dem Jahr 2001 nicht mehr öffnen kann, hast du keine Ahnung, dass LibreOffice dies sehr wohl kann.

Als Beweis, habe ich noch ein Beispiel: Fragt doch mal in eurer Familie oder bei euren Freunden, wer in der Lage ist, auf seinem Android- oder Apple-Smartphone, eine Datei zu öffnen, bzw. diese zu löschen. Ich wette darauf, dass 95 % der Anwender dies nicht können. Oder noch einfacher; fragt mal, wer in eurer Schule oder im Büro in der Lage ist eine einfache Text-Datei zu öffnen und zu bearbeiten. Auch hier wette ich, dass mehr als 80 % das nicht können.

Dieser Trend ist steigend. Ich sage voraus, dass in 10 Jahren die unter 20-Jährigen einen Computer nicht mehr als solchen erkennen, z.B. wenn dieser in ein Textilstück eingewoben ist. Diese Gruppe wird auch nicht mehr wissen, was eine Datei oder eine Anwendung ist. Sie wird nur noch eine Dienstleistung oder eine Selbstverständlichkeit erkennen. An dieser Stelle wird Abstraktion zum Fluch, weil das Wesen des Gegenstands nicht mehr im Bewusstsein ist.

Dabei macht es viel Spass und schafft Befriedigung, wenn man sich in ein Thema kniet und sein Wissen vertieft. Das Gefühl des Verständnisses ist ein Hochgefühl und nützt nicht nur einem selbst, sondern auch der Gesellschaft. Irgendjemand muss schliesslich an Weihnachten die PCs der Eltern reparieren.

Das menschliche Gehirn hat ein grosses Potenzial. Die verbreitete Meinung, dass nur 10 % davon genutzt werden, ist zwar Unsinn; dennoch gibt es keinen Grund unseren Kopf nicht nur der Breite, sondern auch der Tiefe zu widmen. Detailwissen ist eben doch wesentlich.

allo
Geschrieben von allo am 29. Mai 2021

Interessant ist in dem Kontext auch das Problem einer Leaky-Abstraction, wenn man nämlich doch merkt was Sache ist, aber durch die Abstraktion es nicht versteht.

Beim PC könnte man zum Beispiel eine API nehmen die auf Festplatte oder Netzwerklaufwerk schreibt. Man merkt keinen Unterschied. Es sei denn man zieht das LAN-Kabel, dann merkt man plötzlich dass irgendwas kaputt ist, aber ohne auf den Dateipfad zu gucken nicht warum.

Beim Auto könnte man sagen, dass man zwar den Motor nicht selber bauen können muss, aber wissen sollte welchen Sprit man tankt. Sonst bekommt man große Probleme mit dem falschen Treibstoff.

tuxnix
Geschrieben von tuxnix am 29. Mai 2021

Nicht die Abstraktion ist kritisch zu sehen, ganz im Gegenteil.

Das Abstrahieren erlaubt uns Strukturen besser zu erkennen. Das Fahren eines Autos und das Reparieren sind beides Tätigkeiten die für sich genommen wenig abstrakt sind. Abstrakt wäre, sich z.B. auf eine Metaebene zu begeben und sich zu fragen, was geschieht durch das Autofahren. Der Wechsel der Betrachtungsebene macht die Abstraktion.

Ich würde deshalb gerade umgekehrt argumentieren: Das Abstraktionsvermögen erlaubt neben dem schlichten Bedienen des Smartphones auch zusätzlich nach den Strukturen zu fragen, mit denen die anfallenden Daten verarbeitet werden.

Etwas anderes ist eine Abstraktionsschicht beim Programmieren. Auch hier wird etwas auf eine andere Ebene gesetzt. Als Konsequenz die sich für den User ergibt, kann jedoch passieren, dass dem User das Verständnis von zugrundeliegenden Ebenen verloren geht. Um so mehr wenn er sich meist nur auf einer Ebene dieser Schicht bewegt, der Nutzerebene.

Ich denke, es ist nicht die Abstraktion selbst, sondern viel eher die Schichten die entstehen wenn die Dinge quasi perfekt erscheinen und wir es meist nicht mehr nötig haben darunter liegende Ebenen zu betrachten.

scherzkeks
Geschrieben von scherzkeks am 31. Mai 2021

Hallo, das Wort Abstraktion ist in der Tat aus IT-Sicht das falsche, denn für den Anwender darf die Bedienung nicht komplizierter werden, nur weil im Unterbau generischer gearbeitet wird. Daher stimme ich Deiner Antwort zu 100% zu. So wie der Artikel aber geschrieben wurde, war wohl eher eine Abstraktion UX gemeint, worauf ich mich dann ein wenig einließ ;-) Und ja, Abstraktion in der Softwareentwicklung bedeutet, dass man hier eine Ebene einschiebt, um dem "Konsumenten des Layers" eine Signatur in die Hand zu geben, auf deren Basis er entwickelt. Im Idealfall, weiß er nicht, was sich hinter dem Abstraktionslayer verbirgt. Bestes Beispiel sind Logging-Fassaden und Datenbank-Zugriffsschichten. Bei beiden möchte man nicht wissen, ob (am Beispiel Java) Log4J, jul oder logback verwendet wird, wenn ich gegen die Abstraktion namens slf4j programmiere und im Bereich der Datenbank sollte mir die DB (SQLite, H2, postgresql, MySQL, Oracle usw.) weitestgehend egal sein, wenn ich bspw. auf JPA setze. Ich gewinne die Freiheit, zu mocken oder den Unterbau auszutauschen, ohne an den Clientcode 'rangehen zu müssen.

scherzkeks
Geschrieben von scherzkeks am 28. Mai 2021

Interessant aufgebauter Artikel und ja, aus Sicht eines Anwenders kann Abstraktion ein graus werden. Interessant fand ich die Formulierung "musst du deine Töchter und Bekannte belästigen" ;-) Zum Glück komme ich aus der IT und kann mir selbst helfen, denn ich habe nur Söhne, keine Töchter! Allerdings meine ich, dass man insbesondere bei Smartphones und manche Non-Linux-Distribution das Wort Abstraktion für die genannten Beispiele fehl am Platz ist, es handelt sich hier vielmehr um einen Schutz - zumindest aus Sicht der Hersteller. Und die Entwicklung nimmt erschreckende Geschwindigkeit auf. So ist heutzutage der Käufer eines Produktes nicht zwangsläufig Eigentümer dessen oder dessen, was er damit macht, sondern erhält nur Nutzungsrechte. Bei Smartphone sind es die Daten die per default in die Cloud gehen. Aber wehe dem, man möchte das nicht. Oder versucht mal in Windows 10 Bluetooth-Headset-Problemchen zu lösen. Mir fallen spontan 4 Masken ein, die alle irgendwie damit zu tun haben (je nachdem, wie schwerwiegend geht es runter bis in den Gerätemanager). Und wenn beim Bluetooth-Headset das Mikrofon nicht will und man gibt Mikrofon ein, landet man beim Sprachassistenten. Und wer sich einmal Sprachassistenten näher anschaut, stellt auch schnell fest, dass wir hier vom Cloud-Computing reden, wieder einmal bleiben meine Daten / meine Stimme nicht lokal sondern fliegen außerhalb meiner Kontrolle irgendwo im Netz herum. UND SO WEITER.... Ich höre jetzt aber auf ;-)

Ralf Admin
Geschrieben von Ralf am 28. Mai 2021

Danke für Deinen Beitrag, Scherzkeks

Zu den 'Töchtern': damit ich keine Binnen*konstrukte beim Schreiben verwenden muss (weil diese, nach meiner Meinung, den Lesefluss stören), verwende ich abwechselnd feminine, neutrale oder maskuline Ausdrücke. Mal sind es die Söhne, mal die Töchter und mal die Leute. In jedem Falle meine ich damit alle.

Da Du aus der IT kommst, rechne ich Dich auch der IT-Filterblase zu. Selbstverständlich kannst Du Deinem Umfeld helfen, wenn es um IT-Fragen geht. Nimm einfach einen anderen Fachbereich, z.B. Medizin und frage Dich, wie es dort mit der Abstraktion und der Vertiefung aussieht.

Im Podcast GLN-011 (der am 1. Juni erscheint), haben wir auch über dieses Thema gesprochen und sind zur Erkenntnis gekommen, dass es sowohl als auch braucht: Abstraktion und Vertiefung, weil der Mensch das kann.

Matthias
Geschrieben von Matthias am 28. Mai 2021

Danke, schöner Beitrag, mitohne Zeigefinger. Zum Erwachsenenleben gehört Verantwortung. Und dazu reicht es eben nicht nur zu wissen, wo der nächste dicke All-Inclusive-Party-Dampfer ankert, sondern Zugang und Können zum Ruderboot zu haben, wenn mangels Tiefensicht mal wieder ein Eisberg unter'm Bug langschreddert. Außerdem macht Lernen Spaß.