Das Risikoakzeptanzkriterium MEM

Die Minimale Endogene Mortalität ist ein relativ altes deutsches Risikoakzeptanzkriterium, das versucht, die Frage der Risikominderung auf feste Fundamente zu stellen.

„Endogen“ heißt „im Inneren erzeugt“, sprich: ohne äußeren Einfluß auf das zu bauende System. „Mortalität“ ist die Sterblichkeit.

Es geht also um die Frage, wie wahrscheinlich es ist zu sterben. Dabei wird die minimale Sterbenswahrscheinlichkeit gesucht. Also nicht die des 60-jährigen oder des Krebspatienten, sondern die reale Sterbenswahrscheinlichkeit für Kinder und Jugendliche zwischen fünf und fünfzehn Jahren. Die Zahlenwerte basieren auf einer Studie aus dem Jahr 1981. Daraus ergibt sich eine natürliche Sterblichkeit dieser Gruppe von 2×10^-4 Todesfällen pro Person und Jahr.

Rechnung

Das Ziel lautet, daß das System keine merkliche Auswirkung auf das Todesfallrisiko haben soll. Es soll also höchstens im Bereich dieses „allgemeinen Hintergrundrisikos“ liegen.

Der Mensch ist häufig von einer Anzahl von technischen Systemen umgeben, nehmen wir bis zu 20 Stück an, dann sollen einem einzelnen System nur fünf Prozent dieser Rate zugestanden werden: 1×10^-5 Todesfällen pro Person und Jahr.

Dabei rechnen wir mögliche Verletzungen in Todesfälle um: hundert Leichtverletzte entsprechen zehn Schwerverletzten entsprechen einem Toten.

Und weil Unfälle mit einer großen Anzahl von Toten gesellschaftlich als besonders schwerwiegend wahrgenommen werden, modifizieren wir den oben errechneten Schwellwert und senken ihn für über hundert Tote linear immer weiter ab:

Minimale Endogene Mortalität

Eigenschaften

Die Minimale Endogene Mortalität ist ein absolutes Maß, sogar mit konkretem Zahlenwert. Dadurch sticht sie aus der Konkurrenz von ALARP und GAMAB hervor.

Jedoch basiert der Zahlenwert auf nur einer einzelnen Studie.

Die Minimale Endogene Mortalität ist insofern fundiert, als dem Risikoziel eine Begründung zugrundeliegt.

Sie ist aber auch sehr simplistisch und bildet komplexe Zusammenhänge nicht ab.

Inzwischen ist die Minimale Endogene Mortalität als Riskoakzeptanzkriterium mehr oder weniger ausgestorben. Sie findet höchstens noch Verwendung im Zusammenspiel mit ALARP oder GAMAB, um eine harte Grenze zu definieren. So kann diese Minimale Endogene Mortalität als Schwelle zur “broadly acceptable region” in ALARP dienen.

Das Risikoakzeptanzkriterium GAMAB

Kommen wir nach dem Beitrag zu ALARP nun zu einem anderen Risikoakzeptanzkriterium. GAMAB kommt aus Frankreich und steht für „Globalement au moins aussi bons“ und bedeutet damit „generell mindestens so gut“.

Ebenfalls verwendet wird GAME – „Globalement au moins èquivalent“.

GAMAB wurde hauptsächlich im Bereich von Verkehrsmitteln wie Eisenbahnen verwendet, wird aber auch dort von ALARP zunehmend verdrängt.

Dieses Riskoakzeptanzkriterium ist recht einfach: sei mindestens so gut wie das Referenzsystem.

Das Referenzsystem ist häufig das Vorgängersystem oder ein vergleichbares System. Wenn ich eine neue U-Bahn bauen möchte, muß sie mindestens so sicher sein wie andere U-Bahnen.

Eigenschaften von GAMAB

GAMAB ist ein absolutes Maß. „Besser als“ ist eine klare Relation. Letztenendes werden zwei oder mehrere Zahlen verglichen.

Wachsen die Anforderungen mit, so wie bei ALARP? Im Prinzip ja, denn die Monotonie („mindestns so sicher wie“) sorgt für einen Aufwärtstrend. Allerdings kann es über längere Zeit auch Stillstand geben, es gibt keinen expliziten Zwang, besser zu werden.

Hochproblematisch kann die Notwendigkeit eines Referenzsystems sein. Gerade neue, innovative Systeme haben häufig kein direkt vergleichbares System. Denn das Referenzsystem muß ähnlich genug sein, um einen seriösen Vergleich miteinander durchzuführen.

Die Bewertung ist konkreter als bei ALARP, aber nicht notwendigerweise leichter. Das System muß in Funktionseinheiten heruntergebrochen werden (beispielsweise Bremsen oder Antrieb) und dann mit dem Referenzsystem verglichen werden. Diese Abbildung muß man erst einmal erstellen können.

Dazu muß auch die Struktur beider Systeme gut bekannt sein. Das betrifft zum Beispiel Systemgrenzen, Risiken und Gefährdungen. Das eigene System sollte man wohl kennen, aber möglicherweise ist man noch in einem sehr frühen Entwicklungsstadium und das System ist noch nicht so weit ausdetailliert. Das Referenzsystem ist möglicherweise ein System der Konkurrenz und das Wissen um dessen Interna ist eingeschränkt.

Ebenfalls ist unklar, ob ein Teilsystem unsicherer sein darf als das Referenzsystem, solange ein anderes Teilsystem das wieder ausgleicht.

Ein echter Vorteil ist, daß dieses Risikoakzeptanzkriterium trotz aller Schwierigkeiten einfach zu vermitteln ist: „besser als“ versteht auch jeder Laie.

GAMAB ist insgesamt jedoch eher simplistisch und bildet komplexe Zusammenhänge nicht ab.

Das Risikoakzeptanzkriterium ALARP

ALARP steht für “as low as reasonably practicable” und ist ein verbreitetes Risikoakzeptanzkriterium. Infolge verschiedentlicher Standardisierung im Automatisierungs-, Prozeß- und Automobilbereich (IEC61508 als Basisnorm, darauf aufbauend IEC 61511 oder angelehnt ISO 26262) ist ALARP heutzutage das verbreitetste – wenn nicht in der Praxis gar das einzige – Risikoakzeptanzkriterium.

Im Strahlenschutzbereich kennt man ALARP auch, dort aber unter dem Akronym ALARA: “as low as reasonable achievable”. Inhaltlich sind ALARP und ALARA jedoch identisch.

ALARP stammt aus England und ist unter einem weiteren Akronym – SFAIRP (“so far as is reasonably practicable”) – im dortigen Arbeitsschutzgesetz verankert. Entwickelt wurde das Prinzip aufgrund eines Gerichtsprozesses, in dem es um die Haftung nach einem Grubenunglück im Bergbau ging. Das Gericht entwickelte Grundsätze, um den Fall bewerten zu können, und das Parlament hat diese dann später aufgegriffen:

Reasonably practicable is a narrower term than “physically possible” and implies that a computation must be made […] in which the quantum of risk is placed in one scale and the sacrifice involved in the measures necessary for averting the risk (whether in time, trouble or money) is placed in the other.

Court of Appeals, Edwards v. National Coal Board, 1949

