Transkript: Platonismus und Python - Data Class Builders

· Zurück zur Episode

Vollständiges Transkript der Episode. Zeitstempel beziehen sich auf die Audiowiedergabe.

Dominik

Hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast, Episode 66.

Dominik

Oha.

Dominik

Heute quatschen wir über das nächste Kapitel MFL in Python-Buch, falls euch das interessiert über Data Classes und warum das riecht oder nicht oder was Cooles und wer das sonst so ist mit Sachen.

Dominik

Hi Johannes.

Johannes

Hallo, hallo Dominik, hallo Jochen.

Dominik

Hi Jochen.

Jochen

Ja, hallo Dominik, hallo Johannes.

Dominik

Ich hab gehört, lieber Jochen, du wolltest.

Dominik

Du warst auf einem Podcast-Barcamp.

Jochen

Genau, und dann habe ich so gesagt, wie wir Podcasts aufnehmen und dann

Dominik

haben wir gesagt, das ist alles falsch.

Jochen

Ja, das hat mich so leicht irritiert, aber dann dachte ich, ja gut, dann höre ich mal vielleicht, was so Leute zu sagen haben.

Jochen

Wir haben ja vielleicht auch Erfahrung und so.

Dominik

Weil wir unseren Podcast an anderen Podcast machen, als die ihren Podcast machen und deswegen machen wir das jetzt so, wie die anderen Leute, die nicht so einen Podcast machen, wie wir den Podcast machen, wie wir das richtig machen.

Dominik

Also ich habe mich auch mit Leuten unterhalten und die haben dann mal so geguckt, ich glaube, das geht gar nicht so schlecht.

Ja, das geht schon, aber ich meine, wir machen das ja nicht so richtig professionell, sondern...

Jochen

Nein, nein, das auch nicht.

Jochen

Aber also zum Beispiel irgendwie ein Ratschlag war halt so, ja, sagt doch vorher, wenn ihr euch vorstellt, einmal macht das immer gleich quasi wie der Gefängniswerk.

Jochen

Es wäre auch so eine Intro-Melodie oder so, wäre nicht so schlecht, dann dachte ich schon so, oh Gott, oh Gott, Gott.

Jochen

Aber ja, ich habe gehört, es gibt Leute hier unter uns,

Dominik

wenn meinen eigenen Jingle schreiben, dann mache ich den auf meinen Style und dann können wir ja gucken, wenn der Reflein runtergeht.

Jochen

Kann man sich die Kurve angucken.

Ja, in meinen eigenen Jingle.

Johannes

Immer wenn ich dabei bin, muss der am Anfang eingespielt werden.

Das ist eigentlich eine coole Idee.

Jochen

Ja, okay, dann sieht die, wie viele Leute hören, noch Zukurve wahrscheinlich aus wie so Acapulco, Klippenspringer irgendwie ins Nichts.

Jochen

Das vielleicht auch nicht so toll.

Dominik

Ja, aber ich finde, wie wir es sonst so machen, wir haben ja eigentlich schon mehr eine Struktur als wir es denkst auch.

Dominik

Also erstens kennen uns ja die Leute und wenn die sich dafür interessieren, wie wir sind oder interessieren würden, also ganz ehrlich, dann können Sie uns auch fragen, ne?

Dominik

Hallo.pythonpodcast.de.

Dominik

Also wir machen irgendwas mit Python, das hat man vielleicht schon mal rausgehört.

Dominik

Ich glaube, das ist auch offensichtlich.

Dominik

Und viel mehr muss man, glaube ich, gar nicht wissen.

Dominik

Also muss man nicht, kann man natürlich gerne, dafür kann man ja fragen, oder uns kennen unseren Hörer treffen, das bald stattfindet.

Dominik

Wir organisieren das nämlich.

Dominik

Wir haben noch immer noch gar keinen festen Termin, aber ich würde wahrscheinlich auf August, September hinauslaufen.

Jochen

Ja, aber ich fürchte, das müssen wir jetzt sagen.

Dominik

Danke doch.

Dominik

August oder September.

Jochen

Das ist kein fester Termin, oder?

Dominik

Nein.

Dann müssen wir jetzt nochmal kurz unserem Kalender übereinander liegen.

Jochen

Also ich glaube, tatsächlich wird es eher Ende August bis Anfang September werden müssen wegen Schulferien.

Dominik

Ja, Anfang September bin ich übrigens im Urlaub.

Jochen

Ja, das musst du leider absagen, das geht halt nicht.

Jochen

Na gut, dann wird es halt vielleicht eher sogar Ende September.

Jochen

Okay, dann sagen wir, okay, wir schieben die Ankündigung auf nächste Episode, die dann hoffentlich im Juli.

Dominik

Also es sollte noch gutes Wetter sein, wir wollen es nämlich draußen machen.

Dominik

Und okay, wir hatten September auf, wirklich.

Dominik

Was ist mit August?

Jochen

Geht nicht gut.

Wie gesagt, das ist ein schönes Schwester.

Dominik

Okay, geil, dann wir diskutieren das später aus.

Dominik

Wir haben auf jeden Fall das Hörerentreffen.

Dominik

Sagt gerne Bescheid, wenn ihr vorbeikommen wollt.

Dominik

Es ist hier in der Gegend, also hier heißt Rheinland-Düsseldorf.

Jochen

Wir können ja schon mal sammeln, also wenn ihr uns irgendwas an hallo.python-podcast.de schreibt, dann notifizieren wir euch, sobald wir genaueres wissen.

Genau.

Und es wird wahrscheinlich draußen irgendwie.

Draußen gibt vielleicht auch Sätzen Dinger.

Jochen

Ja.

Jochen

Okay.

Dominik

Genau.

Ja.

Dominik

Das so zur anderen Struktur, Jochen.

Dominik

Wir machen immer News.

Ja, wir machen News.

Jochen

Cool.

Jochen

Dann machen wir doch gerade ein bisschen News.

Johannes

Aber vorgestellt hat sich jetzt keiner, oder?

Johannes

Der Jochen wollte ja zu schön hinfahren und jetzt hat sich keiner eingestiegen.

Wer bist du denn?

Johannes

Deine sehr herzlich die wichtigen Leute.

Johannes

Stellt euch mal vor.

Jochen

Ja, aber man muss ja mal die anderen vorstellen.

Jochen

Man kann sich ja nicht gut selber vorstellen.

Jochen

Also ich stelle mal die Dominik vor, Dominik ist

Dominik

schon nichts sein.

Ja, schon ist vorbei.

Also meine drei Hashtags sind Python, Eurorec und

Jochen

Agentic, ja.

Jochen

Okay, Mist, jetzt sind alle guten Hashtag schon weg, meins wären irgendwie, ja.

Dominik

Setzt mal Python Podcast.

Jochen

Ja, Ukulele, Ukulele ist auch so, genau.

Jochen

Ich habe auch noch ein paar andere Instrumente, aber ja.

Dominik

Und Johannes, sollen wir.

Johannes

Ja, also ich, äh, hallo, ich bin Johannes.

Johannes

Für die, die mich nicht kennen, ich bin gelegentlich hier im Python Podcast als Gast, weil ich diese beiden anderen Typen da kenne.

Ich komme

Johannes

nicht aus dem Rheinland.

Dominik

Du warst aber mal hier.

Johannes

Ich war mal im Rheinland, ja, aber es hat sich dann als ich musste wieder weg.

Tja.

Johannes

Und jetzt bin ich hier hat es übrigens 800 Sonnenstunden im Jahr mehr als bei euch im Rheinland.

Erstmal so nebenbei.

Johannes

Deshalb bin ich auch so ein sonniges Gemüt.

Ihr seid so traurige.

Johannes

Ja, richtig.

Also meine.

Dominik

Du kennst übrigens alle aus dem Chaos-Umfeld so ein bisschen mehr oder weniger auch, oder?

Dominik

Können wir schon sagen.

Johannes

Ja, den Jochen habe ich im Computerclub kennengelernt.

Dominik

Ja, genau.

Dominik

Also, ja, mich auch.

Johannes

Meine Hashtags.

Johannes

Django, Mathematik und Spiele.

Spiele, richtig.

Johannes

Absolut korrekt.

Ah, cool.

Hört man schon am Namen.

Ja.

Dominik

So, eben.

Dominik

Nomen-Sto, Omen.

Ja.

Jochen

Okay, gut, dann können wir ja jetzt nahtlos mit den News einsteigen.

Johannes

Perfekte Struktur.

Jochen

Sehr gut, sehr gut.

Jochen

Ich konnte nicht so viel sammeln, weil ich momentan total im Stratz bin.

Also ich bin privaten.

Dominik

Ganz kurz nochmal zeigt über das Barcamp.

Dominik

Also das ist jetzt vielleicht nicht so interessant für alle Python-Leute, aber für alle Leute, die Podcasts mögen schon.

Dominik

Es gab da nämlich eine tolle Veranstaltung, wo man, also Barcamps kennt ihr vielleicht, aus dem Softwareumfeld, wo man ganz viele nette Podcast-Menschen kennengelernt hat.

Dominik

Ich möchte nochmal Danke sagen für die tollen Kontakte, die ich da getroffen und kennengelernt haben durfte.

Jochen

Ja, Grüße an hier Working Draft zum Beispiel.

Jochen

Auch einen Podcast aus dem Schluss.

Jochen

Ich habe nicht gut

Dominik

gehört, aber gute Tipps waren ja zusammen eine Episoden aufnehmen.

Dominik

Ja, mit Working Draft, der doch mal wieder eine Idee.

Jochen

Und wir haben auch schon konkret geplant, was zusammen mit wo wir sind, ist vorne zu machen.

Jochen

Die kennen wir auch gut und treffen uns immer wieder auf allen möglichen Konferenzen und so, aber genau, ist bisher noch nicht so richtig zustande gekommen, aber wir sind auf jeden Fall da auch noch dran.

Jochen

Ja, das war so ein Tipp.

Jochen

Irgendwie besucht euch auch einfach gegenseitig.

Jochen

Auch ein guter Tipp war halt, ja, schaut nicht nur nach so irgendwie totalen Berühmtheiten oder so, auch wenn die, wenn das auf dem Papier oder so, erstmal, wenn man drüber nachdenkt, gut aussieht, aber.

Meinst du, Guido?

Ich wollte immer schon mal

Jochen

Guido haben.

Jochen

Ja, aber das ist halt mit Englisch vielleicht ein Problem.

Jochen

Mit Sarah war das jetzt mal eine Ausnahme, aber.

Johannes

Ja, aber da gibt es ja schon Leute.

Jochen

Ja, gibt es auch, auf jeden Fall.

Johannes

In der deutschsprachigen Welt gibt es Palsenmenschen.

Jochen

Genau, genau, gibt es eigentlich auch genug.

Dominik

Guido spricht immer schon Dutch.

Jochen

Aber das Problem ist halt bei Leuten, die zu bekannt sind, auch, dass man die dann halt oft schon gehört hat.

Jochen

Und wenn man nicht, weiß nicht, dass die dritte Episode mit.

Dominik

Es gibt doch jetzt demnächst so einen tollen Python, den Film.

Jochen

Ja, es gibt im Sommer, soll jetzt rauskommen, ich weiß gar nicht genau wann, genau, da gab es einen Trailer, habe ich gesehen.

Johannes

Snacks on the Plane?

Jochen

Ja, den gab's schon, aber scheint Python.

Jochen

Nee, das ist so ein.

Dominik

Python die Story, irgendwie, ich weiß

Jochen

nicht, irgendwelche Leute machen das immer und über Even You haben sie zum Beispiel ein Ding gemacht, das war ziemlich gut, das habe ich gesehen.

Jochen

Und über andere Leute.

Dominik

Der Typ wird View.js und jetzt Roldown, habe ich gelesen.

Jochen

Und genau, das gibt es jetzt auch über Python und soll wohl auch, also der Trailer sah auch gut aus und ja, wollen wir mal schauen, wie das so wird.

Jochen

Genau.

Jochen

Ja, naja, genau.

Jochen

Wir sind auf so ein Podcamp gegangen, so ein Barcamp-Podcast.

Jochen

Und immer Konferenzen für mich besonders attraktiv, wenn ich halt irgendwie zu Fuß hinlaufen kann.

Jochen

Ich bin irgendwie bequem an der Stelle und das war halt hier in der Zentralbibliothek am Bahnhof in Düsseldorf, was auch ein total cooles Ding ist irgendwie.

Jochen

Und weil man kann die ganzen Räumlichkeiten auch für alles möglich verwenden, man muss es nur irgendwie anmelden und sagen.

Dominik

Und jedes Mal, wenn man da vorbeiliefen, gerade auf dem Gang, wie man es bei so Konferenz macht, kurz ein Gespräch wird keiner vorbei und hatte.

Jochen

Ja, das soll aber eigentlich nicht so sein, weil eigentlich hat man dieses, irgendwie, man muss halt leise sein, in der Bibliothek Konzept da nicht mehr.

Jochen

Es ist auch so, dass man da Essen mit reinnehmen darf und so.

Jochen

Und man sagt da, also ich habe dann so eine Führung damit gemacht und die sagt, naja, nee, wir wollen das irgendwie anders machen und nicht mehr so wie früher.

Jochen

Und man kann da auch was essen und man kann da auch irgendwie ein bisschen lauter sein, das ist alles kein Problem.

Jochen

Und es gibt nicht nur Bücher, sondern es gibt auch so, weiß ich nicht, so Laserentfernungsmesser und 3D-Drucker und VR-Brillen und ein Podcast-Studio und ein Ding, wo man super acht-Filme digitalisieren kann und auch Alte Dias digitalisieren kann.

Und ein Videorekorder.

Jochen

Und ein Musikstudio, wo man leider aber nicht drin laut sein darf.

Jochen

Da darf man nur digitale Instrumente drin verwenden.

Jochen

Weil daneben diese juristische Fachbibliothek ist, wo die Leute dann lernen für Prüfungen.

Jochen

Und das hat sich dann herausgestellt, dass das eine ungünstige Kombination ist.

Jochen

Das klagt nicht gleich.

Jochen

Das, ja, gut, hätte man auch vorher drauf kommen können, aber das musste wohl irgendwie erstmal eskalieren und jetzt darf man da nicht mehr singen.

Eigentlich schade.

Jochen

Naja.

Johannes

Ja, schade.

Johannes

Aber es gibt auch Backformen.

Johannes

Ich habe das einmal gesehen, es ist Bücherei für Backformen.

Jochen

Genau, so Bücherei der Dinge nennen die das.

Jochen

Da gibt es auch so Fußball, Backformen und so Zeugs.

Jochen

Also wirklich Geburtstagskids für alle möglichen Geburtstagspartys und so.

Jochen

Also wirklich, wirklich, und man kann da halt sich hinsetzen und arbeiten.

Jochen

Es sind 600 Arbeitsplätze in dem Ding.

Jochen

Also es ist halt auch irgendwie echt groß.

Jochen

Es sind zwei Fußballfelder groß.

Jochen

Und es gibt jede Menge Räume für alles mögliche.

Jochen

Und wie gesagt, man muss halt nur sagen, ich hätte gerne den Raum für den und den Zweck und dann überlegen die und dann sagen sie einem, nee, du stinkst oder ja, kannst du haben.

Dominik

Und in der alten Zentralbibliothek, da war ich vielleicht zwölf oder sowas, da stand so ein Computer drin rum.

Dominik

Und der war halt ganz gemeing gesichert, also dachten sie.

Dominik

Und da konnte man so ein paar Sachen machen, heimlich.

Dominik

Und dann Sachen ausprobieren.

Jochen

Tja, das weiß ich, also da gibt es auch eine Menge.

Dominik

Nämlich nach der Schule früher bin ich immer in die Bibliothek gefahren, das war.

Jochen

