Difference between revisions of "Wie denken Informatiker"

From ThorstensHome
Jump to: navigation, search
(Wie ich im Garten arbeite)
Line 10: Line 10:
 
Dieses Phaenomen, dass du dich entscheiden musst, gibt es in der Informatik zuhauf und man nennt es dort "einen Tod musst du sterben".
 
Dieses Phaenomen, dass du dich entscheiden musst, gibt es in der Informatik zuhauf und man nennt es dort "einen Tod musst du sterben".
 
Ein Programm kannst du auf Vollstaendigkeit optimieren oder auf Einfachheit. Beides zusammen geht, aber eben nur bis zu einem gewissen Ausmass. Ein IT-Projekt kannst du auf Vollstaendigkeit trimmen oder auf Kuerze oder auf Vorhersagbarkeit. Einen Tod musst du sterben.
 
Ein Programm kannst du auf Vollstaendigkeit optimieren oder auf Einfachheit. Beides zusammen geht, aber eben nur bis zu einem gewissen Ausmass. Ein IT-Projekt kannst du auf Vollstaendigkeit trimmen oder auf Kuerze oder auf Vorhersagbarkeit. Einen Tod musst du sterben.
 +
 +
= Nummernschilder =
 +
Neulich habe ich mir ein Auto gekauft, und im Autohaus konnte ich mir ein Nummernschild aussuchen. Ich habe verschiedene Vorschlaege gekriegt, welche Nummernschilder noch frei sind und konnte mich per Mausklick fuer eines entscheiden.
 +
 +
Stell dir mal vor, du willst so ein Programm schreiben. Da kommen dann von ueberall im Landkreis Anfragen, ob dieses und jenes Kennzeichen noch frei ist. Ein grosses Problem entsteht, wenn ein Nummernschild zwei Autos zugeteilt wird. Dann kann der eine Autofahrer eine Bank ueberfallen und dem anderen wird es in die Schuhe geschoben. Dies zu verhindern, ist keine triviale Sache. Nehmen wir mal, du machst nichts weiter als ein Programm zu schreiben wie das hier:
 +
1. Lese Nummernschild-Anfrage
 +
2. stelle fest, ob bereits vergeben
 +
3. wenn nicht, erlaube die Nummernschildvergabe und trage Besitzer und Nummernschild in die Datenbank ein
 +