Normalerweise wird in jeder Erklärung von ALARP nun das Karottendiagramm gezeigt. Ich verstehe nicht warum, denn weder Farbe noch Form (die beide an eine Karotte erinnern) stellen irgendeine Information dar. Ich begnüge mich mit ein paar kurzen Absätzen, die ALARP ebenfalls vollständig beschreiben.

Unacceptable region

Die inakzeptable Region ist schnell erklärt: wenn das technische System nach allen ergriffenen Maßnahmen noch immer ein Risiko aufweist, das von der Gesellschaft als inakzeptabel hoch betrachtet wird, dann darf das System so nicht gebaut werden.

Was bedeuten „inakzeptabel“ und „für die Gesellschaft“? Das ist absichtlich so schwammig formuliert. Intuitiv bedeutet es, wenn man einem vernünftigen Menschen das System erläutert und er entsetzt ist, dann ist es inakzeptabel. Praktisch heißt es, daß man mit seiner benannten Stelle, die ein Zertifikat ausstellen soll, das Thema diskutiert.

Noch praktischer heißt es aber: Common practices und Stand der Technik beachten. Die meisten von uns bauen keine revolutionären Systeme. Wenn ich eine hydraulische Presse baue, dann weiß ich, daß bereits hydraulische Pressen auf dem Markt sind, es also möglich sein muß. Und wenn ich im großen und ganzen dieselben Maßnahmen in der Entwicklung ergreife, werde ich auch vergleichbar gut sein.

Dieser inakzeptable Bereich spielt in der Praxis keine Rolle. Niemand baut Systeme, die Gefahr laufen, dort hinein zu fallen. Solche System mögen in einem allerersten Brainstorming auf den Tisch kommen, werden dann aber schnell „entschärft“ oder fallengelassen.

Ein System im inakzeptablen Bereich muß eine weitere Risikominderung erfahren, oder es wird evben nicht existieren.

Tolerable region

Der tolerierbare Bereich (auch ALARP-Bereich) erfordert eine ständige Abwägung im Einzelfall: man darf sich nicht darauf ausruhen, den tolerierbaren Bereich erreicht zu haben und weitere Risikominderungen weglassen, aber man muß auch keine Risikominderung um jeden Preis betreiben.

Der tolerierbare Bereich ist eben kein Zielbereich, und sobald ich drin bin, habe ich gewonnen. Er ist der Bereich, wo ich weitere Maßnahmen zur Risikominderung ergreifen soll, aber solche Maßnahmen auch im Einzelfall ablehen darf, weil ihr Aufwand oder ihre Kosten in keinem Verhältnis zur Risikominderung stehen.

Das ist der Bereich, in dem man sich in einer normalen Entwicklung befindet. Hier fordert die benannte Stelle immer weitere Maßnahmen (aus Sicht der entwickelnden Unternehmens bis zum Stillstand des Projekts), läßt sich aber überzeugen, wenn man aufzeigen kann, daß die ergriffenen Maßnahmen wirksam sind und man alles getan hat, was vernünftig ist.

Broadly acceptable region

In dieser Region ist das Risiko bereits so weit gemindert, daß jede weitere Diskussion als Zeitverschwendung betrachtet wird. Man könnte noch weitere Maßnahmen ergreifen, diese wären auch nicht übertrieben aufwendig und teuer.

Aber das verbliebene Restrisiko ist bereits so niedrig, daß man nicht weiter darüber nachdenken muß. Die gefährdete Person könnte ja auch von einem Blitz getroffen werden, während sie gleichzeitig von einem Auto überfahren wird.

In diese Region kommt man natürlich ebenfalls so gut wie nie. Sie stellt aber klar, daß irgendwo einmal ein Ende der Risikominderung vertretbar ist.

Ab welchem Wert für das Restrisiko gilt das? Wiedrum gibt es keine konkrete Zahl. Wie immer entscheidet zunächst der Entwickler, dann die benannte Stelle und zuletzt das Gericht.

Eigenschaften von ALARP

ALARP ist ein subjektives Maß. Unterschiedliche Personen können vertretbar zu unterschiedlichen Bewertungen kommen.

Die Anforderungen an technische Systeme „wachsen mit“, wenn die gesellschaftliche Einstellung sich ändert, beispielsweise weil kürzlich ein aufsehenerregender Unfall in diesem Bereich durch die Presse ging.

Ebenso wachsen die Anforderungen mit, wenn der Stand der technik sich ändert. Heute sind wir sicherlich an einem Punkt, an dem der Einsatz statischer Analysewerkzeuge für Programmcode üblich ist, also sollte man sie auch einsetzen. Vor dreißig Jahren sah das noch anders aus.

All dies bedeutet aber auch, daß ALARP einem wenig Anleitung und Halt gibt, man steht mit der Bewertung doch ziemlich alleine da.

Ein Vorteil ist sicherlich, daß kein Referenzsystem notwendig ist, ALARP kann auch für völlig neuartige Systeme angewendet werden.

Menschenleben werden durch ALARP jedoch indirekt pekuniär bewertet, denn man könnte mit mehr Kosten und Aufwand immer noch das Risiko mindern, der ALARP-Bereich sagt einem jedoch, daß auch irgendwann Schluß sein darf. Dieses Aufwiegen von Leben gegen Geld ist nicht allgemein akzeptiert.

Safety in der Karibik

Eine etwas makabre Interpretation von Safety beziehungsweise Arbeitssicherheit finden wir in einem Buch von 1844.

Dabei werden sie [die Arbeiter] dann öfters schläfrig und kommen, ohne es zu merken, mit einem Finger zwischen die Walzen, die dann sogleich den Finger und darauf die Hand zwischen sich hineinrädern und ganz zerquetschen. Darum steht immer einer mit einem scharfen Beile dabei, der sogleich den Finger oder die Hand abhaut, wenn sie hineingekommen ist, damit nicht der ganze Mensch gerädert wird.

Vollständig praktische Bearbeitung der sechs ersten Lebensverhältnisse nach Graser: ein nothwendiges Hand- und Hülfsbuch für alle Lehrer in den teutschen Schulen, welche einen angenehmen und geistigen Unterricht ihren Schülern ertheilen wollen. Sechstes Lebensverhältniß, Seite 285, „Das Zuckerrohr“

So begann das tatsächlich. Das Menschenleben war wenig wert, schmerzhaft war für den Besitzer der Plantage vornehmlich der Arbeitsausfall und Stillstand einer Maschine. Da war „Hand ab“ bereits eine Art der Fürsorge.

Statistische Prozeßlenkung nach W. Edwards Deming

Einführung

Manchmal auch „Vater des Qualitätswesens“ genannt, prägte William Edwards Deming das Feld im 20. Jahrhundert.

Seine Arbeit konzentrierte sich auf Produktionsprozesse, Fertigungsbereiche in der Automobilindustrie und anderen erzeugenden Industrien, aber ich glaube, daß vieles davon auch in anderen Gebieten anwendbar ist, Softwareentwicklung eingeschlossen. Schließlich haben auch davon weiter entfernte Gebiete wie die Medizin inzwischen Notiz von Demings Arbeit genommen.

