Gut, moin. Mein Name ist Daniel Molt. Ich bin jetzt
bis zu den Ferien dran mit der Veranstaltung. Das heißt,
ich werde hier euch ein bisschen was zu den entsprechenden Hintergründen erzählen,
wie wir uns sozusagen formale Grundlagen der Informatik vorstellen.
In Bezug, insbesondere auf ein Thema,
was mir sehr am Herzen liegt,
weswegen ich vor fast 25 Jahren hier mal zum Fachbereich
als Mitarbeiter zugestoßen bin,
nämlich mit den Petri-Netzen
Und dazu werden wir ein paar Grundlagen uns sozusagen anschauen.
Die Netze, die wir da verwenden werden, sind recht allgemein verwendbar.
Und im Grunde genommen kennt die auch jeder Informatiker in Deutschland. Die spannenden Varianten,
die wir da drin haben,
werden wir in dieser Veranstaltung nur am Rande streifen,
sodass also Vertiefung in dieser Richtung dann in anderen Veranstaltungen motivenverteilte Systeme,
intelligente, kooperäle Dienste,
spezifizierende Verifikationen,
das zieht sich also durch sämtliche Veranstaltungen bei uns so durch,
dass wir dort diese Netze dann im Detail
nochmal genauer angucken und ein bisschen vertiefen
Und das, was wir dann folgende jetzt hier mit drin haben werden,
ist also ein Modellierungsmittel, was einerseits sehr anschaulich ist.
Horst Oberquelle hat sich also auch intensiv damit auseinandergesetzt.
Er war auch mal bei uns am Arbeitsbereich theoretisch Grundlagen und
hat sich dann in Richtung Benutzbarkeit sehr stark orientiert für diese
Netze und hat dort dann auch diverse Varianten vorgeschlagen,
wie man die besser benutzbar macht,
ohne dass nun die ganzen formalen Apparaten mit sich rumtragen muss und auch direkt vorne an benutzen muss.
Die Ideen dazu, wie das alles ausschaut,
werde ich beim nächsten Mal ein bisschen genauer vertiefen.
Heute geht es erstmal um so ein paar grundlegende Aspekte,
damit man diese Technik auch vernünftig einsortieren kann und wo sie
eigentlich reingehört
Das heißt, heute werden wir uns so ein bisschen mit Synchronprodukten,
was ihr schon hattet, auseinandersetzen. Das heißt,
wir haben Transitionssysteme in irgendeiner Art und Weise, die kennt ihr ja schon.
Wenn es jetzt die Möglichkeit, dort irgendwelche Ronde-Bus-Inchronisationen zu machen,
das ist also eine der spannenden Teile, die,
wo man sozusagen Handshake-Verfahren macht, wie man zwischen zwei verschiedenen Systemen irgendwas überreicht.
Wenn ich also jetzt hier die Hand schüttel,
dann können wir direkt Sachen austauschen,
ich kann direkt Sachen überreichen, das ist sozusagen Campshake-Verfahren.
Wir haben Speichersynchronisation, wir können den Tisch benutzen,
ich kann also meinen Teil entsprechend hier ablegen und
irgendwelche andere Leute können sich das dann entsprechend greifen
Weitere Möglichkeit wäre, die Nachrichtensynchronisation, das heißt,
ich schicke irgendwie was los und das kommt entsprechend dann irgendwann bei euch an,
genau wie das gesprochene Wort jetzt gerade.
So, dann gibt es also verschiedene Darstellungen,
die das hinstellen kann, dass man irgendwas dazwischen packt.
Ich hätte jetzt eigentlich hier eine runde Stelle dazwischen packen sollen,
aus welchen Gründen auch immer. Können wir noch mal schauen,
aber es kann auch ein aktiver Speicher sein, den wir da drinnen haben.
Oder wir haben eben entsprechend Nachrichtensynchronisationen, mit der wir dann solche Nachrichten bemitteln.
So, das ist erstmal so eine Grundidee,
die in solchen verteilten Systemen auftauchen kann.
Dann haben wir dieses Interlieving von Systemen,
das hat man schon mal angeschaut,
da gab es also irgendwelche Möglichkeiten,
hier sind Übergang von den Zuständen A
oder entsprechend
Entsprechend irgendwas zu machen. So,
jetzt kann ich das eine oder das andere machen, also erst A,
dann B oder SPD, dann A, das sozusagen,
wir sind der Leaving-Semantik, die wir da entsprechend drin haben.
So, und wenn ich das jetzt nehme und dazu dann
nochmal so einen Zeh packe, dann kann ich natürlich A,
B, C oder die entsprechende Kombinationsmöglichkeiten da reinbekommen.
Und wenn wir das entsprechend machen, dann haben wir so eine Möglichkeit,
wie wir jetzt schon mal hinmalen müssen, wie man sich da so durchnavigieren kann,
damit man AWC entsprechend darstellen kann. Das heißt,
wir haben jetzt hier in irgendeiner Weise die Möglichkeit, mit A loszugehen,
damit B und damit C oder wir können auch mit C,
B, A arbeiten oder wir können auch hier hinten durchlaufen,
B, C,
A,
wie auch immer
So, das heißt, wir haben da also jetzt
eine Art Zustandsraumexplosion. Das heißt,
wenn ich jetzt da ein D und ein E auch noch mal dazu nehme,
dann ist das natürlich ein relativ großer Würfel, der dann dort entsteht.
Und das möchten wir in irgendeiner Weise in den Griff bekommen,
um damit arbeiten zu können.
Wir sind immer den ganzen Raum so umständlich aufmalen muss.
Die Frage ist, wie kann man das also so schön wie hier,
so kurz und knapp aufschreiben und entsprechend darstellen?
Was man dann also machen kann,
man kann irgendwelche Dinge jetzt entsprechenderweise anordnen und da werden wir
jetzt mal ein bisschen genauer drauf eingehen
Wir haben ja so entsprechende Prozesse und wir haben irgendwelche Dinge,
die in diesen Prozessen passieren, also irgendwelche Handlungen,
die wir als Bestandteile in solchen Prozessen, Prozessabläufen dann entsprechend vorkommen.
Haben wir also hier jetzt drei Handlungen, A,
B und C, die jeweils entsprechende Zuweisung zwischen irgendwelchen Variablenwerten vornehmen.
Wenn die also im Datenbankbereich seid, ist das etwas,
was man typischerweise durchaus kennt,
dass man irgendwelche Werte zuweist oder auch umändert und irgendwie reinschreibt.
Oder bei Programmen, je nachdem, was ihr sehen wollt.
So, wir haben also irgendwelche Bezeichner und wir haben
eine Wirkung, was das also jetzt tut.
Diese Handlung bewirkt also irgendetwas in unser System.
In Behandlung haben die es bewirken, dann können wir sie
auch weglassen
Meistens. Und dann haben wir die mögliche, also uns
irgendwas jetzt daraus auszudenken, was wir da machen wollen.
Insgesamt gibt es einen Staat und einen Stopp und ich fange also
vorne an und dann laufe ich da irgendwie so durch und dann ist klar,
was im Grunde genommen dabei rauskommt,
was am Ende in den Variablen XYZ entsprechend drinsteht.
Ganz einfaches Programm, so entwickelt ihr nochmal so in den Java-Programm,
schreibt, schreibt das so nacheinander runter, geht davon aus,
dass das Programm von oben nach unten abgearbeitet wird.
Es gibt so einen Start und Stopp und dann seid ihr damit durch. So,
dann haben wir also bestimmte Eigenschaften bei diesen Handlungen und zwar
wollen wir sie jetzt so beschreiben, dass sie extensional beschrieben werden.
Das heißt nur von ihrer Wirkung, ich will also
gar nicht genauer wissen, was da drin passiert ist.
Insbesondere sollen sie halt auch unteilbar sein, das sage ich davon aus,
dass dieses Ding hier jetzt irgendwie als unteilbare Handlung passiert.
Also ich mache also ein Xpus Y und weiß das dann zu.
Und dieser Bereich, das ist sozusagen ein Blog,
den wir uns erstmal als ulterbrochenen Teil sozusagen vorstellen wollen an den Stellen.
So, das heißt, wir haben im Grunde genommen atomare Operationen.
Mit dem, was wir uns jetzt als Denkmodelle vorstellen,
kann man immer weiter reingehen in diese Details.
Irgendwo hört man aber dann auf,
sozusagen sinnvollerweise
Als Informatiker mit 0-1 letztendlich alles, was ihr macht,
willt ihr auf 0-1 ab in den Rechner,
wenn man das sozusagen umsetzen möchte.
Und man schafft es also immer irgendwie,
die Dinge zu diskritisieren, sodass man da darauf hinkommt.
Man muss also nicht die Sachen alle analog oder sowas bearbeiten. Die Frage ist,
was dann noch sozusagen eine globale große Handlung ist und was man gruppiert,
ob ich das nur auf ein Bit oder auf ein Bite
oder auf eine Datei oder auf einem Verordner oder sowas abbilde,
das ist dann eine Frage, die entsprechend von den entsprechenden Operationen abbildet.
Wenn ich einen Ordner lösche,
lösche ich ihm ein Bit und noch ein Bit und das als unteilbare Handlung,
sondern ich lösche sozusagen den Ordner und den möchte ich
auch gerne möglichst als geschlossene Sache betrachten
So, das Ganze ist auch noch in irgendeiner Weise,
nicht nur extensional und teilweise auch noch geordnet.
Das heißt, wir haben hier also jetzt durch eine totale Ordnung
einen sequenziellen Prozess. Es läuft von vornherein hinten ab.
So, die spannende Geschichte ist aber,
dass das hier vorne ja eigentlich unabhängige Aktionen sind.
Und wenn die unabhängig sind, dann ist die Frage,
warum mache ich denn erst A und dann B?
Kann man sich also entsprechend überlegen, warum man das so sehen möchte.
Können wir uns das jetzt hier angucken? Wir haben jetzt
irgendwie so einen entsprechenden entsprechende Beschreibung, wo wir auch erst A,
B haben. Und dann wird nur hier hinten synchronisiert,
wo wir nur das C sagen, diese beiden Teile müssen es jetzt irgendwie synchronisieren.
Und dann wissen wir, ja, wir können also entsprechend A, B vorwegpacken.
Was erreichen wir damit? Wir können also A,
B machen oder BA und dann das C. Und damit haben wir jetzt was erreicht.
Naja, wir können jetzt alle Sequenzialisierungen sozusagen darstellen,
die wir in diesem System dann drin haben.
Wir haben nämlich A, B-C und B-A-C sozusagen da oben,
was wir als sinnvoll erachten, mit drin. Wir wollen aber nicht,
dass C und B sozusagen irgendwie vertauscht werden können,
weil ich ja erstmal das Wert auf Y und haben muss und das ist undefiniert,
das wäre ein bisschen unglücklich, wenn die Inzivisierungssachen nicht sozusagen vorher passieren.
Gut, so, das heißt, wir haben also jetzt die spannende Sache,
dass wir das abbilden können in Bezug auf diese Konstellationsoperation,
all das wird nochmal irgendwie nochmal betrachtet werden und ja,
wir können jetzt also uns anschauen, dass wir jetzt so längst laufen.
Das ist eine Frage, ist das das,
was man sich so vorstellt bei der Entwicklung von Systemen,
sagt man immer so, mit Java irgendwelches Statements aneinanderreiht,
ja klar, also entweder ich schreibe mein Statement für die Inzivisierung,
erste X hin und dann für Y oder SPY und dann für X,
das ist das, wie ich das so beim Programmcode entsprechend aufschreibe,
wenn ich also rein von der entsprechenden Programmiersprache,
sequenziellen Programmiersprache darauf umgucken würde.
So, und was wir denn haben, ist,
dass wir eigentlich das A und B hier haben und wir müssen also jetzt
das B-A durchlaufen oder A, B. Das ist das,
was wir da drin haben an den Stellen.
Und letztendlich haben wir aber eine totale Ordnung auf diesen Sachen.
Also entweder ist das eine oder das andere,
aber mehr ist bei uns einfach nicht drin. So,
was wir jetzt dann noch haben könnten, wäre eigentlich eine partielle Ordnung.
Das heißt, nicht sich und Teleprozesse, Das heißt,
wir wollen in irgendeiner Weise jetzt darauf kommen, wir wissen ja eigentlich,
dass die Handlung A und B, unabhängig voneinander sind.
Könnt ihr das auch irgendwie anders ausfüllen, also eigentlich auch zeitgleich.
Wenn ich mir jetzt irgendwas darunter vorstellen würde,
dass das nicht in einem Programmstatement passiert,
sondern ich habe irgendwelche Handlungen,
dass die eine Portion was macht und die zweite Person,
die dritte Person addiert,
dann können die beiden sozusagen den ersten Teil der entsprechenden Belegung oder Verarbeitung entsprechend sozusagen unabhängig voneinander machen.
Und es muss nicht erst der eine und dann der zweite,
damit dann der dritte das sozusagen zusammenführen kann
Oder erst der zweite und dann der erste nacheinander machen,
sondern die können das eigentlich unabhängig voneinander bearbeiten und dann vorbereiten,
sodass die dritte Person das dann entsprechend verarbeiten kann.
So, und diese Unabhängigkeit möchten wir irgendwie ausdrücken können und irgendwie einarbeiten können.
Da läuft das Ganze jetzt drauf, entsprechend hinaus. So,
wenn wir das jetzt als ein Petrus darstellen, haben wir erstmal,
hast du dargestellt, dass wir sagen, okay,
wir wollen das jetzt nicht mehr so wie hier oben in eine Sequenz anordnen,
sondern wir können sagen, ja okay,
dann können wir hier starten und da starten.
Das sind ja beides Beide sind eigentlich fertig vorbereitet.
Beide können jetzt hier Handlung A und Handlung B ausführen an den Stellen.
Und beide können also, sozusagen sind also im Staatszustand.
Dritte Person muss erst warten, bis beide fertig sind.
Das haben wir auch so geschrieben, weil wir sagen,
okay, da oben das C braucht eben die Ergebnisse von denen.
Entsprechend stehen das jetzt also hier da. Wir haben ein
A und ein B und wenn die beide fertig sind,
dann kommt hier was was rüber und dann kann es da hinten entsprechend weitergehen.
So, wie kann ich das jetzt sozusagen anschaulich motivieren bei den Petri-Netzen?
Ich kann hingehen und jetzt hier zwei Marken drauflegen und sagen,
ja, der ist ja in dem Zustand vom Staat
und jetzt können irgendwie die Handlung passieren
Und nehmen wir an, also erstmal passiert die Handlung B,
weil aus irgendeinem Grund hat er es eben schnell erledigt.
Das Gleiche gilt dann entsprechend für A. Wenn das der Fall ist,
dann weiß der, der Handlung C ausführen soll,
jo, beide sind erledigt. Das sehe ich daran,
dass sich hier vorne die entsprechenden Marken liegen habe.
Und ich schalte entsprechend weiter. So, was habe ich jetzt damit gewonnen? Naja,
ich habe jetzt sozusagen die Beschreibung geliefert, dass ich,
wie ich das sozusagen durchschalten in diesem Netz sozusagen beschreibe.
Und ich habe immer nur genau eine Handlung zurzeit vorgenommen.
Das heißt, ich habe auch da wieder meine die Konzialisierung drin.
Ich mache also erst A, B, C oder B,
A, C und habe damit die Sachen mit dem Netz jetzt auch beschrieben.
Zumindest kann ich nur das, was vorher war,
auch mit dem Netz beschreiben an den Stellen. So,
die Aktionsfolgen, die wir dann da drin haben,
sind also genau die hier und das Spannende ist aber,
dass wir eigentlich wissen, dass diese Sachen jetzt so angeordnet sind.
Also, das heißt, in irgendeiner Weise,
dass wir sagen können,
ja, A und B sind erstmal gar nicht in eine
bestimmte Reihenfolge gesetzt
Die linke Seite bezeichnen wir quasi mit Inter-Leaving-Semantik,
wo wir sagen, okay, entweder so oder so,
aber ich muss die immer in irgendeine serienzielle Reihenfolge bringen können, die Aktionen.
Und das Zweite bezeichnen wir dann als Partial-Order-Semantik,
wo wir sagen, hierüber wird erstmal nichts ausgesagt. So,
und entsprechend müssen wir jetzt sagen,
was ist denn so eine partielle Ordnung eigentlich,
wenn ich das jetzt nur partiell anordne,
muss ich jetzt noch ein bisschen mehr für die Beschreibung liefern,
damit klar wird,
was die Semantik nachher ist für diese Dinge
Und das machen wir dann halt entsprechend über so eine Definition hier.
Wir haben also eine entsprechende Menge A mit den jeweiligen Elementen da drin.
Und wir haben eine Relation, die darauf definiert ist,
als binäre Relation. Und das Ganze heißt partielle Ordnung,
falls wir eben so drei Eigenschaften jetzt hier haben. Und zwar als Erste ist,
dass wir für alle A sagen müssen, A,
Komma A ist ein Elementperilation, das heißt die Reflexivität,
die dort entsprechend drin ist, dieses Element ist sozusagen,
das A ist immer entsprechend mit drin.
Wir haben die Antisemitrie, das heißt, wir können davon ausgehen,
dass wenn A wie ein Element der Relation ist und BA,
dann müssen die beiden
gleich sein
Also in dem, ich habe also nicht die Sache,
dass ich da irgendwie etwas habe,
dass beide Relationen drin sind und das wäre womöglich nicht das Gleiche.
Und entsprechend die Transitivität, die ihr ja kennt,
AB, BC und dann kann man daraus Schluss folgern,
dass AC entsprechend auch noch drin sein muss.
So, jetzt können wir das Ganze so schreiben,
dass wir so ein kleiner gleich hinschreiben an dieser Stelle.
Das kleiner gleich bedeutet, dass genau diese Ordnung
wie bei Kleinergleich auch
entsprechend vorstellen könnt
Das heißt also, Dinge sind ja entweder sie selbst oder
sie sind entsprechend angeordnet und sagen, der vor dem irgendwie.
Und das ist aufgrund der Transitivität, was wir dort ja vorgefunden haben. So,
haben wir also hier so eine,
zum Teil mal aufgemalt, das F. Jedes Ding,
ihr habt so ein kleines Öhrchen dran, dass er sagt,
okay, das ist immer das AA oder BB oder wie
auch immer da entsprechend mit drin.
Und wir haben die entsprechenden Ordners, das F-VOG-Licht und HVG und das BVE,
das sind so die einfachen Fälle erst mal hier.
Dann haben wir das das B4A, C und D-Licht und wir wissen auch,
dass das A vor C&D liegt und entsprechend CVD.
So, und jetzt haben wir erstmal so eine Relation irgendwie
gegeben und können darauf jetzt irgendetwas machen.
Hier können wir jetzt sozusagen Abhängigkeiten von Variablen oder von anderen Dingen
sich auch entsprechend wieder vorstellen. So, jetzt die Frage,
gibt es da drin Zyklen in diesen Teilen?
Wegen der Anthese mit Reh. Genau,
wegen der entsprechenden Refinition hier oben nicht oder ja,
da vorne so ein kleiner Mini-Zyklus auf sich selbst,
aber größere Zyklen haben wir da erstmal nicht drin.
Wir haben nämlich keine Zyklen dabei. So, das heißt,
wir können also jetzt so ein BA haben und entsprechend AFC,
was wir nicht drin haben dürfen,
ist entsprechend sehr längere Zyklus von C nach B oder auch ein kurzer Zyklus,
wo wir halt das AB entsprechend drin haben.
Das ist sozusagen das Nicht, nicht zulässig ist an den Stellen.
Gut, mit dem kleiner Gleich funktioniert es jetzt also.
Wollen wir gucken, was passiert, wenn wir da jetzt einen kleiner nehmen?
Was heißt das denn jetzt? Na gut,
da müssen wir unsere Definition ändern und entsprechend ist es eine strikte Ordnung,
daraus keine fazielle Ordnung mehr,
sondern wir machen eine Striktordnung daraus und Wir sorgen dafür,
dass hier bestimmte Teile jetzt verschwinden aus diesen Sachen.
Was müssen wir jetzt ändern? Wir ersetzen erstmal die Reflexivität,
das darf nicht mehr drin vorkommen und streichen also dieses Teil,
dass das irgendwie noch nicht mehr ein Element der entsprechenden Relation
ist und streichen daraufhin dann jetzt hier auch überall unsere kleinen Öhrchen weg,
weil das wäre dann nicht so schön für die entsprechende Strickordnung,
die da wieder drin haben.
So, die Antisemitrie ergibt sich dann sozusagen quasi aus dem
anderen Teil. Das heißt, das ergibt sich aus den
anderen beiden und wir können die wegfallen lassen
Und sowas haben wir halt entsprechend auch wieder nicht drin.
Gut, jetzt ist also eine partielle Ordnung, eine Striktordnung,
wie hängen die beiden zusammen? Die strikte Ordnung,
das ist eine spezielle Raffel, ist eine partielle.
Die Striktordnung ist ein speziellerer Fall. Also ich muss mir erklären,
was ich mir speziell auf dem Fall meine, oder?
Genau, reicht erst mal. Ist klar,
was damit gemeint ist, sieht das jeder auch so,
irgendwelche, die das nicht so sehen können, okay,
sehen alle auch so.
Das heißt, das, was speziell ist,
scheint alles schon zu teilen mit dem,
was sie da dir auch vorstellst
So, das heißt, wir können hingehen und
relativ leicht einfach jetzt hier aus dieser Ordnung das machen.
Was habe ich also jetzt getan? Ich habe einfach die
Identität genommen und abgezogen und dann ist das Thema durch.
Dann ist jetzt die Frage, wie geht es denn andersrum?
Geht es andersrum auch? Naja, was muss ich also nur machen?
Ich muss das, was ich da weggenommen habe,
halt entsprechend wieder dazutun. So, gucken wir nochmal
ein bisschen genauer jetzt rein in diese Dinge.
Wir können jetzt aus dieser Striktordnung auch eine entsprechende Präzedenzrelation machen,
die da entsprechend benannt werden kann.
Und jetzt die Frage, wie kommen wir denn dahin?
Was passiert jetzt hier bei dieser Präsidentsrelation? Was passiert da?
Transitiven Kantenfällen weg. Ja, genau. Das sind die Teile,
die wir hier haben. Die fallen weg. Der Rest
sozusagen hier bleibt und irgendwas Neues wird auch nicht eingeführt.
Gut, so eine Präzedenzgeschichte sagt er nur noch minimal,
beschreibt sozusagen minimal, was ist.
Aufgrund der Transitivität kann ich quasi schlussfolgern, was damit zusammenhängt.
Stellt sich also auch da dann die Frage, wie das aussieht.
Aber wir brauchen vorher nochmal so ein bisschen etwas,
um das rauskriegen zu können,
damit man jetzt das über den Rechner automatisiert machen kann,
muss man das Ganze noch ein bisschen näher beschreiben.
Und dafür definieren wir halt einen entsprechend direkten Nachfolger von A
mit diesem kleinen Punkt, was man da entsprechend drinnen hat.
Falls also das AVB ist und dazwischen nichts mehr liegt,
das ist letztendlich das, was da in der Formel drinsteht.
Das heißt, ich gucke mir auch direkten Abhängigkeiten an,
alles, wo noch irgendwas dazwischen liegt,
wie wir das eben gerade bei den Beispielen ja hatten,
dann schmeißen wir die entsprechend raus.
Und diese darauf definierte Relation heißt da,
also Relation und Punkt A und kleiner Punkt,
heißt also Präsidenzrelation zu diesem anderen Teil
So, und letztendlich sagt das da oben nur aus,
dass man keinen dazwischen hat, das hatte ich eben schon erzählt.
Jetzt ist die Frage, kommen wir von der Präzedenzordnung wieder
zurück zur strikten Ordnung? Naja, das ist klar.
Man muss dort an den Stellen sich jetzt genau überlegen,
okay, ich habe jetzt so ein Grundgerüst und jetzt kann ich wieder was einfügen.
Und jetzt die Frage, wie viel man einfügen kann,
naja, genau das, was wir vorher gerade eigentlich weggenommen haben.
Und man bildet dafür die transitive Hülle,
um genau das wieder rauszukriegen,
was sich dann so schlussfolgern könnte und füge die entsprechend wieder
entsprechend wieder hinzu
So, und das heißt, das Wechselspiel von oben nach unten,
von unten nach oben kann ich also auch hier durchführen,
womit wir also sozusagen eine ganz gute Beziehung zwischen diesen Dingen haben.
So, und hier oben wird dann entsprechend das rausgestrichen, um von oben nach unten reinzukommen.
So, letztendlich können wir es auch entsprechend hinschreiben,
dass man also das Produkt sozusagen wieder abziehen kann und dann hat man das entsprechende,
dass nichts sozusagen dazwischen liegt, beziehungsweise dass man die entsprechend abzieht.
So, Ja, genau, das sind dann halt die Teile nochmal. Was wir jetzt,
was wir jetzt dann haben, ist nochmal, sind lineare Ordnungen,
das heißt, wir haben totale oder die lineare Ordnung,
falls wir so eine fazielle Ordnung haben und wenn für alle einzelnen Elemente dieser Menge das folgende gilt,
und zwar, wenn A, Ungleich B impliziert,
dass entweder A, B in der Relation liegt oder entsprechend B,
A. Gut.
So, und das wird auch als Vollständigkeit bezeichnet. Das heißt,
wir haben eine vollständige Ordnung auf diesen Handlungen,
die wir drin haben und vollständig heißt,
es ist ganz klar geregelt,
wer vor wem
letztendlich kommt
Gut, okay. Jetzt ist eine Frage, nach die
Linearisierung von einer entsprechenden Striktordnung, was man da anstellt.
Wenn wir uns die entsprechenden Möglichkeiten angucken,
die wir dort haben, ist mit der Interleaving-Semantik,
können wir sagen, ABC oder WAC,
hatte ich ja eben schon entsprechend ausgeführt.
Das heißt, wir haben dort die Möglichkeiten,
dass jetzt irgendwie noch weiter anzuordnen.
Das heißt, mich jetzt total ordne,
habe ich entsprechend ABC
dort stehen
So, und das ist natürlich etwas, was,
wo man sich jetzt fragen muss,
wie komme ich denn von dort sozusagen hier hin?
Und was muss ich dafür nur tun?
Man muss eine Anordnungsmöglichkeit wählen. Ich sage mal grafisch,
den einen Pfeil so entschieden, dass das B hinter dem Adel,
das einen der TB und beide auf einem Pfeil liegen.
Auf einem Pfeil liegen, genau, ja. Oder dass
wir halt einfach eine weitere, einen weiteren Pfeil hinzutun.
Nämlich genau, dass wir das sozusagen jetzt hier so hintun.
Also genau das, was du gerade meinst mit dem,
man muss diesen Pfeiler irgendwie realisieren
Kann ich so reinzeichnen, ist eine der entsprechenden Möglichkeiten,
muss ich mal in Relation nehmen, von hier oben und entsprechend AWC mit reinschreiben.
Und dann klappt das schon. So, deswegen hatten wir darum gebeten,
dass ihr bei dem Ola-Test euch mal anguckt,
wie sind die entsprechenden Schreibweisen,
welche Klammern benutze ich eigentlich, wann und wie,
falls ihr also eine Klausur solche Fragen bekommen solltet,
das sind Dinge, an die ihr euch entsprechen müsst.
Ihr könnt nicht irgendwelche eckigen oder geschweiften oder vierfach
Runde oder wie auch immer Klammern nehmen, sondern sozusagen,
wir haben eine bestimmte Notation und die solltet ihr
der Möglichkeit auch verwenden
Wenn ihr jetzt in anderen Büchern nachschlagt und andere Sachen lest,
werdet ihr auf eventuell andere Notationen stoßen.
Daran dürft ihr euch dann nicht stoßen oder dürft ihr halt
ein bisschen umdenken an den Stellen. Wie ist das in
den jeweiligen Büchern definiert und wie haben die das genau gemacht?
Das aber für die Klausur dann halt so, dass wir diese Schreibweisen,
die wir jetzt hier verwenden und in den Übungsaufgaben verwenden,
auch wieder in der Klausur drankommt.
Das heißt, wir möchten auch,
dass ihr euch genau präzise und sauber ausdrückt dabei.
So, nur so nochmal als Motivation,
warum im ULA-Test diese Fragen bezüglich,
welche Klammern verwende ich denn jetzt,
woran welcher Stelle mit dabei sind
Gut, okay, aber das ist ja jetzt hier für die totale Ordnung ganz einfach.
Und natürlich haben wir das hier sozusagen als Schlussfolgerung,
das AC, dann entsprechend auch direkt mit da drin noch.
Gut, wenn ich jetzt aber das andersrum machen möchte,
naja, wie sieht es dann aus,
dann komme ich auf die Idee und packe mein B-A-A rein und habe entsprechend den Pfeil einfach andersrum gedreht.
So, für eine Striktordnung, A, kleiner,
ist Lynn von A-Kleiner eben genau Diese Menge hier,
indem wir also die linearen Striktordnungen, die wir haben,
nehmen und uns diese A1 angucken, die immer größer sind als dieses, was wir bisher hatten.
Und davon nehmen wir alle möglichen Varianten und bekommen damit dann die Menge Lin,
also die Menge der linearen oder seriellen Vervollständigungen von A. Das heißt,
ich habe jetzt dieses sozusagen zusammengeschmissen und gesagt,
das sind alles die Menge der möglichen Linearisierung,
die ich rausbekomme aus einem System, wo ich vorher eine Urteilspezifikation hatte,
wo ich das nicht vollständig geordnet hatte.
Das tritt natürlich nur dann ein, wenn ich die sprechenden
Mengen von Linearisierung haben will und ich nur Linearisierung angucken möchte.
Wenn ihr also die Menge der Möglichkeiten,
wie könnt ihr euer Java-Programm sequentiell hinschreiben sozusagen,
haben wollt, dann kriegt ihr die damit raus.
In Bezug auf die entsprechenden Ausführungsmöglichkeiten, wie ich sie vorhin beschrieben habe,
dass ja zwei Leute auch gleichzeitig vielleicht was tun könnten.
Das ist ja natürlich in dem Teil nicht mehr mit drin.
Das könnt ihr auch im Java so erstmal,
wenn ich sage, ihr habt eine sequenzielle Variablenzuweisung,
erst X, dann Y oder erst Y und dann X.
Da könnte ich sagen, ja und X-Mix werden gleichzeitig zugewiesen,
das ist im Java so an dieser Stelle erstmal nicht drin
im Text,
textuell so nicht hinschreiben könnt
So, dann gibt es ein entsprechendes Beispiel,
was wir hier nochmal angucken können für eine etwas größere Menge.
Und dann sieht man auch, was da dann gleich passiert
mit den möglichen Linearisierungen. Wir haben also A,
VRF auf jeden Fall, da kann man sozusagen schon mal schließen,
das ist sozusagen Start und Stopp.
Und dazwischen haben wir hier BC und DE als zwei Möglichkeiten da entsprechend mit drin.
Und hier gibt es keine entsprechende Anordnung. So,
was bedeutet das, dass wir hier über die entsprechende Menge,
die wir jetzt angeben können, immer das so vorfinden,
dass wir das A vorfinden und hier das F dazwischen haben wir die Möglichkeiten,
wie wir es anordnen können.
Welche findet man dann entsprechend natürlich nicht? Das ahne ich zwar
die erste Stimme oder effe ich an der letzten Stelle steht.
Jo, richtig? Was finde ich noch nicht?
Das B oder D vor A steht oder hinter F?
B, Moment, ganz langsam, nochmal B vor.
B vor A finden wir es nicht finden.
Ja. Oder noch C oder D oder EVA.
Ja. Genauso wie hinter F. Ja.
Und das Ehe meinte die und sie
im Interview
Dass diese irgendwie auf diesem Wald, das andere kam gerade
von hinten schon, das ist immer A oder F,
ganz vorne oder ganz hinten stehen muss.
Damit ist impliziert, dass sie alle nicht vorkommen können.
Und zum Zweiten war das hier natürlich die entsprechenden E4D nicht
möglich ist und entsprechend die anderen. So,
damit haben wir die Sachen so beschrieben und wissen jetzt,
wie wir das anordnen können an den Stellen.
Und dann jetzt die Frage, wie man das konstruiert,
dann muss ich halt überlegen, wie man das macht,
dann muss man halt die Menge der Möglichkeiten entsprechend durchspielen.
So, und jetzt wird es dann spannend,
das wird später nochmal aufgegriffen werden, dass man,
wenn man jetzt so etwas hat,
dass man jetzt hier so solche unendlichen Folgen halt hat von Handlungen,
die da stattfinden können.
Und danach findet mal irgendetwas statt. Dann ist
die Frage, wie groß die Menge der Linearisierung ist.
Und dann wird es mählich schwierig, das hinzubekommen,
weil man natürlich jedes Ding immer einzeln irgendwann dann mal ausführen kann,
weil diese hier sind sozusagen ja unabhängig.
Und da muss man aufpassen, was da genau passiert.
Aber sie müssen immer nach diesen Teilen hier erst mal stattfinden.
So, wenn ich aber die ganzen As durchgeführt habe,
dann ist die Frage, was dann mit den Ws passiert.
Und dann stellt man fest, dass das ziemlich groß wird
an den Stellen
Okay, das Konstruktionsprinzip könnt ihr euch dann entsprechend überlegen.
So, das sind sozusagen so ein bisschen der technische Hintergrund für das,
was wir jetzt machen. Dann kommen wir zu einem Themengebiet,
was sich in den verteilten Systemen damit beschäftigt hat,
wie man überhaupt irgendwelche Ordnungen hinbekommt. Ein heiß geliebtes Beispiel,
bei mir sind nicht mehr die Banken, da gibt es,
also das benutze ich in allen möglichen Bereichen,
wo die verschiedensten Themen angeschnitten werden, aber insbesondere,
wenn man sie erstmal so auf das Grundleihe guckt,
Man hat verschiedene Banken, die sich irgendwie Geld zukommen lassen oder verschicken.
Aber insgesamt möchte sonst seiner Geldbestand in den Banken
immer gleich bleiben oder man nimmt einzelne Kunden oder verschiedene Konten,
von denen man irgendwas überweist, von Konto 1, auf Konto 2, auf Konto
3. Da möchte ich ja, dass irgendwie letztendlich immer ein klar definierter Bestand an Geld da drin ist. Und das muss jetzt irgendwie hinbekommen,
weil so eine Überweisung dauert ja eine Weile,
bis sie irgendwie, wenn ich also bei meinem Konto was abbuche,
bei irgendwas draufbuche, dann ist zu einem bestimmten Zeitpunkt,
wenn ich dieses, also so nebeneinander stehen,
habe jetzt hier die beiden Terminals und sehe,
was ist denn auf meinem Konto drauf und ich überweise etwas,
dann steht da schon drauf, jo, 100 Euro sind weg,
aber hier drüben ist noch gar nicht angekommen,
weil es geht erstmal irgendwo hin und bis es dann wieder ankommt und ja,
jetzt wieder draufgebucht, weil das zufälligerweise das Terminal für die zweite Bank ist,
dann sehe ich das erstmal ein bisschen später.
Wie lang das dann dauert, war eine ganze Weile,
es ist durchaus eine Woche gedauert hat,
inzwischen soll sowas innerhalb von einem Tag passieren.
Sowas kann man auch wieder rückwirkend wieder raufbuchen. Ihr kennt das ja,
dass irgendwelche Buchungsdaten und tatsächliche andere Daten immer unterschiedlich ausgewiesen werden bei den Kontoauszügen.
Und das hat so seine speziellen Probleme. Das heißt,
wir haben so ein verteiltes System von Banken,
auf denen Konten sind und dann müssen wir irgendwie hinkriegen,
dass das Geld ja letztendlich nicht verschwindet und kein neues generiert wird.
Sonst würden die Banken das auch benutzen,
um entweder Geld verschwinden zu lassen oder zu generieren, je nachdem,
was da gerade das präferierte Modell ist an der Stelle.
So, das heißt, wir versuchen das also so hinzubekommen,
dass es nicht passiert und man muss das irgendwie realisieren.
So, und jetzt ist die Frage,
wie kriegen wir das denn eigentlich hin?
Ja, dann sage ich doch einfach um 9 Uhr,
gilt das und dann machen wir das so.
Ist das eine der Lösungen, die akzeptabel ist?
Für das Problem, was ich gerade so beschrieben habe
Ich bin mir nicht ganz sicher, ob ich jetzt richtig verstanden habe, worauf sie hinausholen.
Aber da war eine festgelegten Zeitpunktzeit gemacht, das ist das Ganze ziemlich inflexibel.
Es geht ja eher da eigentlich mehr darum, dass man,
wenn das bei sonst nie eine Relation beschreiben will zwischen den Zeitpunkten.
Genau, sehr unflexibel und man möchte eine Relation haben.
Ja, flexibel, ja. Das Problem ist,
wenn man Tech 9 als festen Zeitpunkt, sagen wir,
eine bestimmte Zeitraum um, einen neuen rumdefiniert,
dass sich dann auch alle vorgängen,
also die schiere Masse, je nachdem,
dass es da auch konzentriert und somit gegebenenfalls das System der belasten wird,
weil sie überlassen kann.
Ja, mit dem Überlasten zu einem Zeitpunkt 9, dass da irgendwas drauf konzentriert wird.
Das ist eine andere Variante, ja. Eine ganz einfache Geschichte ist,
wenn ich sage 9 Uhr und ich rufe meinen Kollegen in London an,
dann wird der mit 9 Uhr was anderes verbinden.
Und das Nächste ist, wenn die Sonne aufgeht,
ist ein anderes gutes Beispiel,
wenn ich das in Frankfurt mache und ich mache das in Hamburg,
dann gibt es da unterschiedliche Zeitpunkte, wann die Sonne aufgeht.
Das heißt also, diese relative Geschichte,
ob denn auch wirklich die Zeit auch wirklich genauso abläuft,
wie das bei mir der Fall ist,
ist die nächste Frage
Und selbst wenn wir uns hinstellen und Uhrenvergleiche machen, werden wir feststellen,
dass wenn sie lang genug auseinander sind, sie irgendwann divergieren.
Allein schon, weil die Mechanik falsch läuft zum Beispiel.
Oder aufgrund von relativistischen Geschichten oder sowas. Gut,
werden wir gleich mal drauf schauen, wo sowas auftaucht.
Das Interessante ist, dass in diesen Hochgeschwindigkeitsbanken,
wisst ihr ja, dass bei den Börsen die Banken versuchen,
möglichst direkt in der Börse ihrem Rechner stehen zu haben.
Und es geht darum,
ob sie 100 Meter oder 1 Kilometer entfernt sind,
weil das wesentliche Laufzeiten sind,
in denen man irgendwelche Sachen berechnet für bieten oder nicht bieten
So, das heißt also, das wird nochmal,
also dieses Zeitaspekte in Systemen sind so eine Art Rennen um,
wer kriegt denn nun was und wo liegt etwas.
Das ist, kann man das so nutzen oder das ist auch ein Problem,
je nachdem, wie man das gerne sehen möchte.
Das kriegt ja eine Veranstaltung noch ein bisschen genauer erklärt.
Hier geht es erstmal darum, überhaupt so eine Zeitgeschichte reinzubekommen.
Was wir jetzt einführen wollen, sind so eine Art Zeitstempel,
die wir jetzt angucken wollen und uns damit Gedanken machen wollen,
wie man das Ding jetzt hinbekommt.
Und auf den ersten Blick,
der so ein Zeitstempel eben 9 Uhr,
das ist so ein Tack und dann läuft das Ganze
So, wollen wir schauen, was wir da jetzt haben.
Wir haben also logische und vektorielle Zeitstempel als Überschrift hier.
Und wir haben so ein Problem zwischen der globalen Zeit und
der lokalen Zeit. Und was dahinter steht, ist,
wir haben also jetzt mehrere Uhren und die ticken jeweils so durch von 99,
100, 101 und zählen,
also immer fleißig so ihre Zeitsekunden oder Jahre oder Monate,
was auch immer, Zeiteinheiten jedenfalls ab.
Die laufen alle irgendwie und naja, so eine Uhr,
gerade wenn es mechanisch ist,
die eine tickt ein bisschen schneller, die ein bisschen langsamer,
wenn die mal so ins Schaufenster bei so einem Uhrenmacher guckt,
dann seht ihr das da durchaus noch unterschiedliche Zeiten angezeigt werden.
Es sei denn, es sind alles atomgesteuerte Uhren,
dann sieht man den Unterschied nicht mehr so richtig meistens.
Aber selbst da ist dann immer noch so ein Sonnenunterschied.
So, okay, worum geht das da?
Es geht also irgendwie um so einen Raum und irgendwelche Zeitabläufe,
die wir da haben. Und das Spannende ist,
dass wir also irgendwie so eine Handlung A haben.
Und irgendwas liegt also in der Vergangenheit,
was vorher notwendig war, damit A stattfinden konnte.
Irgendwas war notwendig, damit wir uns jetzt hier versammeln konnten.
Nämlich, ihr musstet alle hier zusammenkommen.
Jetzt sind wir gerade hier sozusagen in einem Treffen.
Und irgendwann laufen wir wieder auseinander und das zerstreut sich wieder.
Wir können auch darüber sagen, der Zeitraum der Dinosaurier,
die anwesend waren, Wo die, das hier ist A,
ist das Zeitalter der Dinosaurier oder dass der Menschen,
können wir dann auch noch dabei haben.
So, und auf jeden Fall ist es so,
dass zum Beispiel wir jetzt hier sind,
und für mich betrachtet, wenn ich jetzt A,
auf meine Person sozusagen mal beziehe, ist das so,
dass ich dann nachher vielleicht ein Emenser bin oder sowas ähnliches.
Aber ich kann auch sozusagen wieder ins Büro gehen.
Ich habe verschiedene Möglichkeiten, wo das Ganze jetzt hinlaufen kann.
So, auf jeden Fall weiß ich,
dass ich jetzt hier vorher bin,
bevor ich in dem nächsten Zustand wieder bin oder in dem nächsten Ort.
Diese Relation vor ist da eindeutig belegt
Und wenn wir jetzt eine Isabelation nebenläufig haben, dann können wir sagen,
ja, okay, wir nehmen jetzt irgendeine andere dahinter.
Da ist also irgendein anderes A oder ein B in Blau,
was dahintersteht, was auch irgendwie so einen Korridor hat.
Und nun ist die Frage, wie stehen wir denn da
irgendwie in Beziehung und wo gibt es dort in gewisser Weise eine Abhängigkeit von diesen Sachen.
So, und hier haben wir jetzt zum Beispiel ein B,
was noch eine weitere Person sozusagen darstellt in den Handlungsmöglichkeiten. So,
und das Spannende dabei ist jetzt,
wie die Relation von diesen Teilen hier ist,
und da könnte man erst mal sagen,
soweit man es so sehen kann,
sind die erst mal nebenläufig oder unabhängig,
weil die berühren sich nicht, da gibt es keine Abhängigkeiten,
da ist nichts definiert,
wie die voreinander liegen,
sondern ich definiere das nur auf diesen roten und grünen,
blauen Kegeln
Wie ich da irgendwas anordne. Spannend würde es dann,
wenn es Schnittpunkte gibt und so weiter.
So. Jetzt können wir hingehen und uns irgendwelche Funktionseinheiten angucken.
Geliebter Begriff, Funktionseinheit kann ein Prozessor, ein Mensch,
ein Rechner, ein irgendetwas sein, was irgendwelche Handlungen ausführt.
Und für diese Teile wollen wir dann irgendwelche Nachrichten verschicken.
Jedes Element, jeder Prozessor meinetwegen,
JSP oder jede Funktionseinheit hat entsprechend
eine interne sequenzielle Abarbeitung
Sodass wir also bestimmte 4-1-4-2-4-3,
zum Beispiel hier oben bei dem Prozessor Null,
mit lokalen Rechenschritten irgendwie so nacheinander haben.
Aus irgendwelchen Gründen finden also diese Rechenschritte jetzt hier statt,
was dazwischen passiert, das ist dann nicht relevant,
weil es von außen nicht weiter betrachtet wird.
Warum ist relevant? Naja, weil ich hier entscheide,
ich schicke eine Nachricht an den anderen Prozessor oder hier schicke ich
das nach da unten hin oder hier dorthin und diese Vieh
hier unten sagen einfach nur,
wann kommt das Ding eigentlich an?
So, und jetzt ist die Frage,
wie ist das in einem verteilten System und was passiert da
Und wenn jetzt so lokale Zeiten angucke, gucke ich mir an,
wie war das am Anfang oder was passiert da und gucke dann sequenziell durch,
was hier oben jeweils an Aktivitäten passiert und hier auch und dort auch.
So, wenn wir jetzt das Ganze mit Kontenblick vergleichen,
wenn wir da irgendwelche Überweisungen durchführt, dann möchte man gerne das am Anfang am Ende quasi das Gleiche,
was richtige konsistente Ergebnis erscheint. Was wir jetzt haben,
ist, dass wir also Relation vorhaben,
die auf diesem Feedkreuz-Feed definiert ist und wir haben Sophie 1,
Sophie 2 und wenn das da entsprechend ein Element davon sind,
ist das genau dann 4-1 vor dem 4-2,
wenn entweder gehört das 4-1 oder das 4-2 zum selben Prozessor,
also die liegen hier oben,
dann kann ich genau sagen, wer vor wem liegt.
Hier kann ich es auch sagen, dort ebenfalls.
Oder wir haben einen nächsten Fall,
und zwar gehören die zu verschiedenen Prozessoren.
Da müssen wir auch noch irgendwie sagen, wer ist denn vor wem?
Wollen wir auch irgendwie da reinbekommen? Und sie liegen also
auf diesen verschiedenen Zeitachsen und das 4-1 der Sendeeignis
eine Nachricht,
die von 4-2
empfangen wird
So, das hier vorne war jetzt das,
wo sie innerhalb eines Zeitrats sind und jetzt ein Beispiel für das,
was ich jetzt hier eben gerade den Fall B,
was wäre da ein Beispiel?
Ja. Die zweite Fizien? Zwei nach zehn.
Gut, genau. Habe ich jetzt aber nicht eingezeichnet.
Ich nehme den acht nach 3. Gut, ist völlig,
ne, ist eine der möglichen Antworten dabei, nämlich alle,
alle, die hier so rübergehen, sind genau ein,
so ein Teil davon.
So, habe ich damit jetzt alle vor Relationen
sozusagen geschrieben in meinem System? Nein, ich habe noch
eine transitive Wille darüber hängen
Genau, man wird irgendwie noch, irgendwas fehlt jetzt hier noch,
weil ich bestimmte Sachen damit noch nicht beschrieben, beschrieben bekommen.
Und die transitive Hülle ist genau das, was wir da haben wollen.
Das hatten wir ja auch bei den Testsachen mit dabei,
das ist entsprechend transitiv sein sollte. So, was passiert
dann in diesen Bereichen? Wir können jetzt auch sagen,
dass das 4-1 vor dem 4-12 zum Beispiel liegt.
Warum ist das so? Naja, irgendwie müssen wir jetzt
zum Weg dahin finden können. Na gut, hier runter,
dann geht es hier längs und hierhin und dann wissen wir auch,
das kann gar nicht sein,
dass das 4-1 nach dem 4-2
irgendwie vorkommen würde.
Öffi 12
vorkommen würde
Gut, damit haben wir also jetzt da geklärt,
wer vor wem irgendwas macht. Und dann kann man jetzt
schauen, ob das dann auch irreflexiv ist.
Wie ist eure Vermutung dabei? Mal gucken. Beziehungsweise Striktordnung
, kann man sich überlegen. Gucken wir mal ran.
Nehmen wir die Annahme, das wäre entsprechend reflexiv.
Und wir gucken uns an, wenn das eine vor dem anderen liegt,
müsste es irgendwie so ein Teil ja geben.
Und insbesondere sollte es sowas geben. Was aber bedeutet,
dass das vor denen liegt und das wäre ein bisschen unglücklich an den,
an den Stellen. Gut, jetzt kommen wir zu meinem Bankenbeispiel,
was ich ganz gerne da erzählen will.
Wir haben hier also die Möglichkeit, irgendwelche Prozessoren oder Filialen zu haben,
wie immer, Funktionseinheiten, die bestimmte Dinge tun.
So, und was machen die? Die nehmen also irgendwas weg
von den XI und hier tun sie irgendwas rauf und zwar ist das so,
dass hier irgendwas erwiesen wird, von ihm nach J,
irgendeine Übertragung, eine Nachricht, was auch immer ihr noch genau darunter vorstellen wollt.
Also auf jeden Fall eine Nachricht, die von I nach
J rübergeht und dafür verändern wir einfach dann variablen Werte an Bildstellen.
So, damit haben wir eine entsprechende Verarbeitung,
die lokal ist, weil das ist eine lokale Variable,
das ist eine lokale Variable und die müssen halt nur den gleichen Betrag jeweils einmal abziehen und wieder drauf vertieren.
So. Und wenn ich mir das jetzt angucke,
wir haben also eine entsprechende lokale Zeit hier jeweils auf diesen
Achsen drauf und wir haben jetzt hier solche Bestände 10,
20, 30 Euro.
Hast du da gerade Pause? Achso, okay.
Und es wird jetzt irgendein Geldbetrag hier entsprechend versendet.
Und das passiert sozusagen mit den Übertragungen von A nach B. So,
an den Stellen haben wir dann jetzt irgendwelche Beträge,
die da rüberschieben wollen und wollen am Ende wissen,
am Ende haben wir das auf jeden Fall so, dass wir konsistent erst mal ankommen können.
Was wir jetzt angucken können, ist,
dass wir 60 Euro irgendwo liegen haben und zum Beispiel in 8 M6 dort,
ist 2. Aber okay, wird irgendwie zwei Einheiten übertragen.
Und eins des Zehn ist die Zeitzustände der jeweiligen lokalen Uhren,
die wir da vorfinden, wo man das jetzt halt so sehen kann.
So, jetzt ist die spannende Frage.
Die Bankleitung möchte eben immer wieder intervallen,
die umlaufende Geldmenge überprüfen
Oder wer auch immer das überprüfen möchte. So,
und eigentlich erwarten die, dass es immer wieder 60 sein sollte.
Genau, wer im Skript schon mal geblättert hat,
der hat gesehen, ja, da gibt es jetzt verschiedene Problemfälle.
Eine nach dem anderen wollen wir jetzt nochmal durchgehen und
die verschiedenen Lösungsverfahren sozusagen dafür angucken. Das Interessante ist,
dass diese Verfahren durchaus im Mittelalter oder früher durchaus mal verwendet
wurden und versucht wurden zu verwenden.
Und dass wir erst im Nachhinein festgestellt hat,
wo die entsprechenden Probleme auftreten,
warum sie auftreten
Und die entsprechenden Grundlagen dafür,
die sind schon teilweise ein bisschen älter, aber wie gesagt,
Mikowski war halt auch nicht schon im 15. Jahrhundert,
sondern war erst später in Bezug auf diese Vor- und Nachgeschichte dabei.
So, das heißt also, die Fragen,
welche Möglichkeiten im verteilten System irgendwelche konsistenten Zustände zu erreichen und
welche Probleme könnten damit vielleicht auftreten.
Die sind nicht ganz uninteressant. Vor allen Dingen, wenn die Nachrichtlaufzeiten,
nicht so wie heutzutage in sehr kurzen Zeiträumen zu messen sind,
wenn ich euch irgendeine Nachricht schicke,
ist die relativ schnell da.
Früher wurden halt Nachrichten für Schiffe
verschiff versendet
Insbesondere konnten die mal untergehen und wussten also gar nicht, wie die richtig angekommen waren.
Das war das eine Problem. Das zweite Problem war,
wenn sie angekommen sind, wussten wir eigentlich noch nicht mehr genau,
wann und wie viel noch unterwegs sind und so weiter.
So, und in dem Kontext dann eine Aussage zu treffen,
wie viel Geld haben wir denn gerade, auf welchem Konto?
Ist das schon schwierig? Oder wenn irgendwie so ein Postbote,
Briten durch die Gegend läuft und sagt,
ich bringe dir jetzt fünf Euro,
dann sind eigentlich immer noch in meinem Besitz 50 Euro,
weil fünf habe ich losgeschickt, also meine 45 plus die fünf,
die gerade reiten, nehmen wir an, das kommt an,
aber trotzdem, wenn irgendeiner fragt,
wie viel hat denn der Herr Moldt gerade und der reitet halt nicht sondern der fliegt.
Dann überholt er womöglich den Reiter und sieht bei mir 45,
über dem, wo er sozusagen dann ankommt und nachschaut,
obwohl er nach meinen 45, nach den Abschicken sozusagen raufguckt,
stellt fest, es ist noch nichts angekommen.
Also habe ich nur 45 und würde mir dann keine 50 Kredit geben oder sowas.
So, und genau das Problem werden wir jetzt gleich hier halt sehen.
Wir haben ja den Zeitpunkt T gleich 5,
den können wir sich jetzt einzeichnen, weil wir irgendwie sagen,
ja, das muss hier zwischen irgendwie liegen.
Das muss hier zwischenliegen zwischen 4 und 6 und hier zwischen
entsprechend 3 und 7. Zeichnen wir also entsprechend unsere Firmen,
irgendwie ein, die liegt da so entsprechend drin.
Und jetzt fangen wir an zu rechnen und gucken uns an,
was wir bei den jeweiligen Sachen vorfinden.
Und das ist genau das Problem,
was ich gerade beschrieben habe, taucht dann entsprechend hier auf.
Wir haben also da oben noch neun, da haben wir 18,
da haben wir 28 und wir stellen fest,
naja, wir haben ja noch 55 Euro irgendwie.
So, der Fehler ist offensichtlich, irgendwie ist noch Geld
unterwegs und das wird hier nicht berücksichtigt und wird dort nicht vermerkt.
Wir haben ja so ein Defizit und wir müssen das
irgendwie anders mit einbeziehen bei den Geschichten
Gut. Die... Das ist ja Anordnung mit dem Vor,
reicht also nicht aus, wenn ich irgendwo
einen Schnitt mache und dann auf die jeweiligen Bestände gucke.
Weil ich ja dafür sorgen muss, dass nichts mehr unterwegs ist.
Verteilt ein System zu wissen, dass dies mehr unterwegs ist,
ist noch die nächste Problematik. Die nach ihm,
die unterwegs sind,
ist eben das 1 an P1 und 1 von P0 und so weiter,
dass diese Nachrichten hier sozusagen dort von Belang sein können,
beziehungsweise diese hier,
die Gegenrechnung muss natürlich auch noch mit drin haben
Problem sind, wie ich jetzt eben schon gesagt habe,
die nicht empfangenen Nachrichten. So, dann machen wir
ein zweites Verfahren. Einmal schlaue Bänker. Und sagen,
jo, machen wir so einen Ticken anders.
Und bitten jetzt die Summe der abgesandten Minus der Summe der
eingegangenen Beiträge zu XE jeweils hinzuzuzählen.
Und wir haben wieder die Erwartung, dass wir 60 rausbekommen.
So, dann gucken wir unser Verfahren hier an und sagen,
wie sieht es denn so aus?
Stimmt denn das
Wir hier durch und sagen, ja, okay,
wir haben unsere 55 und wir sehen, naja gut,
plus eins, minus eins plus drei plus zwei,
kommen wir insgesamt wieder auf die 60,
weil wir halt gesagt haben, jo,
da haben wir einen losgeschickt und er sagt, ja,
ich habe hier,
muss ich noch einen abziehen und hier muss ich noch einen drauf addieren,
weil da kriege ich ja irgendwas und hier vorne ist das entsprechend auch.
So, das heißt, ich habe jetzt ein Verfahren,
womit ich schon mal eine bessere Auskunft dabei kriege,
mit so einem Zeitpunkt 5 dahin gehe,
nehme ich den Bestand plus die Nachrichten,
die unterwegs sind
Welches Problem kann jetzt immer noch auftreten? Wir können da nach wie vor recht viele haben,
also anschaulich sehe ich das gerade,
wenn man diese rote Linie jetzt nach rechts verschieben würde und sie wandert über 46 rüber,
dann ist doch was angekommen, das beeinflusst die Rechnung unten,
aber das ist das einzige, was passiert ist,
also so wird das die Zahlen wieder verfälschen.
Wenn das zur 6 rüber rutscht, über die 6 rüber rutscht,
denn da hat man dann ja einen eingegangenen Betrag,
der wird abgezogen, dann hat man plötzlich wieder weniger.
Ja, aber man erwartet ja auch nichts mehr,
das ist ja
auch dann schon verrechnet
Dass man so ein bisschen nach rechts verschoben wird, das ist ja,
dann hat der ja auch sozusagen die zwei schon auf dem Konto.
Das heißt, das geht auch nicht verloren an der Stelle.
Die Idee war jetzt sozusagen zu sagen, okay,
ich nehme diese ganze Kante hier und schiebe die mal hierhin.
An der Stelle. Und fange das jetzt da an zu berechnen. Wenn man da nachrechnet,
kommt man auch hin, dass das okay ist,
weil die einzige Sache, die noch ist,
dass hier so ein Dreier unterwegs ist und das wird ja entsprechend sozusagen gegengerechnet,
was da noch an Sachen dabei ist.
Weil der hat ja auch dann hier sozusagen nichts mehr losgestellt.
Er sagt ja auch, was
er erhalten hat
Dann hat es mal was losgeschickt. Und dann sagt er auch,
dass er es erhalten hat und dadurch wird das wieder ausgeglichen.
Das heißt, da liegt das Problem nicht drin.
Also wenn ich es schaffe, immer so eine saubere Schnittkante durchzuziehen,
ist es überall immer dieselbe Zeit ist,
ist das sozusagen ganz, ganz okay.
Oder es gibt noch ein kleines anderes Problem, das werden wir gleich nochmal sehen.
Also vorher hatten wir aber jetzt das Problem,
dass letztendlich bei diesem Fall hier jetzt noch,
wir sind jetzt noch bei dem Fall oder noch ein Fall davor,
nämlich dass wir das hier vorher unterschlagen hatten und das fehlte uns und das haben wir jetzt mit reingenommen.
Diese Lösung haben wir erstmal und jetzt ist die Frage,
was kann da, kann da noch passieren?
So und das gucken wir uns jetzt hier nochmal an.
Wir wollen jetzt gucken, wie wir auf 63 kommen.
Also wie wir auf den falschen Zustand hinkommen an der Stelle
Und das liegt jetzt damit zusammen, dass ich,
wenn ich so eine Linie ziehe, ziehe ich sie in
deinem verteilten System eben aufgrund der unterschiedlich tickenden Uhren eventuell falsch.
Wenn ich sage eben um 9 Uhr prüfen,
wenn wir die Geldbestände, dann ist eben,
selbst wenn ich die Uhren ausgegeben habe,
eventuell die Laufzeit inzwischen falsch und wir gucken zum falschen Zeitpunkt nach.
So, jetzt ist die Frage, was kann da,
was kann da, wie kann das sein?
Wir haben so eine 10,30 und 20 am Anfang und wir haben hier
so drei unterwegs und wir gucken, was passiert da eigentlich?
So, wie kommen wir also dahin? Naja,
das würde zum Beispiel zustande kommen,
wenn wir es jetzt irgendwie so liegen,
die Zeit,
dass das
hier so geschickt hinkommt
Der hier sagt, ich habe zehn und keine Nachrichten versendet,
tue ich nicht. Der hier sagt, zu diesem Zeitpunkt,
ja, also ich habe hier meinen Bestand plus die drei,
die ich mal bekommen habe, von dem anderen.
Und der hier bleibt weiter bei seinen 30. Und schon habe ich das Problem,
dass irgendwie jetzt hier diese, bei diesem Schnitt,
wenn ich den so ziehe, plötzlich 63 rauskommt.
Aber hat man nicht gesagt, man sieht die Beiträge
oder erhalten herab. Also wenn er jetzt sagt,
bei 41 ist halt jetzt 23 und hat aber gemerkt,
er hat schon drei alt und sieht die drei wieder ab,
da ist er wieder bei 20, oder?
Nein, er sagt, er kriegt sie.
Es gibt nur vor keinen, der das,
wo er abzieht
Das Problem ist, der hier oben hat es nicht abgezogen.
Das war das Berechnungsverfahren. Haben wir ein Zurück?
Schwupp. Dieses Ding hier vorne war ja, dass ich
9 plus 1 habe, dass hier oben sozusagen ausgesagt wird.
Nämlich 9 von dem, was ich habe, plus ein, das ich rausgesendet habe.
Also man geht immer auch an, was habe ich denn rausgeschickt?
Und auf der nächsten Seite ist es so,
dass der nur 10 sagt, aber er hat nichts rausgeschickt,
weil zu dem Zeitpunkt, wo er nachguckt,
hat er die Nachricht ja noch nicht rausgeschickt.
Dass da drin nicht das Problem. So,
und die anderen Sachen hier sagen ja jetzt genau bei dem 18 minus 1,
der sagt, ich habe An Bestand 18 und habe einen,
muss ich wieder abziehen, weil den habe ich ja geschenkt gekriegt inzwischen schon.
Den habe ich schon erhalten. Ich ziehe also den ja
wieder ab, was ich von dem oben bekommen habe.
Dadurch ist das hier, so gleicht es jetzt aus.
Das sind die vollständig erreichten Nachrichten. Und das hier ist
das, was er sozusagen losgeschickt hat. Dadurch kommt er
dann auf deine entsprechenden 20. Und weil sonst hätte er,
er hat das ja weggeschickt und es steckt sozusagen noch irgendwo
auf dem Weg unterwegs und gehört ihm eigentlich noch.
Deswegen wird es bei ihm als 20, taucht das auf.
Die drei sind hier unerwohnlich angekommen. Deswegen hat der hier
nur sozusagen die Kenntnis, er hat 28 in der Tasche
und zwei hat er losgeschickt
Und das System weiß dann also, dass es hinkommt. Wenn wir jetzt hier rüber wechseln,
dann sehen wir bei der Berechnung, dass die Rechnung so läuft,
ich habe hier meine zehn, nichts weggeschickt,
auch nichts angekommen, also bleibt es genau bei zehn,
der hier unten genauso.
Und bei dem hier, der sagt,
ich habe meine 20 und ich habe drei erhalten.
So, und das Hauptproblem liegt genau hier,
das ist auch genau das, was jetzt wichtig ist,
nämlich wir haben ja eine Art von Vergangenheit unter dem Zeitpunkt.
Also da, wo wir das durchlegen,
sagen wir, links davon ist Vergangenheit,
hier ist das jetzt,
wo die rote Linie ist und
der Rest ist Zukunft
So, und das tritt in diesen verteilten Systemen auch
wirklich genau so auf, dass ich mit diesem Schnitt,
wo ich das genau hinlegen soll, ist eine schwierige Angelegenheit.
Weil ich ja keine sozusagen wirklich globale Uhr habe.
Wenn ich von oben drauf gucke, ich kann jetzt mal
auf euch gucken, ich sehe euch alle gleichzeitig quasi.
Dach, deswegen war die Lichtgeschwindigkeit, bis das bei mir ankommt,
was ich gerade sehe. Aber ich sehe sozusagen,
wer guckt mich an oder wer ist hier gerade und so weiter.
Das kann ich genau sagen. Wenn ich das Ganze in
einem verteilten System angucke, kann ich euch über Bildschirm vielleicht sehen.
Jeder sitzt vor dem Bildschirm, wir machen eine große Skype-Konferenz. So,
dann ist aber die Frage, wenn ich noch jemanden am Bildschirm sehe,
ob der Typ da noch wirklich sitzt, Ist die große Frage,
weil er kann ja schon weggegangen sein.
Das Laufsignal ist einfach nur verzögert und ich kriege so ein nachgelagertes Bildsignal.
Und die Anzahl der Leute, die mir zuhört,
ist also ganz anders, als es wirklich der Fall ist.
Obwohl ich zum gleichen Zeitpunkt, was angeblich meinte, getan zu haben.
Was ich daran, dass die Uhren halt unterschiedlich laufen an den jeweiligen Orten.
Und dadurch kommt es eben dann zu diesen Problemen. So,
das heißt, das eine ist die Vergangenheit und das andere
ist die Zukunft. Und genau das ist nämlich das Problem,
dass wir hier von danach dort irgendwas losschicken können.
Das ist die anderen Sachen von der Vergangenheit,
die Zukunft, die haben wir ja gerade rausgerechnet.
Das ist das, was unser Verfahren berücksichtigt
Wir berücksichtigen Dinge, dass in der Vergangenheit was losgeschickt wurde,
aber in der Zukunft noch nicht angekommen sind.
Den Fall hatten wir gerade vorher rausgerechnet. Nur der umgekehrte Fall,
dass etwas aus der Zukunft in die Vergangenheit gerät.
Den Fall hatten wir vorher nicht drin. Und das war das,
was man jetzt noch mit rausholen muss aus diesen Sachen.
So, das heißt, das Problem ist genau,
wenn wir Nachrichten aus der Zukunft in die Vergangenheit schicken,
wobei diese Vergangenheit, wenn wir so mit der Vogelperspektive draufpucken,
sehen wir ja,
dass das falsch eingezeichnet ist sozusagen.
Weil wir sehen ja,
dass das irgendwie nicht klappt
Wir gehen davon aus,
dass wir sozusagen immer nur lokal gucken und lokale Berechnungen durchführen,
ohne das Wissen, wie es bei den anderen genau aussieht.
Und wir sagen, jetzt ist dieser Zeitpunkt und wir gucken
nur auf unsere Uhr, die lokal tickt.
Und das verursacht dieses Problem, weil hier das T,
da ein DAT angezeigt werden und wir dann falsche Berechnungszeitpunkte nehmen.
Und das war genau, was ich meinte mit diesen Schiffsgeschichten,
wenn ich jetzt per Schiff das verschicke,
am Montag oder am Dienstag oder an einem bestimmten Datum,
habe ich das Geld doch gehabt.
Und ich habe die Schiffe losgeschickt, aber die kommen nicht an.
Und jetzt ist die Frage, wenn die Uhr da falsch läuft,
weil die wirklich schlechtgehende Uhren haben, ist die Frage,
es kommt jetzt zum Mitternacht an oder nicht das Schiff oder
wie läuft da die Uhr?
Dann gibt es
das Problem.
Was wäre so machen müssen, ist eine entsprechende Frage zu klären,
nämlich wie die Relation vor dem System beobachtet werden kann.
Und dazu bestimmen wir jetzt eine logische Uhr, Logical Time,
an dieser Stelle hier. Und zwar sagen wir,
dass 4-1 4-4-2 ist,
dass man daraus Schlussfolgern kann,
dass die logische Uhr von 4-1 vor der logischen
Uhr von 4-2 liegen muss.
Andersrum, wie das damit aus, nicht.
Okay, wir gucken gleich mal,
was das genaue heißt
Jetzt habe ich hier ein bisschen Text. Den lese ich
auch noch mal vor, weil zur Realisierung führt jede Funktionsanheit
PI eine Variable LTI mit dem Anfangswert 0 ein.
Am Anfang müssen wir erst mal einen sauberen Anfang definieren.
Das muss irgendwie geschafft werden. Das muss man im System hinkriegen,
dass die Besitztümer sozusagen, jeder weiß, ich habe jetzt null,
dann gehen sie auseinander und gucken dann und dann verteilt man das im System.
Aber irgendwie muss man so einen Anfang sauberen Anfangszustand sicherstellen.
Den Nachrichten wird der neue Wert des entsprechenden sein Ereignis beigeführt.
Das ist der logische Zeitstempel, den wir dabei haben.
Wir packen also diese Uhrzeit irgendwie vom lokalen Teil
damit rein
Und Ereignisvieh von PI setzt LTI auf einen um eins
größeren Wert als das Maximum des alten Wertes.
Das heißt, wir erhöhen jetzt diese entsprechende Zeit.
Und als gegebenenfalls ein Vieh empfangenen Zeitstempels, falls wir also da noch was empfangen,
kommt das, wird das also entsprechend auch mit berücksichtigt.
So, das heißt, wir gucken jetzt irgendwie,
versuchen wir so eine Art Zeitpropagierung vorzunehmen, dass wir sagen müssen,
okay, wir müssen ja noch sagen,
was dann da so los war,
damit das auch richtig verrechnet wird und das richtig angezeigt wird.
Und wir die richtigen Zeitstempel auch vorfinden an den Stellen
und wir keine falschen Abbildungen machen
Wir hatten jetzt eben so 1, 2, 3,
4, 5, bis 10 als Zeitpunkte,
wo man so einen zulässigen Schnitt haben kann.
Also wo man die Zeitpunkte sozusagen bestimmt. Und einen Schnitt
legen wir dann immer so zwei meinetwegen genau dazwischen.
1,5 oder 2,5 haben also genau dazwischen, dass wir also
genau zwischen den Zeiten uns das mal angucken können.
Und damit ist es eindeutig geklebt, wie wir da hinkommen.
Machen wir so hier, so ein Schnitt bei 1,5
und gucken uns mal an, was passiert da.
Und da ist genau unser Fall, das hier ist unproblematisch,
weil das sozusagen von der Vergangenheit in die Zukunft reicht,
die sie versenden.
Das berechnen wir ja mit. Das ist kein Thema.
Was hatten wir bei unserer ersten Lösung
Gesehen. Und das zweite ist dann,
dass wir jetzt hier noch so einen Problemfall haben,
nämlich aus der Vergangenheit in die Zukunft.
Nein, ist auch noch okay, richtig, genau. So,
der Schnitt, den wir jetzt hier angucken,
der ist bei den 1,5 und wir können jetzt hier sagen,
wir sind hier bei unseren neuen Einheiten plus diesen einen Versendeten
und entsprechend hier bei unseren 30 minus 1 und können gucken,
was dabei rauskommt.
So, für diese Beschreibung, können wir jetzt hier unten noch
die Definition benutzen. Wir haben also, das Vieh ist
ein Ereignis von diesem PI, was wir da drin haben.
Und da bezeichnet eben dieses LT-T-T-Veh entsprechend den von vielen
berechneten Wert von LTI, von LTI. So,
das heißt, der berechnet diesen Wert jetzt entsprechend der Beschreibung,
was wir gerade eben haben, wenn wir gleich nochmal genauer drauf gucken.
Und wir haben Satz für die Ereignisse,
4-1 und 4-2 gilt,
dass genau diese Vorrelation impliziert,
dass das LT-4-1 auf jeden Fall kleines LT-4-
Ja, da sorgen dafür, dass das sauber ausgerechnet wird
und entsprechend hinkommt. So, jetzt ist die Frage,
wie schaut das aus und was passiert da drin?
Man führt also logische Uhren ein, das ist das erste.
Wir müssen also irgendwie es schaffen, diese logischen Uhren einzuführen und
man legt das entsprechend mit Tee, Größe nur irgendwie fest.
Ich habe also eine Möglichkeit, dort etwas genau drauf zu definieren.
Und für jede Funktionseinheit PI, also für jede dieser lokalen Teile,
bestimme in Bezug auf die lokale Zeit aufeinander,
folgende Ereignisse, Vieh und Viehstrich von PI.
Wir sind also immer noch in diesem PI hier drin und
gucken uns die Abfolge sozusagen der entsprechenden Fies da drin an.
Und wir sagen, dass auf jeden Fall immer gilt,
dass dieses Vieh kleiner gleich der Zeit kleiner ist,
als das Viehstrich, was wir hier haben.
Wir haben also zwei Fies, die wir irgendwie darauf angeben.
Und das Viehstrich ist auf jeden Fall größer als das
entsprechende andere Vieh, was wir da drin haben.
Das ist das, was wir innerhalb der einzelnen Funktionseinheit hier anlegen.
Dann setzen wir das CI auf einen Wert von XI
zwischen diesem Teil hier oder auf den Anfangswert,
falls TV dem ersten Ereignis liegt und dann senden wir es an die Leitung.
Also wenn wir jetzt das Problem haben, wenn wir am Anfang sind,
dann schicken wir genau den Anfangszustand sozusagen einmal los und sagen,
hey, wir starten hiermit so und so viel Euro.
Dadurch kriegen wir eine Zeitpunkt null quasi auf die Reihe und lokal gilt dann auch sozusagen,
dass wir jetzt hier in Zustand 1 gerade dann sind.
Dann sagen wir, okay, da geht es jetzt los.
Und was wir noch dabei haben, ist,
sende den Wert jeder Geldsendung an die Leitung,
die abviehstrich ankommt, aber ein Zeitstempel hat,
der eben entsprechend kleiner ist als dieses entsprechende Vieh
Eindruck. Bitte? Die Leitung. Ja, die Strichanlagen.
Nein, nicht vielleicht eine Idee. Eine Sendung, die
abgestiegen ist. Worauf bezieht sich das Deal? Die Geldsendung,
also den Wert, das ist entsprechend der,
der noch den Wert, das er euch beziehen kann.
Genau. So, wir brauchen also, was wir damit erreichen wollen,
ist, dass wir einen konsistenten Schnitt im System haben wollen.
Also, wir wollen jetzt das,
was wir ganz am Anfang gefordert haben, nimm dich zu jedem Schnitt,
den wir da durchziehen, wollen wir wissen,
Da haben wir jetzt den Geldbestand da drin oder gab es inzwischen einen kleinen Ladendieb?
Das ist ja letztendlich das, weswegen ich es wissen muss.
Ansonsten ist es uns so klar.
Sonst gucke ich einmal am Anfang am Ende und gucke,
weil es richtig ist und das Thema durch.
Aber ich möchte zwischendrin eine Kontrolle haben. Ich will nicht
ein Jahr lang warten und gucken, ob meine Barbestände
immer noch richtig sind und mein Konto richtig geführt wurde.
So, ich mache immer im Schnitt. Und dann möchte
ich irgendwie genau wissen, was sozusagen auf meinem Konto war
und was rausgegangen ist und was die anderen sozusagen haben.
Das möchte ich gerne irgendwie überprüfen können an den entsprechenden Stellen.
So, gucken wir uns das also hier nochmal wieder an.
Wir haben also einen Zeitpunkt T15 und P0 hat eine
an das P1 geschickt und P1 hat keine weitere Meldung
Und das P2 hat eine an P1 geschickt an dieser Stelle hier. So,
das heißt, beide ziehen sich einen ab und sagen aber,
ey, du, P1, da ist einer mehr.
Das ist das, was man da jetzt hinpackt.
Die spannende Frage ist jetzt, welche Zeiten gelten da jetzt
jeweils und welche Begriffe verwenden wir dafür jetzt?
So, es kommt an, dass eins in 44,
das haben wir hier, das kommt dort entsprechend an.
Und zwei kommt eben dann entsprechend in dem 46 hier oben an.
Das kommt dort an an der Stelle
So. Und das ist das, was wir mit diesem Teil
jetzt hier sehen können. So, und das Spannende ist jetzt,
dass die Summe entsprechend jetzt genau diese 57 ist,
ach ja, da werde ich ja zwei losschicken,
habe ich eben gerade falsch gesagt,
ich hätte vorhin eins gesprochen beim Teil davor.
Müssen wir also drei Einheiten zu den 57 halt entsprechend wieder dazu packen.
Das heißt, unser Problem ist ja vorher,
hatten Tritt schon mal nicht mehr mit aus.
So, und dadurch können wir jetzt sozusagen schon mal
eine Menge mit reinbekommen
Jetzt haben wir damit also irgendwelche Zeitstempel und wir können dort Zeiten vergeben,
wann, was, wo ankommt und haben auch gleich eine Hochrechnung für das Teil,
dass wir die Uhren quasi wieder abstimmen.
Das heißt, wenn was ankommt, dann kann es nicht sein,
dass ich von der Zukunft die Vergangenheit da schicke, sondern wenn das ankommt,
muss sie die Zeit hochgerechnet werden und damit wird das dann vernünftig geschnitten.
Dann kann es nicht mehr sein,
dass ich irgendwie so eine falsche Meldung dafür liefern kann,
weil ich kann keine falsche Meldung in die Vergangenheit zurückliefern,
wenn ich im jetzigen Zeitpunkt schon weiß,
dass ich eigentlich schon in der Zukunft bin.
Also dieses Verschieben dieser Tees, die da drin steckt,
kriegt man also mit hin
So, was jetzt, wo wir jetzt noch kurz drauf eingehen können,
ist jetzt noch mal eine weitere Sache,
dass man das Ganze noch weiter verschärfen kann.
Das ist nämlich zwischen solchen Dingen jetzt noch eine totale Ordnung gerne haben möchte,
weil ich irgendwelche Priorisierungen einführen möchte in diesem System.
So, da gibt es jetzt eine ganze Menge Beispiele zu,
könnt ihr auch alles nachlesen.
Das entsprechende Buch, wo ihr es nachlesen könnt,
ist zum Beispiel der Tannenbaum mit entsprechenden verteilten Systemen,
findet ihr zuhauf auch in der Bibliothek.
Und da könnt ihr halt jetzt noch mal ein paar Sachen dazu nachlesen.
Das Teil wird halt im verteilten System auch eingesetzt,
unter anderem wurde mal inzwischen wieder andere Bücher benutzt.
Das ist also eins der Bücher, die ihr
euch angucken könnt
Und da könnt ihr euch sozusagen eine Menge Motivation noch herholen,
warum das alles verwendet wird und wieso das benutzt wird und
welche Algorithmen da verwendet werden und so weiter.
Darauf gehen wir jetzt nicht weiter ein,
weil wir wollten jetzt erstmal nur sozusagen die Grundprinzipien und die Grundhintergründe jetzt einmal aufgreifen,
wir greifen die jetzt nur einmal genau auf.
In den Büchern findet ihr dann nachher mehrere Beschreibungen für das gleiche Phänomen,
nur aus anderen Perspektiven und so weiter und so fort.
Das Ganze ist dann noch viel eingängiger, weil ihr konkretere Beispiele habt,
die ihr dann auch in irgendwelchen konkreten Kontexten umsetzen könnt.
Wir beschränken uns jetzt hier auf die formalen Konzepte,
die dahinterstehen und verweisen sozusagen auf dieses Teil
So, um jetzt mal rauszugreifen,
gucken wir uns mal an,
was der Lenver sozusagen vorgeschlagen hat und was dabei auftreten kann in diesen Dingen,
dass,
wenn man also jetzt dieses Nachrichtenversenden hat und so weiter und so fort,
es geht darum,
dass man hier irgendwelche Werte verschicken kann und dass die Uhren irgendwie nicht richtig laufen und dass diese vermeintliche Durchreichen hier,
was wir gleich noch angucken werden, sauber gelaufen ist.
So, das heißt,
wenn wir jetzt hier was verschicken, A, B,
jetzt läuft hier so eine lokale Uhr und die ticken hier
so runter und wir schicken das dann so rüber,
dann taucht das hier auf,
dass wir von der 6 auf die 16, 24,
40, 60, 56,
64,
Das heißt, wir haben hier jeweils irgendwie Dinge,
die wieder verkehrt von der entsprechenden Zukunft in die Vergangenheit laufen.
Und genau das wollte man halt gerade nicht haben. Die entsprechende Lösung dazu ist,
dass man hier die Zeit weitersetzt und hier entsprechend eben hochrechnet,
dass wir sagen, okay, hier sind wir bei der 61.
Das kommt jetzt nicht mehr in der Vergangenheit an.
Und wenn wir hier was haben,
schicken wir das hier entsprechend los und schicken hier von der 69
das hin und dann wird es da unten zur 70 und nicht
wie bisher hier die 54. Deswegen wird sozusagen beim Empfang sozusagen draufgerechnet und wir zählen die Zeit weiter,
weil wir wissen, dass wir jetzt in der Zukunft sind und nicht noch sozusagen den alten Stand von der alten Uhr haben.
Wir wissen dann, unsere Uhr läuft bisher irgendwie zu langsam
gelaufen oder hat zu wenig Sachen da bekommen
So, diese Einstellung hier kann man halt noch mal
ein bisschen genauer angucken. Das sind halt diese Umsetzungen,
die an dieser Stelle hier stattfindet, von da nach da.
Ich hätte es eigentlich an Höhe einzeichnen müssen, wo der
richtige Wechsel stattfindet. Und genauso auch hier und dort,
dass man da halt sehen kann,
was dort sozusagen dann umgeändert wird in diesen Stellen.
So, damit haben wir sozusagen dieses Teil von Lempert entsprechend mit drin.
Und das ist eben das, was er als,
was der Tannenbaum hier jetzt lustig bezeichnet,
die Situation ist eben gar nicht komisch,
wenn man damit
falsche inkonsistente Systemzustände erreicht
Und ins konsistente Systeme sind unschön. Was man jetzt gerne hat,
wie gesagt, dort sind die entsprechenden Erklärungen schön im Text
und kann man nochmal schön nachlesen.
Ich mache es halt in der Kurzform hier. Wenn man
zum Beispiel ein vollständig sortiertes Multicasting haben an diesen Stellen.
Und das wird hier entsprechend beschrieben, auch mit einem entsprechenden Bankkonto,
weil das entspricht eben so schön diesen Datenbankbeständen und wie man irgendwas hin und her schiebt konsistent.
So, und was man da haben möchte,
ist im Wesentlichen wirklich diese vollständige Sortierung und das Ganze wird
dann auch motiviert im Bereich der Datenbanken das Vermeiden von inkonsistenten Zuständen.
Das ist das, was ich da nicht haben will.
Das heißt, diese Thematik werdet ihr bei Datenbanken entsprechend wieder
antreffen und in verteilten Systemen und auch noch diversen anderen Stellen ebenfalls.
So, nur dann eben anschaulicher sozusagen eingekleidet wahrscheinlich als das,
was wir jetzt hier haben. So,
und das Entscheidende ist dann halt dieser Lempor-Zeitstempel,
den wir dann einführen und das ist das,
was jetzt sozusagen noch kommt und wir noch einen draufsatteln,
dass wir die Zeit sozusagen, die jetzt da drin ist,
vollständig durchsortiert wird,
weil es gibt nämlich noch ein kleines Problem in dem
ganzen System
Und zwar, wenn ich jetzt hier solche Schnitte halt drin haben,
haben wir inkonsistent und konsistenten Schnitt nur noch,
damit die Begriffe nochmal klar sind,
aber das könnt ihr dann sozusagen an den Stellen nochmal angucken,
wo ihr diese entsprechenden Probleme sozusagen genau antrifft.
So, dass ihr eine Fehlersituation verwendet wird,
könnt ihr euch ja nochmal angucken, warum das so ist.
Das könnt ihr im Nachgang dann nochmal angucken. Wie gesagt,
in der Anwendung wird oft benötigt eine totale Ordnung auf den Ereignissen im Netz,
obwohl ich das also jetzt hatte. Eben gerade mit meinem Beispiel,
was ich da hatte, mit dieser Uhr,
die dann irgendwo weiter hüpft, wenn es soweit ist,
kriege ich also nur irgendwie so eine irgendwie partiell geordnete Geschichte hin,
weil immer, wenn was ankommt, dann geht es weiter,
aber vorher sind die Dinge irgendwie unsortiert.
Da stehen die also irgendwie nebeneinander, das wollen wir ein bisschen genauer hinbekommen.
Und was wir jetzt machen, ist, wenn wir noch so Zeitstempel aufprägen,
um eine totale Ordnung auf den Prozessen zu realisieren. Und das heißt also,
wir fügen jetzt zu unserem, unserer logischen Uhr,
Lotical Time, LT, noch dieses,
doch die entsprechende eindeutige Zuordnung mit rein und dann nehmen wir einfach die Prozessornummer,
Nummern, weil die einfach sozusagen geordnet sind,
Und wenn wir das als Priorisierung nehmen,
können wir also den Kleinsten oder den größten Prozessornummer nehmen und das dann entsprechend durchsortieren,
wenn wir das irgendwie anordnen wollen.
Und hier ist also das PE kleiner als das PJ.
Und das ist dann sozusagen die entsprechende Anordnung noch mit.
So, wie sieht das dann aus? Dieser Zeitschritt genau dann,
wenn, entweder, also hier, das Vieh 1 so und
so kleiner ist als das 42, dann ist die ganze Sache geklärt.
Wenn das schon so und so klar ist,
dass diese Zeit, die ich da habe,
genau diese 48, 46, 64 und so weiter,
die wir gerade eben gesehen hatten, bei Lampout,
bei dem Beispiel, dass,
wenn das geklärt ist,
ist das schon mal klar in Bezug auf dieses Vieh
hier lokal
So. Wenn die beiden gleich sind,
und das i kleiner J, haben wir den nächsten Fall.
Das heißt, wir haben eine entsprechende Ordnung hier drauf definiert.
Die beiden sind gleich, aber i ist kleiner entsprechend als
das J. Und das ist quasi diese Tie-Break-Roul.
Das heißt, wir machen irgendeiner Weise eine Symmetriebrechnung.
Das sind verteilten Systemen, kommt das ganz oft vor.
Also es gibt auch noch die Vorlesung verteilte Algorithmen, die wir noch anbieten.
Auch da ist das Thema, wie man überhaupt das hinkriegt,
in irgendwie gleichberechtigten Umgebungen irgendwie noch eine Ja,
Asymmetrie reinzubekommen, wenn man letztendlich entscheiden kann.
Wenn ich sage, ihr alle dürft gleichmäßig abstimmen,
wer irgendwas tut oder wer irgendwas macht.
Und jeder schickt irgendwas und ich jetzt und ich jetzt,
dann würdet ihr euch alle überbieten. Man muss dann sehen,
dass man jetzt endlich für die gleichberechtigten Dinge in irgendeiner Weise
eine Sortierung reinbekommt. Und es reicht eben nicht,
dass einfach nur über diese Vorrelation zu machen.
So, wenn wir also jetzt das zwei,
ist kleiner als drei, warum?
Weil wir diese Relation schon auf die erste Stelle anwenden können
Genau, ne? Zwei kleiner Drei. Ich habe es gerade eben auch schon gesagt,
ich habe gar nicht das voll ausgesprochen, genau,
weil, ne, das heißt,
die Kleine als Drei ist sozusagen auch genau die Begründung an der Stelle.
Und warum ist das jetzt größer? Ja, Fünf ist
größer als Weiße P5. Genau. Fünf größer als zwei.
Also P5, größer als P2 von der Ordnungszahl her.
Und damit haben wir das entsprechend rumgeordnet. Und ja,
jetzt haben wir hier ein, zwei kleiner Vier,
egal was hier hinten noch steht,
auch wenn das die einzelnen Leute jetzt hier so nicht richtig sehen können,
haben wir hier entsprechend natürlich die kleine Sache wieder entsprechend dabei
Gut, das ist sozusagen von Leslie Lampard mit der
entsprechenden Lampard-Ordnung, die man sie auch definiert hat.
Das ist sozusagen eine der spannenden Dinge,
die wir da in den verteilten Systemen gut gebrauchen konnten.
So, was haben wir jetzt? Jetzt kommen wir noch
mal zu dem Senden von solchen logischen Zeitstempeln, die wir da drin haben.
Und da gibt es dann noch verschiedene Varianten zu,
die wir da uns noch angucken wollen.
Wenn wir uns jetzt hier eine entsprechende Anordnung,
wie wir hier das so schön sehen können,
wir haben auch hier so eine Art Kreuzgeschichte mit drin
Und können wir uns jetzt mal angucken, was da entsprechend passiert.
Und wir sehen hier die entsprechende Eins rüberkommen.
Dann haben wir hier ein 1-2, 2-0,
2-1. So, was passiert da jetzt gerade?
Was mache ich da? Welche Zahlen sind das? Haben
wir jemand anders? Der Zahnwert der Eingehenden und der Aufgehenden.
Eingehend und Ausgehenden. Ja, die 1-0,
wie wird die bestimmt? Wie wird die 2-0
bestimmt? Ist meine erste Frage
Naja, für eigentlich null. Die erste Zeit ist immer
die logische Zeit da. Ich lebe in den Prozess.
Ja. Zweitens hatte ich die Prozessoren.
Genau. Die hintere Zahl ist immer die Prozesse-ID,
hat also nichts mit Hochzählen oder sowas noch zu tun,
sondern das kommt durch die ID.
So, und wie komme ich jetzt darauf,
dass ich da eine 2 und da eine 3 habe?
Warum steht hier nicht auch eine 1? Da unten steht
auch eine 1 und da auch. Weil die ja schon
PR 0 das bekommen hat, deswegen wird der eine rufen.
Genau. Das ist dieses Draufrechnen, was wir da machen müssen,
weil wir jetzt berücksichtigen, dass wir das von woanders bekommen haben.
Ähnliches gilt hier. Jetzt muss ich auch nicht eine 2 hinkommen,
obwohl es ja nur um 1 hochgerechnet wird. Nein,
wir nehmen jetzt noch den und nehmen darauf die Erhöhung sozusagen wieder vor,
weil wir von 2 auf 3 auf jeden Fall lokal hochrechnen müssen.
Und dadurch ist dann halt das Ganze erst bei 3 angekommen entsprechend.
Genau. Okay, jetzt geht es entsprechend weiter mit 3
-2. Warum ist das jetzt hier eine 3?
Naja, weil wir von da oben mit einer 2 angekommen sind.
So, was das bedeutet in Bezug auf diese beiden jetzt hier?
Könnt ihr euch überlegen, wer jetzt nun vor wem eigentlich liegt.
Wer liegt, wenn ich nur auf die Relation vorgucke,
werde ich da jeweils vor dem,
wer liegt vor welchem
Eine Verspannung. Keiner, genau. Wenn ich auf die Relation vorgucke,
ist das sozusagen erst mal, dass keiner vorliegt,
bezüglich unserer Lämpertordnung, ist jetzt wer vor wem?
P1 von Fußball. An wer von die waren, ja.
Warum? Bei der Index von Fußball. Genau,
also damit ist jetzt sozusagen das Verfahren, glaube ich, klar.
Wir gucken vorne, dass wir die Zeiten hochrechnen,
wann immer die größere Zahl, die wir jeweils erhalten, wenn es ankommt.
Und hinten ist die entsprechende Prozess-ID und die gibt letztendlich an,
wenn zwei gleiche Zahlen irgendwie vorne stehen,
wie dann die Sache in der Lämpertordnung in Beziehung gesetzt wird.
Dass es da wirklich eine totale Ordnung habe, wenn ich das wünsche,
wenn ich das gerade nicht brauche, kann ich sagen,
ja, okay, die beiden sind eigentlich hier zeitgleich oder unabhängig voneinander.
Je nachdem, wie ich das gerne betrachten möchte auch. Gut,
dann haben wir die 4-1. Die Sklave wird hier
um einen wieder erhöht, weil lokal die Zeit weiterzählen.
Hier das 4-2 ist auch eine lokale, interne Angelegenheit.
Hier draus wird eine 5-1 und entsprechend wird hier
eine 5-2. Das heißt,
auch dieses Überkreuzen und so weiter ist überhaupt kein Problem und kann da ganz normal weitergerechnet werden.
Entsprechend setzt sich hier die Zeit sechs fort und da oben
haben wir dann entsprechend bis 7-0,
was wir um ihr dann sehen können,
wie die Zeiten ablaufen
So, das ist eigentlich ein ganz einfaches Verfahren.
Das war jetzt aber zum Beispiel gesagt,
ich will jetzt bei einem logischen Zeitstampel 3 messen,
hatten wir noch beim Pivotal-Problem, oder?
Oder wie wird man da einen Zeitpunkt raussuchen? So,
jetzt nochmal die Frage genauer, bitte. Also,
wenn man jetzt zum Beispiel sagt, wir messen mal
einen logischen Zeitstampel 3. Ja, 3,1 oder 2,9?
Ja, oder 3,1? Ich wollte gerade sagen, weil
dann hätten wir es. Oder selbst bei 3. Das Penol
gar nicht zu, zu der Zeit 3 kommt eigentlich, oder?
Ja, was erwartest du in Bezug auf diese Dinge,
wenn du mal drauf guckst? Wir sagen,
hier vorne sind wir bei Zeitpunkt 0 und hier hinten
kommen wir bei 7 an
Kann man irgendwo dazwischen gucken, dann natürlich. Dann kann man davon ausgehen,
dass der ja irgendwann durch die drei durch muss.
Aber im Grunde genommen ist der Zeitraum von der zwei
bis zur sieben völlig Schnurz, muss man auf.
Gut Deutsche zu sagen, zu erzählen oder nicht so gut Deutsch.
Ich glaube, die Frage war eher so gemeint,
da die Uhren ja die internen Uhren ja ständig umgestellt werden,
was passiert, wenn er sie überspringt sozusagen.
Genau, wenn wir was bespringen von Uhren,
ist in der Definition hier so nicht vorgesehen.
Das heißt, wenn wir überspringen,
nimmt einfach den letzten Wert dann noch dazwischen liegt sozusagen.
Genau. Für den ist die Zeit,
zu dem bleibt die Zeit hier so lange stehen,
bis er wieder
ein Ereignis hat
Und wenn ihr euch jetzt neuere Systeme anguckt,
wo gerade so die interessanten Untersuchungen zu laufen, dann ist das eigentlich ereignisbasierte Systeme.
Und da ist passierte Systeme, kann man sagen,
ich bin lokal hier, da mache ich irgendetwas.
Also wenn ich auf meinem Rechner irgendwas editiere, mache,
kann ich ja editieren, wie ich gerne möchte.
Erst in dem Moment, wo ich mein Commit für meine Kollegen,
die Freigabe von meinem Code, der sozusagen den Repositor liegt,
wenn ich das da reintun würde, werde.
Erst dann wird wieder meine Zeit, egal wie lange oder
wie langsam die vergangen ist, er ist wieder relevant.
Und eigentlich ist das diese Externensitätsprinzip, was wir dahinter packen.
Wir sagen, es gibt bestimmte Handlungen, die sind eben exzensional beschrieben.
Und wenn ich wirklich habe, die relevant sind.
Wenn ich also sozusagen so einen Commit mache übergibt und da dann diese Sachen mit einbaue,
dann kann man anfangen, nachzugucken, was das bedeutet,
dass ich intern noch eine Ordnung hatte und da quasi eine interne Zeit aufgebaut habe.
Wenn ich das dann committe und auf das allgemeine Git raufpacke,
dann stellen wir einmal fest,
dass am Ende sozusagen die zeitgleich sehr viel weiterspringen muss,
nämlich mindestens so viele Zeitschritte,
wie ich intern ja auch verbraucht habe.
Wenn ich also 100 Commits auf meinen lokalen Rechner mache und
du gleichzeitig nur zwei und ich haue da irgendwie zwischen,
dann ist klar, dass deine Zeit sozusagen sich auch entsprechend verändern muss.
Je nachdem, was da dann passiert.
Wer von euch benutzt Versionierungssysteme für die Verwaltung der eigenen Dokumente
Okay. Wir werden im Sommersemester wahrscheinlich ein Praktikum anbieten,
wo unter anderem solche Teile mit behandelt werden für Softwareentwicklungsprojekte,
absolut spannend, wie man ein Versionierungssystem benutzt im Softwareentwicklungsprozess.
Also wenn ihr in Firmen seid, dann sind ja mehrere Leute,
die Code entwickeln und da muss man irgendwie die Dateien auf
den eigenen Rechner runterladen, editieren, wieder zurückpacken.
Und jetzt ist die Frage, wer gewinnt denn dabei,
welcher Version von welchen Sachen? Und dafür gibt es verschiedene Resonierungssysteme,
zum Beispiel CVS oder SVN oder Git und die
haben unterschiedliche Konzepte im Hintergrund dabei und verlagern sozusagen die Aufgaben
an bestimmte in bestimmter Weise an die Beteiligten.
Und das GIT hat eine ganz nette Umgebung und falls ihr also irgendwann Texte schreibt,
solltet ihr euch zusehen, das ist ein Versionierungssystem benutzt.
Wenn ihr installiert bei euch geht, lokal,
weil dann könnt ihr auch lokal Sachen committen und auch wieder zurücknehmen.
Das heißt, ihr könnt lokal Sachen verwalten, gibt es so eine Art Backup-System.
Wenn ihr noch ein richtiges Backup machen müsst, ist klar,
aber ihr habt zumindest so eine Versionierungsgeschichte dabei,
die nicht das Gleiche ist wie das Backup-System.
Ihr könnt aber so eine Art von Zeitstempelverfahren dort sehr gut
drin wiederfinden und da könnt ihr euch auch das Konzept selbst klar machen.
Das ist gar nicht so einfach, wenn man das mit mehreren Kollegen gleichzeitig macht,
die alle unterschiedlich unabhängig voneinander arbeiten und dann womöglich noch dieselbe Ressource bearbeiten.
Und dann gibt es Konflikte. Und diese Konflikte müssen aufgelöst werden,
damit wir konsistent sind, weil wir keinen inkonsistenten Code haben,
nämlich dass ich eine Routine schreibe und der Kollege da hinten denselben Code,
aber in einer anderen Weise, und wir committen das,
und dann nehmen wir beide Annahmen,
die sozusagen das Gesamtprogramm ganz unglücklich sind,
dass es mich da nicht mehr funktioniert.
So, und die spannende Frage ist,
wenn man diese Konflikte dann auflöst,
dass es dann immer nicht so ganz einfach mitunter,
dann muss man eine von den beiden Varianten wieder zurücknehmen.
Und das kann man in solchen Versionierungssystemen sehen. Insbesondere habt ihr
mit K oder so was ähnlichem, entsprechend gleich eine Visualisierung.
Und dort seht ihr verschiedene Branches und so weiter laufen.
Und diese Brunches können sich überschneiden und verzweigen und ganz interessante Muster hervorrufen.
Und das solltet ihr euch mal angucken. Das ist etwas,
wo ihr eine praktische Umsetzung von diesen Sachen direkt sehen könnt.
Und da sind auch die Softwaretechniker ganz heiß drauf gewesen und
das haben auch Software-Tinniker dann implementiert und benutzt für die eigene Software-Systementwicklung jetzt.
Was sie auch verwendet haben, sind genau die Konzepte hier.
Und weil die Konzepte sauber und klar sind,
schaffen sie es jetzt, eine klare Software zu schreiben,
was vorher bei den alten System CVS konnte diverse Sachen,
das geht bietet eben nicht liefern,
weil dort andere Modelle im Kopf waren,
die bestimmte Phänomene eben erlaubt oder nicht erlaubt haben.
Ja, das wird einfach mal als Motivation für euch,
warum ihr sozusagen die theoretischen Konzepte euch anguckt.
Und das könnt ihr direkt praktisch umgesetzt in diesem sehr,
sehr interessanten Werkzeugen halt sehen. So, wir haben ja
so logische Zeitstempel, die finden wir da drin.
Und jetzt können wir natürlich gucken, wie wir das Ganze ordnen.
Und dann kann man jetzt so eine schöne Kette hier aufbauen,
die man jetzt hier einmal so durchschalten kann.
Und dadurch finden wir jetzt genau unsere Ordnung,
die wir auch ja schon vorhin diskutiert hatten hier,
dass das irgendwie so entsprechend ablaufen soll.
Und jetzt sehen wir, wie das jetzt hier
so nacheinander entsteht
Und was da kommt. Da war ich jetzt zu schnell
beim Drücken. Wir haben entsprechend das hier gesehen und
die Frage ist, ob auch die Umkehrung gilt.
Und das würde ich sagen, machen wir als Hausaufgabe für euch.
Ich werde beim nächsten Mal wieder einsteigen. Ich habe jetzt
noch mal abschließend eine Frage, wer von euch macht beim Ula-Test mit?
Ich hoffe alle, ne? Ja, okay.
Wer von euch ist noch in den Übungsgruppen und braucht noch
einen Schein in den Übungsgruppen eigentlich von euch?
Einfach um das mal zu wissen. Okay, wer braucht
keinen Schein im Moment mehr? So rum. Ja, okay. Gut,
das heißt, man kann zu unterschiedlichen Zeitpunkten,
man kann das ja inzwischen völlig frei Würfeln sozusagen,
man kann die Prüfung machen und die scheinen später oder umgekehrt.
Das haben wir ja entkoppelt sozusagen. Ist nicht sinnvoll,
dass unbedingt, aber wenn man einen der persönliche Zeitplan tangiert,
dann muss man es eben anders machen.
Das ist also kein Thema. Man kann ja zur Prüfung zugelassen werden,
ohne dass man diesen Schein halt da hat,
aber ist halt nicht zu empfehlen. So, die Ulla-Test,
wenn es da Schwierigkeiten gibt, meldet euch weiterhin damit,
es gab eben einige technische Sachen, die auch bei A&D auftauchten,
dass mit einmal irgendwelche Abspeichermittel nicht mehr gingen.
Im Moment läuft der ja, richtig?
Gab es jetzt
keine Beschwerden
Ja gut, dann würde ich euch bitten,
dass ihr demnächst jetzt versucht, die Sachen eher noch abzuarbeiten,
dass wir wirklich vor dem Dienstag den gesamten Stoff sozusagen schon durchgearbeitet haben.
Wir sehen uns am Donnerstag dann in dem Hörsaal B201 und nächste Woche
generell im B201 übernächste Woche, dann wieder hier unten.
Also jedes vierte Mal findet jetzt hier unten statt.
So long