Ja, das habe ich auch.

Jochen

Ich hab nicht nur nach der Schule.

Dominik

Aber ob ich da jetzt meine Kinder hinlassen würde, ich weiß nicht so genau.

Dominik

Ja, das ist ja egal.

Jochen

Aber also, wie gesagt, ich wusste gar nicht, dass es so ein Ort gibt und dass es irgendwie, dass man so coole Sachen macht.

Dominik

Da gibt es auch Bücher über Peisenjochen.

Ja, da gibt es ja Flutchen.

Jochen

Bücher gibt es auch.

Jochen

Ja, ja, da werde ich mir nicht.

Jochen

Aber es gibt eine Fernleihe, über die man halt eine Menge kriegt.

Dominik

Darüber wollten wir gleich reden.

Jochen

Und die liefert dann halt auch an die nächstgelegene Bibliothek.

Jochen

Also man kann das auch online machen und dann kann man die Sachen dann lokal abholen.

Jochen

Und bei uns ist die nächstgelegene Bibliothek irgendwie ein paar hundert Meter entfernt.

Dominik

Genau, also wir fliegen auch mal zu unserer Stadtteilbibliothek.

Jochen

Ja, und man kann die Bücher auch überall zurückgeben und so.

Jochen

Also es ist wirklich, also ich war überrascht.

Jochen

Es war überhaupt nicht.

Dominik

Dort hat Tonis Ausleihen.

Jochen

Das auch, ja.

Jochen

Ja, genau, genau.

Jochen

Also da hat das Ganze irgendwie stattgefunden.

Dominik

Ja, also wir haben ein paar tolle Tipps bekommen für Marketing und was man nicht alles machen soll.

Dominik

Das heißt, wir machen jetzt ganz viel Marketing.

Jochen

Viel Spaß damit.

Jochen

Für uns bestimmt gut, für euch, ja, ihr müsst halt damit leben.

Jochen

Ja, nee.

Dominik

Wir haben tatsächlich überlegt, ob wir ein Video mal aufnehmen wollen.

Jochen

Genau, ob wir ein bisschen mehr Video machen.

Jochen

Also ich habe das schon länger überlegt, aber ja, das war so auch eine der Geschichten, wo Leute sagen, ja, das muss man im Grunde irgendwie, wenn man Social Media Presence Interact.

Jochen

Man muss das schon irgendwie machen.

Johannes

Ja, man gewinnt halt einen Hörerkreis auf YouTube, oder?

Johannes

Also dass die Leute, die YouTube gucken, die machen.

Jochen

Ja, und gar nicht mal unbedingt die Podcast-Episoden selber, aber dass man zumindest da ist und da gefunden wird für die Leute, die halt nur auf YouTube sind und dann halt da einen Trailer hat, dass sie halt wissen, oh, es gibt den Podcast, ich muss da vielleicht irgendwie auf meinem Podcatcher der Wahl oder auf.

Dominik

Total steil, Johannes.

Dominik

Und da stehen die Fans hinterher auch vor deiner Tür und klopfen heimlich.

Johannes

Groupies.

Jochen

Ja, also oder was mich auch.

Jochen

Was ich auch total cool fand, war, wie Leute darüber gesprochen haben, wie sie halt ihre Workflows halt so ein bisschen automatisieren mit so diversen Tools und was man da alles machen kann an Automatisierungen von irgendwie, ja, was man.

Jochen

Oder über, ja, also es gab.

Dominik

Da sind wir bei einer anderen geplanten Folge übrigens mit, aber nicht über Podcasts, sondern wir wollten auch bald nochmal wieder bei so Data Science Kram reden und dann auch nochmal über die ganzen neuen KI-Sachen.

Dominik

Darf ich KI sagen?

Dominik

Ich weiß nicht.

MCPs und so.

Jochen

Ja, ich glaube, man darf KI musste sagen.

KI.

Achso, Entschuldigung.

Dominik

Du hast eben so einen tollen Link geschickt, der dazu passt.

Johannes

Ja, ich habe auch tatsächlich noch News, weil es gibt eine interessante Veröffentlichung vom MIT Media Lab mit dem Titel Your Brain on ChatGPT, die gerade so ein bisschen durch die News gegangen ist.

Ja.

Johannes

Wo sie untersuchen, was das denn für Auswirkungen hat.

Johannes

Also ich meine, es ist natürlich sehr reißerisch und die Studie hat 54 Teilnehmer, also es ist jetzt nicht kein repräsentativer Querschnitt durch die Gesellschaft.

Johannes

Aber es gab wohl signifikante Unterschiede zwischen Menschen, die LLMs benutzen oder nur eine Search Engine oder Brain Only in Klammern, No Tools.

Johannes

Das ist eine sehr schöne Bezeichnung.

Dominik

Und was war besser für was?

Johannes

Man kann sich Sachen besser merken, wenn man sie nicht von einem LLM erzeugen lässt oder wenn man sie es nicht von einem LLM vorkauen lässt.

Dominik

Ja gut, das ist ja keine Überraschung, dass wenn man das wissen jetzt nicht selber erarbeitet hat, dass das dann flückt wird.

Johannes

Ja, aber auch Suchmaschine.

Johannes

Also auch wenn du normal bei Google oder bei irgendwas anderem eintippst und nicht diese KI, Kagi, ich benutze Kagi, benutzt.

Johannes

Wenn man nicht diese KI-Zusammenfassung benutzt, ist die Retention wohl deutlich besser.

Johannes

Und das Interessante ist eigentlich, dass

Dominik

man so durch die News Everything it says.

Jochen

Bitte, ich habe es gerade nicht verschwunden.

Johannes

Das Interessante finde ich eigentlich, dass diese Studie so durch die News geht und dass die so überall zitiert wird, weil es halt schon so ein bisschen dieses Gefühl reflektiert von ja, vielleicht ist es doch nicht so gut für uns.

Jochen

Ja, aber ist das nicht immer eine Neuigkeit?

Jochen

Ich meine, die meisten, also viele Leute sind halt so doch eher so im Modus News.

Jochen

Genau.

Jochen

Meckender Rentner im Fenster mit einem Kissen und Kultur-Pessimismus kommt halt immer gut an.

Das ist halt immer eine Schlagzeile.

Johannes

Aber Jochen, wir sind ja so langsam in so einem Alter.

Dominik

Achso, genau, und hast du gesehen noch, jetzt haben sie für zwei Straßen weit haben sie die Straße gelb gestrichen.

Das habe ich nicht gesehen.

Johannes

Unglaublich.

Johannes

Also was die jungen Leute heute machen, das hätte es bei uns früher nicht gegeben.

Dominik

Das waren nicht die jungen Leute, das haben sie richtig mit Teams gemacht, die dann angerückt sind und alles verschönern wollten, haben sie alles mit der stinkenden Farbe angestrichen und dann hinterher wollten sie einen Garten da drauf machen, ja.

Johannes

Also der Dominik ist auch in dem Alter, wie ihr gehört.

Jochen

Genau.

Jochen

Ja, also ich verstehe, wie diese medialen Mechanismen funktionieren, die halt dazu führen, dass das halt immer Schlagzeilen und Neuigkeiten sind, aber ich habe große Zweifel, dass das quasi ein repräsentatives Bild davon zeichnet, was irgendwie so passiert.

Ist es sicherlich nicht.

Johannes

Aber die Anzeichen davon, dass Leute auf diese Dinge vertrauen und dann auf solche Fakten reinfallen oder auf solche ausgedachten Sachen, ja, dass mal, dass Ungarn auch Holland genannt wird.

Johannes

Ja, dieses Vertrauen ist da halt schon sehr groß.

Dominik

Ich habe Chat gefragt, mit der meine Schule ausgesucht und ja.

Dominik

Das wird da als Suchersatz benutzt.

Dominik

Also ganz klassisch doch.

Ja, finde ich ganz toll.

Johannes

Also da bin ich zu alt dafür, das finde ich ganz komisch.

Dominik

Also Leute denken, das ist aber auch komisch, dass es nicht direkt die Wahrheit gesagt hat oder dass man da ja so ein paar Informationen hatte, die man so mal kurz überprüfen konnte.

Jochen

Gut, das mit der Medienkompetenz ist halt ein Problem, aber das war auch schon immer ein Problem.

Jochen

Ich meine, ich erinnere mich noch, als Internet und Google neu waren.

Jochen

Oder das Fernsehen, genau, als das Fernsehen neu war, auch als das Radio neu war, irgendwie War of the Worlds, war auch ein großes Medienkonfetenz.

Dominik

Damals, als man den Propheten noch wirklich glauben konnte.

Jochen

Ja, also es ist ein wiederkehrendes Muster.

Jochen

Bei Plato gibt es das schon, der Wetter da gegenüber.

Johannes

Im Fall der Jugend, sowieso.

Jochen

Also ich würde mal einfach sagen, man kann es so, Plato hat nicht recht gehabt.

Jochen

Und das mit der Schrift war schon Fortschritt.

Jochen

Und alle anderen.

Johannes

Ich würde ihn jetzt aber ganz schön atzen.

Jochen

Ja, aber ich denke, du bist den

kratzen nicht mehr.

Jochen

Ja, auf der Seite natürlich schon, bin ich auch irgendwo ein Plato-Fanboy.

Das ist richtig, ja.

Dominik

Ja, das können wir in der MCP-Folge nochmal genauer auslassen.

Jochen

Ja, wobei, du hattest ja den Hashtag Mathematik, da habe ich ja einen Haken um da mich rein.

Jochen

Ich habe jetzt eine Podcast-Episode gehört mit Terence Howe.

Johannes

Ja, der jetzt auch anfängt.

Johannes

Oder der jetzt auch angefangen.

Jochen

Der macht auch viel Dinge macht.

Jochen

Ja, ja.

Jochen

Der macht vor allen Dingen viel mit Lean, also sozusagen eine Programmiersprache, mit der kann man, also schreibt man halt nicht Code, sondern quasi Mathe und.

Johannes

Man schreibt schon Code, aber hinterher sagt er einem dann das.

Jochen

Genau, kann der Compiler, der Kompiler hat ja nicht so ein Binary, sondern der gibt einem Zertifikat, dass das, was man halt hingeschrieben hat, folgerichtig war.

Jochen

Und wenn man das ein Beweis war, dann ist es halt dann bewiesen.

Jochen

Genau, und das macht es halt auch zugänglicher, das macht es halt auch möglich, dass mehrere Leute miteinander irgendwie kollaborieren, weil das Problem an der bisherigen Mattenotation, auch die ist natürlich ein Riesenfortschritt gegenüber früher.

Jochen

Aber die ist halt so, wenn man jetzt so ein aktuelles Mathe-Paper nimmt und schlagt Seite 15 auf, dann kann einem niemand sagen, was da steht, ohne die Seiten 15 Seiten vorher gelesen zu haben.

Jochen

Und das ist super anstrengend.

Jochen

Und deswegen macht das keiner und dann kann man nicht so gut zusammenarbeiten, sondern muss sie da für sich das irgendwie, und das limitiert natürlich die Menge an Dingen, die man irgendwie tun kann.

Jochen

Und jetzt können halt auch irgendwie Nicht-Profis quasi da Pull-Requests gegen lange Beweise stellen und kann halt automatisch checken, ob das halt so häufig stimmt, was sie geschrieben haben oder nicht.

Jochen

Und dann, genau.

Jochen

Das machen sie auch schon.

Jochen

Die haben da ein total cooles Projekt, wo es darum geht, quasi nicht neue Sachen zu beweisen oder so, sondern die gesamte mathematische Theorie, die es so gibt und alle Lemmas, die man halt so hat, die alle mal formal mit Lean durchzubeweisen.

Jochen

Und das dann halt in der Datenbank zu haben, sodass man halt später sagen kann, okay.

Johannes

Im Endeffekt halt Mathematik, oder?

Johannes

Also halt die das, was es gibt, so an Mathematik einmal.

Jochen

Einmal komplett durchformalisiert zu haben und dass man es halt auch noch suchen kann, dass man immer sagen kann, okay, ich habe jetzt dieses Problem, welche Lemmas könnten wir denn da helfen?

Jochen

Oder welche Tricks siehst du denn in den Dingen, die alle bewiesen sind, die man jetzt verwenden könnte, und dann kann einem auch ein LLM da vielleicht helfen.

Jochen

Ja.

Jochen

Also fand ich auf jeden Fall ein.

Dominik

Ja, gewusst wie, aber man muss eigentlich on top von den Dingen stehen oder nicht nach neuer Information suchen, sondern nach was, was man selber quasi auch schon rausputzen könnte und das geht dann halt schneller.

Dominik

So ein bisschen anders, glaube ich, als wenn man sich davon erstmal die Wettechline lässt.

Dominik

Achso, it's different.

Jochen

Ja, aber es ist auf jeden Fall, Mathematik ändert sich auch noch immer und mehr Leute können an Dingen.

Jochen

Die hatten dann jetzt auch so ein Paper dazu und da waren halt dann 50 Autoren drauf oder so.

Dominik

Wo ist ein Paper?

Jochen

Das gab es ja, es gibt es ja sonst so in der Physik mit 1000 Autoren und in der Mathematik eigentlich nicht.

Jochen

Ja, ist spannend.

Dominik

Kennt ihr das Chicken Paper?

Dominik

Hätten wir gerade so ein, wo gerade Paper nehmen.

Jochen

Was ist das?

Dominik

Chicken, Chicken, Chicken, Chicken, Duckzonker.

Dominik

Also es gab jemanden, der hat es tatsächlich geschafft, ein Paper zu veröffentlichen, weil das alle Standards erfüllt, formalen Standards.

Ach so, okay.

Dominik

Habe ich am Montag gehört, danke, Sascha.

Jochen

Ja, jedenfalls, genau.

Jochen

In dem Podcast habe ich auch, also ich bin ja auch so ein.

Dominik

Das ist ein offiziell peer-reviewtes Paper.

Jochen

Da kommen ziemlich viele Hühner drin vor.

Ja, genau.

Jochen

Eigentlich nur Hühner.

Ja, alles tricken.

Jochen

Ja, ja.

Jochen

Ist auf jeden Fall eine sehr spitze Zielgruppe.

Jochen

Genau, also was der, also ich würde ja sagen, also bisher war ich immer in dem, es gibt ja im Grunde zwei Lager, was Theorie der Mathematik angeht.

Jochen

Es gibt halt so die Platoniker irgendwie, also das ist eine der wenigen Gebiete, wo halt, wo halt Platonismus irgendwie noch eine Rolle spielt.

Jochen

Und die Intuitionisten oder so.

Jochen

Und ich würde sagen, naja, gut, ich bin schon irgendwie da eher auf der Platon-Seite, weil, naja, wie soll das anders gehen?

Jochen

Man kann ja auch quasi zum Beispiel experimentelle Mathematik machen, wo man einfach irgendwie zufällig Beweise generiert und dann überprüft mit einem Ding, das halt nicht alles beweisen, nicht alle checken kann, aber checkt, ob da irgendwas Interessantes, ob das wahr ist erstmal, ob das richtig ist und dann, ob irgendwas Interessantes rausgekommen ist.

Jochen

Und dann manchmal fällt da irgendwas Interessantes bei raus.

Jochen

Und dann, wie kann man das über so einen Prozess erfunden haben, sondern das muss man halt eher entdeckt haben.

Jochen

Und auch so andere Dinge wie, weiß ich nicht, dass es Kreise gibt oder Dreiecke oder so, da hat man so intuitiv das Gefühl, naja, die gibt es schon irgendwie da draußen und die kann man eher entdecken, dass das halt 180 Grad sind in der Winkelsumme und das kann man nicht erfinden.

Jochen

Oder das ist halt einfach so.

Jochen