Doch selbst wenn Sie keine direkte Anwendbarkeit auf Ihre tägliche Arbeit sehen, denke ich, es schadet nicht, ein wenig über Deming und seine Arbeit zu wissen. Kulturelle Anreicherung, sozusagen. Deming hatte großen Einfluß auf die Weltwirtschaft, wenn auch indirekt.

Deming hatte eine Anstellung als Wirtschaftsprofessor an einer Wirtschaftsuniversität und arbeitete nebenher als Consultant. Er sprach sich für die Anwendung statistischer Methoden im Qualitätsmanagement in der Industrie aus. Außerdem hielt er es für wichtig, auch Manager eine Einführung in statistische Methoden zu geben, damit sie nicht nur Ad-hoc-Methoden verwenden.

Deming schrieb mehrere Bücher, die bekanntesten sind wohl “The New Economics of Industry, Government, and Education” und “Out of the Crisis”. An den Titeln sehen Sie bereits, sie sind thematisch breit aufgestellt, es sind keine Statistiklehrbücher.

Vieles in diesen Büchern ist politisch. Er schreibt über Amerika in der Welt. Die Themen wechseln, es geht um Managerethik, aber auch um die Post. Vieles ist nicht gut gealtert, beispielsweise wenn er sich verächtlich darüber äußert, daß die Regierung so ein wunderbares Monopol wie Bell Telephone zerschlagen hat. Anderes wirkt wahllos, wie beispielsweise mehrere Absätze über den Zusammenhang von Zeugnisnoten und Schlägen für Kinder. Zumindest in “New Economics“ scheinen die ersten Kapitel eher „was ich schon immer mal sagen wollte“ zu sein. Glücklicherweise kommt der Leser zum inhaltlichen Teil, sobald er die ersten paar Kapitel überstanden hat.

Deming und Systeme

Ein Eckpfeiler seiner Managementphilosophie lautet, daß das Problem nicht die Menschen selbst sind.

Ranking is a farce. Apparent performance is actually attributable mostly to the system that the individual works in, not to the individual himself.

Abolish ranking […] Manage the whole company as a system.

Klingelts beim letzen Zitat? Jack Welsh bei General Electric? Microsoft bis noch vor kurzem? Diese Unternehmen (und ihre Manager) glaubten fest daran, daß ihre Angestellten Gegenspieler seien. Jegliche unzufriedenstellende Leistung muß daran liegen, daß die Angestellten entweder inkompetent oder faul sind, also muß man die Low-Performer entlassen und durch „Rockstars“ ersetzen.

Deming dachte stets in Systemen, nicht in Individuen. In seinem Workshops für Manager führte er häufig zwei Experimente vor: das Rote-Murmeln-Experiment und das Trichterexperiment. Wir kommen später noch zu letzteren, aber das Rote-Murmeln-Experiment ist an dieser Stelle anwendbar. Leider ist es auch recht langweilig, geradezu banal.

Ich erspare Ihnen eine Schritt-für-Schritt-Reportage und fasse es nur kurz zusammen. Wenn Sie an weiteren Details interessiert sind, gibt es auf YouTube reihenweise Videos, die Deming selbst dabei zeigen, wie er Zuhörer auf der Bühne holt und mit ihnen das Experiment durchführt.

Im Rote-Murmeln-Experiment fischen mehrere Personen („Arbeiter“) mit kleinen Paddeln Murmeln aus einer Kiste. Es gibt rote Murmeln und weiße Murmeln, und die Paddel haben unregelmäßig große Vertiefungen, in denen Murmeln sitzen und herausgefischt werden können. Die Arbeiter haben Weisung, so viele weiße Murmeln und so wenige rote Murmeln wie möglich herauszufischen. Die roten Murmeln repräsentieren dabei Defekte. Das Experiment geht über mehrere Runden, und es gibt jede Menge Vorgaben („Sie müssen das Paddel so halten“), die Leistung der Arbeiter wird jeweils erfaßt und ausgewertet.

Das Experiment ist derart aufgesetzt, daß die Leistung des einzelnen Arbeiters im wesentlich durch Zufall bestimmt ist. Es gibt praktisch keinen Einfluß von Können darauf, welche Art Murmel er erwischt. Und das ist der Punkt. Das System führt zu zufälligen Ergebnissen, der einzelne Arbeiter ist machtlos. Daher macht es wenig Sinn, gute Leistungen zu belohnen oder schlechte Leistungen zu bestrafen. Langweilig, ich weiß. Versuchen Sie einmal, dem Experiment fünfzehn Minuten lang zuzusehen.

Das bedeutet nicht, daß Menschen unwichtig seien, Deming glaubt im in Wirklichkeit das genaue Gegenteil:

The most important application of the principles of statistical control of quality […] is in the management of people.

Aber das wichtigste, was man aus diesem Experiment mitnimmt, ist folgendes: Systeme sind wichtig.

Demings Bedeutung

Deming versuchte, seinen Ideen in Amerika in die Praxis umzusetzen, aber er wurde von amerikanischen Industriellen weitgehend ignoriert. Das ist nicht sonderlich überraschend, wenn man sich die Zeit vergegenwärtigt, besonders kurz nach dem Zweiten Weltkrieg: Amerika war der Herrscher der Welt. Europa lag in Schutt und Asche, teilweise rauchte es noch. China war noch lange nicht der High-Tech-Lieferant, das es heute ist, sondern ein armes Agrarland. Das Akronym BRIC war noch nicht einmal erfunden, und von „Tigerstaaten“ hat noch niemand gesprochen.

Warum sollte Amerika sich ändern? Die Zukunft war rosig.

Nicht nur Europa lag in Ruinen, auch Japan, vielleicht sogar noch mehr. Amerika hatte Japan besetzt, und eine Anekdote berichtet davon, daß General MacArthur vor lauter Frust explodierte, als mal wieder ein Telefonat mit einer anderen japanischen Insel einfach abbrach. Er wollte Japan deshalb wiederaufbauen, zumindest einige Infrastruktur.

Ganz so war es wahrscheinlich nicht, die Geschichte ist ja nun apokryph, und auch viele andere sprachen sich dafür aus, Japan beim Wiederaufbau zu unterstützen. Und so schifften viele Experten aller möglichen Fachgebiete ein und kamen nach Japan.

Deming war einer von ihnen. Und plötzlich war er respektiert, ja sogar gefragt.

Die Japaner hatten wenig überraschend auch großes Interesse daran, ihr Land wiederaufzubauen. Sie arbeiteten schwer an ihrem Wirtschaftswunder. Wir wissen, wie das ausging.

Auf YouTube findet man faszinierende Videos von Amerikanern, die japanische Autos zertrümmern. Mit Baseballschlägern. Sogar Politiker in Wahlkampfvideos tun japanischen Produkten rohe Gewalt an.

Ich kann nur annehmen, daß die Japaner sich davon nicht sonderlich beeindrucken ließen, wie Amerikaner ihren eigenen, selbst bezahlten Besitz zerstörten.

Gut, aber als Deming nach Japan ging, wußte noch niemand, wie sehr Japan aus der Asche emporsteigen würde. MacArthur wollte sicher nicht, daß Detroit eine Geisterstadt verlassener Fabriken würde, aber der Mann wollte eben telefonieren!