Das wird nicht gehen, denn wenn zwei Kunden gleichzeitig das Nummernschild HD-AB 123 haben wollen, kann es sein, dass der Programmschritt (2) gleichzeitig durchlaufen wird. Zu dem Zeitpunkt ist das Nummernschild noch nicht vergeben und beide gleichzeitig laufenden Programm-Instanzen werden dasselbe Nummernschild vergeben. Diese Problematik wird [https://de.wikipedia.org/wiki/Race_Condition race condition] genannt - zwei "consumer" machen ein "Wettrennen" um eine "Ressource", das Nummernschild.
  
 
= Rekursion =
 
= Rekursion =

Revision as of 00:14, 3 July 2015

  • Meta-Ebenen
    • Escaping
  • Rekursionen
  • Der Mensch als der virtualisierende Affe
  • strong typecasting: "Die Gewinner werden nächste Woche im Schaufenster ausgehängt"
  • Lokalitaet

Contents

Einen Tod musst du sterben

Du kannst nicht jedermanns Freund sein. Entweder du gehoerst zu den 100%igen oder zu den Kompromissbereiten. Entweder du bist bodenstaendig oder romantisch. Zuversichtlich oder abschaetzend. Du kannst nicht zu den einen gehoeren und zu deren Gegenteil. Wenn du es doch versuchst, werden viele dich als Opportunisten sehen und gerade dann wirst du wenig Freunde haben. Dieses Phaenomen, dass du dich entscheiden musst, gibt es in der Informatik zuhauf und man nennt es dort "einen Tod musst du sterben". Ein Programm kannst du auf Vollstaendigkeit optimieren oder auf Einfachheit. Beides zusammen geht, aber eben nur bis zu einem gewissen Ausmass. Ein IT-Projekt kannst du auf Vollstaendigkeit trimmen oder auf Kuerze oder auf Vorhersagbarkeit. Einen Tod musst du sterben.

Nummernschilder

Neulich habe ich mir ein Auto gekauft, und im Autohaus konnte ich mir ein Nummernschild aussuchen. Ich habe verschiedene Vorschlaege gekriegt, welche Nummernschilder noch frei sind und konnte mich per Mausklick fuer eines entscheiden.

Stell dir mal vor, du willst so ein Programm schreiben. Da kommen dann von ueberall im Landkreis Anfragen, ob dieses und jenes Kennzeichen noch frei ist. Ein grosses Problem entsteht, wenn ein Nummernschild zwei Autos zugeteilt wird. Dann kann der eine Autofahrer eine Bank ueberfallen und dem anderen wird es in die Schuhe geschoben. Dies zu verhindern, ist keine triviale Sache. Nehmen wir mal, du machst nichts weiter als ein Programm zu schreiben wie das hier:

1. Lese Nummernschild-Anfrage
2. stelle fest, ob bereits vergeben
3. wenn nicht, erlaube die Nummernschildvergabe und trage Besitzer und Nummernschild in die Datenbank ein

Das wird nicht gehen, denn wenn zwei Kunden gleichzeitig das Nummernschild HD-AB 123 haben wollen, kann es sein, dass der Programmschritt (2) gleichzeitig durchlaufen wird. Zu dem Zeitpunkt ist das Nummernschild noch nicht vergeben und beide gleichzeitig laufenden Programm-Instanzen werden dasselbe Nummernschild vergeben. Diese Problematik wird race condition genannt - zwei "consumer" machen ein "Wettrennen" um eine "Ressource", das Nummernschild.

Rekursion

Ich liebte das Lied das mir meine Mutter vorsang:

Ein Hund kam in die Kueche, und stahl dem Koch ein Ei.
Da nahm der Koch 'nen Loeffel
Und schlug den Hund entzwei
Da kamen viele Hunde 
Und gruben ihm ein Grab
Drauf setzten sie 'nen Grabstein
Worauf geschrieben ward:
  Ein Hund kam in die Kueche, und stahl dem Koch ein Ei.
  Da nahm der Koch 'nen Loeffel
  Und schlug den Hund entzwei
  Da kamen viele Hunde 
  Und gruben ihm ein Grab
  Drauf setzten sie 'nen Grabstein
  Worauf geschrieben ward:

Die Tomaten

Es gibt Fleischtomaten, Tomaten und Cherrytomaten. Das Problem ist - was sind jetzt Tomaten? Genau genommen gibt es jetzt zwei Bedeutungen: Tomaten als Gattungsbegriff fuer Fleischtomaten, Tomaten und Cherrytomaten UND Tomaten als Gegensatz zu Cherry und Fleischtomaten. Wenn ich jetzt frage, wie viele Tomaten liegen auf dem Tisch, habe ich Ambiguitaet: Wenn da zwei Tomaten liegen und eine Cherrytomate so ist sowohl "zwei" als auch "drei" eine richtige Antwort, je nachdem, wie man Tomate versteht.

Wie ich putze

Wenn ich putze, empfinde ich das als vergaenglich. Ich tue nichts weiter als Schmutz vom Boden in das Wischtuch zu bringen. Ich entferne den Schmutz nicht, und ich raeume ihn nicht auf. Global gesehen vergroessere ich die Unordnung. Statt ein wenig Schmutz in der Wohnung gibt es nach dem Putzen mehr Schmutz: Schmutzige Wischtuecher auf der Muellhalde oder grosse Mengen Abwassers - auf jeden Fall mehr Abwasser als der Schmutz, der zu beseitigen war.

Solche Gedanken machen mich zu einem schlechten Raumpfleger, aber zu einem guten Informatiker. Es ist das Denkmuster, immer alles zu hinterfragen und nach Quelle und Ziel zu analysieren. Das Producer/Consumer Prinzip funktioniert genauso: Wo kommen die Daten her und wie werden sie zu was verarbeitet? Wo kommen sie hin?

Wie ich im Garten arbeite

per Anhalter durch die Galaxis

See also