Und deswegen dachte ich immer so, ja, also quasi so Plato, äh, mathematischer Platonismus ist eigentlich schon so die richtige Geschichte und dann, genau, Intuitionisten seit Anfang des 20.

Jochen

Jahrhunderts sagen so, nee, nee, das kann man aber vielleicht alles nicht so machen und das ist doch eher vielleicht eine Erfindung, das habe ich eher so für Quatsch gehalten.

Jochen

Und der hatte jetzt aber ein super Argument für den mathematischen Intuitionismus und zwar, wie waren das noch?

Dominik

Jetzt muss ich es auch richtig zusammenkriegen.

Jetzt muss ich

es zusammenkriegen, verdammt.

Jochen

Mathematik immer besonders einfach.

Jochen

Genau, achso, ja, richtig.

Jochen

Das ging ungefähr so.

Jochen

Der sagte halt, naja, also es gibt ja so Zahlen wie Pi.

Jochen

Wir hatten es, glaube ich, auch in meinem Podcast schon mal irgendwann davor, als wir über Pi geredet haben.

Jochen

Naja, das ist halt völlig unklar, zum Beispiel, also es sieht, Pi, die Dezimalbruchentwicklung Pi besteht jeden Test für Zufälligkeit.

Jochen

Und ja, aber niemand weiß, ob es wirklich zufällig ist oder nicht, oder ob dich doch irgendeine Conspiracy da drin Verschwörung ist, die halt doch nicht zufällig sein lässt oder so, das weiß halt keiner und man hat auch keine Idee, wie man das rauskriegen kann.

Jochen

Aber er sagt, naja, eigentlich ist es ja ganz einfach.

Jochen

Also natürlich, wahrscheinlich, was man erwarten würde, ist, dass es zufällig ist, weil man kann relativ einfach beweisen, dass quasi die allermeisten reellen Zahlen zufällig sein müssen, sonst wäre einfach nicht genug Platz.

Jochen

Wenn da irgendwelche Muster wären, dann könnte man das irgendwie diagonalisieren oder so.

Jochen

Das darf nicht gehen.

Jochen

Die allermeisten müssen zufällig sein.

Johannes

Das ist was ganz Schlimmes, das ist ein ganz schlimmes Argument, Jochen, weil jetzt kommst du auf einen ganz schlimmen Punkt in der Mathematik.

Johannes

Die allermeisten reellen Zahlen können wir nicht erfassen.

Johannes

Die können wir nicht sehen.

Johannes

Die können wir, die sind, das sind so völlig doof.

Johannes

Das sind so völlig doofe Zahlen wie Pi.

Johannes

Und das sind die allermeisten und wir kennen vielleicht drei davon.

Ja, ja.

Johannes

Aber es sind die allermeisten.

Johannes

Und das finde ich sehr unangenehm.

Jochen

Genau.

Und Vorstellung.

Jochen

Da gibt es ja dann dieses Bild von den, das hat ja bestimmt auch schon jeder mal gehört, von den Infinite-Monkeys, ja, so natürlich viele Aften, wenn die nur lange genug irgendwie auf ihre Schreibmaschinen eindreschen, dann kommt dabei auch mal Shakespeare raus oder so.

Jochen

Jede von diesen Zahlen muss alle Werke von Shakespeare in der richtigen Reihenfolge und so enthalten.

Urheberrechtlich geschützt.

Jochen

Wenn die echt zufällig sind, das kann nicht anders sein, das muss so sein.

Jochen

Und jetzt ist halt natürlich die Frage so, okay, also wenn jede vonzel von diesen blöden Zahlen im Grunde das ganze Universum irgendwie enthält, weil, naja, also egal wie man das Universum beschreibt, diese Beschreibung muss da auch drin vorkommen irgendwo.

Jochen

Wie kann das denn sein, dass das schon vorher existiert da draußen und wir es nur entdecken?

Jochen

Oder ist es dann nicht so, dass man, ja, wenn man das jetzt erzeugen wollte, zum Beispiel über Kind offen.

Johannes

Ja, gut, aber das geht ja weg, Jochen.

Johannes

Da musst du nur sagen, das Universum ist quantifiziert und schon existieren diese Zahlen nicht mehr.

Jochen

Ja, aber das, weil gut, okay, Universum ist sehr weit gefasst, jetzt nicht als physikalisches Universum, sondern mathematisches Universum eingeschlossen, wo alle mathematischen Objekte auch drin sind, inklusive Pi und so.

Jochen

Und wenn man als Katholiker würde sagen, es existiert.

Jochen

Zirkulär ist.

Johannes

Ja, du sagst, es existiert, weil wir annehmen, dass das Universum, in dem die drin, dass das Universum, in dem wir drin sind, das Universum ist, in dem die existieren.

Jochen

Nee, nee, ich würde sagen, also es gibt, ich meine jetzt nicht das physikalische Universum, sondern ganz weit gefasst, also auch die Welt, in der halt auch mathematische Objekte existieren, da ist halt alle, also als Platoniker würde ich davon ausgehen, eben sowas wie Pi, das existiert da draußen halt nicht in unserem Universum natürlich, im physikalischen Sinne, sondern quasi als Konzept, als Idee.

Jochen

In einem anderen Universum, wenn es ein anderes gibt, müssen sie auch auf diese Idee kommen, weil diese Idee existiert halt unabhängig davon.

Jochen

Und ich kann auch nicht getäuscht sein, dass es über meine Sinn oder so.

Johannes

Ich finde, da gibt es eine Grenze, Jochen.

Johannes

Ich verstehe, worauf du raus willst, dass das sozusagen was Universelles ist.

Johannes

Egal welches Universum dir vorstellst, die Kreiskonstante ist immer.

Dominik

Überall gibt es sowas wie Gravitation.

Johannes

Brauchst du nicht mal.

Johannes

Du brauchst nicht mal die Gravitation, du brauchst nur Mathematik.

Johannes

In jedem Universum, das Mathematik enthält, gibt es die Kreiskonstante und die ist immer gleich.

Dominik

Ist aber Mathematik keine Gravitation?

Geometrie immer gleich.

Johannes

Nee, brauchst du nicht.

Jochen

Nee, das hat nichts mit Physik zu tun.

Johannes

Aber es gibt eine Grenze.

Johannes

Jochen, ich glaube, dass es da eine Grenze gibt.

Johannes

Weil es gibt Dinge, die sind ganz offensichtlich von Menschen ausgedacht.

Jochen

Ja, klar.

Johannes

In der Mathematik.

Die gibt es nur, weil wir.

Dominik

Gravitation braucht nicht, da kannst du einfach fliegen gehen.

Johannes

Und die Frage ist, wo ist die Grenze?

Johannes

Wo sind die Sachen von Gott gegeben, wie man so sagt?

Johannes

Dieses Zitat.

Johannes

Die natürlichen Zahlen sind von Gott gegeben, alles

Jochen

ist ausgedacht.

Jochen

Menschenwerke, ja.

Johannes

Aber da gibt es eine Grenze.

Johannes

Sind die komplexen Zahlen nicht schon ausgedacht?

Johannes

Die haben ja schon eine Entsprechung in anderen Dingen drin und die findest du überall in der Physik und so weiter.

Johannes

Aber dann gehst du weiter, sind, keine Ahnung, ist die Monstergruppe ausgedacht, oder nicht?

Jochen

Ja, ja, oder die Bivo.

Johannes

Wobei die Monstergruppe ein schlechtes Beispiel ist.

Dominik

Jetzt musst du gerade erkennen, was denn die Monstergruppe ist, also wenn du nicht uns drei meinst.

Johannes

Es gibt so eine Klassifizierung von Gruppen und in vielen Bereichen der Mathematik ist es so, dass du fünf sehr schöne Beispiele findest.

Johannes

Da gibt es die ganz genau die natürlichen Zahlen und die ganzen Zahlen und dann, die kannst du so erweitern und da gibt es irgendwie fünf verschiedene Kategorien und dann gibt es noch drei zusätzliche, die einzeln sind und die eine hat fünf Elemente und die andere hat sieben Elemente und dann gibt es noch die Monstergruppe, die hat 880.973 verschiedene Elemente.

Johannes

Irgendwie so komische Zahlen.

Johannes

Und weil die da so rausfällt aus dieser schönen Klassifizierung, hast deinen schönen Setzkasten mit den ganzen ordentlichen Gruppen drin und dann hast du drei so komische dazwischen und dann hast du da noch die riesige Monstergruppe daneben.

Johannes

Hat die den Namen Monstergruppe.

Okay.

Johannes

Die ist ein schlechtes Beispiel, weil die fällt halt aus diesen Klassifizierungen raus.

Johannes

Aber ganz viele von diesen Dingen sind, finde ich, sind schon eindeutig ausgedacht.

Johannes

Die sind so, weil wir die Definitionen so gewählt haben.

Johannes

Und daraus fallen die Sachen raus.

Johannes

Aber ja, das ist eine schwierige Frage.

Jochen

Ja, aber ich will auch eben, wenn man sagt, okay, ich meine, man kommt ja an, selbst wenn die existizieren, man kommt ja an die Dinger nicht ran, wenn man es jetzt ausrechnet, dann fallen da zwar diese langen Zahlen raus, aber dann braucht man Energie und Energie hat man aber nicht unendlich viel.

Jochen

Das heißt, also Shakespeares Werke daraus zu kriegen, wird schwierig, da braucht man irgendwie nahezu unendlich viel Energie.

Jochen

Das heißt, man könnte ja sagen, okay, vielleicht existieren die.

Johannes

In unserem physikalischen Universum.

Jochen

Ja, ja, genau.

Jochen

Ja, aber ich finde das halt schon irgendwie, damit könnte man schon was sagen, weil wenn ich da wahnsinnig viel Energie investieren muss, um da was, kann ich zwar beliebige Sachen daraus kriegen, aber dann wird es halt dann doch wieder eher so.

Jochen

Also wenn ich das sozusagen in unsere Existenz holen will, dann muss ich halt irgendwie.

Jochen

Dann plötzlich unterliege ich wieder all diesen Beschränkungen und dann ist es doch wieder mehr erfunden, weil ja was.

Zeit vielleicht?

Jochen

Kann sein, dass es gibt, aber ich komme halt nicht dran.

Dominik

Aber wenn das mit Zeit könnte es ja vielleicht gehen, weil in der Zeit könntest du noch eine andere Dimensionen versteckt haben, die dann nicht nur lineare.

Aber das bringt nichts.

Johannes

Die kannst du ja nicht unendlich.

Dominik

Stimmt's ja?

Jochen

Ich würde ja sagen, das ist im Grunde das gleiche.

Jochen

Ob du jetzt Zeit oder Energie, das kannst du ja gegeneinander aufrechnen.

Dominik

Da gibt es vielleicht eine Abkürzung, so eine Meta-Abkürzung.

Jochen

Ja, keine Ahnung.

Ich glaube, da müssen wir mal eine Separation.

Jochen

Müssen wir mal separat.

Jochen

Müssen wir vielleicht auch irgendjemanden fragen, der da mal.

Jochen

Keine Ahnung, das waren so meine Gedanken beim Hören vom Podcast.

Johannes

Vielleicht finden wir ja einen Mathematiker, der.

Johannes

Was weiß.

Jochen

Ja, das ist auch vielleicht eher in der Mathematik.

Johannes

Ja, nee, aber solche Diskussionen sind in der Mathematik schon, die kommt immer wieder, gerade in den früheren Semestern.

Johannes

Sobald man mal ins, sobald man ins Grundstudium abgeschlossen hat, dann hat man es akzeptiert.

Johannes

Das ist die Mathematik, die gibt es halt.

Und da gibt es auch nicht alles.

Johannes

Ich hatte mal eine sehr lange Diskussion mit einem, der einem Studenten von mir, den ich tutoriert habe, der offensichtlich auch schon einen Hang zu Esoterik hatte und der dann gesagt hat, ja, aber du musst alles untersuchen.

Johannes

Warum untersuchst du das hier nicht?

Johannes

Und dann habe ich ihm bewiesen, ja, wenn ich das untersuche oder wenn ich diese Annahme treffe, dann führt das zu Paradoxa.

Johannes

Dann falle ich direkt raus, brauche ich gar nicht weitermachen.

Johannes

Das hat er aber nicht akzeptiert, sondern er wollte mir dann versuchen zu erklären, dass das aber eine Sinneserfahrung ist und du musst alle Sinneserfahrungen versuchen, als Wissenschaftler musst du alles akzeptieren.

Johannes

Das ist aber nicht so, sondern als Mathematiker geht man da pragmatischer vor und sagt, ja, aber da brauche ich nicht weitermachen, weil das bringt mir nichts.

Dominik

Du willst ja eigentlich nur Statistiker, du hast ja nur eine Approximation gemacht von dem, was du glaubst, was dabei rauskommt und dann doch dich auf deine eigene Sinneserfahrung verlassen, die irgendwie da so ein bisschen in die Glocke in die Mitte.

Johannes

Mathematik und Sinneserfahrung.

Jochen

Ja, das

Johannes

hat keine riesige Überschneidungsmenge.

Jochen

Das ist ja genau der Versuch, quasi von den Sinneserfahrungen zu abstrahieren.

Jochen

Aber ja, was natürlich schwierig ist.

Johannes

Ja, sagen wir mal zu den tatsächlich praktischen Dingen.

Jochen

Ich habe auch ein News-Ding, weil.

Jochen

Eins hat er noch.

Jochen

Ja, genau.

Jochen

Weil das können wir vielleicht, jetzt können wir das sagen.

Jetzt haben wir die ganzen Leute vergrault irgendwie mitherren.

Johannes

Trauern wir das jetzt auch noch zu.

Dominik

Aber wolltest du nicht irgendwas sagen, dass ein Learnings vom Barcamp, was man nicht machen sollte?

Dominik

Achso.

Jochen

Wir machen es aber gnadenlos egal.

Jochen

Und zwar, wir machen gleich noch was über MCP.

Jochen

Oder ich kann dazu was erzählen?

Jochen

Nein.

Machen wir nicht?

Dominik

Nein.

Dominik

Wir machen eine eigene Folge zu

MCP Programm.

Jochen

Machen wir eine eigene Folge zur MCP?

Jochen

Ja.

Jochen

Okay.

Johannes

Ich finde ja, MCP ist das Master Control Programm.

Jochen

Genau, das fand ich auch.

Jochen

Ich habe da Vortragsfrage.

Johannes

Oder Metoklopramid, je nachdem, wie man möchte.

Jochen

Na gut, dann machen wir das heute eben nicht, aber das müssen wir echt dann bald machen, weil sonst weiß ich das alles nicht mehr.

Jochen

Ich weiß, das ist gerade.

Johannes

Na dem Jochen unter den Nägeln.

Dominik

Ja, Mathematical Compute.

Johannes

Liebe Hörer, schreibt uns an hello at python-podcast.de, ob ihr diese Folge dringend hören wollt oder nicht.

Ja, MCP-Folge.

Dominik

Meinst du, jetzt hört doch jemand zu?

Jochen

Ja, aber das News-Item wäre an der Stelle, irgendwie hier ex-CTO von OpenAI hat irgendwie von einem Venture Capital Fonds irgendwie zwei Milliarden gekriegt, ohne irgendwas.

Jochen

Bei einer Validierung von 10 Milliarden oder so.

Jochen

Also der ursprüngliche Entwickler von ChatGPT ist halt auch dabei.

Jochen

John Schulmann und ein paar andere Größen.

Jochen

Also, ich meine, die ganzen ursprünglichen Leute sind ja alle nicht mehr bei OpenAI.

Jochen

Und naja, also das ist halt völlig irre.

Jochen

Die haben kein Produkt und nichts und kriegen halt so viel Geld, das ist echt Wahnsinn.

Jochen