Wie gesagt, die Japaner waren sehr daran interessiert, was Deming ihnen beizubringen hatte. Er war in Qualitätsmanagementkreisen durchaus bekannt, nur die praktische Umsetzung konnte er in Amerika nie wirklich angehen. Es begann mit der Ingenieursvereinigung, er knüpfte Kontakte zum mittleren Management, später zum Topmanagement, und er lehrte sie das, woran er glaubte. Die Führungsriege (sprich: CEOs der großen japanischen Konglomerate) besuchten seine Seminare. Er war ein Star, und er erhilt unzählige Auszeichnungen und Ehrungen in Japan.

Deming hat all die neumodischen Dinge, mit denen die Japaner ihr Wirtschaftswunder vollbrachten, nicht erfunden. Er hat weder das Toyota Production System erfunden, noch Kanban, noch Total Quality Management.

Aber seine Schüler taten es.

All dies fand hauptsächlich von den Fünfzigern bis in die Achtziger statt. Auf breite Anerkennung in Amerika mußte Deming aber noch bis viel später – kurz vor seinem Tod – warten.

Der Demingkreis

Diese Japaner kamen nach ihm, aber auf wessen Schultern stand Deming?

Walter Shewhart.

Vieles von dem, wofür Deming bekannt ist, gab es bereits in der ein oder anderen Form bei Shewhart. Was kein Zufall ist, Deming studierte unter Shewhart und arbeitete später mit ihm zusammen. Und am meisten bekannt von Shewharts Arbeit ist der Shewhartkreis:

Plan – Do – Check – Act. Eine Grundlage des Projektmanagements. Auch PDCA-Kreis genannt, PDCA-Zyklus, Scrum-Sprint oder – Überraschung! – der Deming-Kreis.

Deming selbst nannte dieses Konzept stets „Shewhartkreis“.

Doch Deming änderte den Shewhartkreis auch in einer Hinsicht. Er strich “Check” und ersetzte es durch “Study”. Es scheint unwesentlich, aber Deming bestand darauf. Für seine Ohren klang “check” wie “inspect”. Deming haßt Inspektion. Mit Inbrunst. Lesen Sie seine Bücher, er hört gar nicht mehr auf, über das Grundübel der Inspektion zu schreiben.

You can not inspect quality into a product.

Aber was ist Inspektion? Inspektion ist, wenn Sie ein gefertigtes Teil nehmen (eine bestückte Leiterplatte, ein Auto, etc.), seine Eigenschaften vermessen und diese mit einer Spezifikation vergleichen. Auf der Basis dieses Vergleichs entscheiden Sie dann, ob Sie das Teil ausliefern oder wegwerfen (oder einschmelzen und neu fertigen) oder reparieren.

Die Idee dabei ist, wegzuwerfen, was außerhalb der Spezifikation liegt. Sie beginnen mit der Spezifikation und fertigen “to spec”.

Eliminate the need for inspection on a mass basis by building quality into the product in the first place.

Dieses letzte Zitat ist leicht miszuverstehen. Deming sagt nicht „fertigen Sie einfach Teile, schauen Sie diese niemals an und warten Sie einfach auf Kundenreklamationen“. Wenn Sie Ihre Fertigung aufsetzen, werden Sie viele Versuche brauchen, und Sie werden nach jedem Versuch genau anschauen wollen, was das Ergebnis ist. In der laufenden Produktion möchten Sie ebenfalls Stichproben Ihres Fertigungsoutput ziehen und bewerten. Aber Sie sollte nicht jedes Teil vermessen und jeweils für jedes Teil einzeln entscheiden, ob Sie es verkaufen oder wegwerfen.

Was sonst sollen Sie tun?

Statistische Prozeßlenkung

Der Produktionsprozeß kann anhand einer Produktionsfunktion P(μ,σ) modelliert werden, die annähernd normalverteilt ist, mit μ als Erwartungswert und σ als Standardabweichung.

Produktionsfunktion und Verlustfunktion

Warum eine Normalverteilung? Weil es in der Praxis ganz gut zu funktionieren scheint (der zentrale Grenzwertsatz sagt uns, daß wir unter recht laxen Bedingungen eine annähernde Normalverteilung sehen werden). Und weil es „schöne“ Theoreme für die Normalverteilung gibt, so daß wir damit praktische Dinge errechnen können.

Auf der x-Achse ist ein (kontinuierlicher) Meßwert abgetragen, vielleicht die Länge oder das Gewicht des produzierten teils. Der Nullpunkt zeigt an, was die „gewollte“ Länge oder das „gewollte“ Gewicht ist, also was der Produktionsprozeß tun soll.

Auf der y-Achse ist die Anzahl der produzierten Teile mit dem entsprechenden X-Meßwert abgetragen.

Das ist natürlich eine Vereinfachung. Ihr Produktionsprozeß mag nicht normalverteilt sein, sein Graph mag asymmetrisch, schief oder mit Sprüngen darin sein. Für eine allgemeine Erläuterung der Methode spielt das keine Rolle.

Zusätzlich zur Produktionsfunktion gibt es eine Verlustfunktion L(x). Es spielt eine Rolle, wir lang oder schwer das Teil ist. Wenn es nahe am gewünschten Wert ist, ist es vermutlich okay. Wenn es weit entfernt ist, dann ist es wohl wertlos und unbrauchbar. Hier ist als Verlustfunktion eine Parabel gewählt.

Auch diese Vereinfachung muß in der realen Welt nicht zutreffen. Wenn Sie den Bus erreichen möchten und eine halbe Stunde zu früh sind, ist das ärgerlich. Wenn Sie fünf Minuten zu früh sind, ist es gut. Wenn Sie nur eine Minute zu früh sind, ist es besser, aber nicht viel besser. Aber wenn Sie eine Minute zu spät sind, haben Sie den Bus verpaßt und warten eine geschlagene Stunde. In diesem Beispiel wäre Ihre „Verlustfunktion“ in etwa eine Parabel links von μ, aber direkt rechts davon ein Sprung zum Maximum von L(x).

Allgemein gesprochen muß die Parabel der Verlustfunktion auch nicht um den Erwartungswert der Produktionsfunktion zentriert sein.

Eine neue Funktion f(μ,σ) kombiniert nun die Produktionsfunktion und die Verlustfunktion, indem sie beide Funktionen miteinander multipliziert und über den gesamten Definitionsbereich integriert. Sie wägt die Zahl der produzierten Teile an einem bestimmten x in der einen Hand und den dadurch verursachten Verlust an demselben x in der anderen Hand, und bestimmt so einen Gesamtverlust. Und nun haben Sie ein Optimierungsproblem: wann wird f minimal?

Nebenbei: Ich würde vermuten, daß man etwas mehr mathematische Maschinerie benötigt, beispielsweise eine echte Faltung, oder? Sofern ich seine Notation nicht völlig mißverstehe, verwendet Deming aber tatsächlich eine Multiplikation.

Produktionsfunktion und Verlustfunktion (zentriert)

Für übliche Funktion P und L (und besonders in diesem vereinfachten Beispiel) ist offensichtlich: μ sollte dort sitzen, wo die Verlustfunktion ihr Minimum hat. Wenn dies der Fall ist, verursachen die meisten Teile nur geringe Verluste, und die Teile, die relevante Verluste verantworten, sind nur wenige.

