Diskussion:Motivation (Code)

Aus Philo Wiki
Wechseln zu:Navigation, Suche

Hallo,

an sich behandelten wir das Phänomen einer Fehlermeldung als Output einer Blackbox (wurde in der Vorlesung weitgehend diskutiert). Mir stellt sich darüber hinaus die Frage : " WER ist der Täter ? " Also die Frage nach dem Verursacher. War der Auslöser zum Fehler der Abbruch eines Tools oder Inkompatibilität von unterschiedlicher Software oder ein ungenügend getestetes Programm oder ... Letztendlich ist es jedoch immer ein unwissentlicher Verursacher (wissentlich ist nicht auszuschließen!) also ist es ein 'Mensch im Netz'. Wie könnte man dies philosophisch interpretieren ?

Infophil

Agent im Netz

Ist wirklich immer ein Mensch Verursacher von Fehlern? (Gerichts-) Sachverständige suchen zwar bei der Analyse von Unfällen und Katastrophen primär nach menschlichem Versagen (bei der Bedienung, Herstellung oder Kostruktion von Apparaten), sie schließen aber Ursachen nicht aus, die vom Menschen in der konkreten Situation nicht beeinflussbar oder nicht vorhersehbar sind.

Ist wirklich immer ein 'Mensch im Netz' der Täter? Software in heute üblicher Komplexität kann weder durch Menschen noch durch Maschinen auf absolute Fehlerfreiheit geprüft werden. Man denke nur an slebst lernende 'Software-Agenten'. Der Verursacher (Entwickler) ist also insoferne unwissend, als er einen konkreten Fehler und dessen Wirkbreite nicht vorhersehen kann. Er ist allerdings wissend, mit welcher Restfehlerquote man rechnen muss und welche kritischen Folgewirkungen dies verurscahen kann (GAU). Und er ist verantwortungslos, wenn er keine Präventionen setzt.

--Hofbauerr 14:51, 17. Okt. 2007 (UTC)


Servus!

Zur Frage des ersten Beitrags, denke ich, dass sie uns tautologisch in einen Kreis führt. Wenn sich in einem von Menschen geschaffenen System Fehler ereignen, ist - von dem was "höhere Gewalt" beschreibt abgesehen - menschliche Fehlleistung die Täterin. Im konkreten Fall hätte eine PHP-Programmmierung die Fehlermeldung abfangen können, um User nicht weiters damit zu behelligen, während sie für Administratoren zugänglich ist. Die Ursache der Fehlermeldung wird auch auf menschlicher Seite zu finden sein. Vielleicht greift es zu kurz, die Frage nach einem Täter zu stellen - gerade angesichts der großen Komplexität. Aber auch wenn Software-, Programmierungs- und Anwendungsfehler sowie Kompatibilitätsmängel zwischen beteiligten Systemen und deren Komponenten auftreten, denke ich, dass den daraus entstehenden unbefriedigenden Resultaten menschlichen Unzukömmlichkeiten verschiedener Akteure und Agenten zu Grunde liegen.

Katrin


