Heute geht es in Folge 2 unserer Doppelfolge zu VRPC.
Falls Sie es noch nicht getan habt, hört euch doch erst die
vorherige Folge nochmal an. Viel Spaß dabei.
Jetzt gucken wir andere Sprache. Nicht, dass wir gucken jetzt mal
eine moderne Sprache, nämlich javascript und Java Script gibt
es typischerweise ganz viel im Web und vor allen Dingen im
Browser und das Java Script, was nicht im Browser läuft.
Sondern im Server, also im Backend.
Das nennt sich Note JS jetzt wieder stark vereinfacht, da
gibt es auch andere Varianten und so, aber sehr bekannt ist
halt no JS als Programmiersprache und das ist
im Prinzip Java Script, was aber keinen Browser braucht um
ausgeführt zu werden, sondern was halt selbst stehend quasi
als als kompetente objektorientierte Sprache
irgendwie laufen kann ich ein. Wichtiges Learning irgendwie.
Das lass mich zusammenfassen. Wir hatten gesagt, im Browser
läuft eigentlich immer HA plus CSS plus javascript.
Und du sagst jetzt javascript fürs Backend oder für den Server
ist letzten Endes noch. S genau, also einfach gesagt ja
nichts wirklich richtig sogar, und das ist halt, das ist
eigentlich ganz elegant und schick, weil dann kannst du, so
wie ich das mache, ich muss ich grad an beiden Fronten
implementiert im Frontend und Backend, also das nennt man Full
Stack, wenn du sowas machst. Ja also ne Frontend und Backend
machst du typischerweise Full Stack.
Und wenn du die gleiche Programmiersprache Technologie
hast, das ist halt total schön, weil das menschliche Hirn, dann
musst du ja ständig irgendwie irgendwie hinter springen und
mit verschiedenen Tastaturen, aber das gleiche so, und dann
wirst du, dann wirst du nicht so im Kopf, dann kannst du halt
beides gleichzeitig machen, weil s halt die gleiche Sprache ist.
Ja natürlich ein paar andere Limitierungen und ein paar
Extras und ne paar Extras weniger.
Aber am Ende des Tages hat die gleiche Sprache, ja, das hat
ziemlich schick, deswegen setzt sich immer mehr durch, das hat
auch so ziemlich. Ziemlich gut genutzte Sprache
also AS und Python und so Python also spielen auf einer Liga
Python und TSOK. So, du könntest natürlich
irgendwas anderes nehmen, wir haben ja gesagt, haben
inzwischen a dazwischen und der ist völlig hupe, ob das dann am
Ende Python aufruft und GS aber für die Entwickler ist
vielleicht schön, wenn du gerade Full Stack machst nimmst du die
gleiche Sprache. Ja, genau.
Jetzt geht es los. Wo fängt die getriebenen Krams
an und so, ja und typischerweise das erste einfache Beispiel
verstehen kann, ist, wenn ich zum Beispiel IO mache, Input
Output. Ja, das ist eine Grundlage der
ganzen Informatik IO Input Output der was heißt das?
Das ist das, das befasst sich mit dem ganzen Datei Gedöns ja
wenn ich zum Beispiel Datei schreibe oder lese ist das halt
IO Input Output ja und wenn ich jetzt kannst du dir vorstellen
wenn ich jetzt zum Beispiel Datei schreibe mit einem
Computerprogramm also ich hab irgendwelche Daten angesammelt
die jetzt gerade egal wo die herkommen, ich kann ja zum
Beispiel generieren ich irgendwelche Zufalls zahlen
sowas und will die Datei klatschen macht gar keinen Sinn
aber sagen wir mal ja so und jetzt willst du von deinem.
Von deinem No GS Programm aus einer Datei schreiben.
Wenn du jetzt jetzt nicht gerade nur 2 Werte da rein schreibst,
sondern das ist vielleicht du willst halt 20 Gigabyte große
Datei schreiben, Vollmacht Zufallszahlen, dann dauert das
halt Moment und zwar vielleicht sogar ganz schön lange.
Ja also also wenn was dauert in der Software, dann ist das schon
ne, dann ist schon ziemlich lang ja so und 20 Gigabyte schreibst
du wahrscheinlich nicht in einer Stunde ne es ist auch
erstaunlich, es geht schon erstaunlich schnell heutzutage,
aber egal ich will ich will den Punkt machen, dass wenn wenn
dieser. Wenn dieser, und das ist auch
wieder eine Funktion, ja, die heißt sowas wie tatsächlich gibt
Pfeil System Bibliothek auch wieder direkt in der Sprache
verankert und dann kannst du sagen FS Punkt Right, dann gibt
es noch den Film den Pass an zu dem also fad und Teilnahme
zusammen und die Daten ne und dann schreibt dir noch eine
Datei hin und so das sind so Sachen die kannst programmieren
wenn du programmierst machen ne und wäre das jetzt so und es
geht auch, dass du das synchron machst wie man so schön sagt,
also jetzt quasi nicht Event getrieben.
Dann wird diese Funktion deinen Code, deine ganze Anwendung
anhalten, bis das verdammte Pfeil geschrieben ist und dann
zurückkommen. Ach so, das das heißt, weil das
sozusagen abgearbeitet wird, Punkt für Punkt das Programm und
jetzt kommt die Funktion schreibe file mit dem Namen, in
dem Fahrt mit dem Inhalt ja das passiert wenn das erledigt ist,
dann kannst du nächsten. Kannst weitergehen.
Ja, so und und wären, wenn das synchron ist.
Also jetzt mal was Programm und so weiter also wir haben einen
Prozess, also Programme, Software, Programm läuft im
sogenannten Prozess ist immer gleich, alle Betriebssysteme und
der Prozess ist quasi die oben, ist ja quasi der oberste Ausfuhr
Container für jede Anwendung ist immer ein Prozess.
Punkt. Ja, der Prozess kriegt ein
gewisser D nennen sich Process IDPID auch sehr wichtiges
Konzept. Jeder der mal bisschen
administriert w ist, die gibt es auch sogar in Windows im
Taskmanager sieht manchmal komische Nummern wenn sich mal
so richtig verabschiedet hat, dann muss immer dann kannst du
sagen will diese Nummer oder irgendwas kannst du glaube ich
auch wieder und so aber egal so und das identifiziert hat einen
Prozess und wichtig ist in dem jede Software arbeitet halt
erstmal an einem Prozess und warum weil dem Prozess quasi der
Anwender als Anwendungs Memory zugeschrieben.
Wird also die Daten alle Daten, die in dem Prozess anlaufen,
auflaufen? Gehören halt nur diesen Prozess
und jeder andere Prozess in diesem auf diesen ganzen
Computer auf dem Betriebssystem darf da halt nicht drauf
zugreifen, das regelt das Betriebssystem schon für dich
und das ist total wichtig, weil sonst hätten wir noch Security
Leaks so ja das wäre total gruselig, dann könnte jeder
irgendwo ein Programm starten und von quer irgendwie auf ein
anderes Programm zugreifen, da die Daten abstauben.
So, jetzt ist aber so ein Prozess an sich erstmal nur eine
ausführbare Einheit. Ja, das was du gesagt hattest,
das arbeitet alles ab. Ja jetzt kommen irgendwelche
Aufrufe und dann irgendwann kommt diese Funktion und soll
halt dieses falsch schreiben ja so und wenn das synchron ist und
dann passt, dann steht halt dieser Prozess fest für die
Zeit, dass dieses Fall geschrieben wird.
Wenn das jetzt aber in Backend ist, n Server ist, ja dann kann
das ja sein und das interessiert dich ja nicht, wenn du Gerrit
jetzt gerade den Server nochmal anfragst Grad mal fresh den
Browser gedrückt, was passiert denn dann?
Kommt ne Anfrage an diesen an dieses Programm.
Das wird dann halt irgendwie Daten haben, die du haben soll.
Dann halt Daten abliefern, die du haben willst du gerade
anfragst. Du sitzt ganz anderen Ecke vom
Planeten und dieses Programm schreibt aber gerade 50 Gigabyte
filin, weil ich den gleichen Server gesagt hab ich erstmal
meine generieren mal 50 Gigabyte Daten und schmeißt die auf die
Festplatte so ja wir sind völlig gemachter K so aber ist egal,
ist zeigt was los ist. So dann kriegst du keine
Antwort, so lange nicht mein Fall fertig geschrieben ist
steht quasi die Ganze die nicht die das kommt zwar an durch die
durch Netzwerkkabel kommt deine Anfrage an und bleibt aber
stehen bis die Anwendung frei ist.
Diese Anfrage. Abzuarbeiten das Betriebssystem,
das dann irgendwie in Reihe gestellt wird und.
Genau da gibt es noch. Bei Synchronem bearbeiten
sozusagen. Auch bei asynchron.
Also mal, dass ich noch zu so ich will, das will ich kurz
erzählen, wichtig, und das ist halt synchron so, ja.
Und, und das ist halt besonders, gerade für so Server Sachen für,
man sagt für IO lästige Anwendungen ja und wann ist IO
lastig? Wenn wenn du viel Files
schreibst liest und falsch schreiben ist das gleiche wie
Datenbank Zugriffe machen am Ende ist eine Datenbank
eigentlich neues organisiertes Pfeil ja vielleicht nochmal
Anwendung und also zum Beispiel Sequel Light wenn das mal kurz
ist quasi ne in in Process Datenbank, die macht das
tatsächlich, die schreibt andauernd in den Pfeil und lies
wieder macht das aber so geschickt, dass es quasi wie
Datenbank agiert kann man sich merken Maid ist ein Datenbank
Lösung für dabei habe ich gar kein Netzwerk dazwischen, die
größeren Datenbanken laufen typischerweise im eigenen
Prozess, auch im Prozess, Kommunikation also quasi wieder
einfach Netzwerk, ja, die Prozesse können auf
unterschiedliche Prozesse auf dem gleichen Betriebssystem
laufen. Ja, dann kriegen wir 2
verschiedene IDS, können sich miteinander unterhalten, aber
nur, wenn die quasi ihre Memories, die eigentlich
getrennt sind, explizit vom einfach zum anderen schicken.
Ja, auch hier wird dann v er PC nochmal spannend und das muss
ich auch machen irgendwie über ich muss dann quasi die Bytes
die ich hab wieder serialisieren, das hatten wir
auch schon mal quasi in eine Kette von Einsen und Nullen
verpacken und von dem einen zum anderen schicken und muss wieder
einpacken ja hin und her so, das hat extrem aufwendig so aber
alles das passiert in in wenn du eine Datenbank zum Beispiel
hast, dann wird die typischerweise in einem eigenen
Prozess. Laufen und eine Anfrage kommt in
die Anwendung. Die fragt dann die Datenbank
gibt. Bitte gib mir mal, warte mal
diesen SQL Dings aus und gib mir die Daten zurück.
Ja und alles dies kostet Zeit und wäre das alles synchron
könnten halt alle anderen die mit dieser sprechen nichts mehr
machen. Ne und so hat es auch noch nie
funktioniert also damit wirst du überhaupt gar nichts skalieren.
Das war nur eine theoretische Erklärung.
Theoretische Erklärung was wir jetzt so und jetzt bleiben wir
dran und jetzt quasi eine Parallelisierung im Prinzip ja,
wir wollen das halt trotzdem, wir wollen das, auch wenn es
Zeit dauert, dann dauert es halt dauernd.
Wir wollen aber wieder, wir wollen halt quasi wieder, wir
wollen trotzdem mehr Performance.
Der Anwendung und jetzt die erste naive Überlegung ist fein,
OK, dann muss ich halt irgendwie irgendwie was gleichzeitig
machen, kann ja nicht sein, dass mein Computer ist ja auch nicht,
nur weil diese einen Befehl ausführt, ja der ist halt nur
beschäftigt, das heißt doch nicht, dass C bei 100% oder
irgendwas gar nicht, ja, das frisst überhaupt gar kein Brot
da und jetzt kommen die sogenannten nochmal ins Spiel,
die hatten auch schon eine Folge, wenn wir sind in einem
Prozess so und jetzt die Möglichkeit mehrere Sachen
gleichzeitig zu tun, ja ist halt quasi und ich Threads sogenannte
Threads nehmen ja so kann ich sagen OK gut da.
Drucker, der will hier seine randomisierten zahlen n großes
schreiben, dann mach ich halt vielleicht auf.
Und der läuft neben des Nebenläufig.
Das passiert halt irgendwie gleichzeitig.
Ja, und während das so passiert, kommt die Gerrit Anfrage rein
und die wir dann auch noch bedient, weil das ist auch
wieder so. Ja so, jetzt aber schon wieder
das jetzt schon wieder, jetzt musst du ja wissen wann ist denn
der Burkhard fertig mit seinem Pfeil?
Ja, da brauch event. Ja, oder du musst Polen ne, also
ich muss wieder. Also deswegen ich wollte mal im
Urschleim anfangen damit jemand da ist.
Schon alarm so jetzt hier oder mach schon wieder events.
Hast du gefragt, worauf die Geschichte?
Hinausläuft. Ja genau, ich muss, also ich,
ich weiß nicht ob ich musste, aber ich wollte immer so tief
ausholen, damit ihr wirklich mal durch verstehen können, wo schon
ja wo ja schon irgendwie sagt der Hund vergraben hat, so ist
der Hund vergraben, ich glaube. Ich nicht passt.
Ja doch, kann man sagen. OK, also das heißt auf dieser
Ebene der Prozesse und der Nebenläufigkeit und der Threads,
ich glaub Folge weiß ich nicht, ich schätze g 12 irgendwas kann
sich mal anhören, brauch ich schon Events um einfach wieder
Bescheid zu sagen, dass ich jetzt gewisse gewisse
Arbeitsschritt erfolgt ist oder? Es geht sogar noch tiefer.
Und jetzt sage ich noch, was die diese ganzen, diese ganzen
Signale, die von außen in deinen Computer reinkommen oder auch
von innen, ne, diese diese hier ist was da, hier wird das
geschrieben, hier ist fertig, hier ist dein Socket wird aktiv
weil von außen über das Netzwerkkabel quasi.
Paris gesendet wurden. Ne, das war früher sogar auch
so, dass das quasi im Betriebssystem quasi gepolt
wurde. Ja, diese Anfragen.
Es liefert immer durch, das nennt man File Deskriptoren,
also jedes. Man kann sich ja vorstellen,
Server hält halt nicht nur eine Verbindung, sondern erhält
gleichzeitig Zehntausende 20., je nachdem welchen Winter steht.
Ja 50 hunderttausend Verbindungen gleichzeitig, über
die kann jederzeit über die verschiedenen Verbindungen
jederzeit irgendwas kommen, so ja.
Jetzt kann man das im Betriebssystem auch sagen.
Ich gehe immer wieder durch hier, was ist hier, was ist hier
was und dann wird das furchtbar furchtbar in Anführungszeichen,
langsam und seit 2 ich jetzt muss ich ein bisschen jetzt
eigentlich seit 2002 gibt es im Linux Kernel i pol, das muss man
einmal auch gehört haben, finde ich das ist totaler Urschleim,
so dass also das kennt keiner der jetzt den einfach komplex
fast nicht gehört hat und nicht Softwareentwickler der weiß
nicht was es ist. Aber das E Poll das da steht
glaub ich tatsächlich Event ja das ist quasi die Unterliegende
im Betriebssystem. Verankerte Einheit KQ heißt das.
Gibt es n analoge analoges Wort und anderen Implementierung,
aber e und K, da fängt das ganze Krams an.
Ja und da wird schon im Prinzip ganz unten im urschleim
Betriebssystem werden quasi schon Events registriert, das
heißt so viel wie gib mir mal eine Nachricht raus liebes
Betriebssystem, wenn auf dem Socket da mal was ankommt, ja
und das wird hoch gereicht in den in den sogenannten Thread
Pool jetzt gehe ich n bisschen kompliziert, wir haben quasi,
aber das ist total, das ist wichtig weil das auch total
aktuell ist. Jeder Softwareentwickler muss.
Sich um mit diesem Kreis, mit diesem Krams beschäftigen, ja.
Und was jetzt notwendig ist, so toll gemacht ist, wenn du dich
mit den Threads selber abschaffen musst, dann haben wir
das ganze Problem, was wir in der Folge haben.
Du musst wissen, wann sind die fertig und so, wann ist das
Event fertig, dann fängst Dupont wieder e Regierungs und so
weiter dann hast du auch gleich sind wenn 2 schwarz an der
gleichen Stelle irgendwie schreiben was du eigentlich
willst, weil die müssen ja Memory die Daten Sachen
austauschen auch von einem zum anderen das kannst du weil du
kannst ihn schreiben an die gleiche Stelle in Memory wird
das Memory gehört und wir sind im Prozess noch verfolgt hast ja
also die laufen die können die Threads die können auf das
Gleiche. Sorry, zugreifen während die
Prozesse das nicht können. Das ist vielleicht ein
wichtiges, wichtiges Ablage, ja gerade ja, und wenn die das
machen, dann bist du halt, dann bist du halt im Schlamassel so,
ja jetzt kriegst du nicht mehr aussortiert, wenn die
gleichzeitig irgendwie schreiben ist alles Käse, dann mach mal
was von hier, die Daten sind grob da fragt man sich so hey
das heißt ja meine Datenbank ist korrupt, wie kann sowas
passieren, so ja zum Beispiel wenn es dann die gleiche
schreiben passiert will. Dann erstmal anderscht für.
Nee, das ist ja programmieren, verbockt oder so und sagt ich
nochmal klären. PS wenn du dieses Programmierst,
dann hast du nur einen Thread als Programmierer.
Also du programmierst so als gäbe es gar keine Threads und
gar keine Gleichzeitigkeit. Ist total schick, aber hinten
drinnen gibt es tatsächlich bei jeder Anwendung mehrere Threads.
Genau 4 default. Die dieses ganze Management
machen. Also du kriegst, du sagst in OGS
und jetzt kommst du sagst dann quasi right file in der
asynchronen Variante synchron und asynchron sind auch so
Worte, die damit ein bisschen zu tun haben.
Ne synchron heißt halt immer. Ich für was aus und warte so
lange, bis es zurückkommt. Asynchron heißt, ich sage, ich
hätte das gerne und registriere einen sogenannten Call Back, das
ist auch ganz wichtiges Ding. Ja n Call Back, das heißt eine
weitere Funktion, eine benachrichtigungs Funktion, die
dann aufgerufen wird, die ich nicht aufrufe, dann Event
getrieben aufgerufen wird wenn das fertig ist was ich da gesagt
habe. Und die ruft dann wieder an.
Deswegen komme. Ich dann wieder an.
Genau deswegen Call Back Call me back if you dont ne oder
irgendwas so ja genau so funktioniert es ist total.
Das muss man, deswegen wollte ich ihnen, dass man das ist,
weil das ist so fundamental, dass man einmal irgendwie gesagt
haben, also wenn ich jetzt sage, schreibt die 50 Gigabyte file im
asi im asynchronen Zustand, dann sage ich, Liebes Neujahrs, tue
das, und hier gebe ich dir ne Funktion mit, die hab ich auch
programmiert von außen, die rufst du bitte auf, wenn das
fertig ist. So, und wenn ich das so mache,
dann dann hab ich verliert, dann warte ich quasi nur noch für
diesen nur das Event zu registrieren hat Anfang mit dem
Macht das, bitte registriere ich quasi Event.
Und wenn der Call Back kommt, dann wird das Event aufgeführt
und das feine geschrieben wird. Das passiert dann komplett
nebenher und in dem Moment wo ich registriert bin ich schon
wieder fertig und 1000 andere Sachen gleichzeitig machen.
Kannst, weil dann unter Umständen weiter benutzen oder
wie auch immer. Ja, nicht das gleiche Fall.
Das ist dann vielleicht, aber ich habe.
Am Event kam das jetzt fertig. Ja, dann kannst du n bisschen
fertig. Ja dann das garantiert ja das
Betriebssystem, das zurückkommt, dann ist das geschrieben, dann
kannst du es benutzen, aber das wichtige ist, während dieses
feige geschrieben wird, ist meine Anwendung völlig
responsive. Ich ich habe 1000 ich hab 1000
Millionen als würdest du irgendwie bügelbrett stehen,
irgendwie bügeln. Radio reparieren, telefonieren,
so als gleichzeitig, das kannst du machen und du merkst halt
nicht, dass Threads am am Start sind.
Du musst ihn nicht synchronisieren, das tut Notiz
für dich und zwar mit einem ganz wichtigen Konzept, mit dem
sogenannten Event Loop. Das heißt, wir sind jetzt quasi
dabei, noch mal zu erklären, ob er gesagt, du, was jetzt Events
ausmachen beziehungsweise wie tief sie eigentlich verankert
sind. Genau erstmal bist du auf das
Betriebssystem allgemein eingegangen und jetzt wie man in
OGS mit Events umgeht, das haben wir jetzt gelernt.
Genau. Dafür die eingesetzt werden.
Ne so. Genau, ich mach n bisschen
natürlich will ich sag mal n bisschen, vielleicht ein
bisschen weiter, ich geb mal kurz einen Ausblick wo ich hin
will, dann gehe ich wieder zurück auf das Level, wäre es
nicht schön, wenn jetzt zum Beispiel, also jetzt ist es ja
am Ende, am Ende am Ende des Tages sagt zum Beispiel
irgendein Client, ich sag mal im Browser lieber Server, tu mal
für mich irgendwas, was halt Zeit kostet, also du veranlasst
irgendwie zum Beispiel eine Datenbank Abfrage und erwartet
ein Ergebnis. Jetzt ist es ja so für dich,
ganz privat im Browser, wenn du das tust.
Also du bist mir ein Beispiel aus der, weil irgendwie hat oder
E oder irgend sowas und machst halt ne n bisschen komplizierte
Anfrage und hast vielleicht also bisschen größer als wir jetzt
und dann ist das wirklich ne Weile bis das irgendwie zusammen
gemacht wird, dann ist ja deine UX deine User Experience, du
warst du eigentlich haben willst.
Ist das in dem Moment wo das fertig ist ne die Anfrage, dass
ich den Browser von alleine aktualisiert und das angezeigt
wird und zwar sofort und jetzt ich denke, dass durch schick
wäre denn das wenn dieses Event. Was eigentlich von dem mal ganz
ursprünglich, von dem E Poll kam, weil nämlich die das
Datenbank Socket nach der Anfrage gesagt, hier hab ich
gemacht, fertig. So, ja dann habt ihr das Recht
übernommen, dann eventuell natürlich, dann hat Call Back
aufgerufen und der Call Back, der ruft dann quasi das
Interface irgendwie auf und dann gehts irgendwie magisch, da
kommen wir PC rüber bis zum Browser hin und der das ist
alles alles durch das Gleiche. Tiefste Urschleim Event
ausgelöst. Eine riesen Kette von Events die
bis zum Browser Mandanten fähig auf dich zugeschnitten gehen und
dann das Event auflösen und du kriegst direkt live Update und
du hast nicht geholt. Du hast nicht gesagt und das
passiert meistens wenn A dann schickst du es ab und dann musst
du sagen gibts was neues gibts was neues gibts was neues so ja.
Kapiert also so lange, bis es dann tatsächlich was Neues gibt
und wird ausgeliefert. Aber ist Riesen.
Nee, aber es kann ja auch sein. Und wenn du, wenn du das jetzt
du kannst, nicht machen kannst. Du kriegst immer in in
frühestens 10 Sekunden zum Beispiel Ergebnis oder in 5 oder
sowas, je nachdem wie das Ding ist.
Während wenn der Server gerade Zeit hat zum Beispiel und
rechtlich performt aufgestellt ist, und der hat halt fertig
gemacht mit dem Event, kriegst du halt so schnell wie es halt
ist. Ja genau das hab ich verstanden.
Das ist ein neues Paradigma. Ja, also an der Stelle K.
Darauf wollen wir hinaus, das heißt, wir haben jetzt die
Betriebssystem Ebene durch, wir haben die Ebene durch.
Genau, wir haben die eben noch nicht durch, da bin ich, da ist
nämlich eine Schwierigkeit, die gelöst werden muss, das will ich
noch sagen, jetzt im im G. Es gibt einen sogenannten Event
Loop, der Event loop ist quasi. Der Manager quasi diese ganzen
Events wegen Event loop. Ja das heißt wenn ich jetzt nen
asynchrone Funktionen beauftrage, also quasi einen
Task registriere der irgendwas macht h und m Call Back damit
gebe, dass er dann quasi aufgerufen wird, dann liegt das
quasi auf eventuelle Threads machen das und wenn die fertig
sind legen die quasi das Zeichen, dass es fertig ist auf
den Event loop und der wird einfach Event abgefrühstückt.
Irgendwann ist dieses Event dran und jetzt ist es wird sich
vorzustellen tatsächlich jetzt wird halt quasi irgendwann
mittendrin im Programm. Ablauf des nicht mehr, dann ist
halt einfach Spaghetti ne, also deine Funktionen werden die
mäßig schon getriggert auf dem Level, das ist wichtig zu
verstehen, es läuft halt nicht von oben nach unten links
Reduktion Instruktionen sondern jetzt kommt kommt quasi der
Event Loop an an deinen Brötchen das fertig geworden ist springt
quasi an die Stelle im Code zurück.
Und genau diese Funktion aufzurufen, die sagt, jetzt
fertig mit dem Bock 2 ist fertig hier.
Jetzt kannst du hier weitermachen, ja und das was
dann passiert wird dann weitergemacht und das ist quasi,
man kann sich vorstellen, dass der ganze Code in so kleine Mini
Blöcke sind, der ganze Code ist quasi blockartig und liegt quasi
immer auf dem Event loop und werden immer nur ganz kleine
Blöcke fertig gemacht und die werden quasi gecuted.
Du hast zwar gefragt was passiert dann irgendwas kommt
ich bin noch nicht fertig das ist der Event loop ja das ist
quasi wie lange Q in der engen also quasi ne Schlange wo
fertige Brötchen vorbereitet werden ja.
Und so schnell wie es geht, wie ein wie ein Thread, das ist
tatsächlich diese Thread. Der Event läuft der sogenannten
Main Thread, deswegen hab ich als Entwickler nichts mehr zu
tun mit irgendwelchen Races, also mit irgendwelchen
Geschreibsel das gleiche Memory irgendwas vorher aussortiert,
weil alles was auf dem Event loop ist hat schon passiert und
ich frühstücke jetzt einfach nur und ich hab selbst eventlog sehe
ich nicht mehr weil ich noch die Funktion aufgerufen bekomme.
Ja so und jetzt noch eine Runde schicker.
Ich finde es. Toll, wenn ich komplett, wenn
ich jetzt komplett abgehängt, weil ich.
Höre Nein, hast du nicht, du nicht.
Ich hab natürlich n bisschen Vorwissen was vor P eingehende,
das hilft mir vielleicht an der Stelle.
Aber ich glaube, dass selbst wenn du abhängt, ist es auf
jeden Fall total nachvollziehbar.
Die Begründung, wofür es gut ist, jedes Detail und immer
alles verstehst auch nicht, kann man sich auch 3 mal gescheitert,
wenn das genau verstehen. Möchte ich ganz nachlesen.
Hier posten ich n guten Artikel rein, der mal die Wahrheit über
diesen ganzen Kram. Es gibt nämlich sehr viele
Informationen auch tatsächlich über genau dieses Thema wird
sehr viel Quatsch verbreitet im Internet sehen, schade genau
eventlog und Threads und dies zusammenhängt, ich habe aber
einen sehr schönen und sehr akkurat natürlich auch sehr gut.
Das ist auch ein, wir haben jetzt schon 30 folgender
gemacht. Interessierst du immer wieder
die Folge über Threads oder über die Reste?
AP und so weiter also es ist ja schon alles da.
Man kann sich das ja alles zusammen.
Ja, und wir waren ja, ich meine, das ist heute wieder tatsächlich
mal richtig technische Folge so, wir haben ja auch, also unsere
Urlaubswoche war zum Beispiel vielleicht auch gar.
Nicht so richtig. Genau die.
Muss mal ne Folge auslassen. Genau, aber wir wollen, wir
wollen nicht trotzdem nicht den Faden verlieren.
Ich hab nämlich h redet, ihr merkt, dass es auch mein Thema,
aber ich hab das selber als Entwickler, ich habe extrem
lange gebraucht um das alles zu. Zusammenzukriegen?
Ja, das steht irgendwo immer auf einer Seite.
Schön, sowas ist nicht so einfach, alles durch zu
verstehen, quasi von vom Betriebssystem urschleim bis was
ist da los? Ja und wo wir die Zeit und was
sind überhaupt die an welcher Stelle und so?
Ja deswegen vielleicht für den einen oder anderen doch ganz.
Interessiert können dann mal schreiben.
Ja, so eine Sache jetzt. Was tatsächlich vom Coding ja
total kompliziert ist. Jetzt wieder, jetzt gucken wir
quasi auf den Text, dass des Quellcodes, also der Software,
wenn ich jetzt so ein asynchrones Event programmiere.
Dann gebe ich, dem hab ich gesagt ne Funktionen mit und ich
weiß ja nicht wann ich aufgerufen wird, dann ist sie
quasi wieder im ganz eigenen Kontext.
Das ist Call back. Das nennt sich das Call Back
genau, der Call Back und der Call Back der der verliert quasi
den nennt man das Vertrieb den Kontext.
In dem ich gerade war, während ich aufgerufen habe, denn das
passiert. Zum anderen Zeitpunkt hab ich
gesagt, ich rufe irgendwann auf und irgendwann später kommt der
kommt der Call Back zurück und alle Variablen, also Variablen
sind eigentlich nur Speicherung von irgendwelchen zuständig,
gerade um mich herum. Hab ne also zum Beispiel zu dem
Zeitpunkt durch registriere weiß ich zum Beispiel gerade noch
welcher User das war, ne mit welchem Browser zum Beispiel
angefragt hat und so weiter also diese Ganzen, diese ganzen
drumherum Informationen die ich brauche dann quasi eine
gescheite Antwort wieder zuschneiden, verliere ich
eigentlich. Beziehungsweise mir dann
irgendwie per Hand merken und die wieder an die Call Back wenn
der kommt dran friemeln. Ne, manchmal gibt es auch so
Sachen, dass man den Call back dann quasi so eine Art Daten
Struktur mit gibt und die bringt dann wieder, dass mit den
Kontakt wiederherstellen kann damit ich weiß ne das ist so ein
bisschen so als würde irgendwo pennen und jemand weckt dich
auf, so sagst du hier fertig. Ja das ist so Alter was ist
jetzt hier fertig bin muss ich zusammenschneiden und du hast
irgendwie 3 Gläser irgendwie auf dem auf dem auf dem Nachttisch
gestellt so und das erste war halt von dem wenn du das erste
Mal geweckt das zweite Mal zweiten geweckt und beim dritten
Mal Dritte geweckt wenn du gerade hörst, du erst wieder
zusammen sortieren, ne, ich weiß nicht wie es besser schildern,
aber es ist total aufwendig von K.
Ich glaube das können wir so nehmen wir mal hier und jetzt
gibt es ein Konzept das wir hier nochmal, das ist total wichtig,
weil das hat mir andauernd so, also jedenfalls
Softwareentwickler, als Laie weiß ich nicht, es gibt
sogenannte Promis, was ist ein schönes Konzept und das ist ganz
modern und hier. Tu ich so, und das ist das
können die Programmiersprachen oder auch nicht, kann das sehr,
sehr gut. Jetzt kann ich zum Beispiel
sagen, diese Funktion awaited. Await schreibt das file also.
Erwarte away. Erwarte, dass das was ich da
Aufrufe passieren wird und jetzt passiert etwas ganz Neues und
tolles ist viel Magie und total kompliziert wie Internet ist.
Jetzt kann ich jetzt quasi was die Funktion eigentlich
ausspucken würde, nämlich irgendwie das OK das ist falsch,
geschrieben wurde irgendwas der Return wert, der nennt die
Antwort auf diesem asynchronen Abfrage die im synchronen Fall
ja auch hab sofort das schreib ich einfach hin und was aus der
Funktion zurückkommt kann ich nehmen und weitergeben, ja weil
dann weiß ich, dass auch fertig ist.
Beim asynchron Ding kann ich halt nicht was in die Hand
nehmen. Weil es halt noch nicht fertig
ist. Ja, wenn ich das weitergebe ist
halt Trash, weil das nicht passiert.
Ab jetzt gibt es aber trotzdem, das nennt sich dann Promis, wird
dann quasi diese Antwort wird an einer sogenannten Versprechen
eine Promis gepackt, die kann ich dann sehr wohl weitergeben.
Ja ich sagen hier ist die Antwort, ist aber noch nix drin,
aber wenn sich die Promis auflöst, das heißt wenn die
asynchrone Funktionen fertig wird ja und das Ergebnis da ist,
dann kommt auf einmal die Wahrheit raus und dann steht da
auf einmal stehen die Daten da drin ne.
Ja, das heißt, das hab ich jetzt nicht verstanden.
Das Programm doch weiter läuft irgendwie und so ne Art des
Promis und Platzhalter ist ja damit weiterarbeiten kann.
Einfach so. Und jetzt kannst du, und das ist
das ist, das war also, das gibt es auch noch gar nicht so ewig,
dass die Programmiersprache und das so durchziehen, ne.
Also als ich noch beim XL gearbeitet hatten wir diese
Probleme haben wir auch Entries hingeschrieben, weil das machen
wir einfach richtig viele Daten durchsetzen mussten, aber wir
müssen machen, du kriegst unglaublich viele Kopfschmerzen
und wenn das groß wird so ja und wenn du auf einmal hast du diese
Promis ist ja und die Promis wie Variable ne du kannst so tun als
hätten die schon den Wert ne. Aber die Programmiersprache
richtet für dich, dass sie nicht, dass sie quasi nicht
aufgemacht. Wir Geschenk ja dann oder ne
Zauber Box ist irgendwie und irgendwo hin da drin, ja.
Oder hier Schrödingers Katze. Ja genau, irgendwie so ne und
und aber quasi wissen, also wenn du es weitergibst an der nächste
Funktion, die werden gekennzeichnet async und so
weiter dann wissen die von alleine wenn diese Promis Full
Field ist. Resolved ist so ja die können
auch n Fehler haben das auch immer ganz wichtig ich will auch
mal sagen es kann ja immer einen Funktionsaufruf gerade wenn
asynchron ist. Gerade wenn du falsch schreibst
mal schief gehen ja. Weil die Festplatte war voll.
Zum Beispiel kann ich nicht schreiben.
Ja hab 40 Gigabyte geschrieben und beim letzten Gebiete ja.
Dann musst du auch wissen, dass das nicht geklappt hat, weil wir
wollen ja Fehler Behandlungen machen, ordentlich, ja, sonst
kriegst du eine Antwort und sagst alles cool, aber die
fehlenden Gebiete ja. Und dann löst sich eine Promis
quasi nicht auf, sondern wenn, dann wird daraus quasi eine
Exception, wie man so schön sagt.
Ja, also eine Ausnahme im Code, das ist auch ein sehr
generisches Konzept, ja. So, jetzt habe ich sehr viel
erzählt, aber jetzt nochmal ein Teaser.
Wie cool wäre es denn, wenn man diese Promisses.
Direkt verschicken könnte über das Netz als Teil einer Anfrage.
Also ne, wir haben jetzt, wir haben was ich sagen will ist wir
haben extrem krasse Konzepte um diese extrem herausfordernde
Event Architektur dieses Event driven Architecture auf dem
Level der Software und des Betriebssystems und der Sockets
und so weiter das haben wir jetzt nicht, wir reden haben wir
in Tiefe besprochen so und diese Konzepte, die haben wir da ja
und dann haben wir so tolle Dinge wie Promis.
Ja und auf einmal wenn wir jetzt jetzt die Welt des Internets
erreichen, schnallen wir so einen alten Ranz.
Davor wie Rest API. Ja das ist wie wenn das ist wie
Idee ankomme muss jetzt auch muss die Schmalspur Bahn setzen
so ja das ist ne Katastrophe eigentlich ja und das das jetzt
Kommission Moment lass mich ja aber jetzt muss ich nochmal wenn
du noch. Fragen hast du jetzt auch
gemacht. Ja, das heißt diese Konzepte,
das hast du ja auch gesagt, die. Es gibt, wenn Programme
miteinander Daten austauschen und die kannst du jetzt
plötzlich Internet benutzen. Ja, wenn wenn Anwendungen an
verschiedenen Orten sind und gar nicht so eng beieinander liegen,
wie es in dem besagten Beispiel nehmen, von dem gerade erst
sozusagen oder in einer Programmiersprache sogar in
einem Programm eigentlich ne. Ja, also kannst du halt eben
nicht im Internet ja nicht VRP hast du ja so, das ist nämlich
derspringende.es gibt jetzt viele, also es gibt halt diese,
das sind quasi Internet Protokolle und tatsächlich jetzt
n bisschen ich will auch nicht sagen wir spielen das VP spielt
auf dieser dieser. Der Protokolle wenn du willst,
da ist halt überhaupt nicht verbreitet und so weiter und ist
noch, vielleicht wird es mal so, weil ich die Idee gut genug ja,
aber es spielt in dieser Liga und es löst dieses Problem,
während die anderen das halt nicht können und deswegen musst
du jetzt an dieser Stelle umsteigen von dieser schönen
eventuell Architektur und diesen tollen Konzepten die in der
Sprache gibt. Und muss die auch programmier
mäßig als Softwareentwickler musste auf einmal das quasi in
also du kommst von einer Solarbetriebenen Elektro Lok und
musst dann irgendwie so n daraus n Haufen Kohle machen und dann
irgendwie Dampflok übers Internet schicken, so ja da
musst du viel codieren, da musst du viel umbauen und dann wird es
wieder gepolt auf der anderen Seite es ist halt wirklich
furchtbar. Ich verstehe, verstehe OK,
vielleicht muss man dazu noch sagen, dass das ganze Open
Source ist. Das haben wir noch gar nicht
besprochen und wir sind ja schon in der 2.
Folge zum Thema. Gehe ich mal von aus.
Ja, wahrscheinlich. Und wir haben jetzt nicht dass
und dass deswegen hier gar nicht als Werbung gewertet werden
darf, zu sehr ne. Also du machst es ja verfügbar.
Nee, überhaupt nicht. Genau, nee, und ich finde halt,
weil das halt, das ist halt auch ein Tool, das ist halt so
generisch, also grundsätzlich funktional für alle möglichen,
das definiert mich nicht irgendwie, ja, das hat auch mit
unserem speziellen Anwendungsfall gar nicht
wirklich was zu tun, das löst natürlich das Problem sehr
elegant, aber genau das ist völlig open Source ist MIT
Lizenz ist kann man sogar kommerzialisieren, wenn man
möchte. Vielleicht können wir ein
bisschen über die erstmal nicht so technischen Themen rund um
VP, da hab ich ein paar Fragen. OK, dann machen wir zwischen.
Zwischen also du hast gerade schon erwähnt, Anwendungsfälle,
also es ist agnostisch was den Anwendungsfall angeht, das habe
ich verstanden, aber wo bietet es sich dann kann man das sagen,
wo es sich ganz besonders anbietet, also mal ein Bild vor
Augen hat, also IOT klar, aber vielleicht erst nochmal kurz.
Ja, also es gibt. Genau.
Also es bietet sich, es bietet sich, es gibt sehr viele Ebenen,
wo sich anbietet, weil das quasi weil ich hab jetzt ganz viel
erzählt, dass mit dem Internet so das Problem haben.
Ja das Internet ist aber gar nicht, das ist quasi nur ein
Anwendungsfall, wenn wir quasi im Internet dazwischen haben,
zwischen diesen asynchronen Funktions aufrufen, es kann,
aber es kann sogar auf innerhalb von Micro Service Architekturen
auch ganz relevant sein, ne, also was sind jetzt Microsoft
hat auch schon f habe ich meine containerisierten Anwendungen
und da habe ich auch schon gesagt die können halt auch den
Halt abgeschlossen, die können halt quasi.
So wie das Internet miteinander spricht, kommunizieren über
Netzwerke. Ja, das ist zwar alles quasi das
lokale Netzwerk, ja, wenn die quasi auf dem gleichen auf dem
gleichen Server sitzen, auf dem gleichen Computer, was ja oft
ist ne Micro Services. Also man sagt zum Beispiel in
der Micro Service Communication ne, also wie wie kommuniziere
ich von einem Container zum anderen?
Ja, da kannst du es auch einsetzen.
Ja und da ist es auch besonders schick, weil du da, du bist ja
quasi im Code. Wir sind ja in der Scouting
Welt, sogar im Backend noch zusammen.
Da hast du quasi den einen Microservices, den anderen
Microservices, liegt im gleichen Backend ja ganz nah beieinander
und hast du auf einmal wieder diesen diesen krass krasse
Problem, dass du, wenn du zum Beispiel mit einer Rest API
machen wolltest, du dir einfach die die Knüppel zwischen die
Beine schmeißen, weil du vom ganz eleganten asynchronen
Promis basierten Code einmal die Dampflok besteigst fährst rüber
zum anderen Container und da bastelt wieder d zusammen?
So, ja, ist wirklich so. Ja wenn du nimmst, so, und
deswegen ist da zum Beispiel auch die PC ganz viel im
Einsatz. GPS hat eine andere Form des
RPCS. Dann auch mal gucken, wo sind
die Unterschiede, jedoch nicht vielleicht später vielleicht.
Ich weiß nicht, auf jeden Fall ist das cool, ja und also der
Anwendungs also hinter Micro Service Kommunikation zum
Beispiel auch oder halt aber auch zum Beispiel gerät wenn
wenn du selbst wenn du zum Beispiel in der Sprache
unterwegs bist und du hast findest n ganz tolles Stück C
plus plus Code, was zahlt einfach es nicht gibt hat noch
keiner geschrieben Open Source Code zum Beispiel von einer
anderen Technologie E Plus oder in Python und du möchtest den
einfach. Integrieren in deine Software
da? Ja dann kannst du auch VRPC
benutzen, weil du dann quasi die beiden Schnipsel adaptiert und
das spricht halt quasi trotz des Funkt sich halt quasi durch die
Gegend, dann halt quasi lokales Internet, wenn man möchte.
Ja das muss man wissen, es gibt immer einen Back Interface.
Also ne ne ne Software bibliothek die ich jetzt in der
Technologie oder der Programmiersprache, die ich
gerade primär benutze nicht zur Verfügung habe, aber in einer
anderen Sprache zur Verfügung steht, kann ich dann einfach ja
einbauen. Extra Aufwand, weil ich PC noch
dazwischen packe, aber. Ich hab die Funktionalität exakt
und VB frisst. Fast kein Brot, das ist das ne,
das ist halt dadurch, dass es halt diese ganzen asynchronen
Klatsch einfach mitmacht. Ist halt so und das ist jetzt
sage ich, aber da ziemlich irgendwie ich nochmal sagen, es
macht das mit, weil ich bald zum Beispiel das VRPC über die
Leitung quasi, also entweder über Internet sockets, wenn ich
Bibliotheken spreche oder Microservices oder halt auch
über das große böse Internet, es kann halt diese Promises
verpacken und schicken. Na s schickt diese asynchrone
Elemente tatsächlich rüber, so dass ich und das Internet selber
und ne, also wenn ich in Netzwerk aufrufe mach, dann ist
das selber eine asynchrone Aktivität, weil das dauert und
das sag ich jetzt gleich mal ganz exakt.
Ja, wenn ich jetzt vom Browser n Datenbankabfrage machst in einer
standardmäßigen Web Anwendung, dann hast du 2 asynchrone
Prozesse, du hast nämlich den den asynchronen oder den
Wartenden langwierigen Teil von Request vom Klienten zum Server
und dessen Response Request Response.
Das ist ein, da könntest du jetzt synchron drauf warten,
dann dauert das ja oder du machst.
Das ist quasi in sich asynchron und der zweite asynchrone Part
ist. Wenn der Server die Request
erhält und eine Datenbank Abfrage gemacht, dann ist die
Halt auf dem Backend asynchron. Weißt du was ich meine?
Da sind 22 du hast 2 asynchrone Aktivitäten, nämlich die
Netzwerk Anfrage und die Datenbankanfrage.
Weil der Server ist ja erstmal nur so ne Art eingangs Server,
dann guckt was muss ich eigentlich tun und in dem Fall
wäre noch die Abfragen. So, und jetzt ist es so, dass
wenn du jetzt VPC benutzt, dann sitzt VPN Server und am
Klienten, also in dem Browser VP läuft im Browser dann halt auch
mal sagen ja. Und VAPC sorgt dafür, dass diese
ganze Asynchronität, diese Doppelte sogar einfach verpackt
wird. Und du kannst dann im Browser
das jetzt wieder javascript ist sagen.
Such aus der Datenbank den Quatsch raus, das SQL Server
oder kannst du schreiben sogar schon im Browser und diese ganze
Asynchronität ist komplett verpackt und da kommt wieder
Promis raus und und du machst damit weil das javascript im
Browser kann auch diese ganzen modernen Dinger da ist wieder IC
am Start so ja. Und aber du verlässt.
Du steigst aus dem ICE nicht mehr aus bei VIPCH du bleibst
sitzen und so. Ja du sagst halt irgendwie, gib
mir vom vom Backend die Datenbank Abfrage zurück und
dann kriegst du ne Promis die dauert die Lust hat sich genau
dann aus, wenn das alles schon passiert ist und wenn es nicht
passiert schick VB die entsprechende Option das wird
alles Back aufgesammelt, das ist im Endeffekt relativ
kompliziert. Ausführt aber also zu
programmieren. Aber es führt dazu zum als
anwendungs Programmierer im Browser, das überhaupt nicht
nachdenken muss, so als wäre das quasi neben dir.
Ja als würdest du einfach sitzen.
BE ist voll cool, prima und das benutzen wir quasi.
Jetzt kommt ein kleines Geheimnis unserer App, Bilder
machen ganz bisschen Werbung, aber unser App Bilder ist ja
quasi die Plattform mit dem wir quasi andere Apps bauen, das ist
am Ende des Tages einfach nur eine sehr mächtige Web
Anwendung, die sehr viel Backend verschiedenen Code aufrufen muss
und ganz viele Sachen machen muss weil da ne.
Ist ja so weg. Du schiebst irgendwas ständig.
Ja, ständig ist Backend Kommunikation.
Dass selbst haben wir unser eigenes Produkt mit unserem
Produkt geschrieben, so dass passiert alles auf VRPC.
Ja, und deswegen kommen wir relativ zügig voran und sind da
auch schnell, weil wir, wir bleiben halt immer schön IC
sitzen und das alles easy, ja. Wo andere noch in die Umsteigen?
Genau, ja, cool. Ich mag das, ruhig zu
formulieren, ich n bisschen provokanter war.
Ich muss mal sagen. Ja, ich finde schlechtes Bild,
vor allem, weil es ja insofern nicht so clever ist, weil man ja
schon schnell unterwegs ist und dann auch wieder anders
irgendwas anderes rein denken muss.
Genau. Vielleicht noch eine wichtige
Sache zu dem RPC, das gibt es ja schon länger rojales, die waren
halt früher und das ist der Unterschied, die waren halt
synchron. Jetzt verstehst du vielleicht,
was ist das heißt, wenn du den du konntest zwar schon immer PC
Calls machen vom Klienten aus, aber der muss dann wieder
tatsächlich hart warten bis der ganze Kram fertig war, deswegen
hat sich diese Technologie nicht durchgesetzt, die P Technologie
und wenn du jetzt Leuten, nicht Leuten manchmal haben benutzen
wie P und dann sagen die OK die sind halt irgendwie von gestern,
das hat sich schon längst gezeigt, dass das Scheiße ist,
so ja. In RB war tatsächlich nicht so
erfolgreich, weil halt quasi beim Aufruf von dieser von
dieser PC, also beim Aufruf des Experten Code musst du halt
warten, weil diese ganze asynchronität Gedöns nicht
gelöst wurde von diesen alten RPC Bibliotheken und dann hast
du echt gewartet und wenn du im Browser javascript echt warten
musst eine echte Katastrophe, weil dann kannst du auch keinen
Knopf klicken, das ist sehr dein Browser eingefroren so ja darfst
halt nicht warten müssen so ja und deswegen ist es wichtig,
dass das RPC quasi asynchron mit geht, ja.
Jetzt vielleicht ne andere Frage.
Ich habe ganz gut. Und zwar wollte ich mal hören,
wie du denn eigentlich darauf gekommen bist.
Jetzt das VRPC ja letzten Endes zu entwickeln.
Also ich weiß ja, das hat sich so mit der Zeit ergeben und weil
jetzt p war schon da und dann hast du hast du von der Idee
gehört oder hast du das gesehen? Dachtest clever, hier müssen wir
die Fehler ausmerzen, kann man das vielleicht auch benutzen
oder hat sich das so ergeben im Laufe der Zeit vielleicht
einfach mal? Also das finde ich echt cool.
Also dazu gekommen bin ich überhaupt diese ganzen Probleme
irgendwie wahrzunehmen mit dem mit meinem ersten Job quasi beim
European XFL. Also weil wir, das hab ich schon
mal erzählt haben, ja einen Skala System, also ein
Leitsystem aufgebaut und da haben wir halt diese OT mäßigen
Anforderungen, dass wir ganz viel Hardware gesteuert haben
und Sensoren ausgelesen haben. Und, und davon gingen auch
wieder Komponenten und kamen und wir haben halt und dann muss man
sich halt überlegen, das ist sehr lustig, da fließen viele
Daten hin und her und jeder will irgendwie die ganze Zeit in
Echtzeit mehr oder weniger sehen, was passiert.
Und da musste ich dieses Problem damals schon lösen.
Da gab es aber noch nicht das Q 11, da gab es auch keine
Container und nichts und so und das war quasi.
Ja, das hat mich halt hart genervt und da habe ich das
erste Mal richtig fundamental drüber nachgedacht, was ich
machen kann und dass Karabo heißt.
Du heißt das Kontrollsystem, was immer noch im Einsatz ist am
European XFL, das ist halt für damalige Verhältnisse natürlich
entsprechend implementiert, aber komplett Event getrieben, genau
wie also Event getrieben, umständlicher vom Code her ne
sehr umständlich zu programmieren die.
Da haben wir ja leider müssen die Entwickler, dann hast.
Du brauchst ja, wenn du einmal im Einsatz ist, haben wir auch
schon erzählt, dass du ja nicht einmal um die könnten natürlich
schöner PC nehmen ist aber jetzt nicht, weil alles im Einsatz
ist. Das Schöne ist, es funktioniert
und es hat richtig viel Last. Ich war neulich da, irgendwie so
ein Release Event, daraus gibt es nämlich Open Source.
Mittlerweile ist auch ganz nice, aber nur am Rande so und aber
das System schafft es halt diese wahnsinnigen Datenraten die da
fließen ne und wir sprechen ja von Zigtausenden von Motoren und
noch viel mehr Tausenden von Pumpen und so weiter all diese
ganzen und die schicken die ganze Zeit irgendwelche
Sensordaten hin und her und so weiter es wird alles abgefräst
mit gar nicht so viel, das gibt es keine Cloud oder sowas ja das
ist gar nicht so viel Server, das ist jetzt nicht hier,
sondern das fließt halt alles schnell und geschmeidig
ineinander. Weil das Halt von Grund auf
Event getrieben ist, wird halt nirgendwo an keiner Stelle
irgendwas gepolter. Ja, so, und das war quasi
meinen, das war so mein mein Lehrstück.
Und dann habe ich mir gedacht das ne mit allem was so genervt
hat beim Code nur für die Softwareentwicklung, das muss
doch eigentlich noch viel eleganter und cooler gehen ne
und wie geil wäre denn das wenn man.
Man hätte, wenn man das alles eigentlich ganz easy ineinander
bröseln kann, so ja und man muss einfach nur die Kommunikation so
doll nachdenken. Ich muss halt, also will auch
eigentlich, eigentlich willst du eigentlich, willst du an dieser
nicht Medien heute ja, also normalerweise tut man sowas
nicht auf diesem Level irgendwelche Bibliotheken zu
schreiben, weil typischerweise gibt es ja immer alles schon im
Netz und auch sehr gut vom sehr cleveren.
Jetzt denkt man immer, das ist immer schon alles.
Denken immer, ich halt diese Nische für sich entdeckt und es
gab damals keine gute Lösung und alles was es gab, es hat mir
nicht so geschickt, wie ich gedacht habe, ich das müsste
eigentlich nochmal schicken. Ich hab auch n Moment gedauert.
Hab ich aber schon sehr früh angefangen, quasi diese schon
damals schon drüber nachgedacht und dann in der während der
nächsten Firma quasi das weiter gedacht und auch viel in meiner
Freizeit n Wochenende konzeptuell daran gearbeitet und
dann irgendwie, weil das quasi professionell fertiggemacht so
genau und das ist eigentlich in einem guten Zustand, so dass da
müssen wir das Spiel jetzt auch jeden Tag darum.
Jetzt, wo wir dabei gerade sind, sagt jetzt, das war alles nicht
elegant genug. Wie sieht das aus, wenn jetzt
das benutzen möchte? VRPC ja für was auch immer
Inter, Microservices oder eben um.
Oder? Wir anzubinden oder haha oder
sowas. Und du hast vorhin, du hast
jetzt am Beispiel A erklärt, aber es gibt ja auch dann für
andere Sprachen. Richtig, genau das ist da, wo
wir noch ein bisschen Arbeit reinstecken müssen.
Also s gibt es für C plus Plus und für G.
Es ist immer sehr wichtig für Python, zum Teil für die
Programmiersprache R gibt es das, da freu ich mich, wenn das
hat auch noch keiner benutzt. Wir hatten mal ne Kundenanfrage
wo das irgendwie interessant gewesen wäre, da habe ich das
quasi als akademische Hand Übung mal geguckt ob ich r.
Kriege sind sehr extravagante Programmiersprache, die bei den
ganz viel Psychologen genutzt wird.
Also eine statistische Auswertung, Sprache also, in dem
entweder Python oder r. Aber er hat auch so seine seine
Vereinigen und dann kannst du das Prinzip.
Kannst du das für solche Sachen nehmen?
Ja genau schick, also wir werden demnächst nochmal Python fertig
machen und dann gibt es natürlich noch andere Sprachen
shap ne die zum Beispiel in der Windows Welt unterwegs sind ist
natürlich total spannend, hätte ich gerne alles in Java selbst,
so dass noch nicht da, aber wenn wir das quasi alles fertig haben
konzeptuell ist völlig klar, ist eigentlich noch programmiert
werden, also haben wir gerade nicht, aber vielleicht findet
sich vielleicht auf wenn jemand zuhört der sich mächtig genug
fühlt in einer vielleicht Softwareentwickler ist oder
jemanden kennt. Es alles Open Source, da kann
sich kann sich einfach kann sich beteiligen.
Es gibt sogar eine Produkt Webseite das VRPC Punkt IO und
da findet man den Status quo wenn man ganz viele
Dokumentationen auch ganz viel Beispiele es kann sofort
losgelegt werden und wenn man VP ausprobieren möchte ist auch
ganz einfach weil wir einen wir bieten quasi an for Free n
Broker den Kreis hab ich noch nicht geschlossen, den schließe
ich jetzt vielleicht auch gereicht dennoch Klick, denn wir
haben jetzt gesprochen das Event getrieben und es geht übers
Internet dann könnte man sich jetzt wahrscheinlich schon
gefragt. Könnt ihr dann, wenn sie nicht
Rest ist. Als Transport Protokoll.
Und der nimmt halt einen QT, ja. Weil das passt wie Arsch auf
einmal oder wie Deckel auf Topf, weil das MQTT genau das ist.
MQTT ist quasi Event getriebenes benachrichtigen durchs Internet
mit so einem Broker Krams. Ja das ist Subscribe, Publish
und so weiter das passt halt, das ist das was man dafür
nehmen. SVPC auf MQTT auf, könnte man
das so sagen? Das VRPC liegt auf MQTT auf,
wenn man es, wenn man es übers Internet schickt.
Ja ich brauche einen t nur dann, wenn ich quasi übers Internet
gehe. Eine gute Idee ist quasi raus,
wenn wenn du Inter Microservices machst und so weiter dann kann
ich dann kann ich direkt agieren, ne?
Eine letzte Frage oder bitte das?
Geht nicht. Ich muss mich korrigieren.
MT ist raus, wenn du quasi Hardware, also wenn du Software
Bibliotheken einbinden direkt so und bei Inter Microservices
brauchst du auch. Im QTT Instanz, die kann aber
lokal dann sein. Ne genau und vielleicht sag ich
doch zum Abschluss vielleicht noch Verständnis.
VPC ist quasi ein Protokoll, also wenn viele Leute beim T
sprechen, dann sprechen Sie messages und werden ganz oft
messages formuliert, wie die Aussehen mit der Pilot und so
weiter von verschiedenen Geräten gibt, Standardisierungsgremien
und so weiter und sofort also ein sogenanntes Message oriented
System und es gibt was da geschickt wird VRPC man muss
sich nicht messen, das ist ein Protokoll, das heißt eben, dass
es ruft ja einfach die Funktion auf, das ist halt dieses.
P Systems basiert zwar auf MQT, aber welche Topical benutzt
werden und welche Messages durch die Gegend fliegen, das
organisiert das von sich selbst so.
Du kannst auch nur du packst deinen Code rein, genau du
packst es, wenn ich es richtig mitbekommen auch dahin wo ich
etwas aufrufen möchte, dann muss.
Ich dann alleine. Du hast Klienten, also wir
nennen es Agenten, wir nicht nur Client Server können, wir können
mit ganz vielen Servern, deswegen nennen wir den Server
Part Agent ja und du kannst dann mit einem mit als einen Klienten
kannst du mit beliebig vielen Agenten sprechen die beliebig
irgendwo liegen und die beliebig verschiedene Technologien haben.
Dann gibt es noch sogenannte Adapter.
Der Adapter es gibt 3 Komponenten, Klienten der der
Macht quasi, der löst den Auftrag aus, ne der will was
haben kriegt diese diese Nachricht zurück als wäre es
nebenan ist der Client der Agent kriegt die Nachricht der muss
das Ausführen, der ne sammelt das zusammen und der horcht
quasi im Netz und der Adapter ist wichtig, der Adapter ist
dafür da wenn du ich hab ja gesagt wir müssen nicht wieder
anfangen ist wenn du Code hast der schon existiert in der
Lieblingssprache dann klatscht du quasi Adapter dran und und
der erkennt quasi was du für Code geschrieben hast.
Und ohne dass du den Anfassen musst, ist er halt quasi von
Remote aufrufbar. Das ganz schick plus Adapter
sogar noch ganz nett deine Dokumentation, wenn du diesen
hast. Also deine Code die oft die
Dokumentation der Public Functions quasi der kann,
nämlich gibt es eine bestimmte Sprache wie man dokumentiert und
Standard ja der heißt. Java.
Doc. Im Java Doc Stil kommentiert.
Dann bringt Dir VP sogar die Dokumentation der Funktion, also
die API Dokumentation mit direkt in den in den Aufrufen in den
Klienten Code. Das ist ganz schön krass also.
Du quasi damit auf r sehr elegante Art und Weise an deinen
Code andere Funktionalität einfach so dran.
Und du kannst, ich hab auch mal genannt, tatsächlich Glaube BO
steht drin auf der ersten Seite des Internet of Code Internet
Code. Ich finde das ganz gut zusammen,
also weil wir genau das was du gesagt hast.
Wir erleben quasi beliebige Coach Schnipsel von beliebigen
Technologien an beliebigen Stellen.
Mit ihrer vollen Eleganz in der ganzen Asynchronität mit.
Mit Weiterleitung von Exceptions und so weiter also wir versuchen
dieses Bild hat dieses Bild, das ist quasi neben dir sitzt im
Code, in allen seinen Facetten irgendwie hinzukriegen.
Und das Paradebeispiel für die Anwendung ist quasi für die
Anwendung ist unsere Bilder, unsere Plattform, die komplett
darauf basiert. Und auch wenn wir jetzt mit kann
ich noch mal sagen mit externen externe Daten aufrufen, woher
auch immer ja von Hardware zum Beispiel oder aus Dateien oder.
Das Betriebssystem oder wie auch immer das auch über VP und.
Tun genau machen wir auch, aber auch.
Das ist natürlich abstrahiert, dass kein Mensch, der unser
Produkt benutzt muss vor PC. Versteht.
Nein, überhaupt. Müssen wir.
Sagen Wir sind zum Beispiel auch schnell, also wir sind, also wir
sind ja, wir sind ja Advokaten der Open Source Community,
deswegen ist das auch selber Open Source und wir nutzen halt
auch sehr viel Open Source, und das können wir besonders
intelligent, weil auch da wieder ein Open Source ist.
Ja, existierende Code in Bibliotheken Form gegossen,
OPCUA zum Beispiel haben wir schon mal geredet, ist eine
große Bibliothek, sehr schön von einem von von Etienne.
Draußen nun. Genau, danke Gerrit und die
können wir halt auch mit VP machen und das finden wir quasi.
Die Funktion die er geschrieben hat an und schwupps haben wir
die irgendwie für unsere App Bilder Kunden irgendwie sofort
zur Verfügung die dann aufrufen können.
Ne, genau, nicht zu viel Werbung jetzt, aber das mal gekriegt und
wie gesagt, an was andere Leute mit VPC machen, ich weiß nicht,
weißt du gar nicht genau ne aber es gibt die Downloads die Leute
benutzen das, aber was genau? Ist sehr überschaubar, kleines
genau ja, also das ist ja wie immer, du kannst n schönes
Produkt. Wir haben eine Firma sein und
trotzdem ganz wenig Visibility haben.
Ist ja auch ganz normal. Wir sind ja noch jung, ist ganz
am Anfang im Vergleich zu anderen Open Source Projekten
noch ziemlich ja noch ziemlich jung.
Ja, da ist bestimmt, da gibt es noch Potenzial das zu erweitern,
wie gesagt. Vielleicht wird jetzt
Nachfolger. Gibt es noch irgendwas vergessen
hab? Ich schon, erzähl ich
Schweißperlen auf der Stirn, insofern 30 Grad hier.
Ich glaube, wir müssen mal Glück.
Hat noch immer bekommen. Ja nee, ich würde sagen, wir
haben Syrer, glaube ich, ziemlich über die Maßen
gespannt, so dass uns den Sack. So machen wir das ne.
Ja, prima, dann vielen Dank und. Ja, ich bin gespannt, wie das
Thema so ankommt bei euch sagt es uns gerne über Podcast
heise.com ladet euch runter auf auf PCIO oder direkt auf github
verlinkt natürlich alles. Genau.
Oder klickt man Stern dran, selbst wenn er Spaß hat beim
Sorry. Alles klar.
Gut Leute, danke fürs Zuhören und danke für die Erklärung, mit
der heute sehr weitergeholfen. Alles klar?
Dann machs gut aus Hamburg, Tschüss.
Vielen Dank fürs Zuhören dieser Folge von einfach komplex.
Die Folge gefallen? Dann lass uns doch ne gute
Bewertung da oder Teile die Folge mit jemanden aus seinem
Netzwerk für Kritik zufolge Anregungen und Fragen für neue
Folgen freuen wir uns auf deine Email an Podcast teilnehmer.com
Abonniere jetzt unseren Podcast, um keine Folge zu verpassen bis
zum nächsten Mal. Tschüss aus.
Hamburg. H.