Eine weitere Möglichkeit ist, den Produktionsprozeß zu verbessern, so daß der Graph der Produktionsfunktion enger wird, oder in anderen Worten, so daß die Standardabweichung (und damit die Varianz) kleiner wird. Teile weit jenseits von μ sind nach wie vor verlustreich, aber ihre Anzahl nimmt deutlich ab.

Normalerweise bringt es mehr, den Prozeß auf die gewünschte Länge, Gewicht, etc. der Teile zu zentrieren, als den Prozeß enger zu machen, jedoch um das falsche μ herum. Also lehrt Deming uns, zunächst den Prozeß zu zentrieren (und damit μ an die Stelle zu legen, wo es gewünscht ist) und erst dann daran zu arbeiten, die Standardabweichung zu verringern.

Was bedeutet „den Prozeß zentrieren“? Zunächst bedeutet es, die Produktionsanlage korrekt einzurichten. Wenn die Maschine auf eine Teilelänge von fünf Zentimetern eingestellt ist, mag sie dennoch ein paar Teile produzieren, die nur vier Zentimeter lang sind. Aber wenn Sie tatsächlich vier Zentimeter benötigen, wäre es dumm, sich auf die Standardabweichung zu verlassen. Stattdessen sollten Sie die Maschine auf vier Zentimeter einstellen. Die allgemeine Bedienung der Maschine gehört auch in diese Kategorie. Wenn der Maschiennführer nicht verstanden hat, wie er die Maschine korrekt bedient, kann das Ergebnis systematisch falsch sein.

DieStandardabweichung zu verringern dreht sich eher um Instandhaltung und Wartung. Muß die Maschine mal wieder geölt werden? Gibt es defekte Teile, die ersetzt werden sollten? Aber auch hier spielt die Bedienung eine Rolle. Ein Maschinenführer mag die Maschine anders bedienen als ein anderer. Es ist wichtig, eine offizielle Art der Bedienung festgelegt zu haben und seine Arbeiter richtig zu schulen, wenn eine geringe Standardabweichung herauskommen soll.

Fehlerarten

Lassen Sie uns über fehler sprechen. Es gibt zwei grundlegend verschiedene Kategorien von Fehlern, und Deming ist unnachgiebig, wenn es darum geht herauszufinden, zu welcher Kategorie ein beobachteter Fehler gehört: es gibt besondere Fehler (“special causes of variation”) und gewöhnliche Fehler (“common causes of variation”).

Wenn Sie mit sicherheitsgerichteten System arbeiten, mag Sie die Begrifflichkeit kurz stutzen lassen. “Common causes” in diesem Sinne sind nicht Fehler gemeinsamer Ursache, wie ein einzelner elektromagnetischer Puls, der in zwei verschiedene Leiter einkoppelt. Hier bedeutet “common“ einfach „gewöhnlich“, „normal“.

Warum ist es wichtig, in welche Kategorie ein Fehler gehört? Weil sie grundverschieden behandelt werden müssen!

Gewöhnliche Fehler (bei Shewhart: “chance causes” – Zufallsfehler) passieren zufällig. Sie stellen die normale Prozeßstreuung dar. Sie passieren ständig, und es gibt keine einzelne spezifische Handlung, um sie zu beseitigen.

Besondere Fehler (bei Shewhart: “assignable causes” – zuordenbare Fehler) werden häufig durch einen Arbeiter auf unterster Ebene verursacht. Der Begriff “assignable cause” ist recht gut, weil er die Intuition „es gibt etwas oider jemanden, auf den wir zeigen können“ abbildet.

Beispielsweise könnte ein Bagger am falschen Ort baggern und plötzlich hat Ihre Fabrik keinen Strom mehr. Das wäre ein klassischer besonderer Fehler. Sie können den Schuldigen identifizieren: „der Bagger“, „der Baggerfahrer“, „der Planer“ oder vielleicht auch „derjenige, der nicht daran gedacht hat, eine redundante Stromversorgung vorzusehen“. Es passiert nicht regelmäßig, und Sie würden es wohl kaum als Teil Ihres normalen Produktionsprozesses bezeichnen.

Doch wenn Sie ein großes, landesweit operierendes Tlekommunikationsunternehmen sind, dann ist „Bagger trennt Kabel“ vermutlich kein besonderer Fehler, sondern eher „Dienstag“. Es passiert oft genug, daß Sie es nicht als einzigartigen Akt Gottes betrachten sollten, sondern als ein Problem, das Sie statistisch modellieren können, und wo die Vermeidung dieses Fehlers vermutlich zu Ihrem normalen Geschäft und seinen Prozessen gehört.

Diese besonderen Fehler können Sie als unvorhersehbare und statistisch unmodellierbare Fehlerquelle betrachten, die die gewöhnlichen Fehler überlagern. Dadurch werden die gewöhnlichen Fehler schwierig zu modellieren und zu behandeln.

Wie behandeln Sie also all diese Fehler?

Für besondere Fehler ist es einfach: Sie eliminieren sie einen nach dem anderem, denn ansonsten ist ihr Prozeß unvorhersehbar und damit außer Kontrolle. Sie können nicht durch eine Weisung von oben behoben werden, sondern sie müssen auf unterer Ebene (wo sie üblicherweise auftreten) im Einzelfall behoben werden. Da es sich um zufällige Ereignisse handelt, werden Sie niemals alle besonderen Fehler für immer beheben, aber Sie müssen es versuchen, so gut es geht.

Gewöhnliche Fehler werden ganz anders behandelt: Sie beherrschen Sie, indem Sie Ihren Prozeß unter Kontrolle bringen. Das bedeutet, den Prozeß zu zentrieren und die Standardabweichung zu verringern. Und dann kommt der allerwichtigste Teil.

Finger weg!

Ja, wirklich. Sie behandeln gewöhnliche Fehler alle auf einmal, indem Sie den Prozeß unter Kontrolle bringen. Sie versuchen niemals, einen dieser Fehler gesondert zu beheben.

Aber was passiert, wenn Sie einen gewöhnlichen Fehler für sich allein behandeln? Gut, daß Sie fragen, denn jetzt kann ich Ihnen etwas über Demings zweites berühmtes Experiment erzählen, das Trichterexperiment.

Das Trichterexperiment

Im Trichterexperiment legte Deming ein Blatt Papier auf den Tisch, markierte einen Punkt in der Mitte als Ziel (nennen wir ihn Z) und hielt einen Trichter etwas über den Zielpunkt. Dann warf er eine Kugel durch den Trichter und markierte, wo die Kugel aufs Papier gefallen war. Üblicherweise war das nicht genau der Zielpunkt, sondern knapp daneben, nennen wir diesen Punkt T.

Und nun gibt es vier verschiedene Strategien, mit denen er fortfuhr. Jede dieser Strategien bestimmt, wir er den Trichter nach jeder Kugel bewegte (und legte damit einen neuen Zielpunkt Z‘ fest). Er warf wiederholt Kugeln in den Trichter, der jeweils gemäß der Strategie bewegt wurde, und markierte die weiteren Treffpunkte mit T‘, T“ und so weiter. Nach ein paar Dutzend Kugeln sah man dann ein Verteilungsmuster.