Aber wenn man sich für MCP interessiert, der aktuell beste Podcast, den man hören kann, eine Podcast-Episode, ist tatsächlich irgendwie von einem Partner von diesem Venture Capital Fonds, von einer Partnerin mit Interview mit David Soria Para oder ich weiß gar nicht, wie man es ausspricht, der einer der beiden ist, die sich das ausgedacht haben und das ist irgendwie echt ganz nett.

Jochen

Ja, also, aber dieser ganze Bereich ist momentan völlig irre.

Jochen

Das erinnert mich echt sehr stark an diese ganze Dotcam-Bubble Ende der 90er und es ist irre, ja.

Jochen

Naja.

Jochen

Genau.

Jochen

Aber dann machen wir das nochmal in einer anderen Episode.

Dominik

Ja, dann an der Stelle ist jetzt endgültig Zeit für.

Jochen

Dann machen wir jetzt was haben wir jetzt?

Dominik

Unfuck it.

Aber ein radikaler Wechsel.

Johannes

Achtung, jetzt kommt ein radikaler Bruch.

Johannes

Data Class Builders.

Ah, okay.

Dominik

Ja, weil bei Unfuckett.air sind, das wollte ich noch einmal kurz erwähnt haben.

Da hat der Johannes eben geschickt.

Das war schön.

Link in den Shownotes.

Dominik

Genau, für Business Leaders oder for Senior Developers.

Wichtig ist.

Johannes

Ja, Kapitel 5.

Johannes

Ist ein etwas kürzeres Kapitel und ich fand es sehr gemischt beim Lesen.

Johannes

Ich fand, es ist so ein bisschen, es mäandert so ein bisschen und bringt dann so ein paar Themen einfach noch so mit rein.

Dominik

Sollen wir erst über das Ende reden, warum das ein Codesmail ist oder warum das keiner ist?

Johannes

Ja, ich stimme dem überhaupt gar nicht zu.

Dominik

Was ist denn das Argument?

Dominik

Warum sollte das denn ein Kurzmail sein?

Johannes

Du findest, das ist ein Codesmail.

Dominik

Das habe ich nicht gesagt.

Dominik

Also vielleicht geht es erstmal in ein Kapitel geht.

Dominik

Es geht darum, wie man Datenobjekte einfach, welche instanziert es vielleicht falsch.

Dominik

Dekariert es mit Data-Class.

Johannes

Es ist eine Klasse, die nur Daten hält und keine Funktionen hat.

Dominik

Wie so ein Namedtuple.

Johannes

Ja, zum Beispiel.

Johannes

Das ist eine, also gleich auf der ersten Seite sind drei Mechanismen genannt.

Dominik

Oder auch wie ein Flydochen ist.

Johannes

NamedTupel.

Johannes

Nee, das nicht.

Johannes

Kommt direkt auf der zweiten Seite, steht direkt drauf, das nicht.

Johannes

Also es gibt Collections.nameduple, das ist schon lange in der Python-Schnallerbibliothek seit 2.6.

Johannes

Haben sicherlich viele schon mal gesehen.

Johannes

Können wir gleich noch erklären, was das ist.

Johannes

Dann gibt es eine neue Variante davon.

Johannes

Typing.nameduple.

Johannes

Und der heißeste Scheiß ist natürlich Dataclasses.dataclass.

Johannes

Ein Dekorator, der diese ganzen Sachen mitnehmen soll.

Johannes

Am Ende geht es immer darum, Klassen zu machen, die nur Attribute haben.

Johannes

Und im Endeffekt ist das auch alles nur so ein bisschen Zucker oben drauf gestreut, weil man könnte prinzipiell diese ganzen Sachen alle mit Dicts machen oder sogar mit Tupels, wenn man möchte.

Johannes

Das heißt, das Einzige, was man gewinnt, und das Einzige ist hier in sehr großen Anführungszeichen, dieses Wort einzige, das Einzige, was man gewinnt, ist, dass das Programm besser verständlich wird.

Dominik

Ruff flintet zum Beispiel vom Typing Import Name Tupole und sagt, naja, es ist Collections Name Tupole, bitte.

Dominik

Sag, darfst du nicht, weil.

Johannes

Ja, sagen die das, okay.

Johannes

Ich bin so ein bisschen, ich bin nicht ganz hundertprozentig mal einverstanden mit den Sachen, die Ruff sagt.

Johannes

Und ich habe heute auch einen Ruff Cycle gefunden.

Johannes

Wo ich einen Hinweis gekriegt habe von Ruff, der gesagt hat, der Generator ist unwichtig, ist nicht wichtig, mach bitte eine Dikt-Comprehension draußen.

Johannes

Dann habe ich eine Dikt Comprehension draus gemacht und habe gesagt, ah, das ist eine nütze Dick-Comprehension, mach bitte einen Dikt-Aufruf mit Generator drin draus.

Sehr amüsiert.

Johannes

Wie man es macht, ist falsch.

Johannes

Naja, Ruff hat ja auch so ein bisschen, ist ja schon so ein bisschen opinionated.

Johannes

Also nicht alles, was da von Ruff kommt, ist ganz richtig.

Johannes

Und es gibt schon einen wichtigen Unterschied zwischen Nameduple und NamedTupel, was auch in dem Kapitel erklärt wird.

Johannes

Also die sind schon unterschiedlich.

Johannes

Aber jetzt, wo wir wissen, was eine Data Class ist, eine Klasse, die keine Funktionen hat, sondern nur Daten halten soll, kommt direkt in der Einleitung, sagen sie, ja, das ist eigentlich nicht so gut.

Johannes

Es wird in diesem Kapitel mehrmals darauf hingewiesen, dass namhafte Personen Data Classes durchaus als Code Smell sehen oder als Einstiegspunkt und als das ist noch nicht fertig ansehen.

Johannes

Und das Hauptargument, so wie ich es verstehe, ist, dass wenn du eine Data Class hast, dann bedeutet das, dass du eine Klasse hast, die nur Daten enthält und keine Funktionen hat.

Johannes

Und du musst ja aber trotzdem was mit den Daten machen.

Johannes

Und das bedeutet, dass die eigentlich schon Funktionen hat, nur dass die irgendwo anders drinstehen.

Dominik

Weil es nur ein Vehikel ist und das wäre blöd.

Johannes

Weil du mit Daten halt irgendwas machen musst.

Johannes

Und eigentlich bedeutet Data Class dann in dem Sinne, dass du deine Funktionen, die zu den Daten gehören sollten, irgendwo anders hinschiebst.

Johannes

Und dass du die irgendwo anders hast.

Johannes

Und ich stimme diesem Argument überhaupt gar nicht zu.

Johannes

Das hört sich für mich sehr nach, an also ich meine, diese Namen, die mir da gesagt bekommt, Martin Fowler und Kenntback, hört sich für mich sehr nach Kingdom of the Nouns an, es hört sich für mich sehr nach Java an, es hört sich für mich sehr an nach der Code ist wichtiger als die Daten.

Johannes

Und das stimmt halt in ganz vielen Fällen nicht.

Johannes

In ganz vielen Fällen sind die Daten viel wichtiger als der Code.

Johannes

Was du da drin hast, welche Fälle du hast, wie du drankommst, ist in ganz vielen Anwendungsfällen, zumindest in denen, die mir so begegnen, viel wichtiger, als dann, dass die Funktion direkt dabei steht und dass du die direkt dazu packst.

Johannes

Das ist der eine Aspekt.

Johannes

Du gibst der Funktionalität mehr Gewicht als den Daten.

Und das ist oft nicht der Fall.

Jochen

Mir fällt das Zitat jetzt nicht ein, aber da gibt es eines von Linus Torvalds, wo er sagt, naja, so das ist halt quasi oft ein Fehler von Leuten, die quasi das Licht noch nicht so richtig gesehen haben, dass sie halt Wert auf Algorithmen oder sozusagen auf Dinge legen.

Jochen

Und wenn man dann mal irgendwann später da so weiß, was man tut, dann guckt man sich eher so die Datenstrukturen an und wie die eigentlich aussehen sollen.

Jochen

Und dann ist das mit der Funktionalität, ist dann ganz klar und einfach, hoffentlich.

Jochen

Und ja.

Jochen

Aber ich würde auch denken, dass, genau, also für mich, mich erinnert das auch total an irgendwie objektorientierte Programmierung Ende der 90er, ist halt irgendwie das Heilmittel für alles.

Jochen

Aber inzwischen würde man ja sagen, so, naja, das aktuelle Heilmittel für alles ist halt Domain-Driven Design.

Jochen

Und aus der Perspektive ist es halt, gibt es halt zwei unterschiedliche Arten von Dingen, für die man halt Klassen hat.

Jochen

Und das ist halt, eine sind halt Entities, also Dinge, die halt irgendwie eine Identität haben, die halt wichtig ist.

Jochen

Und das andere sind halt so Value-Objects und bei denen ist es halt wurscht.

Jochen

Also sowas wie zum Beispiel ein Objekt, das halt einen Geldbetrag repräsentiert.

Jochen

Und das Wichtige ist halt der Wert von dem Geld und aber nicht, welchen Geldschein man hat, das ist völlig egal.

Jochen

Und für solche Value-Objects sind halt Data Classes halt auch total super, weil wenn das halt State hat und dann braucht man halt natürlich vielleicht schon Methoden und so.

Jochen

Also ich würde auch denken, also das ist differenzierter, ja.

Johannes

Es gibt noch einen zweiten Aspekt, der mir da fehlt in dieser Argumentation.

Johannes

Dann geht es ein bisschen in das, was du eben gesagt hast, die Leute, die das ich noch nicht gesehen have.

Johannes

Wenn man über Klassen nachdenkt und die sieht als Anzahl von Funktionen anders, then is this another Blick auf das, what man does.

Johannes

It is another Blick auf the programming and what a program can.

Johannes

And zwar ist es ein Blick auf einzelne Objekte.

Johannes

Then it's object, was irgendwie hervorgehoben ist.

Johannes

This is name das Objekt, an dem ich gerade dran bin, in dem ich gerade drin bin.

Johannes

When I aber den Blick habe auf eine Data Class, dann geht es mir oft gar nicht so sehr um eine einzelne Instanz oder ein einzelnes Attribut von dieser Data Class.

Johannes

Sondern verändert sich mein Denken hin zu, was ist denn, wenn ich tausend davon in der Hand habe?

Johannes

Was ist denn, wenn ich eine Tabelle von diesen Objekten in der Hand habe?

Johannes

Und dann ist auf einmal gar nicht mehr das Einzelobjekt wichtig, sondern dann ist auf einmal die Gesamtheit der Objekte wichtig.

Johannes

Was ist denn, wenn ich eine Million von diesen Geldbeträgen bekomme?

Johannes

Was kann ich denn dann damit machen?

Johannes

Und diese Art zu denken oder auch diese Art zu modellieren, ist in der klassischen OOP nicht naheliegend.

Johannes

Weil im klassischen OOP denkt man eben oft über einzelne Objekte nach, weil du eben eine Klasse schreibst, die eine Instanz hat.

Johannes

Und für diese eine Instanz hast du diese Funktion dran.

Johannes

Und wenn du die Funktion auf der einen Instanz aufrufst, dann hast du diesen Blick auf die eine Instanz.

Johannes

Und das ist was, was, das ist schwer zu greifen und schwer zu erklären, aber das verändert das Denken über Programmstrukturen und das verändert das Denken über die Inhalte von einem Programm.

Johannes

Und das ist was ganz Gefährliches zu sagen, meiner Meinung nach, dass das ein Codesmail ist, weil du nur diesen einen Blick auf Programmierung haben darfst.

Johannes

Deshalb, ich bin da sehr skeptisch, wenn Leute sagen, Data Classes, ja, es ist schon okay, aber hier, das fängt direkt an, Data Classes are like children, they are okay as a starting point, but to participate as a grown-up object, they need to take some responsibility.

Johannes

Das heißt, die grob übersetzt Datenklassen sind wie Kinder, das ist okay, wenn man damit anfängt, aber wenn man sie wie richtige Objekte verwenden will, dann müssen sie schon auch Funktionalität haben.

Johannes

Sehe ich gar nicht so und finde ich tatsächlich nicht gut, diesen Blick so zu haben.

Dominik

Aber vielleicht meint das so ein bisschen was wie, ich weiß nicht, dann zu Paydantik überzugehen, was ja fast sowas ist wie eine Data-Klasse.

Dominik

Mit so was wie Validierung dran dann noch oder so.

Johannes

Ja, aber auch das ist noch, Paydantik sind natürlich, ja, sind schon Data Classes auch, oder?

Jochen

Ja, ich würde, das sind halt, da gibt es dann eben, genau, das ist ein bisschen, das kommt jetzt in dem Buch nicht so vor, weil das halt auch teilweise aktuellere, also das Buch ist ja relativ aktuell, aber gerade so der auf, da sozusagen das Standardlip, ne?

Jochen

Pydentic, ja, genau, beschränkt sich mehr so auf die Standardlip, aber wobei ja auch das Vorbild von Data Classes in der Standard-Lib ist, Atlas ist halt auch nicht, ja, Hunex sollten wir vielleicht

mal bitte an.

Jochen

Genau, ist ja auch nicht.

Jochen

Genau, aber sozusagen Pydentic ist ja danach erst so richtig populär geworden, würde ich sagen.

Jochen

Oder jetzt auch noch neuer Message-Spec, gibt es ja auch schneller und keine Ahnung.

Jochen

Aber da muss man vorsichtig sein.

Jochen

Also ich glaube, da vermischt man dann, also Pydentic, es ist natürlich auch praktisch, aber es vermischt halt zwei so Sachen.

Jochen

Es ist einmal diese Klassen-Bildergeschichte mit den Annotationen, damit man halt sozusagen das halt kompakt hinschreiben kann, was man da für Attribute dran hat.

Jochen

Das ist bei Pydentic ja genauso.

Jochen

Und dann gibt es halt diesen Validierungsteil, der ist aber irgendwie anders, weil das hast du halt in Data Classes und halt bei Nametuple oder so eigentlich nicht.

Johannes

Mal bei typing.nametuple hast du Validierung.

Jochen

Nee, gar nicht, genau.

Jochen

Und da muss man halt extrem vorsichtig sein.

Jochen

Also ja, ich meine, es kann natürlich auch sehr praktisch sein, aber es gibt da auch eben von dem Entwickler von Atus einen sehr schönen Vortrag von der letzten PyCon US, wo jetzt auch die Vorträge rausgekommen sind.

Jochen

Und der heißt, glaube ich, Design Pressure.

Jochen

Und das ist eigentlich nicht.

Johannes

Der Enqueter heißt Design Pressure.

Jochen

Nee, der Vortrag heißt Design Pressure.

Johannes

Aber ist das nicht Hinek Schlawak?

Genau.

Der ist doch auch Deutscher, oder?

Ja, ja, genau.

Jochen

Den sollte man auch echt mal fragen, weil der hat immer tolle Artikel zu diesen ganzen.

Jochen

Der hat tolle Software geschrieben, tolle Artikel geschrieben, macht tolle YouTube-Videos, toller Typ.

Jochen

Müssen wir mal fragen.

Wenn du in dieser

Johannes

Episode zeige ich vorher, ob er diesen tollen Podcast kommen möchte.

Jochen

Genau.

Jochen

Vielleicht wäre er auch toll, dann so ein bisschen glanz könnte er auf unseren Fall.

Jochen

Wer weiß.

Jochen

Mal schauen.

Ja, genau.

Jochen

Und ja, eigentlich ist das ein Vortrag über Software-Architektur.

Jochen

Der hat ja auch Reviewer für hier das Architekturbuch, was ich immer empfehle, also das Software Architecture with Python.

Jochen

Und er hat auch schon häufiger Vorträge über Software-Architektur gehalten.

Jochen

