Codeschnipsel

Die kleinen Codeschnipsel, die im Rahmen einer Twitterdiskussion mit einer Feministin über Konsens entstanden sind, möchte ich nicht völlig in Vergessenheit geraten lassen.


Die feministische Forderung:

//Opt-In
if (obj.Consent()){
  Do(obj);
}

Entspanntes Trial-and-Error:

//Opt-Out
try {
  Do(obj);
}
catch(err) {
  exit();
}

Je nach Implementierung können außenrum noch Wiederholungsschleifen gesetzt sein.

Über Anne Nühm (breakpoint)

Die Programmierschlampe.
Dieser Beitrag wurde unter Allgemein abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

11 Antworten zu Codeschnipsel

  1. mitm schreibt:

    Ein Test in einer if-Anweisung sollte keine Seiteneffekte haben, in einigermaßen verständlicher Software zumindest. Ich habe den starken Verdacht, daß Consent() diese Bedingung erfüllt und den Zustand von obj nachhaltig verändert. 😉

    Gefällt 2 Personen

    • Man muss auch davon ausgehen, dass .Consent() noch Zufallselemente enthält, und kein reproduzierbares Ergebnis liefert.

      Gefällt 1 Person

    • mitm schreibt:

      verflixt, gemeint war „diese Bedingung nicht erfüllt“ (ich sollte Kommentare vor dem Abschicken korrekturlesen….)

      Gefällt 1 Person

      • Kommentator schreibt:

        Der Code ist auch nicht thread-safe. Selbst wenn wir schon ausgehen würden, dass #isConsent() seiteneffektfrei wäre, wissen wir immer noch nicht welche zustandsveränderden Operationen auf obj noch gelaufen sind, bis Do(Obj); tatsächlich zur Ausführung kommt.

        Gefällt 1 Person

        • HansG schreibt:

          Erschwerend kommt hinzu, dass sich der Rückgabewert von isConsent() während der Ausführung von Do(Obj) unvorhersehbar ändern kann. Und das, abhängig von der konkreten Spezialisierung von Obj sogar rückwirkend,

          Ich fürchte jeder Versuch das zu debuggen ist Zeitverschwendung. Wegwerfen und neu anfangen.

          Gefällt 1 Person

  2. uepsilonniks schreibt:

    Da fehlt noch was wichtiges:

    if(obj.feminist){
    return;
    }

    Gefällt 1 Person

  3. netsmurf schreibt:

    Man möchte doch feststellen, dass „Do(obj);“ eine Ausnahme erzeugen kann – z.B. durch eine Klasse, die das zumindest vorschreibt. Es gibt einige Objekte, die keine Ausnahme erzeugen und dann hinterher sich jemand über eine falsche Ausführung beschwert.

    Gefällt 1 Person

  4. netsmurf schreibt:

    Die Feministische Forderung ist nicht ganz umgesetzt. Hier wird nur vor Begin überprüft, ob die Ressourcen vorhanden sind, Do(Obj) kann aber beliebig lange dauern und eine Ressource kann ihren nicht verfügbar werden.

    Bei SQL gab es ein Konstrukt, dass ein Befehl nur dann ausgeführt / geschrieben wird, wenn alle Unterpunkte erfolgreich abgearbeitet werden, sonst wird die Änderung verworfen.

    So muss auch bei Do(Obj) eine ConsentException erwartet und abgefangen werden – bzw. ständig abgefragt werden, da man nicht davon ausgehen kann, dass das Obj selbst in der Lage ist eine ConsentException auszulösen, weil es u.U. überlastet ist.

    Gefällt 1 Person

  5. ronin schreibt:

    feminist.getConsent() liefert ein Consent-Objekt zurück, deallokiert es aber in einem parallel laufenden Thread, so dass der erste Thread dann bei einem consent.actUpon() einen Segmentation Fault verursacht.

    Gefällt 1 Person

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..