Die erste Strategie ist genau die, die Deming für gewöhnliche Fehler empfiehlt: Finger weg! Der Trichter bleibt, wo er ist, also Z = Z‘ = Z“.

Experiment 1

Die Zielverteilung ist kreisförmig und ziemlich eng.

Die zweite Strategie spiegelt wider, was viele Menschen tun: sie bewegen den Trichter anhand einer vermuteten systematischen Abweichung. Wenn eine Kugel den Punkt T trifft und dieser Punkt T drei Millimeter links vom Zielpunkt Z ist, dann bewegen sie den Trichter drei Millimeter nach rechts. Der neue Zielpunkt Z‘ ist also drei Millimeter rechts von Z.

Das ist wie Artillerieschießen. Über den Feind hinweggeschossen? Ziel das nächste Mal kürzer! Es ist auch, was passiert, wenn man gewöhnliche Fehler als besondere Fehler behandelt.

Experiment 2

Das resultierende Muster ist nach wie vor kreisförmig, hat aber eine um etwa 30% größere Fläche.

Die dritte Strategie ähnelt der zweiten. Jedoch vergleicht man nicht den Treffpunkt T mit dem letzten Zielpunkt, sondern immer mit dem Originalzielpunkt Z in der Mitte des Blatts Papier.

Experiment 3

Es entsteht ein Zielmuster, das ein wenig wie ein Propeller aussieht. Der Zielpunkt oszilliert zwischen zwei Quadranten, und das gesamte Experiment divergiert. Das bedeutet, der Fehler wird größer und größer.

Die vierte Strategie sieht ähnlich wild aus. Deming zielte einfach immer auf den letzten Treffpunkt, also Z‘ = T. Wieso sollte man so etwas tun? Sie würden es natürlich nicht tun, in diesem Experiment. Aber es ist zienmlich genau das Spiel Stille Post. Sie zielen dorthin, was der letzte Mitspieler Ihnen gesagt hat. Oder, in anderen Worten, dieses Verhalten ist genau das, wenn man jemandem etwas ohne ein stabiles und gemeinsames Lehrbuch beibringt. Der eine Maschinenführer lernt den seinen Nachfolger an, der Nachfolger versteht das meiste, aber nicht alles ganz exakt. Wenn der Nachfolger nun wiederum seinen Nachfogler anlernt, und der ursprüngliche Maschinenführer nicht mehr zur Verfügung steht, dann divergiert das Training genau wie die Kugeln hier.

Experiment 4

Im Ergebnis sieht das Muster so wie hier aus: es divergiert schnell, und im allgemeinen auch in ziemlich direkter Linie in einer Richtung.

Verschiedene Fehlerarten unterscheiden

Gewöhnliche Fehler und besondere Fehler können mathematisch auseinandergehalten werden. Die Basis für diese Unterscheidung ist die Qualitätsregelkarte, auf englisch “control chart” oder zuweilen auch “Shewhart chart” oder “process-behaviour chart”.

Die y-Achse zeigt eine kontinuierliche Messung, 0 korrespondiert mit dem Ideal. Es gibt ein “upper control limit” (UCL) und ein “lower control limit” (LCL). Beide sitzen respektive bei +3σ und -3σ.

UCL und LCL werden aus echten Prozeßdaten errechnet! Sie sind keine Spezifikationsgrenzen.

Using the manufacturer’s claim as the lower control limit (action limit) is confusing special causes with common causes, making matters worse, guaranteeing trouble forever.
A wiser procedure would be to get statistical control of the machine, under the circumstances in place. Its performance might turn out to be 90 per cent of the maximum speed as specified by the manufacturer, or 100 per cent, or 110 per cent. The next step would be the continual improvement of the machine and use thereof.

Soweit ich es verstehe, gibt es kein hartes Theorem, warum UCL und LCL bei +/-3σ sitzen müssen, sondern es gibt empirische Evidenz für diese Schwellen und auch statistische Argumente, warum sie ungefähr dort liegen sollten.

Sie plotten Ihre Meßwerte in die Qualitätsregelkarte. Dies ist keine Inspektion, die Deming ja so verachtet. Sie prüfen nicht einzelne Teile gegen definierte Toleranzen und entscheiden daraus, welche teile Sie behalten. Sie plotten das Verhalten Ihres Prozesses. Jetzt ist es einfach: alles innerhalb des +/-3σ-Bandes ist ein gewöhnlicher Fehler, alles außerhalb dieses Bandes ist ein besonderer Fehler.

Nur daß das zu einfach wäre und die Wirklichkeit nicht angemessen abbilden würde. Deswegen wurden verschiedene Regelwerke entwickelt, die beiden bekanntesten sind die Western Electric Rules und die Nelson Rules. Beide sind etwas komplizierter als nur „drinnen oder draußen?“, sie schauen auf bestimmte Läufe von Meßwerten. Zum Beispiel sieht eine Meßreihe, die abwechselnd zwischen der positiven und der negativen Seite der y-Achse springt, nicht nach einem gewöhnlichen Fehler aus, sondern eher nach einem besonderen Fehler, der eine Oszillation bewirkt.

Ein Prozeß heißt „unter Kontrolle“, wenn nur gewöhnliche Fehler übrigbleiben. Es mag kein besonders guter Prozeß sein, er mag nicht zentriert sein or er mag eine große Standardabweichugn aufweisen, aber er ist unter Kontrolle und statistisch modellierbar. Das ist ein großes Plus, und nun können Sie Ihren Prozeß verbessern.

Doch wenn die Qualitätsregelkarte zeigt, daß die meisten Ihrer Fehler besondere Fehler sind, haben Sie ein Problem: Ihr Prozeß ist am Anschlag und definitiv nicht unter Kontrolle. Es mag eine alte, abgenutzte Maschine sein, ungenügend ausgebildete oder gestreßte Arbeiter, aber Sie müssen den Prozeß erstmal unter Kontrolle bekommen, indem Sie die besonderen Fehler zuerst angehen. Erst dann können sie Ihren Prozeß verbessern.

Zusammenfassung

  • Systeme sind wichtig
  • Von absoluten Spezifikationsgrenzen und Toleranzen hin zu Statistischer Prozeßlenkung
  • Gewöhnliche Fehler: Prozeß verbessern, sonst nichts
  • Besondere Fehler: Behandlung im Einzelfall
  • Unterscheiden: durch die Qualitätsregelkarte

Interessante Enzyklopädien

Weil ich mich gerade etwas für Systemtheorie und Systems Thinking interessiere, hatte ich neulich die „International Encyclopedia of Systems and Cybernetics“ ausgeliehen. Diese ist ein wertvolles Werk, weil sie all die Begriffe, die in der Systemtheorie-Literatur (bis 2004) verwendet werden, definiert, einordnet und miteinander in Beziehung setzt.

Und weil sie so wertvoll und hilfreich ist, ist sie gefragt. So gefragt, daß ein einzelner Band (von zwei Bänden) bei Amazon oder ebay gebraucht üblicherweise zwischen 500 und 800 Euro liegt. Also Fernleihe.