Und das ist auch wieder so einer.

Jochen

Und der startet mit dem Hot Take, irgendwie so Dinge wie Pydentic oder irgendwie diese Geschichten-Data-Validation-Dinger, das macht eure Architektur von eurem Programm kaputt.

Jochen

Ihr Trottel.

Jochen

So, und jetzt zeige ich euch mal, warum das so ist.

Jochen

So, gut, man braucht halt irgendwie so ein, meinte so, ja, das macht man in New York, ich komme ja aus der YouTube-Welt, dann macht man das so, dass man so einen Hook platzieren muss oder muss man drauf delivern oder believe what happens next.

Jochen

Genau, genau.

Jochen

Und wenn man das halt schafft, dann ist es gut.

Jochen

Und wenn man es nicht schafft, ist halt doof.

Jochen

Aber mal schauen, genau.

Jochen

Und ja, also da, und ich, aber ich würde sagen, im Grunde hat er da ganz recht, ja.

Jochen

Also ich meine, wenn man jetzt das so macht, dass man halt Pydentik-Modelle verwendet, halt als Data Classes Ersatz und die dann halt quasi benutzt, um die eigene Domain, ich weiß ja gar nicht, ob es da für irgendeinen guten deutschen Begriff gibt oder so, dass also der Bereich, in dem die eigene Business-Logik stattfindet, zu beschreiben, dann hat man halt schon einen bösen Fehler gemacht eigentlich.

Jochen

Oder dann hat man sich in der Ecke monövriert, aus dem man schlecht wieder rauskommt.

Jochen

Ja, und da muss man aufpassen.

Jochen

Also ich meine, man kann das ja auch richtig verwenden, aber es ist halt nicht so einfach.

Jochen

Also das ist halt schon gefährlich.

Jochen

Also insofern bei Paydantik, also ist es auch ein sehr cooles Projekt, aber man muss halt echt aufpassen, dass man da nicht, dass also das, also wenn man damit auf irgendein Problem zielt, dann hat der Pydentic-Lauf auch immer so die Tendenz, so weich zu werden und so auf den eigenen Fuß runter sich zu neigen und bei deinem falschen Moment schießt, dann hat man noch einen Fuß.

Dominik

Kannst du nochmal kurz vergleichen oder erklären, was du meinst, wann das passiert?

Jochen

Naja, also wenn du zum Beispiel von anstelle einer Data Class halt ein Pydentic-Modell verwendest.

Dominik

Warum ist das blöd?

Jochen

Naja, weil du dann zum Beispiel Pylentic importierst in deiner Wissenslogik.

Dominik

Und dann bist du davon abhängig.

Jochen

Ja, und genau, du hast halt dann diese Concerns irgendwie miteinander vermischt und dann kriegst du alle möglichen Arten von üblen Designproblemen, Architekturproblemen.

Jochen

Genau.

Welche?

Jochen

Naja, also zum Beispiel, wenn das dann halt jetzt nicht schnell genug ist und du willst jetzt was anderes, eine schnellere Art, irgendwie die Sachen zu, weil du hast das jetzt gekoppelt an, du speifst das als JSON raus und liest JSON rein und so, was ja Pydentic auch ganz gut kann.

Jochen

Und jetzt stellst du halt fest, so, oh, jetzt, oder gibst das über eine API raus und jetzt stellst du halt fest, so, oh shit.

Jochen

Aber, also ich meine, das ist relativ schnell, aber das ist nicht so schnell, wie es geht.

Jochen

Also es geht natürlich, es gibt da Dinge draußen, die sind deutlich schneller als Pydentic.

Jochen

Und jetzt stellst du halt fest, so, okay, irgendwie Pythonic ist zu langsam für mich.

Jochen

Du wirst Pydentic niemals austauschen können, da kannst du ja ein Ding neu schreiben.

Jochen

Das ist halt, äh, kannst du einfach völlig vergessen.

Jochen

Und ja, das ist halt, wenn man, wenn man das halt quasi nicht so nicht so gebaut hat, dass man halt Pydentic austauschen kann, dann hat man halt.

Jochen

So ähnlich wie bei man halt von den Django, wenn man Models Model erbt, ne, also oft kann das ja auch okay sein und bei Pythonic kann das ja auch oft okay sein, aber wenn du halt ein Großprojekt hast und dann hast du halt irgendwann, willst du Dinge anders machen, dann kann es gut sein, dass das nicht mehr geht.

Ja, knie.

Jochen

Ja, ja, okay, klar, natürlich.

Ja.

Dominik

Ich fand das jetzt nicht so, dass Killer Gegner win.

Johannes

Sollen wir mal zurückkommen zum Buch?

Johannes

Ich glaube, da sind tatsächlich noch ein paar interessante Sachen drin.

Johannes

Diese, es werden ja hier drei Alternativen genannt.

Johannes

Also Collections.name, Tuple, Typing Name, Tuple und Data Class.

Dominik

Warum nicht TypeDict?

Johannes

Ja, das ist tatsächlich hier, da lese ich, ich zitiere, Typedikt may seem like another Data Class Builder.

Ja, ist es nicht.

Johannes

Aber Typedikt does not build concrete classes that you can instantiate.

Dominik

Genau, es ist ein Klassen.

Dominik

Das macht keine 25 oder sowas, geht ja nochmal drauf ein.

Johannes

Genau, also das macht nicht solche Klassen, wie wir sie hier brauchen, sondern das ist nur.

Dominik

Type-Annotations für Dickt, aber es funktioniert anders.

Jochen

Genau, und es ist eine böse Falle.

Jochen

Also ich habe weiß nicht, wie oft ich das schon gesehen habe, dass Leute denken, dass sie dann sicher werden und aber nie MyPayer oder sowas ausführen.

Jochen

Und dann, wenn man es nochmal ausführt, kriegt man halt gesagt, so ja, also das, was du da machst mit dem Type-Dick, das ist uns alles falsch.

Jochen

Hat nie einer gemerkt.

Dominik

Hat dir das Klaot erzählt?

Jochen

Nee, das begegnet sowas ständig.

Johannes

Hat sich jemand ausgedacht.

Johannes

Okay.

Johannes

Aber im Endeffekt funktionieren doch diese drei, diese drei Verfahren alle irgendwie gleich.

Johannes

Du musst irgendwie eine Definition schreiben und du sagst, ich möchte jetzt eine Klasse haben, die soll einen Namen haben und die soll folgende Attribute haben.

Dominik

Und die werden dann getypt und getyped-hintet.

Johannes

Ja, entweder getyped oder auch nicht getypt.

Johannes

Musst du ja nicht unbedingt getyped haben.

Johannes

Und selbst wenn du es getypt hast, kannst du sie immer noch anders verwenden.

Kannst du immer noch.

Johannes

Selbst wenn du deine Data-Class schön mit Types versehen hast, kannst du ja immer noch reintun, was du möchtest.

Dominik

Also ein Tupel wäre jetzt immutable, dann muss ich einen Frozen machen bei der Data-Class, ne?

Johannes

Ja.

Johannes

Genau, aber das hat mit auch das hat mit den Types nichts zu tun.

Johannes

Du kannst auch, also auch das Typing.name-Tupe kann ja andere Sachen nehmen.

Johannes

Das ist ja erstmal nur eine Absichtserklärung.

Johannes

Ich beabsichtige, dass dieses Attribut nur ein Int sein kann, aber da hält ich niemand davon ab.

Dominik

Du kannst auch eine Liste reinmachen, wenn es nicht.

Johannes

Das ist ja generell bei Python so.

Johannes

Okay, aber ich finde es interessant, weil im Wesentlichen gibt es da zwei verschiedene Syntaxmöglichkeiten.

Johannes

Und die eine, das ist die, die von Nametuple kommt, wo man halt sagt, ich möchte ein Nametuple haben und dann rufe ich die Funktion oder rufe ich den Konstruktor Nametuple als Konstruktor auf und sage eben, diese Datenklasse soll den Namen, hier haben sie das Beispiel Coordinate haben, also Koordinate haben und die hat zwei Attribute, Lat und Lon.

Johannes

Und dann kriege ich da eine Klasse raus.

Johannes

Oder besser gesagt, ich kriege einen Konstruktor raus für eine Klasse.

Johannes

Ich kriege ja nicht meine ganze Klasse raus, sondern ich kriege nur den Konstruktor raus.

Johannes

Und das ist so ein bisschen irgendwie so eine textuelle Beschreibung.

Und ich habe da immer so ein bisschen Hemmung.

Johannes

Das fühlt sich so ein bisschen an, als ob man irgendwie um diesen, ja, um so Python außen rum geht und um den um den Interpreter außenrum geht und dass man irgendwelche langsamen magischen Sachen macht.

Johannes

Aber ich glaube tatsächlich, man muss da weg davon.

Johannes

Man muss sagen, okay, dieses Herstellen der Klasse, das ist langsam, aber das ist, das ist ja egal, weil das macht man nur einmal.

Johannes

Das Instanziieren, das ist dann so schnell wie ein Tupel.

Johannes

Und das ist nicht, und die verbrauchen auch nicht mehr Speicher.

Johannes

Also diese Namen werden nicht bei jedem bei jeder Instanz dazu gespeichert.

Johannes

Ist nicht wie bei einem Dictionary, sondern es ist eben ein Tupel.

Johannes

Und im Endeffekt ist es ein Tupel mit so einem kleines bisschen Karamellsoße oben drauf gestreut, wo man eben nicht Index 0, Index 1 und Index 2 hat, sondern wo man eben eben Latitude und Longitude sagen kann.

Johannes

Und das bedeutet dann Index 0 und Index 1.

Ja, das sieht

viel schöner aus, tatsächlich.

Jochen

Also, also lange Zeit war Nametuple auch irgendwie deutlich schneller.

Jochen

Also wobei nichts ist so schnell wie tatsächlich einfach quasi, wenn man eine Klasse instanziiert.

Jochen

Aber Nametuple war dann halt die schnellste Alternative.

Jochen

Und wenn man jetzt früher war das halt oft so, oder ist auch halt.

Jochen

Wenn man halt Attribut-Lookup macht, dann ist das bei Nametuple natürlich schneller.

Jochen

Also irgendwas, Instance, Punkt, irgendein Attribut.

Jochen

Weil Tuple ist Index, oder?

Jochen

Genau, genau.

Jochen

Und inzwischen macht aber Data Classes und auch, glaube ich, named Tupel, wenn man davon erbt, per Default irgendwie Slots.

Jochen

Vielleicht erzähle ich jetzt auch Unsinn.

Jochen

Das muss man irgendwie mal nachgucken, aber ich glaube, das ist tatsächlich so.

Jochen

Das fasziniert.

Johannes

Das hat gar keine praktische Auswirkung.

Johannes

In keinem Fall, den ich je hatte, hätte das eine Auswirkung gehabt, dass die Konstruktion von diesen Datenobjekten zu langsam gewesen wäre.

Johannes

Das heißt, das ist auch wieder so ein Jagdn-Fall.

Johannes

Das ist so eine so eine Angst, die ich in meinem Kopf habe, die aber eigentlich in dem Moment noch nicht berechtigt ist.

Jochen

Große API-Responses oder wo du Zeugs reinkriegst, weil da kann das schon so, weil du so halt irgendwie 10.000 Dinger in Objekte verwandelst und dann ist halt deine Objekte Zeug im Sand.

Johannes

Wenn der JSON reinkommt, hast du ja eh schon verloren.

Jochen

Ja, aber es gibt ja schnell JSON-Puzzer.

Jochen

Aber wenn du es, du musst es dann nochmal zu Objekten machen.

Ja, du kriegst

Johannes

ja auch einen Dick.

Johannes

Wie auch immer, für mich der Takeaway ist, ich habe da immer so ein bisschen Hemmungen.

Johannes

Ich habe immer so ein bisschen Hemmungen, so ein Name-Tool zu machen.

Johannes

Weil das nicht so richtig in die Syntax passt, weil das anders aussieht, als als andere Sachen aussehen.

Johannes

Aber es ist gar nicht schlecht.

Johannes

Es ist gar nicht falsch, ein Name-Tupel zu machen.

Dominik

Nee, aber was meinst du?

Dominik

Das sieht anders aus.

Dominik

Also ich finde, wenn du das jetzt in dieser vom Typing oder vom Collections importierst, dann kannst du ja Klasse schreiben.

Dominik

Sieht ja fast aus wie eine Data-Class, sondern dass du nicht App Data-Klasse importierst.

Genau, das kannst du machen.

Johannes

Das sieht auch normal aus.

Das ist auch was, was ich empfehlen würde.

Johannes

Das kannst du machen, aber dieser Konstruktor, der Named-Tuble-Konstruktor, also das ist tatsächlich alles klein geschrieben und dann musst du da Strings reingeben.

Jochen

Ja, das ist ein bisschen.

Jochen

Was daran auch komisch ist, ist halt, also einmal, ich finde es auch ehrlich gesagt ein bisschen hässlich.

Jochen

Ich meine, das ist uralt, ja, das gibt es schon ewig.

Das ist super praktisch.

Jochen

Das ist natürlich manchmal super praktisch, wenn man halt irgendwie auf alten Interpreterversionen rumguckt, aber genau, das funktioniert wahrscheinlich bis, also da gibt es nichts mehr, was noch läuft, was irgendwie älter ist.

Jochen

Das funktioniert wirklich überall.

Jochen

Aber also was halt auch blöd ist, ist, dass man, dass es halt, das geht zwar auch, dass man da Methoden dranhängt, aber das ist auch voll umständlich.

Jochen

Da muss man dann halt auch erstmal irgendwelche Methoden erzeugen.

Jochen

Und dann muss man das Ding irgendwie da dranhängen und so.

Jochen

Und es geht alles, klar, aber es ist halt schon so, wenn das als Methode dran steht, ist das schon leichter verständlich, wie das passiert.

Dominik

Ja, da kann man ganz viel hässliche Magie mitmachen.

Dominik

Ich glaube, wenn man so Codecost spielt oder sowas, dann ist das eine Disziplin, die man so spielen kann.

Dominik

Und wenn man Leute verwirren will oder so ein bisschen obfuscation, ne?

Johannes

Nee, nee, nee, das ist nicht gut.

Johannes

Nee, dann gehen wir über zum Typing-Name-Tuple, weil Typing-Name-Tuple hat nämlich Klassensyntax.

Johannes

Und die ist tatsächlich, ich finde die sehr schön.

Johannes

Es wird gleich noch ein Problem beschrieben werden, was ich auch tatsächlich sehe, jetzt wo ich es gelesen habe.

Johannes

Aber es ist so ein bisschen so, wie man es sich vorstellt.

Johannes

Wenn man, wenn man aus einer anderen Sprache kommt, dann sagt man, ich möchte eine Klasse haben und die soll folgende Attribute haben.

Johannes

Und das ist hier genauso, weil die Klassensyntax halt so ist, dass ich sage, Class, dann den Klassennamen, abgeleitet von Nametupe, was aber so ein bisschen nicht ganz richtig ist.

Dominik

Weil die MRO da gar nicht drin ist, weil das nur in Meta-Klasse ist, weil er nämlich gar nicht tatsächlich einen Name-Tube macht.

Dominik

So ein richtiges Tupe.

Genau.

Johannes

Und dann innerhalb von der Klasse gebe ich einfach die Attribute an, die ich haben möchte, mit ihrem Typen.

Johannes

Also hier in dem Fall beispielsweise Latitude Doppelpunkt Float und Longitude Doppelpunkt Float.

Johannes

Und das bedeutet, dass diese Klasse automatisch einen Konstruktor bekommt, der eben diese zwei Attribute nimmt, entweder named oder unnamed.

Dominik

Das hast du der Hauptanin.

Dominik

