Software vs. Realität

Irgendwie entsteht beim Bedienen einer Software oft eine gewisse Unzufriedenheit. Selten erfüllt ein Programm genau meine Bedürfnisse oder verhält sich so, wie ich es erwarte.

TL;DR

  • Software ist modellbasiert
  • Unsere Realität ist ein höchst komplexes und unerschöpfliches Mysterium
  • Software kann unmöglich unsere Realität abbilden
  • Software kann unmöglich gänzlich unsere Erwartungen erfüllen

Das Märchen vom perfekten Programm

Wenn ich als Softwareentwickler das Ziel habe, ein perfektes Programm zu entwickeln, so scheitert das Projekt bereits an dieser Illusion. Die Realität mit all ihren Facetten ist in Software schlicht nicht abbildbar.

Die Abstraktheit von Software

Softwareentwicklung selbst spielt sich in einem recht abstrakten Raum ab. Irgendwann kam einmal jemand (z.B. Konrad Zuse) auf die Idee, basierend auf Stromimpulsen (heute die Zustände 0 und 1 bzw. „Strom an“ und „Strom aus“) diverse Algorithmen ablaufen zu lassen. Basierend auf dieser Idee wird heute Software entwickelt. Der Unterschied ist, dass wir heute mithilfe der höheren Programmiersprachen schon beinahe Fließtexte schreiben können und nicht mit 0en und 1en hantieren müssen.

Abstrakte Realität?

Mit dieser abstrakten Ebene ist es unmöglich, all die Zustände abzubilden, die es in unserer Umwelt zu finden gibt. Beispielsweise kann Facebook wohl kaum all die Facetten von „Freund sein“ abbilden, die wir uns vorstellen können. Selbstverständlich ist nicht jeder „Facebook-Freund“ ein echter Freund. Würde Facebook den Anspruch erheben wollen, all diese Facetten von

  • „keine Ahnung, wer das ist aber ich klicke mal auf Freundeseinladung annehmen“ über
  • „ja, schonmal gesehen“ und
  • „ja, schonmal gemeinsam auf einer Party unterhalten“ bis hin zu „mit dem kann ich Pferde stehlen“
abzubilden, dann würden die Entwickler nie fertig und die Rechenleistung nie stark genug werden. Und dabei habe ich die Schwankungen in den Beziehungen noch vernachlässigt, schließlich kann ich mich auch mit meinem besten Freund von damals heute auseinander gelebt haben.

Das Leben im MOdell

Im Umkehrschluss müssten wir also unsere Realität soweit reduzieren, sodass sie in ein abstraktes Modell passt, bei dessen Beschreibung man ein Ende finden kann.

Aber wer will das schon? Wenn ich in meiner Realität nur die Unterscheidung von Freund ja oder Freund nein hätte: Wie viele Urlaubskarten müsste ich dann schreiben oder wie viele Personen würde ich dann zu meiner Geburtstagsfeier einladen müssen?

Die unmöglichen Erwartungen an Software

Als Auftraggeber, sowie als Nutzer von Software müsste man daher auch seine Vorstellungen auf ein möglichst einfach abbildbares Modell reduzieren, welches in Software gegossen werden kann. Das wiederum kann man als Softwareentwickler nicht erwarten, da Menschen nun mal Menschen sind und das auch gern bleiben dürfen.

Da es in absehbarer Zukunft wohl auch mit Quanten-Computern, die mehr Zustände (als 0 und 1) nativ abbilden können, wohl unmöglich bleibt die Realität in Gänze abzubilden, kann eine Software für Menschen wohl nur ein Kompromiss sein und bleiben.