Dabei habe ich nach längerer Zeit ohne (Spezial-)Enzyklopädie in den Händen wieder gemerkt, wie sehr ich diese Darstellung schätze. Künftig möchte ich mehr und öfter Enzyklopädien bei meinen Recherchen zurate ziehen.

Ein Blättern in Thomas Manns „The Oxford Guide to Library Research“ hat schon eine ganze Reihe interessanter Titel gefunden, die man auch ohne konkretes Rechercheinteresse am Fachgebiet mal durchblättern könnte. Dabei sind viele „Dictionaries“ dabei, also Wörterbücher. Das ist etwas, was man wissen muß! Englischsprachige Enzyklopädien heißen oft „Dictionary“, weil sie alphabetisch sortiert sind. Die Einträge sind trotzdem umfassend und mit Literaturquellen, das sind keine Wörterbücher, wie man sie aus dem Fremdsprachenunterricht in der Schule kennt. Wenn man nur nach „Enzyklopädie“ sucht, verpaßt man viele interessante Titel.

  • New Grove Dictionary of Music and Musicians
  • New Dictionary of the History of Ideas
  • Encyclopedia of Food and Culture
  • Encyclopedia of Historical Treaties and Alliances
  • Encyclopedia of Journalism
  • Encyclopedia of Law Enforcement
  • Food Cultures of the World
  • International Encyclopedia of Dance
  • Literature of Travel and Exploration: An Encyclopedia
  • Routledge Encyclopedia of Language Teaching and Learning

Knuth-Scheck

Donald E. Knuth ist so etwas wie der Graue Eminenz der Informatik. Begnadeter Algorithmiker (das Knuth-Morris-Pratt-Verfahren und viele mehr), emeritierter Professor in Stanford, Autor des Standard-Übersichtswerks “The Art of Computer Programming” (schon seit 1962 – geplante Fertigstellung derzeit: 2025), und Schöpfer des Textsatzsystems TeX, von dem Leslie Lamport später LaTeX abgeleitet hat.

Und absoluter Pedant. So hat er auf seiner Webseite einen eigenen Abschnitt, mit Personen, die er in seinen Büchern zitiert, von denen er aber nicht weiß, für welche Vornamen die Mittelinitialen stehen. Und er möchte die nun einmal Namen vollständig zitieren.

Legendär ist sein Angebot, fürs Finden von Fehlern in seinen Büchern Schecks auszustellen. „Fehler“ heißt hier nicht unbedingt „inhaltlicher Fehler“. Davon gab es von Anfang nicht sehr viele, und nun nach Jahrzehnten noch viel weniger.

Nein, auch Tippfehler qualifizieren für einen Belohnungsscheck über zwei Dollar und sechsundfünfzig Cent (ein hexadezimaler Dollar). Ebenso typographische Mängel. Ein Zeilenabstand um einen Zehntel Millimeter zu groß? Scheck. Ein kaum wahrnehmbarer Lerraum vor einem Komma? Scheck. Ein Eintrag einer Aufzählung nicht korrekt eingerückt. Scheck.

Man kann sich schon denken, der Durchschnittsautor würde auch bei Zwei-Dollar-Belohnungen arm. Aber die Fehlerhäufigkeit ist eben überschaubar bei Knuth.

Außerdem war das schon ein cleverer Schachzug von ihm: Kaum jemand löst diese Schecks je ein. Die hängt man sich an die Wand. Ernsthaft.

Es gibt ein paar Verrückte, Knuth erzählte in einem Interview einmal, es gebe da einen Deutschen, der schon so viele Schecks gesammelt habe, daß er zum Spaß jedes Jahr einen davon einlöse.

Lange Einleitung, der Leser ahnt es schon: ich besitze solch einen Scheck.

Natürlich hatte ich schon lange davon geträumt, einmal einen Fehler in einem seiner Bücher zu finden, aber nach einigem Lesen war mir klar: das wird wohl nichts werden.

Und eines Tages hatte ich einen Fehler. Sogar einen inhaltlichen Fehler, nicht nur typographischen Kleinkram.

Ich habe länger gezögert, den Fehler zu melden. Der ist bestimmt schon bekannt. Ich täusche mich und blamiere mich nur damit. Und dann habe ich den Fehler gemeldet.

Und er ist grandios! Ich hatte immer vor meinem geistigen Auge, daß ich die dicken Schinken mit Argusaugen lesen und die Beweise bis ins kleinste Detail nachvollziehen und verstehen muß.

Und dann fiel es mir wie Schuppen von den Augen. An einer Stelle, von der niemand behaupten kann, er sei mit Lesen nicht so weit gekommen.

Denn in “Computer Modern Typefaces” findet sich der Fehler auf der Seite arabisch eins. Im allerersten Absatz. Gleich das allererste Wort ist falsch.

“Infinitely many…” – nein! Es sind nur endlich viele, wenn auch eine astronomische Anzahl.

Der Eintrag in den Errata steht unter “Page E1”.

Einige Zeit später kam ein Brief.

Zunächst hat Knuth einen wunderbaren Comic-Strip beigelegt, der zu den zwei Dollar irgendwas paßt wie die Faust aufs Auge:

Comic-Strip, den Donald Knuth mitgeschickt hat
Comic-Strip, den Donald Knuth mitgeschickt hat

Aber natürlich auch den Scheck!

Knuth-Scheck über $2.56
Knuth-Scheck über $2.56

Ich habe zwei Stellen mit maschinenlesbaren Informationen übermalt. Knuth machte sich irgendwann Sorgen, daß dort seine Kontonummer erkennbar sei, und in Amerika reichen diese Daten wohl, um Geld abzubuchen.

Daraufhin hörte er auf, echte Schecks zu versenden, und verschickte nur noch Fantasie-Schecks einer fiktiven „Bank von San-Serriffe“. Ich freue mich jedenfalls, noch einen echten Scheck bekommen zu haben. Dort auf der Webseite findet man mich auch, mit $1.20.

Aber warum nun $1.20? Weil ich später zwar unrecht hatte mit einer weiteren Fehlermeldung, und Knuth das aber als Verbesserungsvorschlag gewertet und mit einem kleineren Scheck belohnt hat:

Knuth-Scheck über $0.32
Knuth-Scheck über $0.32

Wunderschön illustrierte Kinderbücher

2015 schrieb DanBC in Hackernews:

2) I buy many books for my child. Amazon is pretty hopeless at recommending books to me, even though I’ve seeded it with knowledge of the books I’ve bought. So I turn to human curation: the Kate Greenaway medal focuses on excellent illustration in books for children. That list is an excellent source for books. Then one or two degrees of separation (eg, other books the illustrator has worked on, or other books the author of the winning book has written) get you hundreds of excellent books. Someone scraping this list and using affiliate links could probably make a bit of passive income.

Ich bin endlich dazu gekommen, etwas in der Art auf die Beine zu stellen: https://www.schoene-kinderbuecher.de.

Dabei habe ich mit der englischen Kate-Greenaway-Medal und der Caldecott-Medal, dem amerikanischen Gegenstück, begonnen. Leider sind viele oder gar die meisten dieser Bücher nie ins Deutsche übersetzt worden.