Du möchtest jetzt nicht irgendwie eine Klasse schreiben, wo du reinschreibst, in Init, nimm folgende Argumente, Latitude und Langitude und dann machst du Self, Init, Lot, gleich, lang und da.

Johannes

Genau, kannst du alles selber machen, aber es wird ja alles abgenommen, wenn du das hier machst.

Genau.

Johannes

Durch Metaklassenmagie.

Johannes

Und im Endeffekt.

Dominik

Jetzt ist schon das zweite Mal, dass ich jetzt wieder das Trinkspiel mache, was wir letztes Mal angefangen haben, Johannes.

Johannes

Ja, ich weiß.

Johannes

Das ist mein Wort, was zu oft kommt.

Johannes

Wir sagen es jetzt nicht nochmal.

Johannes

Bei Data Classes ist ja im Grunde genommen das Gleiche.

Johannes

Du sagst, welche Klassennamen du haben möchtest, welche Attribute du haben möchtest, welchen Typen du haben möchtest.

Johannes

Und da ist natürlich leicht, weitere Methoden hinzuzufügen.

Johannes

Die schreibst du einfach in den Klassenkörper rein.

Dominik

Ja.

Dominik

Das mache ich auch nicht.

Johannes

Das ist ja eigentlich schon rausricht hier im Data Class.

Dominik

Aber ich mache das tatsächlich relativ häufig, dass man irgendwie auffällt, so ich hätte noch gerne kein und doch das Maximum, die Summe berechnen von irgendwas.

Ja.

Dominik

Das war schon super praktisch.

Ja, ja, natürlich.

Das ist auch richtig.

Jochen

Also, genau.

Das ist ja

Johannes

dann das, was hier der Ankel Bob würde sagen, das ist gut, bist du auf dem richtigen Weg.

Dominik

Das implemented sein.

Nein.

Genau.

Johannes

Es ist interessant, weil da ist ja so ein bisschen Trickery drin ja.

Johannes

Hier, dieses Name-Tool, dieses Typing-Name-Tool, das ist ja gar keine normale Klasse, sondern es ist ja eine Metaklasse.

Ja.

Dominik

Was ist denn jetzt so eine Meta-Klasse?

Johannes

Eine Meta-Klasse.

Dominik

Welches Kapitel ist das für die Folgen brauchen wir dafür noch?

Jochen

Das ist weiterhin, glaube ich.

Dominik

Also ein Spiel.

Dominik

Dynamic Attribute and Property.

Wir verschieben das.

Dominik

Da ist ein Metaproblem, das Kapitel 24.

Jochen

Ja, also.

Johannes

Kapitel 24, also.

Johannes

Nur noch 19 weitere Episoden und schon sind.

Dominik

Über das Buch Fluent Python.

Ja.

Johannes

Dazwischen natürlich noch die anderen.

Johannes

Okay, aber dann, äh, dieses Kapitel macht dir jetzt hier eine total interessante Biege.

Johannes

Weil das nächste ist ja jetzt, ah, übrigens, wir müssen Type Hints machen.

Johannes

Wir müssen noch ein bisschen über Typing sprechen.

Ja, ja, ja.

Johannes

Und das fand ich interessant, als ich es gelesen habe, weil das hatte ich, das war so ein Twist, den ich nicht erwartet hatte.

Dominik

Er hat deswegen darüber gesprochen, weil er gesagt hat, dass es total cool ist, wenn man jetzt Match Case benutzt.

Dominik

Und das liegt darauf daran, dass das nicht so gut ist.

Johannes

Ja, aber das ist dann der dritte, das ist der nächste Twist.

Dominik

Achso, ja, das wurde ja gerade so eingeführt, als das Buch rauskam.

Dominik

Ich glaube, deswegen ist da so die Emphasis auch so ein bisschen.

Johannes

Ja, vielleicht war es auch nicht genügend für ein, ups, jetzt geht hier mein Aufnahmekomputer geht geradeaus.

Johannes

Vielleicht ist es auch noch nicht groß genug für ein eigenes Kapitel, aber ich finde es interessant, dass hier so Type Hints oder Type Annotations so in einem ganz anderen Kapitel versteckt wird.

Johannes

Und auch nicht so, dass man es jetzt, also ich habe mir ja die, das habe mir ja die Inhaltsangabe hier die Sachen durchgelesen, alle, aber da hat es nicht so mitgerechnet, dass das jetzt hier so eine Abbiegung macht und dann sagt, achso, übrigens, lassen Sie über Typen sprechen.

Ja.

Johannes

Also sie kommt natürlich nachher nochmal, aber

Jochen

ja, ja, ist natürlich schon auch so ein bisschen naheliegend, weil man muss halt jetzt dann irgendwie, wenn man schon erklärt, wie das da bei diesen Class-Bildern funktioniert, dass man halt über die Typ-Annotation im Grunde halt schon sagt, was das dann sein soll, dann muss man ja auch erklären, wie das funktioniert.

Jochen

Und dann kann man ja, dann muss man ja irgendwie andere Annotations irgendwie erwähnen und dann, ah, dann ist man ja mittendrin in den Typ-Annotationen irgendwie.

Johannes

Ja, man muss da so ein bisschen in den Wald reinlaufen und sich dann noch so ein bisschen drin verlaufen, ja.

Johannes

Also ich verstehe es schon, aber es war irgendwie, was habe ich

nicht erwartet.

Johannes

Und da kommt auch das eine Problem raus mit den Data Classes.

Johannes

Also wenn ich so eine Data Class schreibe, dann habe ich ja diesen Dekorator vorne dran, Data Class, Data Classes.

Johannes

Dann schreibe ich Class den Klassennamen, also in dem Fall jetzt hier Class Coordinate, und im Klassenkörper schreibe ich dann die Attribute, die die Instanzen haben sollen.

Johannes

Und das wird hier in dem Kapitel sehr deutlich gemacht und das finde ich auch sehr richtig und sehr gut, weil das da tatsächlich eigentlich eine Abwendung ist von dem, was Python normalerweise macht.

Johannes

Weil wenn ich normalerweise hier ein Attribut reinschreibe, also wenn ich Latitude gleich X reinschreibe und Longitude gleich Y, dann ist es ja erstmal ein Klassenattribut.

Johannes

Und hier in dem Fall, wenn ich jetzt aber Latitude Doppelpunkt float, also Latitude getypt mit dem Float-Typ hinschreibe, dann ist es auf einmal ein Instanzattribut.

Johannes

Und this unterschied is here in a given lesson diskutiert, weil that really sehr wichtig ist, weil es sehr leicht ist, diesen Unterschied zu machen.

Johannes

These beiden sind sehr nah aneinander anders sehr gleich aus, machen aber dann andere Dinge und sind eigentlich anders als das, was in Python so normal ist.

Johannes

Das heißt, da muss man schon besondere Vorsicht machen.

Dominik

Du musst doch mal bitte den Unterschied genau erklären zwischen diesem Instanzattribut und dem Klassenattribut.

Dominik

Ich habe nämlich schon mehrfach Menschen gesehen, die das so gewohnt waren, dass das halt dann immer ein Instanzattribut ist, was man da direkt unter die Klasse schreibt, dass sich das erst bitte festgestellt hat, dass das.

Johannes

In anderen Sprachen ist es ja auch so.

Johannes

Wenn du in Java oder C oder sonst wo bist, dann ist es genauso.

Johannes

Dann sagst du, die Klasse soll folgende Instanzattribute enthalten.

Johannes

Und in Python ist es aber anders.

Johannes

In Python sagst du, die Klasse soll folgende Klassenattribute enthalten.

Jochen

Der Hauptunterschied zwischen Klassenattributen und Instanz ist halt, dass ein Klassenattribut ist halt für alle Instanzen der Klasse gleich.

Jochen

Und das ist halt wahrscheinlich überraschend.

Jochen

Also diese Eigenschaft ist mir auch schon mehrfach blöd auf die Füße gefallen.

Jochen

Aber so ist es halt, genau.

Jochen

Da muss man vorsichtig sein.

Dominik

Alles heißt, wenn du das irgendwo an einer existierenden Entität, dann wäre das für alle Gesetz?

Jochen

Ja, also wenn das eine Klasse ist, du sagst halt jetzt, schaffst du es irgendwie, dass tatsächlich irgendwie ein Klassenattribut default-mäßig zum Beispiel eine Liste ist, also indem du das auf Ecke-Klammer auf Klammer zusetzt oder so, dann.

Dominik

Oh, das ist jetzt aber ganz herzlich, was du machst.

Jochen

Du und du überschreibst das nicht nachher nochmal irgendwie in einem Konstruktor oder so, was ja dann oft passiert, dann ist es kein Problem mehr, weil in dem Moment, wo man es im Init neu setzt oder so, ist es dann eine Instanz, ist es dann ein Instanzattribut und nicht mehr ein Klassenattribut, merkt man auch nichts von, ist vielleicht ein bisschen gefährlich.

Jochen

Aber wenn das nicht passiert, dann passieren plötzlich wilde Dinge, weil dann ist das halt für alle Instanzen gleich.

Jochen

Und es funktioniert zwar, dass man da Sachen appendet, aber da sind dann halt nicht nur die Sachen, die man selber appendet hat drin, sondern alle anderen auch.

Dominik

Deswegen ist eine Konvention, wie man das macht, und zwar kann man das nennen, Cache unterstrich irgendwas.

Dominik

Dann hast du einen Cache für alle Instanzen dieser Klasse, dann kannst du ja damit merken, alle Errors, die aufgetreten sind, ever oder sowas.

Jochen

Ja, also das hat durchaus Gründe, weshalb man sowas haben will.

Jochen

Ja, klar.

Dominik

Ist ganz gut, aber damit kann man sich hart infuschieren.

Dominik

Also tatsächlich, da hatten wir, glaube ich, auch schon ein paar Mal gesagt.

Dominik

Dieses Instanzieren von leeren Dicts oder Listen ist in Python generell sehr gefährlich.

Dominik

Wenn man das als Default-Argument macht, sollte man nichts.

Jochen

Ja, ganz, ganz gefährlich, ja.

Johannes

Und generell Klassen, also ich mache ja oft Programmierkurse und das ist wirklich schwierig zu verstehen, was eine Klasse ist und was eine Instanz von einer Klasse ist.

Johannes

Und wie die zusammenhängen und was die zusammentun und warum die das so tun.

Johannes

Und das ist echt, echt schwierig.

Johannes

Und jetzt gibt es hier eben genau diesen subtilen Unterschied hier.

Johannes

Das eine, das sieht genauso aus wie das andere, aber wenn du nicht Doppelpunkt-Int hinterschreibst, dann ist es auf einmal eine Klasseninstanz.

Johannes

Und das ist schon, das ist wirklich was sehr Subtiles.

Johannes

Und das geht eben weg von dem, was Python normalerweise macht.

Johannes

Normalerweise schreibst du in die Klasse die Klasseninstanzen rein und hier schreibst du auf einmal, wie in anderen Programmiersprachen, wo es sich natürlich anfühlt, schreibst du die Instanz Eigenschaften rein, die Instanzattribute.

Jochen

Wobei der dann natürlich zum Beispiel Data Classes schon auch auf die Finger haut, wenn du da irgendwie einfach eine Liste hinschreibst oder so, dann sagt dir da so, nee, nee, nee, das kannst du aber nicht machen.

Jochen

Du musst ja irgendwie dann Default, wie heißt das Ding, Field?

Jochen

Ja, eine Factory muss der Feld Factory angeben, genau.

Johannes

Aber da kommt es natürlich rum.

Johannes

Es gibt ja viele Mutable Classes oder viele Dinge, die du da reintun kannst, die eben nicht.

Johannes

Das ist nur jetzt für Liste und für Dictionary und für Set.

Johannes

Es ist special cased, weil die so häufig vorkommen.

Jochen

Genau, ja, also das ist gefährlich, das stimmt.

Jochen

Das ist, ich weiß auch nicht, wie ihr das so macht.

Jochen

Also normalerweise, also sicher, also auch wenn man jetzt Konstrukturen hat von normalen Klassen, da ist es ja auch gefährlich, wenn man da irgendwie zum Beispiel sagt, annotiert, das ist jetzt eine Liste und dann sagt man gleich und dann Ecke Klammer auf, Klammer zu.

Jochen

Und so viele Leute denken sich wahrscheinlich nichts dabei, wenn sie das tun, aber das ist halt auch schon brutal gefährlich.

Dominik

Also ich mache immer List or none gleich none.

Jochen

Ja, aber dann ist das

Pattern, das muss man sich einfach merken.

Johannes

Das ist ein doofes Pattern, aber man muss es sich einfach merken.

Jochen

Aber das ist ja auch nicht so schön, weil einmal ist dann deine Typ-Annotation halt so ein bisschen, also einmal ist sie halt hässlich, würde ich jetzt mal so sagen.

Jochen

Mit diesem Pipe-None, das ist halt schon so, uh.

Dominik

Es gibt doch diesen schönen Unknown-Typed hin dann.

Jochen

Optional, nämlich auch hässlich, aber

Dominik

Unknown gibt es ja noch dazu.

Jochen

Ja, aber Unknown, uh, da ist ja schon, wer kennt das?

Uh.

Oder Annie.

Dominik

Ich habe noch einen dritten Type-Hint, der da so ein bisschen spezieller war, dass das klar ist, dass das irgendwann mitstellen könnte.

Jochen

Also was ich an der Stelle mache, also mir gefällt das alles nicht, ja.

Jochen

Also okay, Leute machen das, aber also ich finde auch, ich finde auch, es funktioniert nicht richtig.

Jochen

Wenn man jetzt den statischen Typchecker sagt, das kann jetzt auch None sein, dann hat man damit so einen riesen, dann hat man sich einen riesen Haufen Würmer.

Dominik

Dann sagt er immer dann, er tatsächlich irgendwann im Code halt immer, hey, du hast ja nicht auf None geprüft und dann lintet er das alles, weil du musst vorher immer so ein Assert is not none machen.

Jochen

Ja, oder noch schlimmer, also wenn es dann halt nur nervt, ist ja, ist ja noch, was noch schlimmer ist, ist halt, dass Bugs dann halt irgendwie unerkannt, dass halt, du kannst plötzlich a legal state representieren.

Jochen

Und normalerweise sagen wir immer so, ja, also make illegal state unrepresentable.

Jochen

Das sollte gar nicht passieren dürfen.

Jochen

Der Type-Tracker sollte dir sagen: so, nee, das darf nicht none sein.

Jochen

Und du hast dieses None ja nur benutzt, damit du es initialisieren konntest.

Jochen

Das ist ja, hat ja gar nicht.

Jochen

Wenn in deiner Logik nicht None vorkommen darf, was ja dann oft bei diesen Initialisierungsgeschichten gar nicht so ist, dann darf das da nicht drinstehen.

Jochen

Und wenn du es trotzdem möglich machst, dass es drin steht, dann machst du halt eine Büchse Backwürmer auf, die dich ja irgendwann beißen werden.

Jochen

Und die Frage ist halt nur, warum ist das.

Dominik

Und was machst du oder umgekehrt?

Johannes

Ja, umgekehrt, du machst es wie in Java, wo jeder Typ optional ist und hast dann auf einmal in jeder Scheißfunktion, in die du reingehst, musst du acht Variablen auf Null überprüfen.

Jochen

Ja, das ist natürlich auch genau, das ist auch hässlich.

Also insofern ist es dann.

Jochen

Nee, also ich würde sagen, aus der Perspektive betrachtet, musst du eigentlich sagen, nee, das darf nicht none sein dürfen und nicht optional sein dürfen.

Jochen

Die allermeisten Sachen, die man so hat, die sind nicht optional.

Johannes

Also du wirst sagen, das ist eine leere Liste.

Und wenn da eine leere Liste

reinkommt, musst du das neue initialisieren.