Die Frage nach dem "Schuldigen" ist im ersten Durchgang leicht beantwortet. Für den dargestellten Zustand ist der Webmaster verantwortlich (also h.h.). Die Konfigurationsdatei für die PHP-Installation auf der Maschine enthält diese Passage:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; error_reporting is a bit-field.  Or each number up to get desired error
; reporting level
; E_ALL             - All errors and warnings
; E_ERROR           - fatal run-time errors
; E_WARNING         - run-time warnings (non-fatal errors)
; E_PARSE           - compile-time parse errors
; E_NOTICE          - run-time notices (these are warnings which often result
;                     from a bug in your code, but it's possible that it was
;                     intentional (e.g., using an uninitialized variable and
;                     relying on the fact it's automatically initialized to an
;                     empty string)
; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
;                     initial startup
; E_COMPILE_ERROR   - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR      - user-generated error message
; E_USER_WARNING    - user-generated warning message
; E_USER_NOTICE     - user-generated notice message
;
; Examples:
;
;   - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE
;
;   - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
;   - Show all errors except for notices
;
      ;
error_reporting  =  E_ALL & ~E_NOTICE

; Print out errors (as a part of the output).  For production web sites,
; you're strongly encouraged to turn this feature off, and use error logging
; instead (see below).  Keeping display_errors enabled on a production web site
; may reveal security information to end users, such as file paths on your Web
; server, your database schema or other information.
display_errors = On 
                                                                  


Es ist also eine Einstellung in der Datei php.ini, welche von PHP entdeckte Fehler an den Browser weitergibt. Für die "glatte" Lesbarkeit ist das natürlich unerwünscht und insofern ein "Fehler". Aber das ist relativ zur Aufgabenstellung. Aus Sicht der Administratorin arbeitet PHP ganz in Ordnung: es zeigt an, dass die Datenbank partiell korrumpiert ist. Die "Fehler"meldung ist eine Zustandsanzeige. Und wer/was ist für die verantwortlich? Das ließe sich (eventuell) aus den Logfiles der Verbindungsdaten und Datenbankzugriffe rekonstruieren. Wichtiger als diese Zuordnungen ist mir das Verhältnis von Oberfläche und technischer Tiefendimension - siehe den Artikel von Katherine Hayles.

--anna 06:55, 19. Okt. 2007 (UTC)

Die Aussage von Katrin "wenn sich in einem von Menschen geschaffenen System Fehler ereignen, ist - von dem was 'höhere Gewalt' beschreibt abgesehen - menschliche Fehlleistung die Täterin" ist fragwürdig. Erstens ist zwar Software "vom Menschen geschaffen", ihre Funktionalität geht aber darüber hinaus. So verhält sich ein selbstlernendes System emergent, kann also nicht mit "vom Menschen geschaffen" allein nicht erklärt werden. Zweitens kann der Begriff "Täterin" nur auf einen (in dieser Schreibweise noch dazu nur weiblichen) Menschen bezogen werden, und nicht auf eine (Fehl-)Leistung. Drittens handelt es sich hier nicht um eine Fehlleistung (bewusstes oder unbewusstes menschliches Fehlverhalten) sondern um einen Fehler (Abweichung von einer Vorgabe).

Wie Anna richtig feststellt, handelt es sich hier nicht um eine Frage nach der Ursache (die mag zu einem unendlichen Regress führen) oder Schuld (die mag in eine Diskussion über Willensfreiheit münden), sondern nach der Verantwortung.

Tautologie sehe ich übrigens keine.

--Hofbauerr 14:40, 19. Okt. 2007 (UTC)


Wie bereits oben erwähnt wurde, ist die Festellung, ob es sich hierbei um einen Fehler handelte relativ zur Aufgabenstellung. Die Fehlermeldung die hier "geworfen" wurde ist ja kein Nonsens, sondern stellt eine Sicherheitsmaßnahme dar, um dem jeweiligen Administrator zu sagen, wo denn genau der Fehler liegt. Das ist anscheinend ein Vorteil dieser Programmier- bzw. Datenbankumgebung, dass das "Abfangen" von Fehlermeldungen ohne das Zutun des Programmierers auf dem Bildschirm angezeigt wird. Es gibt Programmiersprachen, bei denen das, was wir oben als Fehlermeldung sehen, erst explizit implementiert bzw. benutzt, also eingebaut werden muss. Wenn es in einem solchen Fall (der fehlenden Implementierung) zu einem Fehler käme, könnte man dann also garnicht sagen worum es sich handelt. --> Die Anzeige der Fehlermeldung ist also in gewissem Sinne die Abmachung für ein reglementiertes Verhalten bei einer unvorhergesehenen Situation.

in einer Analogie könnte man so davon sprechen: Die Fehlermeldung erscheint deshalb, weil ein gewisser Vorgang eine Regelwidrigkeit hervorruft und einen "Überschuss" an Information erzeugt, der mit dem Sprachvorrat des jeweiligen Systems nicht fassbar ist. Einziger Anhaltspunkt bleibt die Tatsache, DASS ein Übertritt vorgekommen ist und in einem Idealfall weiß man noch, an welcher Stelle im "sequentiellen" Ablauf der Fehler auftrat.

Nun hat man natürlich gewisse Erfahrungen mit einem Script oder einer überhaupt Programmiersprache und kann die häufigsten Fehler von vornherein bezeichnen. So gibt man also jedem Übertritt eine Nummer und kann anhand dieser Nummer herausfinden um was es sich speziell handelte.

Es gibt allerdings auch Vorgänge, die zur Anzeige eines Fehlers führen, obwohl der jeweilige Vorgang nicht unbedingt zu einem Absturz geführt hätte. Das passiert zum Beispiel oft wenn man Funktionen verwendet, die als "veraltet" betrachtet werden. Die Benutzung solcher Funktionen führt dann oft zu einem "Warning". Nichts desto trotz gibt es dann aber auch neue Funktionen, die die Funktionalität der alten über Umwege erreichen. Vielleicht könnte man da von legalisierten Gesetzesüberschreitungen sprechen --> Foucault.

Man sieht also, dass Überschreitungen zur Stabilisierung des gesamten Systems mit eingeplant werden. --Richardd 13:14, 23. Okt. 2007 (UTC)

Die "unvorhergesehene Situation" ist ein zentraler Punkt. Es wird eine Mitteilung gemacht, aber sie läuft nicht in den Schienen der Mitteilungen, die zu erwarten sind. Und entsprechend ist sie auch nicht nach diesen Regeln verständlich. Der Code verschwindet nicht im Hintergrund, sondern tritt mit einer Information über die Störung der Mitteilung in den Vordergrund.
"Überschuss an Information" passt auch genau. Dieses Übermass besteht darin, dass nicht nur die Informationen verarbeitet werden, sondern auch noch die Fehlerhaftigkeit dieser Verarbeitung verarbeitet wird. Daher die Mitteilungen auf zwei verschiedenen Ebenen. Das Beispiel operiert ja damit, dass - im gewöhnlichen Verständnis - nur auf der Meta-Ebene "Code" auftaucht, während es dem unbedachten Blick so scheint, als wäre die Objektebene kein Code. --anna 17:18, 1. Nov. 2007 (UTC)

Die Fehlermeldung erscheint deshalb, weil ein gewisser Vorgang eine Regelwidrigkeit hervorruft... um dies von Richard zu übernehmen. Ich bin selbst keine Computerexpertin aber ich würde den Pc jetzt nicht so viel Eigenleistung zutrauen. Am Ende kann er nur das was man ihn vorgibt, dass es dabei zu Prozessen kommt, die nicht eins zu eins vom Programmierer eingegeben wurden ist klar. Aber das ist im Grunde mit jeder Maschine so. Ein "Prozessweg" um an das gewünschte Ziel zu kommen. Der Motor von meinen Auto läuft auch ohne dass ich ihm alles vorsage und wenn etwas nicht stimmt (kein Benzin zum Bsp) dann reagiert er entsprechend darauf. Mit den Codes ist es nicht anders (auch wenn ich damit Gesagtes wiederhole) wenn er falsch ist, kann das Gerät es nicht akzeptieren, weil es eben auf etwas anderes programmiert wurde. Codes die nicht akzeptiert werden gibt es auch in anderen Bereichen, Lösungsworte auf der Bank zum Beispiel. Was mir weniger klar ist: Manches Mal erscheinen solche Warnungen und wenn man die Seite erneut öffnet sind sie weg. War dann die Warung eine Fehlmeldung oder eine Fehlermeldung und wodurch oder wem(was)entstand sie? VO50861


Zur Diskussion: Ursache: Letztendlich ist immer der Mensch Verursacher für das, was als Fehlermeldung auf dem Bildschirm erscheint. Mit letztendlich meine ich, dass es der Mensch ist, der die Hardware, speziell die Prozessoren mit ihren fest eingebrannten Befehlen baut. Der Mensch ist es auch, welcher mit Hilfe verschiedener Programmiersprachen auf den Befehlsatz des Prozessors seine Programme schreibt. Tauchen auf dieser Ebene Fehler auf, die wissentlich oder unwissentlich entstanden sind, so kommt es, falls vorgesehen, zu einer Fehlermeldung. Damit ist der Mensch zwar Verursacher von Fehlern, von Schuld zu reden, ist eine andere Sache; die Unterscheidung ist im jeweiligen Kontext zu treffen. Weder im Hard- noch im Softwarebereich kann der Mensch die absolute Kontrolle haben, weil nicht voraussehbar ist, was die von ihm gebauten Hardwareteile und erschaffenen Programme in bestimmten Situationen machen.

Gedanken, die beim Lesen der Diskussionsbeiträge und des Exzerpts von K. Hayles zum Kapitel „Code – Coda“ (Weizenbaums Sekretärin beim privaten Gespräch mit dem Computer) auftauchten: Schuld: Was Schuld ist, müssen die Gerichte klären, aber was den Fehler verursacht hat, kann man auf einer rein sachlichen Ebene emotionslos und wertfrei betrachten. Was ist Schuld? Menschen neigen sehr leicht dazu, im Falle eines Auftretens einer Störung von Schuld zu sprechen, obwohl es sich um eine Frage nach der Verursachung dieser Störung handelt. „Was ist schuld daran, dass das nicht funktioniert?“ Vielleicht banal, aber drückt diese Frage nicht auch eine Erwartung aus, die uns als Individuum recht unangenehm berührt? Die Frage nach der Schuldzuweisung könnte als Reflex aufgefasst werden: „Ich bin’s jedenfalls nicht, oder ich hoffe zumindest es nicht zu sein.“ Die Frage nach der Ursache für eine Störung scheint neutraler zu sein, wobei natürlich auch der Terminus „Störung“ zu hinterfragen wäre.

Zum Exzerpt von K.Hayles: Das Unbewusste: Um eine Analogie zum Unbewussten herzustellen, verwende ich als Kriterium den nicht unmittelbaren Zugang des Menschen zu seinem Unbewussten. Das Unbewusste in der Computerwelt wäre für mich die 0,1-Ebene, die in der Hardware, beispielsweise im Prozessor, abläuft. Da es sehr wenige Menschen gibt, die auf dieser Ebene der Maschinensprache programmieren können, wäre das für mich, wegen des nicht unmittelbaren Zuganges, ein Analogon zum Unbewussten. Um die Analogie etwas auf die Spitze zu treiben, kann man hier auch von Göttern sprechen, den Erbauern der Prozessoren. Sie sind es, welche die Strukturen des Unbewussten festlegen, indem sie sie in die Prozessoren fest einbrennen. Sie sind es, die das Unbewusste recht gut kennen. Oberhalb dieser grundlegenden Hard- und Software-Bereiche, die dem Unbewussten am nächsten liegen, ist die Ebene der verschiedenen Programmiersprachen (Maschinensprache ausgeschlossen), die mehr oder minder entfernt vom Unbewussten sind, je nachdem, um welche Sprache es sich handelt. Wer/was allerdings der/die Gott/Götter sind, die/der/das die Strukturen des menschlichen Unbewussten schafft, darüber vermag ich leider keine Auskunft zu geben. Es fehlt mir ganz einfach die entsprechende Erfahrung.

Nun könnte man sehr leicht zu dem Schluss kommen, dass nur die Schöpfer der Prozessoren, die ich so dreist „Götter“ nannte, einen unmittelbaren Zugang zum „Unbewussten“ haben. Wozu sie – als Menschen – tatsächlich Zugang haben, ist lediglich das, was gerade noch sichtbar ist für sie; jeder Schöpfer/jede Schöpferin eines Prozessors als der untersten Ebene eines Kommunikationsmittels trägt zu jeder Zeit sein eigenes Unbewusstes wie einen Schatten mit sich herum, das in jede bewusste Tätigkeit mit einfließt. D.h., in jeder bewussten Ebene befindet sich gleichzeitig wie ein Doppelgänger das Unbewusste, sowohl im Bereich des Erbauers, als auch im Computer als seinem Produkt. Es erfolgt also nicht nur ein äußerer Einfluss durch Technik auf unser Unterbewusstsein, sondern ebenfalls ein Einfluss unseres Unterbewussten auf unsere Technik (sh. auch „Nigel Thrift's technological unconscious“ im o.g. Exzerpt, 5. Absatz). Silvia.


Also dass das binäre System 0,1 den unterbewussten Bereich eines Computers ausmacht kann ich nicht ganz unterschreiben. Vielleicht hierzu mal ein kurzer Exkurs in die Programmiersprachen:

Man teilt Programmiersprachen, z.B. C/C++, C#, Java, PL/1, Assembler, in Generationen ein. Je nach "Prozessornähe" wird die Programmiersprache also einer Ebene zugeordnet. Die unterste Ebene, und das wird wohl jedem einleuchten, ist die Kombination aus "Strom ein"/"Strom aus" --> also 1 und 0, wobei sich das ganze im Normalfall immer auf einer Ebene von 5 Volt bewegt. Eine "Variable" die die Werte 1 und 0 annehmen kann, nennt man in der Computersprache ein "Bit". Nun versucht man also anhand von solchen binären Stellen andere Zeichen darzustellen. Man fasst also mehrere Bits zu Bytes zusammen. Ein 1 Byte hat 8 Bit und wenn man sich das ausrechnet, kann man mit einer achtstelligen binären Zahl bis zu 2 Hoch 8 Zahlen darstellen --> 256. Es würde jetzt natürlich jedem Menschen äußerst schwer fallen, jedes Zeichen, jeden Buchstaben und jede Zahl in einer binären Form einzugeben. Das würde nicht nur unendllich lange dauern, sondern auch sehr sehr schwierig sein. Jetzt kann man sich aber auch vorstellen, dass einfache Vorgänge wie das Addieren von Zahlen ebenso eine ungeheure Menge von solchen Bitkombinationen benötigen. Jeder PC ist natürlich grundlegend ein "Rechner" der durch das Addieren, Substrahieren,.... Bitfolgen und Bytes bearbeitet und manipuliert. Jeder Befehl wie z.B. das Addieren hat natürlich ebenfalls eine Bezeichnung über die er aufgerufen werden kann, die letztenendes nichts als eine bloße Bitkombination ist, bzw. sich auf (virtuelle) Schaltungen auswirkt. Um den Menschen unnötiges Eingeben dieser Bitfolgen oder Hexadezimalzahlen zu ersparen verwendet man Platzhalter --> um nichts anderes handelt es sich bei der "prozessornahen" Programmiersprache Assembler. Jeder Prozessor hat gewisse Befehlssätze, über auf ihn zugegriffen werden kann. Nun ist aber auch schon eine solche "prozessornahe" Programmiersprache überaus umständlich, wo eine einfache Addition zweier "Register" schon mehrer Zeilen benötigt --> man bedenke wie lange man bräuchte, wenn es denn überhaupt mögliche wäre, grafische Systeme wie Windows darin zu programmieren. Deshalb fasst man auch hierin wieder bestimmte Programmfolgen, die häufig benötigt werden und überaus zusammen und bewegt sich somit auf die nächste Ebene. Während mit der "prozessornahen" Sprache direkt auf die Befehle und Register des Prozessors zugegriffen wurde, greift die Programmiersprache der nächsten Ebene nurnoch auf vorgefertigte Module der vorhergehenden Sprache zu. Natürlich werden im Hintergrund die eingegebenen Sprachen wieder in den "prozessornahen" Code übersetzt, da der Prozessor ja einzig und alleine diesen versteht. Man könnte also sagen, dass es sich bei den höheren Programmiersprachen um etwas ähnliches wie "Makros" handelt, die viele kleine Befehle in einem einzigen Befehl zusammenfassen --> also werden gewisse Module erstellt, mit denen es zu Arbeiten leichter fällt. Man darf sich diese Sprachen jetzt natürlich nicht alzu "bunt" vorstellen:) Bis ein Interface, wie z.B. Windows zustande kommt, das in gewisser Form die Sprache des Menschen spricht und ituitiv gehandhabt werden kann, benötigt es einen Haufen Arbeit. Ich sagte "Interface" weil ja die grafische Darstellung des "Betriebssystems" nichts anderes ist als eine Schnittstelle zum menschenfreundlichen Umgang mit dem Computer. --Richardd 11:58, 31. Okt. 2007 (UTC)