Ebenso habe ich Preisträgerlisten einiger deutschsprachiger Preise durchforstet. Die Evangelische Kirche hat ein oder zwei Preise auf dem Gebiet der Kinder- und Jugendbuchliteratur, das Land Nordrhein-Westfalen hat einen weiteren.

Alles habe ich von Hand gemacht, und es hat viel länger gedauert, als ich erwartet hatte: Preislisten durchsehen, die Autoren- und Illustratoreninformationen sammeln, den Inhalt erfassen, HTML und CSS schreiben. Alles ohne Deep Learning und Neuronale Netze…

Was ist dabei gelernt habe:

  • Menschen blockieren Werbung. Auch ich blockiere Werbung. Und da wundere ich mich, wieso die Amazon-Affiliate-Links nicht funktionieren. Bis ist an uBlock Origin dachte. Und dann an Privacy Badger. Und an meinen Pi-Hole.
    Ich habe das dann so gelöst, daß ich die Titelbilder heruntergeladen und selbst gehostet habe. Nach Amazons Vertragsbestimmungen darf ich höchstens 100 Bilder downloaden. Ich habe 66. Also nichts mit „hunderte Bücher“, wie DanBC schrieb.
    (Zunächst wollte ich das komplett werbefrei machen, zumal ich ohnehin kaum Einnahmen erwartete, aber all die Verleger anschreiben und um Nutzungsrechte für Titelbilder bitten? Nein danke, dann lieber die harschen Restriktionen von Amazon Partnernet, aber dafür auch Pauschalrechte.)
  • Webdesign ist eine Katastrophe. Ich habe das Projekt als Ausrede genommen, ein wenig CSS Grid oder Flexbox zu lernen, bin mit beiden eine ganze Weile gescheitert und habe dann beide kombiniert. Und am Ende mußte ich eine Sonderbehandlung für den Internet Explorer 11 einführen, denn obwohl eigentlich alles alut Dokumentation mit Vendor-Präfixen funktionieren sollte, war das Layout komplett zerschossen und alles lag übereinander. Ich hatte wenig Lust, noch einen weiteren Abend mit IE11 zu verbringen.
  • Selbst wenn es keine Katastrophe wäre, bin ich kein Designer. Ich wollte die Webseite aber etwas weniger nach dem „Hacker-News-Minimalismus-Klischee“ aussehen lassen. Es ist erstaunlich, wieviel man mit einem einfachen Boxschatten und abgerundeten Ecken erreichen kann!
  • Bezüglich “affiliate links could probably make a bit of passive income” bezweifle ich, das ich auch nur den „einen Kaffee pro Tag“-Bereich erreichen werde. Es gibt unzählige Blogs und Webseiten, die Kinderbücher vorstellen.
    Vielleicht werfe ich mal zwanzig Euro in Richtung Google- oder Facebook-Werbung, weniger, weil ich mit großen Ergebnissen rechne, und mehr, weil mich die Seite der Internet-Werbenden interessiert. Damit hatte ich bislang noch keinerlei Berührungspunkte.
  • Buchbeschreibungen sind schwer. Besonders wenn man das Buch nicht physisch vor sich liegen hat. Meine Beschreibungen sind kurz und sprühen nicht unbedingt vor Esprit, aber sie geben eine grobe Richtung an.
  • Meine Datenschutzerklärung ist streng formaljuristisch wahrscheinlich noch immer nicht gut genug, obwohl sie wenigstens so geschrieben ist, daß ein Laie sie versteht. Wenn man Affiliate-Links auf eine Webseite streut, dann verspürt man einen gewissen Druck, diese rechtlichen Dinge richtig zu machen. Und ich mag das <details>-Tag in HTML, es ermöglicht das Aufklappen des langen Texts ohne jegliches Javascript.

DanBC fand meine Seite gut und schlug vor, daß ich sie als “Show HN” an Hacker News submitte. Allerdings sind dort nur Dinge zugelassen, die man im eigentlichen Sinne ausprobieren kann, und eine normale Submission macht wohl auch wenig Sinn, da nicht-englischsprachige Submissions dort keinerlei Stand haben.

Statische Typen und Defaultargumente in C++

Quiz. Was gibt dieses Programm aus?

#include <iostream>

class Vehicle
{
public:
  virtual void FillUp(int amount = 20)
  {
      std::cout << "Filling up the vehicle with "
                << amount << " gallons of gas" << std::endl;
  };
};

class Car : public Vehicle
{
public:
  virtual void FillUp(int amount = 10)
  {
    std::cout << "Filling up the car with "
              << amount << " gallons of gas" << std::endl;
  };
};

int main(void)
{
  Vehicle *v = new Car;

  v->FillUp();

  return 0;
}

Wenn Sie gedacht haben, die Ausgabe werde „Filling up the car with 10 gallons of gas“ sein, sind Sie in guter Gesellschaft, liegen aber dennoch daneben. Die tatsächliche Ausgabe lautet „Filling up the car with 20 gallons of gas“.

Doch wie kann das sein? Das ist so, als ob eine völlig neue, erfundene Methode aufgerufen wurde, die aus Teilen von Vehicle::FillUp und Teilen von Car::FillUp zusammengestückelt worden ist.

Der C++-Standard verlangt dies aber tatsächlich. Viele C++-Programmierer wissen nicht, daß sie sich in manchen Situationen darüber klar sein müssen, daß Objekte nicht nur einen Typ besitzen, sondern zwei: einen dynamischen Typ und einen statischen Typ. Eine solche Situation ist, wenn sie Defaultargumente von in einer Klassenhierarchie überschriebenen Methoden ändern.

Treten wir einen Schritt zurück. Was ist ein statischer Typ?

int a;

a ist ein Objekt vom statischen Typ int. Das war einfach.

// [...Vehicle and Car defined as above...]

int main(void)
{
  Vehicle v;
  Car c;

  v = c;

  v.FillUp();
}

Dies ist gültiges C++. Das Car c wird „geslicet“ zu einem Vehicle und v zugewiesen. v hat den statischen Typ Vehicle.

Jeder würde erwarten, daß die Ausgabe „Filling up the vehicle with 20 gallons of gas“ lautete, und hätte damit auch recht.

Nun zum schwierigeren Teil:

// [...Vehicle and Car defined as above...]

int main(void)
{
  Vehicle *v = new Car;
  
  v->FillUp();

  return 0;
}

In diesem Beispiel, in dem v ein Zeiger ist, ist v nach wie vor vom statischen Typ Vehicle (so steht es in der Deklaration), aber vom dynamischen Typ Car (das hat die Zuweisung ergeben – die auch zur Laufzeit erfolgen kann, hier hat sie bereits statisch bei der Initialisierung stattgefunden).

Die Methodenauswahl erfolgt in C++ anhand des dynamischen Typs, daher wird Cart::FillUp ausgewählt.

Aus Performancegründen haben die C++-Designer sich aber entschieden, für die Auswahl, welche Defaultargumente zur Compilezeit an die formalen Parameter der Methode gebunden werden, den statischen Typ zugrundezulegen.

Und deshalb ist die Intuition, daß hier zwei verschiedene Methoden vermischt werden, tatsächlich richtig. Der Körper der Methode stammt von der Kindklasse, aber die Defaultargumente stammen von der Eleternklasse.