Jochen

Ja, das war da auch wieder verwirrend.

Jochen

Nee, kannst du ja auch nicht gut machen.

Jochen

Nee, was ich an der Stelle mache, ist, ich nehme ein Trick.

Oh, eine Sentinel.

Johannes

Eine Sentinel.

Jochen

Ja, genau.

Jochen

Von Luc Plant hat er das gesagt, da habe ich das her.

Jochen

Und zwar definiere ich mir einen Typ namens Auto und der ist definiert über eine Klasse Unterstrich-Auto.

Jochen

Und das Ding macht nichts, außer dass es nach Falls evaluiert.

Jochen

Und in den Boolean-Kontext.

Auto, Auto, Auto, Auto, Auto, Auto, Auto.

Jochen

Und den Typ Any hat.

Jochen

Und dann musst du nicht oder irgendwas sagen, sondern Any geht halt überall durch.

Jochen

Das heißt, wenn du mal ein Auto hinschreibst, dann kann man die Typ-Annotation richtig lassen und Auto geht halt trotzdem durch.

Johannes

Aber Annie geht überall durch, das ist doch falsch.

Jochen

Nee, aber das ist so.

Jochen

Also dadurch, dass Auto Any hat, ist, egal welche Typ-Annotation du vorangeschrieben hast, ist es richtig.

Dominik

Das ist übrigens PEP 696, oder?

Jochen

Und das weiß ich nicht, ich kann die nicht außer nicht, aber

Johannes

wie, du kennst nicht alle PEPs aus, wenn du sagst.

Johannes

Ja, Entschuldigung.

Johannes

Schwer enttäuscht.

Jochen

Und dann kannst du halt in einem Konstruktor zum Beispiel dann halt sagen, if das Ding oder if not das Ding, dann machst du.

Jochen

Das kannst du ja mit None auch nicht machen.

Jochen

Bei None musst du dann krocktalweise immer sagen, if das da ist none, dann setzt es neu.

Jochen

Und ja, also.

Johannes

Ja, okay, aber wie würdest du das mit dem Auto machen?

Johannes

Das habe ich jetzt nicht verstanden.

Jochen

Da das ist Auto.

Jochen

Es ist halt Auto.

Jochen

Und also das importiere ich dann irgendwo her.

Jochen

Und also der Default-Wert ist Auto, die Annotation ist so, wie sie halt sein soll.

Also zum Beispiel und dann sage ich, if das Ding, if not das Ding, dann setzt es neu.

Johannes

Okay, aber wenn jemand eine leere Liste reingeben würde, würdest du es dann auch

neu setzen.

Dominik

Also der Unterschied ist tatsächlich nur, dass er halt ein None will hast.

Jochen

Aber dann würde ja, wenn das halt nicht okay wäre, dann würde ja der Toucher kein Mac haben.

Dominik

Also du hast halt nicht, aber

Johannes

du hast einen semantischen Unterschied eingeführt.

Dominik

Ja, du schreibst halt nicht if not foo, dann, also ne, du schreibst if not foo, dann foo nur setzen, oder ne, weil das halt Auto ist immer fault, du sagst nicht, foo ist none, weil dann sparst du halt einfach das None, sondern.

Jochen

Genau, ich spare mir das None und ich spare mir die Is-Geschichte und ich mache es halt so, wie es Leute mit None gibt.

Johannes

Weil die X-Geschichte könntest das ja, du könntest ja auch noch ist sagen.

Jochen

Das könnte ich auch machen.

Johannes

Ich würde tatsächlich sogar sagen, du musst das machen, weil nehmen wir mal an, ich rufe diese Funktion, die du mir gerade eben gesagt hast, oder diesen Konstruktor, rufe ich auf mit dem Parameter und der Parameter ist eine leere Liste.

Johannes

Und ich behalte die aber außen vor und benutze die an einer anderen Stelle nochmal.

Johannes

Das heißt, ich appende da Sachen rein.

Johannes

Das hast du jetzt genau den Use Case, den Python so gefährlich macht, den hast du jetzt kaputt gemacht.

Johannes

Und jetzt überlassen Sie jetzt, wir starten jetzt eine Umfrage, schreiben sie uns an hallo.python-podcast.de, ob das gut oder schlecht ist.

Schlecht.

Jochen

Ja, genau.

Jochen

Also ich bin auch noch nicht endgültig zufrieden.

Ich hätte nur sagen,

Johannes

damit die Hörer was sagen.

Jochen

Aber also ich mache es halt jetzt gerade so.

Jochen

Ich leide dann auch mal ein bisschen drunter, dass zum Beispiel LLMs, die halt das gewohnt sind, dass Leute da Nan oder Nan schreiben, dann die sind immer total verwirrt.

Jochen

So, was will der denn da jetzt?

Jochen

Und dann sagt er mir schon wieder, ich soll dieses Auto verwenden.

Jochen

Hä?

Jochen

Ich verstehe nur Bahnhof.

Dominik

Machen sie

Jochen

irgendwelche komische Sachen.

Jochen

Und ja, ja, gut, ich schreibe das dann auch immer in die entsprechenden Rules mit rein, aber es hilft ja auch nur so begrenzt.

Jochen

Es ist ein Kreuz, ich weiß auch nicht.

Johannes

Der Code ist einfach zu wenig standardkonform, der ist zu wenig gewöhnlich.

Dominik

Kann man den dann noch lesen, wenn er über ein Auto steht, weiß ja jeder, was gemeint ist?

Jochen

Nee, das wissen Leute dann halt dummerweise auch.

Das ja auch schon passiert.

Wenn das das LLM schon nicht weißt.

Jochen

Ja, genau, LLMs wissen es nicht.

Johannes

Okay, aber das Kapitel macht ja jetzt noch eine zweite Abbiegung der Dominik, hat es ja schon erwähnt.

Johannes

Und zwar Richtung Pattern Matching Class Instances.

Johannes

Auf einmal kommt hier in dem Kapitel noch Pattern Matching.

Dominik

Hooray!

Was?

Dominik

Das ist ja schön, Pattern Matching, oder?

Johannes

Zweiter Twist in the End.

Ja.

Johannes

Da war ich ja überhaupt gar nicht drauf vorbereitet.

Johannes

Dominik, warum magst du Pattern Matching?

Erklär mal.

Dominik

Weil ich damit relativ verschiedene.

Dominik

Das ist erst blöd, weil das mag man eigentlich nicht.

Dominik

Also ich kann verschiedene Objekte entgegennehmen und die checken und dann gucken.

Okay, und

Johannes

wie geht das?

Johannes

Erklär mal, wie das geht.

Dominik

Du machst ein Match und ein Case auf, match dann deine Variable, die du hast und gibt es dann verschiedene Cases.

Dominik

Also du hättest gerne irgendwas ist, schwieriges Beispiel, so eine Koordinate.

Dominik

Dann gibst du rein, dass das eine Koordinate sein könnte und dann hat er tatsächlich den Pfad, okay, hier ist eine Koordinate.

Dominik

Und wenn du danach zum Beispiel sagst, ist eine Straßenadresse, dann guckt der, okay, ist eine Straßenadresse, passt da rein und gehst weiter.

Dominik

Und du kannst da bestimmte Attribute omiten, indem du die einfach auf dann setzt, falls das verständlich ausröscht ist.

Dominik

Und kannst damit relativ schön Cases abfangen und hast irgendwann ein Standard-Case.

Dominik

Also so ein bisschen so if- then, ne, if, Elif, Elif, Elif, in.

Dominik

Gut lesbar, finde ich.

Dominik

Also ich mag das sehr gerne.

Jochen

Ja.

Dominik

Du kannst auch Types machen und kannst Guards machen und sowas.

Johannes

Ja, man kann da sehr viele Sachen an.

Johannes

Das verdient fast eine eigene Episode.

Jochen

Da muss man eine eigene Episode zu machen, haben wir noch nicht gemacht, haben wir auch schon häufiger geplant, aber ja, genau, das müssen wir machen.

Jochen

Man kann auch da, ich finde, ja, also es ist super mächtig, ich brauche es ehrlich gesagt nicht so oft.

Johannes

Ja, das ist ein großer Fan davon.

Johannes

Ich finde das großartig, das ist eins der besten Language Features, was es gibt, aber ich habe es noch nie verwendet.

Johannes

Ganz komisch.

Jochen

Also ich meine, ich glaube, das ist halt auch für Leute, die jetzt oft Parser für irgendwelche Sachen schreiben oder so.

Jochen

Oder halt so Domain-Specific Languages für irgendwas haben.

Jochen

Die brauchen das wahrscheinlich oft.

Jochen

Aber das macht halt nicht so oft.

Johannes

Also ich, also das erste Mal habe ich Pattern Matching gesehen.

Johannes

Da war ich noch ein junger Mann damals und das war ein Erlang.

Jochen

Ah, ja, ja, ja, gut.

Johannes

Und da ist es ja ein Core Language Feature.

Johannes

Da ist es ja so ein, ja, hier, da hast du eine Funktion.

Johannes

Und natürlich, das erste, was die Funktion macht, ist immer erstmal Pattern Matching.

Johannes

Und die benutzen das für alles.

Johannes

Wenn du hier einen Nun reinkriegst, ja, klar, dann geht die Funktion des, wenn das Pattern hier ein Nun ist, dann musst du erstmal hier wissen, dass jedes machen.

Johannes

Und da ist es ja nicht, da geht es nicht so sehr um Parser, sondern da geht es ja schon irgendwie auch um Schnittstellen und um Datenaustausch.

Johannes

Und ich habe in meinem Kopf schon immer den Gedanken, dass man, wenn ich eine Schnittstelle schreibe, dass ich da irgendwie so ein Pattern-Matching reinmachen könnte.

Johannes

Aber irgendwie hat es noch nie so richtig gut gepasst.

Jochen

Ja.

Weiß auch nicht.

Jochen

Ich weiß auch nicht.

Dominik

Kann man in die Exception-Types gucken oder.

Johannes

Ja, aber die fange ich doch in dem Accept, in den Accept-Blocks schon ab, die verschiedenen Exception-Types.

Da gibt es auch schon einen Syntax für.

Johannes

Und für die verschiedenen Instanztypen, die muss ich eh irgendwie in Funktionen reinverzweigen und ach, ich weiß irgendwie nicht.

Johannes

Ich würde es gerne mehr benutzen.

Johannes

Ich weiß nicht, ob das den Problem an mir ist oder ob das ein Problem an.

Jochen

Also ein Problem war eine ganze Zeit lang auch, also jedenfalls, als das Feature total frisch war, für mich jedenfalls auch, dass ich mir gedacht habe, ich muss ein bisschen vorsichtig sein, dass ich das jetzt nicht irgendwie mich zu sehr darauf verlasse, dass es das gibt, weil es ist ja noch ganz neu und viele verwenden halt noch ältere Python-Versionen.

Johannes

Und vermutlich super langsam.

Jochen

Ja, genau, aber das ist ja jetzt inzwischen 13 ist jetzt schon die älteste Version, die man so, mit der man normalerweise so zu tun hat.

Johannes

Nee, 10, 3.

Johannes

Also 3.10 meinst du.

Jochen

Ja, genau.

Jochen

Und eine 13 ist es, genau, nicht 13 meinte ich nicht.

Jochen

Nee, nee, 3.10, genau.

Johannes

Ja, 3.10, ja, das ist, würde ich sagen.

Jochen

Und da ist es ja dazugekommen.

Jochen

Also insofern würde ich sagen, jetzt ist sicher, dass man es eigentlich immer verwenden kann.

Jochen

Insofern, ja, muss man gucken, ob es da nicht doch mehr Use Cases gibt, als man so denkt.

Jochen

Aber es ist auch fiese Syntax.

Jochen

Also ich habe mir dazu auch schon ein paar Vorträge angeguckt.

Jochen

Und man kann sich auch da wieder leicht in den Fuß schießen.

Dominik

Ja, was nicht so ganz intensiv ist, dass wenn man so die Bild in Typen nimmt, also man sagt irgendwie Match Unknown und dann machst du einen Case-List or Tuple.

Dominik

Und wenn man die dann nicht instanziert mit den Klammern, dann ist es immer true.

Dominik

Der nach der Funktion guckt und nicht guckt, ob es eine List oder ein Tubel ist.

Genau.

Ja, kann man sich ja auch mit den Fuschis tippen.

Jochen

Ja, und dass der Default-Fall auch immer irgendwie, wenn nichts anderes gefunden wird, ist auch irgendwie etwas, was halt in anderen Sprachen anders ist.

Jochen

Naja.

Jochen

Oder dass man den am besten immer handeln sollte, genau, in Python, dass man.

Ja, aber

Johannes

das ist doch auch nervig.

Ja, gut, aber nicht

Dominik

klassische Programmierung, dass man immer das Elst für alles, was man nicht erwartet, schreibt.

Johannes

Wenn man das Els weglassen kann, dann lässt man es weg.

Johannes

Je mehr man weglassen kann, umso mehr kann man weglassen.

Johannes

Das ist doch viel besser.

Eigentlich schon.

Johannes

Ja, und dann ist das Kapitel auch schon vorbei.

Johannes

Dann kommt nur noch hier so ein bisschen.

Dominik

Also Else makes the Universe explode.

Dominik

Also immer, wenn der Else-Case einsteht, dann alles abreißen.

Dominik

Alles vernichten.

Nee, komm.

Johannes

Ist das Quantumsort, ja.

Johannes

Kennt ihr den Quantumsort-Algorithmus?

Johannes

Der ist ein O von 1-Sortier-Algorithmus.

Johannes

Du machst eine zufällige Permutation von deinem Input und

Jochen

machst auch rüber, ob es

Johannes

sortiert ist.

Johannes

Und wenn sie nicht sortiert ist, zerstörst du das Universum.

Johannes

Und das in dem Universum, in dem sortiert bist, ist das, überlebst du immer.

Schnell, geht nicht mehr.

Johannes

Dieses Kapitel macht mehrere interessante Wendungen und es schneidet einige Sachen an, die interessant sind, die aber so ein bisschen über Data Classes hinausgehen.

Johannes

Ich muss ja sagen.

Dominik

Macht ihr denn lieber Data Classes oder lieber Name-Tupels?

Johannes

Lieber Data Classes.

Jochen

Ja, ich auch.

Jochen

Lieber Data Class.

Jochen

Ich weiß jetzt gar nicht so genau, warum.

Johannes

Ja, weil das gutes Marketing hat.

Johannes

Es steht auch hier in dem, also hier im Abschnitt Further Reading, da sind natürlich viele Verweise dann drin.

Johannes

Und da steht auch drin hier bei der PyCon US 2018, da gibt es einen Talk von Raymond Hattinger, den wir auch wir alle schon gesehen haben.

Johannes

Und ich gehe davon aus, dass die Hörer den auch alle gesehen haben, der heißt Data Classes, the Code Generator to End All Code Generators.

Johannes

Und das hört sich ja schon sehr hochtrabend an.

Johannes

Und ich muss sagen, ich habe mir den Talk angeguckt und ich habe danach Data Classes verwendet und das war gar nicht so beeindruckend.

Jochen

Ja.

Johannes

Es ist irgendwie gar nicht so viel, was einem das macht, was einem das gibt.

Deswegen auch direkt an dem Tupel.

Jochen

Ja, also

Johannes

man darf da gar nicht so viel drauf geben.

Johannes

Da werden viele Worte darüber gesagt und es wird viel drüber gesprochen, aber es ist eigentlich was total Simples, was total Kleines und Nettes und einfaches und das, ja.

Jochen

Ja, also es gibt halt so Anwendungsfälle, dafür wenn ich es halt sehr gerne für.

Jochen

Also zum Beispiel eben in so, so für, also wenn man jetzt halt so Event-Driven Architecture hat, dann für die Events und Commands, da sind ja da Classes halt super.

Jochen

Genau, für alle Arten von Value-Objects, wo man halt nichts drauf gibt, was das denn konkret für ein Objekt ist, wo nur der Wert von irgendwelchen Dingen interessiert, da ist das total super.

Jochen

Und für alles andere nehme ich normale Klassen.

Jochen

Also genau, das ist so mein Daumenriegel für diesen Kram.

Jochen

Und ja, ich glaube, in allen Fällen, wo ich Data-Class verwende, könnte ich wahrscheinlich auch Name Tupel verwenden.

Johannes

Ja, aber es ist schon bequemer, dass man die Namen schreiben kann, das ist schon cool.

Dominik

Das kannst du bei NameTuple auch.

Johannes

Ja, ja, genau, aber dann kannst du nicht ein normales Tupel nehmen.

Dominik

Nee, nee, aber Nametupel ist das schon.

Dominik

Also ich würde nutzen, was ich nicht.

Dominik

Ich würde, glaube ich, fast nie ein normales Tupel nehmen.

Dominik

Sondern statt einem normalen Tupel immer ein Nametuple, weil ich gerne die Namen verwende und ich mag indiziere es nicht so.

Johannes

Ja, okay.

Johannes

Ich verwende Tupel sehr häufig.

Jochen

Ja, ich würde so im Beispiel...

Johannes

Vielleicht für Multiple Return-Werte.

Jochen

Genau, beim Zurückgeben von irgendwelchen Sachen ist es halt ja automatisch.

Johannes

Aber da benutzt du ja auch den Index nicht, da benutzt ja Unpacking.

Johannes

Und dann ist ja schon diese Tupel, ist dieses Tupel so ein bisschen.

Jochen

Da wird sie dann nicht ein Name-Tupel verwenden, ja.

Ja, doch, also warum nicht?

Dominik

Als Return-Wert ein Name-Tupel, dann hast du schon Type-Annotation und kannst danach auf die Attribute des Dings wieder zu beachten.

Johannes

Viel zu viel Arbeit.

Johannes

Einfach zwei Werte zurückgeben, zack.

Zack, zack, dies und jedes.

Dominik

Dies und dieses oder vielleicht auch das.

Dominik

Und dafür werden Match Case wieder gut.

Dominik

Ja, sorry.

Dominik

Ich glaube, wir haben das besprochen.

Dominik

Wollt ihr noch was erzählen?

Jochen

Also, genau, was wir noch tun könnten, ist irgendwie, wir machen noch Pilgs und ich weiß nicht, ob irgendjemand anders anfangen möchte.

Ja, ja, haben wir das nicht?

Jochen

Okay, also.

Das ist auch was Gutes.

Jochen

Ja, also was ich gerne picken würde und ja, ich weiß nicht, ob die so viele Hater haben wir gar nicht, aber das wäre ein guter Hook für die Hater.

Dominik

Wir hätten erst einmal ein, wenn ich mich aktiv erinnere.

Jochen

Und zwar, was mir momentan tatsächlich.

Dominik

Nacht zum Hyp 3 mit dem Tun, da war ich auch schon vor.

Jochen

Ja, aber also was mir, was mir tatsächlich momentan richtig viel Spaß macht, ist ein Tool von Anthropic und zwar heißt das Claude Code.

Und das ist quasi so ein LLM-basierter Kommandozeilen Dings verleihen.

Jochen

Ja, weil, ne, genau, was das ist.

Jochen

Ja, schwierig.

Jochen

Ja, also das Ding ist einfach nur, es ist halt ein LLM und es läuft in einer Schleife und macht halt Dinge.

Jochen

Und das funktioniert.

Jochen

Also ich will jetzt gar nicht so definieren, was das ist.

Dominik

Hast du Claude schon einen Rootzugriff auf deinen Rechner gegeben?

Jochen

Das mache ich nicht, aber in Projekten, wo ich weiß, wenn das committed ist oder gepusht, dann kann es das halt auch weglöschen, ist nicht so schlimm.

Dominik

Ja, gibt dir nochmal ein, zwei Server, da kannst du dich austoben, ein bisschen Budget dafür.

Ich habe

Dominik

mal gefragt, also auch Claude, ob das jetzt eigentlich mich ersetzt oder ist das, ne, was ist das so für eine Beziehung?

Dominik

Muss ich Angst haben oder argumentiert mich das eher oder sowas?

Dominik

Und Claude meinte dann so, hey, ist eher so eine Bromance.

Jochen

Ja, okay.

Johannes

Glaube ich bei dir, Dominic.

Das glaube ich bei dir.

I agree.

Johannes

Bromance zwischen dir und KI.

Jochen

Aber also ich würde es einfach mal, also man kann das nicht gut beschreiben, man muss das mal ausprobieren.

Jochen

Und da ist es eigentlich schon sehr cool.

Jochen

Also ich benutze das jetzt in letzter Zeit super häufig.

Jochen

Und das hat mir schon echt viel.

Dominik

Häufig untertrieben, weißt du, wenn du Jochen beim Arbeiten zu gucken.

Rechnet die ganze Zeit nur noch

Jochen

so, nö, ja doch, vielleicht.

Och, mach nochmal so.

Jochen

Ja, aber das ist auch schon wichtig.

Jochen

Also ich gucke schon noch drauf und ich.

Dominik

Also das heißt, das drauf gucken ist das, was sich vom Vibe unterscheidet.

Jochen

Ja, ja, nee, das ist nicht Vibecoding, was ich, also ich nenne das manchmal bloßhafterweise Vibecoding.

Das ist nicht Vibecoding.

Jochen

Um die Leute, um die Leute zu ärgern, die.

Johannes

Keine Sorge, aber das ist nicht Vibecoding, das weißt du.

Dominik

Ja, es gibt ja zwei Menschen, glaube ich, die sich mit dem Begriff Vibecoding so ein bisschen fertun.

Dominik

Das Simon zum Beispiel sagt, das wäre gar nicht so.

Jochen

Ja, also die ursprüngliche

Dominik

Begriff total blöd ist, weil der dafür eigentlich was total anstrengend ist.

Jochen

Das war mal gut definiert und zwar als Vibecoding ist halt dann, wenn das Ergebnis und der Code egal sind und du halt nur sozusagen basierend auf dem Vibe haben.

Johannes

Weemand anders sein Wort verwendet hat, was nicht so ist, wie er es haben möchte.

Johannes

Ist doch auch Old Manual Z Cloud.

Jochen

Ja, aber er hat schon recht, also das war ursprünglich mal so definiert und jetzt benutzen es halt alle irgendwie anders und das ist natürlich schon ein bisschen doof.

Ist egal, jedes Wort Vibe ist halt nicht mal anders definiert.

Jochen

Ja, aber es gibt in dem Bereich halt schon so viele Worte, die halt ihre Bedeutung verloren haben, dass jetzt so das ja, okay.

Jochen

Na gut, es ist auch wurscht, kann man auch nicht mehr zurückholen.

Jochen

Meinetwegen ist es auch Vibe-Coding, aber also ist es tatsächlich so, dass ich damit halt viele Dinge irgendwie jetzt so machen kann, die vorher mühselig waren und jetzt sind sie halt nicht mehr so mühselig.

Jochen

Und auch quasi das über Copy-Paste und oder halt über Cursor oder sonst wie Copilot kann man das ja auch machen.

Jochen

Das hat auch schon alles ganz gut funktioniert, aber Cloud Code ist tatsächlich für mich nochmal eine deutliche Verbesserung.

Jochen

Also das ist halt, macht alles nochmal deutlich angenehmer.

Dominik

Das ist schon mega gut.

Dominik

Aber da möchte ich tatsächlich für alle, die es noch nicht kennen, die meisten kennen es wahrscheinlich, MindPick machen.

Dominik

Und zwar ist das tatsächlich, wie in meinem Ausschuss weiß ich nicht, NATN.

IO.

Dominik

Ich finde normalerweise so Logo-Sachen ziemlich schlecht und schwachsinnig und scheiße, aber das Ding ist erschreckend gut.

Dominik

In Business-Prozessen direkt anbinden an der Postgres, an SAP, an was auch immer du gerade brauchst.

Dominik

Und du kannst es dir so zusammenklicken.

Dominik

Machst du da einen Telegram-Channel dazu und dein Discord und hast einen Bot und ziehst da so zwei Lines irgendwie zusammen und machst dann noch einen Prompt dahin und setzt dann da noch eine Nachfrage für das Ergebnis vom Prompt, passt das dann in JSON, kannst einen kleinen Python-Snips reinbauen.

Dominik

Also wenn ich Low-Code mir überlegen würde, würde ich das wahrscheinlich auch so machen.

Dominik

Das ist, also ich würde sagen, das ist sehr gefährlich für unsere Profession auch.

Dominik

Also weil ich kann nicht jetzt jeder Marketier hinsetzen und sagen, so, hey, ich bin Coder und macht sich miteinander so ein Business-Prozess, wo man vorher halt gut bezahlte Software-Ingenieure für braucht.

Dominik

Das ist schon so ein bisschen schon nicht schlecht.

Dominik

Also, ne, da sind wir wieder bei dem Pick, den ich eben schon gespoilert habe, den der Johannes verraten wollte.

Johannes

Nee, das ist nicht mein Pick.

Dominik

Aber das macht es ja schon so ein bisschen.

Dominik

Das ist ja der Zeug teilt viel Zeugs, viel Code, den man halt kaputt machen kann.

Dominik

Oder halt auch nicht, ne?

Dominik

Oder ist der kaputt?

Wen braucht man dafür?

Jochen

Die richtigen Ingenieure wie

Dominik

uns, um das wieder zu reparieren?

Dominik

Oder schafft das dann Cloud Code selber?

Jochen

Naja, also ich meine, funktioniert.

Jochen

Für den Anwendungsfall, dass du halt überhaupt erstmal irgendwie rausfinden willst, ob das etwas ist, was du gebrauchen kannst oder nicht.

Jochen

Dafür ist das wahrscheinlich noch nicht so schlecht.

Dominik

Nein, Locken, aber das ist ein Irrtum, es geht nicht nur darum, rauszufinden, was das ist, was du willst, weil das ist genau das, was die, ich sag mal, Mediocre-Devs immer schon verkauft haben.

Dominik

Irgendeinen Scheiß, der gerade so aussieht, als wird er funktionieren, und nach zweimal Gegenpusten zusammenbricht.

Dominik

Und das ist kein Unterschied mehr zu dem, was du dir einfach da viben kannst.

Dominik

Und das ist das, mit dem die meisten Leute irgendwie in der Branche irgendwie ihren Umsatz gemacht haben.

Dominik

Und das ist der jetzt einfach quasi obsolet.

Dominik

Oder was halt ein, der das

Jochen

so gespielt hat.

Jochen

Weiß ich nicht, du bist ja immer noch dann abhängig auch da von dem Service und so.

Jochen

Also, naja.

Business Leaders, ne?

Dominik

Unfuck it I, how did you find us?

Dominik

My therapist recommended you.

Are you very sorry?

Dominik

Yes, no, fuck you.

Genau.

Jochen

Ja, also ich muss, ich stimme zu, dass das halt von den ganzen Dingern, die es da draußen gibt, halt tatsächlich irgendwie gut gemacht ist.

Jochen

Ich persönlich, für mich hat das nicht so appeal, weil ich denke mir so, na gut, ich schreibe halt Python, das macht für mich jetzt halt mehr Aufwand.

Jochen

Ich kann schon programmieren, ich brauche das nicht.

Dominik

Ja gut, aber so eine Postcast-Schnittstelle mit zwei Klicks, ne?

Jochen

Ja, aber also ist für mich jetzt nicht so ein Aufwand, aber ja, gut.

Wir werden sehen.

Jochen

Vielleicht, ja, keine Ahnung.

Jochen

Aber mein Pick

Johannes

geht in eine ganz andere Richtung.

Dominik

Turn a caffein into Code?

Johannes

Ich picke Unregistry.

Ich bin ja ein Docker-Anhänger.

Johannes

Und ein Problem, was man aber hat mit Docker-Containern, ist, dass wenn man die lokal gebaut hat auf seiner Entwicklungsmaschine, dann muss man die irgendwo hintun, damit die deploybar werden.

Johannes

Das heißt, wenn ich die auf meinem Produktionsserver dann ausrollen möchte, dann müssen die irgendwo sein.

Johannes

Dieses irgendwo heißt normalerweise Registry.

Johannes

Ja, Docker-Hub, die kannst du nehmen, wenn der Open Source machst, wenn du keine Geheimnisse, wenn du alle deine Sachen offenlegen willst auf der Welt.

Dominik

Ansonsten ist es eine RTV.

Das ist echt scheiße.

Johannes

Artefactory Nexus oder in die Amazon in so eine private Registry für Amazon.

Aber jetzt gibt es hier ein Projekt, das heißt Unregistry.

Johannes

Und damit kann ich direkt von meiner Maschine auf die Servermaschine ein Image pushen, ohne über eine Registry zu gehen.

Johannes

Der Trick ist, also das geht natürlich manuell auch her.

Johannes

Ich kann natürlich manuell dieses Docker-Image exportieren und kann es tippen und dann per SCP rüberkopieren und so weiter.

Johannes

Aber das ist zum einen nervig und es ist auch langsam, weil jedes Mal das komplette Image übertragen werden muss und nicht nur die Schichten, die man neu braucht.

Johannes

Und das macht Unregistry einfach alles im Hintergrund.

Johannes

Das heißt, der Trick ist, das tut so, als ob es eine Registry wäre.

Johannes

Und wenn du sagst, hier push mal auf den Server, dann macht es dort einfach kurz eine Registry auf, dann pushst du da hin.

Johannes

Und dann ist es bei dem Server, bei dem Produktionsserver einfach im lokalen, in den lokalen Images drin.

Johannes

Und das ist großartig, weil das macht viele Deployment-Prozesse einfach super viel einfacher.

Dominik

Du kannst dann aber nicht History und sowas ist dann halt weg, ne?

Wie meinst du History?

Johannes

Hast du bei Docker-Containern nie.

Na doch.

Johannes

Jeder Tag, den du pushst, ist dort.

Johannes

Also du hast kein zentrales Repo mehr und das ist genau das, was du möchtest.

Dominik

Okay.

Johannes

Wenn du die Sachen aufbewahren möchtest, dann brauchst du eine Registry, ja.

Jochen

Ja, achso.

Jochen

Achso, wenn du, also du meinst History von Images.

Ja, okay, das hat.

Johannes

Nee, das ist ja eben unregistry.

Johannes

Das hast du jetzt nicht mehr.

Johannes

Und das will ich auch in ganz vielen Fällen einfach nicht haben.

Dominik

Ja, es ist eben meistens noch ein Müllbalast der Trumpf.

Johannes

Ich habe immer nur Latest.

Johannes

Es gibt nur Latest.

Dominik

Aber wenn du das Customer gemacht hast, Johannes, da musst du ja dann wieder zurück anstanden, dass du Vorwart gibst.

Johannes

Ja, gut, aber das habe ich dann noch lokal.

Na gut.

Johannes

YOLO, YOLO DRIVEN Development.

YOLO Vibe.

Dominik

Ja, danke fürs Zuhören.

Dominik

Das war gleich.

Dominik

Kommt zum HörerInnen-Treffen vorbei und wir freuen uns auf euch hier.

Warten wir das gleich noch?

Dominik

Ja, Ende August, Ende September.

Dominik

We are discussing that in another episode.

Jochen

Okay.

Dominik

Und machen wir es.

Dominik

Ja, dann bleibt uns gewogen.

Dominik

Hallo.pythsonpodcast.de.

Dominik

Dankeschön und bis bald.

Jochen

Macht's gut.

Jochen

Ciao, ciao.