Transcript: Platonismus und Python - Data Class Builders

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Dominik

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

Dominik

Heute quatschen wir über das nächste Kapitel im Fluent Python-Buch,

Dominik

falls euch das interessiert, über Dataclasses und warum das riecht oder nicht,

Dominik

oder was Cooles und wer das sonst so ist mit Sachen.

Dominik

Hi, Johannes.

Dominik

Hallo, hallo Dominik, hallo Jochen.

Dominik

Hi, Jochen.

Dominik

Ja, hallo Dominik, hallo Johannes.

Dominik

Ich habe gehört, lieber Jochen, du wolltest, du warst auf einem Podcast-Barcamp.

Jochen

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

Dominik

Ja, und dann haben die gesagt, wir sollten ein bisschen mehr Struktur machen und das wieder ein bisschen schöner.

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

Die haben ja vielleicht auch Erfahrung und so.

Dominik

Weil wir unseren Podcast an anderen Podcasts machen, als die ihren Podcast machen.

Dominik

Und deswegen machen wir das jetzt so, wie die anderen Leute, die nicht so einen Podcast machen, wie wir den Podcast machen.

Dominik

Wie wir das richtig machen.

Dominik

Also ich habe mich auch mit Leuten unterhalten und die haben dann so geguckt.

Dominik

Ich glaube, das geht gar nicht so schlecht.

Jochen

Ja, das geht schon, aber

Jochen

ich meine, wir machen das ja nicht so richtig professionell.

Jochen

Ich wollte gerade sagen, Jochen, möchtest du das jetzt professionell?

Jochen

Nein, nein, das auch nicht, aber

Jochen

also zum Beispiel irgendwie ein Ratschlag

Jochen

war halt so, ja, sagt doch vorher, wenn ihr euch vorstellt,

Jochen

irgendwie einmal macht das

Jochen

immer gleich quasi.

Jochen

Es wäre auch so eine Intro-Melodie

Jochen

oder so, wäre nicht so schlecht, dann dachte ich schon so,

Jochen

Gott, Gott, Gott. Aber ja,

Jochen

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

Dominik

Ich kann ja meinen eigenen Jingle schreiben, dann mache ich den auf meinen

Dominik

Style und dann können wir ja gucken,

Dominik

ob der Ratschlag runtergeht.

Dominik

Wenn man sich die Kurve anguckt, ist halt so

Dominik

in allem einen eigenen Jingle.

Johannes

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

Johannes

Das ist eigentlich eine coole Idee.

Jochen

Ja, okay, dann sieht die, wie viele Leute

Jochen

hören noch zu Kurve wahrscheinlich aus, wie so

Jochen

Akapulco, Klippenspringer, irgendwie ins Nichts.

Jochen

Das ist vielleicht auch nicht so

Dominik

toll. Ja, aber ich finde, wie wir es sonst so machen,

Dominik

wir haben ja eigentlich schon mehr eine Struktur,

Dominik

als du jetzt denkst. Also erstens kennen uns hier die Leute

Dominik

und wenn die sich dafür interessieren, wie wir sind oder

Dominik

interessieren würden, also ganz ehrlich, dann können die uns auch fragen.

Dominik

Hallo at PythonPodcast.de

Dominik

Also wir machen irgendwas mit Python, das hat man vielleicht

Dominik

schon mal rausgehört. Ich glaube, das ist auch offensichtlich.

Dominik

Und viel mehr muss man

Dominik

glaube ich gar nicht wissen. Also muss man nicht, kann man

Dominik

natürlich gerne. Dafür kann man ja fragen oder uns kennenlernen.

Dominik

Unseren Hörer treffen, das bald stattfindet.

Dominik

Wir organisieren das nämlich. Wir haben noch

Dominik

immer noch gar keinen festen Termin, aber es wird

Dominik

wahrscheinlich auf August, September hinauslaufen.

Jochen

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

Jochen

Sag ich doch. August oder September.

Jochen

Das ist kein fester Termin, oder? Nein.

Jochen

Dann müssen wir jetzt

Jochen

nochmal kurz unsere Kalender übereinanderlegen. Also ich glaube

Jochen

tatsächlich wird es eher Ende August

Jochen

bis Anfang September werden müssen

Dominik

wegen Schulferien. Ja, Anfang September bin ich

Dominik

übrigens im Urlaub.

Dominik

Ja, das musst du leider absagen.

Dominik

Das geht halt nicht.

Jochen

Na gut, dann wird es halt vielleicht eher sogar

Jochen

Ende September. Okay, dann sagen wir,

Jochen

wir schieben die Ankündigung auf

Jochen

nächste Episode, die hoffentlich im Juli...

Dominik

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

Dominik

Und okay,

Dominik

September,

Dominik

was ist mit August?

Jochen

Geht nicht gut. Wie gesagt, das ist ein Schulferien.

Jochen

Wir diskutieren das später aus.

Jochen

Wir haben auf jeden Fall das Hörer-Entreffen.

Jochen

Sagt gerne Bescheid, wenn ihr vorbeikommen wollt.

Dominik

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

Dominik

Wir können ja schon mal sammeln.

Jochen

Also wenn ihr uns irgendwas an hallo-at-python-podcast.de

Jochen

schreibt, dann notifizieren wir euch,

Jochen

sobald wir genaueres wissen.

Jochen

Und es wird wahrscheinlich draußen

Jochen

irgendwie...

Jochen

Draußen gibt es vielleicht was zu essen.

Jochen

Irgendwie so Dinge.

Jochen

Ja, okay.

Jochen

Genau.

Dominik

Zur anderen Struktur, Jochen.

Dominik

Wir machen immer News.

Jochen

Ja, wir machen News. Cool, dann machen wir doch gerade ein bisschen News.

Johannes

Aber vorgestellt hat sich jetzt keiner, oder?

Johannes

Der Jochen wollte so schön hinfahren

Johannes

und jetzt ist keiner eingestiegen.

Johannes

Jochen, wer bist du denn?

Johannes

Ihr seid doch die wichtigen Leute.

Johannes

Stellt euch mal vor.

Jochen

Ja, aber man muss ja immer die anderen vorstellen.

Jochen

Man kann sich ja nicht gut selber vorstellen.

Jochen

Also ich stelle mal die Dominik vor.

Jochen

Dominik ist ...

Jochen

Das ist vorbei.

Jochen

Also meine drei Hashtags sind

Dominik

Python, Eurorack und

Jochen

Agentic

Jochen

Vibe-Coding, ja.

Jochen

Vibe-Coding, genau.

Jochen

Okay, ihr müsst jetzt alle guten

Jochen

Hashtags schon weg, meins wären

Jochen

Python,

Jochen

Python Podcast,

Jochen

Ja, Ukulele, Ukulele ist auch

Jochen

sehr gut, genau.

Jochen

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

Dominik

Und Johannes, sollen wir...

Johannes

Ja, also ich, hallo, ich bin Johannes.

Johannes

Für die, die mich nicht kennen, ich bin gelegentlich

Johannes

hier im Python-Podcast als Gast, weil ich diese

Johannes

beiden anderen Typen da kenne.

Johannes

Und

Johannes

ich komme nicht aus dem Rheinland.

Johannes

Ich bin...

Johannes

Du warst da mal hier. Ich war mal im Rheinland,

Johannes

ja, aber es hat sich dann

Johannes

als... Also ich musste

Johannes

wieder weg.

Johannes

Und jetzt bin

Johannes

ich hier. Hier hat es übrigens

Johannes

800 Sonnenstunden im Jahr mehr als

Johannes

bei euch im Rheinland. Das ist nur so nebenbei.

Johannes

Deshalb bin ich auch so ein sonniges Gemüt.

Johannes

und ihr seid so traurig und beregnet.

Johannes

Ja, richtig.

Dominik

Die kennst du übrigens alle aus dem Chaos-Umfeld

Dominik

so ein bisschen mehr oder weniger auch, oder?

Johannes

Ja, den Jochen habe ich im Computer-Club kennengelernt.

Johannes

Also, ja, mich auch.

Johannes

Meine Hashtags.

Johannes

Django, Mathematik

Johannes

und Spiele.

Johannes

Spiele, richtig.

Johannes

Absolut korrekt.

Johannes

Hört man schon am Namen.

Johannes

Ja.

Johannes

Nomen est omen.

Johannes

Ja.

Jochen

Okay, na gut, dann können wir ja jetzt nahtlos mit den

Jochen

News einsteigen.

Jochen

Perfekte Struktur. Sehr gut, sehr gut.

Jochen

Ich konnte nicht so viel sammeln,

Jochen

weil ich momentan total im Stress bin.

Jochen

Also ich bin im Privatstress.

Dominik

Dann erzählen wir doch ganz kurz nochmal vielleicht über das Barcamp. Also das ist jetzt

Dominik

vielleicht nicht so interessant für alle Peißenleute, aber für alle Leute, die

Dominik

Podcasts mögen schon. Es gab da nämlich

Dominik

eine tolle Veranstaltung, wo man Barcamps kennt ja vielleicht,

Dominik

aus dem Softwareumfeld, wo man ganz viele nette

Dominik

Podcastmenschen kennengelernt hat. Ich möchte nochmal

Dominik

Danke sagen für die tollen Kontakte, die ich da getroffen

Dominik

und kennengelernt haben durfte.

Jochen

Ja, Grüße an

Jochen

an hier Working Draft zum Beispiel

Jochen

auch ein Podcast aus

Dominik

nicht nur Düsseldorf. Ich habe auch gehört, also gute Tipps waren

Dominik

wir sollten mal wieder mehr zusammen

Dominik

eine Episode aufnehmen. Ja, ich habe gehört.

Dominik

Das wäre doch mal wieder eine Idee. Und

Jochen

wir haben auch schon konkret geplant, was zusammen mit

Jochen

wo wir sind, ist vorne zu machen.

Jochen

Die kennen wir

Jochen

auch gut und treffen uns immer wieder

Jochen

auf allen möglichen Konferenzen und

Jochen

so, aber

Jochen

genau, ist bisher noch

Jochen

nicht so richtig zustande gekommen, aber wir sind

Jochen

auf jeden Fall da auch noch dran.

Jochen

Das war so ein Tipp. Besucht euch

Jochen

auch einfach gegenseitig. Auch ein guter Tipp

Jochen

war halt, schaut nicht

Jochen

nur nach so totalen Berühmtheiten

Jochen

oder so, auch wenn das

Jochen

auf dem Papier oder so erstmal, wenn man drüber nachdenkt,

Jochen

gut aussieht.

Jochen

Ich wollte immer schon mal Guido haben.

Jochen

Das ist halt mit Englisch vielleicht ein Problem.

Jochen

Mit Sarah war das jetzt mal eine Ausnahme.

Jochen

Aber da gibt es

Jochen

ja schon Leute.

Jochen

In der deutschsprachigen Welt gibt es Paltenmenschen.

Jochen

Genau.

Jochen

es gibt eigentlich auch genug.

Jochen

Du sprichst immerhin schon Dutch.

Jochen

Aber das Problem ist halt

Jochen

bei Leuten, die zu

Jochen

bekannt sind, auch, dass man die dann halt

Jochen

oft schon gehört hat.

Jochen

Ich weiß nicht,

Jochen

das ist ja jeder Podcast mit Guido.

Jochen

Ja, genau.

Dominik

Es gibt doch jetzt demnächst

Dominik

ein toller Python,

Dominik

den Film.

Jochen

Ja, es gibt im Sommer, soll jetzt rauskommen, ich weiß gar nicht genau wann.

Jochen

Genau, da gab es einen Trailer, habe ich gesehen.

Jochen

Nix on the Plane?

Jochen

Äh, nee.

Jochen

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

Jochen

Ja, das war ein Python-Film.

Jochen

Nee, das ist so ein...

Jochen

Python D-Story, irgendwie, ich weiß es nicht, hab ich vergessen.

Jochen

Irgendwelche Leute machen das immer

Jochen

und über Even You haben sie zum Beispiel

Jochen

ein Ding gemacht, das war ziemlich gut, das hab ich gesehen.

Jochen

Und über andere Leute...

Dominik

Der Typ wird VJS und

Dominik

jetzt Rolldown, hab ich gelesen.

Dominik

Und genau,

Dominik

das gibt's jetzt auch über Python und

Dominik

soll wohl auch, also der Trailer

Jochen

sah auch gut aus und ja, wir wollen mal schauen, wie das so wird.

Jochen

Genau.

Jochen

Ja, genau, wir sind

Jochen

auf so ein Podcamp gegangen, so ein Barcamp

Jochen

Podcast und immer Konferenzen für mich

Jochen

besonders attraktiv, wenn ich halt

Jochen

irgendwie zu Fuß hinlaufen kann. Ich bin

Jochen

irgendwie bequem an der Stelle

Jochen

und das war halt hier in der Zentralbibliothek

Jochen

am Bahnhof in Düsseldorf,

Jochen

was auch so ein total cooles Ding

Jochen

ist irgendwie und weil

Jochen

man kann die ganzen Räumlichkeiten auch für alles mögliche verwenden,

Jochen

man muss es nur irgendwie anmelden. Und jedes Mal, wenn man

Dominik

vorbeilief und gerade auf dem Gang, wie man es bei so

Dominik

Konferenzen macht, kurze Gespräche, kam er vorbei mit

Dominik

Pssst.

Jochen

Ja, das soll aber eigentlich nicht so sein, weil

Jochen

eigentlich hat man dieses

Jochen

irgendwie, man muss halt leise sein

Jochen

in der Bibliothek, Konzept

Jochen

da nicht mehr. Es ist auch

Jochen

so, dass man da Essen mit reinnehmen darf und so

Jochen

und man sagt, also ich hab dann so

Jochen

eine Führung damit gemacht und die sagt, naja, nee, wir wollen

Jochen

das irgendwie anders machen und nicht mehr so wie früher

Jochen

und man kann da auch was essen und

Jochen

man kann da auch irgendwie ein bisschen

Jochen

lauter sein, das ist alles kein Problem.

Jochen

Und es gibt nicht nur Bücher, sondern es gibt auch so Laserentfernungsmesser und 3D-Drucker und VR-Brillen und ein Podcaststudio und ein Ding, wo man Super-8-Filme digitalisieren kann und auch alte Vias digitalisieren kann.

Jochen

Und ein Musikstudio,

Jochen

wo man leider aber nicht

Jochen

drin laut sein darf. Da darf man nur digitale

Jochen

Instrumente drin verwenden,

Jochen

weil daneben die juristische

Jochen

Fachbibliothek ist, wo die Leute dann

Jochen

lernen für Prüfungen. Und das hat sich dann herausgestellt,

Jochen

dass das eine ungünstige Kombination

Jochen

ist.

Jochen

Ich beklage dich gleich!

Jochen

Ja, gut, hätte man auch

Jochen

vorher drauf kommen können, aber das muss da wohl

Jochen

irgendwie erstmal eskalieren und jetzt darf man da nicht mehr singen.

Jochen

Eigentlich schade, naja.

Johannes

Ja, schade. Gibt es auch Backformen?

Johannes

Ich habe das einmal gesehen, das ist Bücherei

Jochen

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

Jochen

Da gibt es auch so Fußball-Backformen und so

Jochen

Zeugs. Ja, also wirklich

Jochen

Geburtstagskids für alle möglichen

Jochen

Geburtstagspartys und so.

Jochen

Also wirklich, wirklich. Und man kann

Jochen

da halt sich hinsetzen und arbeiten. Es sind 600

Jochen

Arbeitsplätze in dem Ding. Das ist halt auch irgendwie

Jochen

echt groß. Es ist zwei Fußballfelder groß.

Jochen

Und es gibt jede Menge Räume

Jochen

für alles mögliche. Und wie gesagt, man muss halt nur sagen, ich hätte

Jochen

gerne den Raum für den und den Zweck und dann

Jochen

überlegen die und dann sagen sie einem

Jochen

nee, du stinkst oder ja, kannst du haben.

Dominik

In der alten Zentralbibliothek,

Dominik

da war ich vielleicht zwölf oder sowas,

Dominik

da stand so ein Computer drin rum

Dominik

und der war halt ganz gemein

Dominik

gesichert, also dachten sie, und da

Dominik

konnte man so ein paar Sachen machen.

Dominik

Heimlich. Und dann Sachen ausprobieren

Dominik

und dann...

Dominik

Tja, das weiß ich,

Dominik

also da gibt es auch eine Menge...

Dominik

Ich bin nämlich nach der Schule früher immer in die Bibliothek gefahren.

Jochen

Ja, das habe ich auch, ich habe nicht nur nach der Schule

Jochen

oft. Aber ob ich da jetzt

Dominik

meine Kinder hinlassen würde, ich weiß es nicht so genau.

Dominik

Ja.

Dominik

Es ist, ja, egal.

Jochen

Aber, also, wie gesagt, ich wusste gar nicht, dass es so einen Ort gibt

Jochen

und dass man da so coole Sachen machen kann.

Jochen

Da gibt es auch Bücher über Peißen, Jochen.

Jochen

Ja, da gibt es Bücher.

Jochen

Ja, da werde ich mir nicht...

Jochen

Aber es gibt eine Fernleihe, über die man halt

Dominik

eine Menge kriegt. Darüber wollten wir gleich reden.

Jochen

Und die liefert

Jochen

dann halt auch an die nächstgelegene

Jochen

Bibliothek, also man kann das auch online machen

Jochen

und dann kann man die Sachen dann lokal

Jochen

abholen und bei uns ist die nächstgelegene

Jochen

Bibliothek irgendwie ein paar

Jochen

hundert Meter entfernt.

Dominik

Wir gehen auch mal zu unserer Stadtteilbibliothek.

Jochen

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

Jochen

Also ich war überrascht.

Jochen

Oder Tonis ausleihen.

Jochen

Das auch, ja.

Jochen

Ja, genau.

Jochen

Da hat das Ganze irgendwie stattgefunden.

Dominik

Wir haben ein paar tolle Tipps bekommen

Dominik

für Marketing und was man nicht alles machen soll.

Dominik

Wir machen jetzt ganz viel Marketing.

Dominik

Viel Spaß damit.

Jochen

Für uns bestimmt gut, für euch, ja,

Jochen

ihr müsst halt damit leben.

Jochen

Ja, nee. Wir haben

Dominik

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

Dominik

Genau, ob wir ein bisschen mehr Video machen.

Dominik

Also ich hab's schon länger überlegt, aber

Jochen

ja, das war so auch einer der Geschichten, wo

Jochen

Leute sagen, ja, das muss man im Grunde irgendwie,

Jochen

wenn man

Jochen

Social Media Presence Interaction

Jochen

muss das schon irgendwie machen.

Jochen

Ja, man gewinnt halt

Johannes

einen Hörerkreis auf YouTube, oder? Also

Johannes

die Leute, die YouTube gucken, die

Jochen

Ja, und gar nicht mal

Jochen

gar nicht mal unbedingt die Podcast-

Jochen

Episoden selber, aber dass man zumindest da ist

Jochen

und da gefunden wird, für die Leute, die halt

Jochen

nur auf YouTube sind und dann halt

Jochen

da einen Trailer hat, dass sie halt wissen, oh, es gibt

Jochen

den Podcast, ich muss da vielleicht irgendwie

Jochen

auf meinem Podcatcher der Wahl oder auf der Website gucken.

Dominik

Das ist halt total steil, Johannes.

Dominik

Und da stehen die Fans hinterher auch vor deiner Tür

Dominik

und klopfen heimlich.

Dominik

Die Groupies.

Dominik

Ja, also,

Dominik

oder was mich auch... So stelle ich es mir vor.

Jochen

Was ich auch total cool fand, war, wie Leute darüber gesprochen

Jochen

haben, wie sie halt ihre Workflows halt so ein bisschen

Jochen

automatisieren mit

Jochen

so diversen Tools und

Jochen

was man da alles machen kann an

Jochen

Automatisierung von irgendwie

Jochen

ja, was man, oder

Jochen

Oh, jetzt sind wir bei einer anderen geplanten Folge

Dominik

übrigens, aber nicht bei Podcasts, aber

Dominik

wir wollten auch bald nochmal wieder bei

Dominik

so Data Science-Kram reden und dann auch nochmal

Dominik

über

Dominik

die ganzen neuen KI-Sachen. Darf ich

Dominik

KI sagen? Ich weiß nicht. MCPs und so.

Dominik

Ja, ich glaube, man darf was schon sagen. KI, musst du sagen.

Dominik

KI, oh.

Dominik

Achso, Entschuldigung. Du hast eben

Dominik

so einen tollen Link geschickt, der dazu passt.

Dominik

Ja, ich habe auch tatsächlich noch News,

Dominik

weil es

Johannes

gibt eine interessante Veröffentlichung vom

Johannes

MIT Media Lab mit dem Titel

Johannes

Your Brain on Jet GPT, die gerade

Johannes

so ein bisschen durch die News

Johannes

gegangen ist, wo

Johannes

sie untersuchen, was das denn für

Johannes

Auswirkungen hat. Also ich meine, es ist natürlich sehr reißerisch

Johannes

und die Studie

Johannes

hat 54 Teilnehmer.

Johannes

Es ist jetzt kein repräsentativer

Johannes

Querschnitt durch die Gesellschaft.

Johannes

Aber

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 finde ich 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 es sich nicht von einem LLM vorkauen lässt.

Dominik

Ja gut, das ist ja keine Überraschung,

Dominik

dass wenn man das Wissen jetzt nicht selber erarbeitet hat,

Dominik

dass das dann flüchtig bleibt.

Johannes

Ja, aber auch Suchmaschine.

Johannes

Also auch wenn du normal bei Google oder bei irgendwas anderem eintippst

Johannes

und nicht diese KI, Kagi, ich benutze Kagi, benutzt.

Johannes

Wenn man nicht diese KI-Zusammenfassung benutzt,

Johannes

ist die Retention wohl deutlich besser.

Johannes

Und das Interessante ist eigentlich,

Dominik

dass diese Studie so durch die Neuigkeit geht.

Dominik

Ich habe es gerade nicht verstanden.

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.

Jochen

News, technology is bad for you.

Jochen

Genau, meckernder Rentner im Fenster mit dem Kissen und Kulturpessimismus kommt halt immer gut an.

Jochen

Das ist halt immer eine Schlagzeile. Ja, aber Jochen, wir sind jetzt

Johannes

langsam in so einem Alter. Ach so.

Johannes

Genau, und hast du gesehen,

Dominik

zwei Straßen weit haben sie die

Dominik

Straße gelb gestrichen.

Dominik

Das habe ich nicht gesehen.

Johannes

Unglaublich. Also was die jungen Leute heute

Johannes

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,

Dominik

die dann angerückt sind und alles verschönern wollten.

Dominik

Da haben sie alles mit einer stinkenden Farbe angestrichen

Dominik

und dann hinterher wollten sie einen Garten da drauf machen, ja.

Dominik

Also der Dominik ist auch

Dominik

in dem Alter, wie ihr hört.

Dominik

Genau.

Jochen

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.

Jochen

insofern. Ist es sicherlich nicht.

Johannes

Aber die Anzeichen

Johannes

davon, dass Leute auf diese Dinge

Johannes

vertrauen und dann

Johannes

auf solche Fakten reinfallen oder

Johannes

auf solche ausgedachten Sachen,

Johannes

dass Ungarn auch Holland genannt wird.

Johannes

Dieses Vertrauen ist da halt schon sehr groß.

Johannes

Ich habe heute zweimal gehört, ich habe

Dominik

Chat-Spotty gefragt, mir dann meine Schule ausgesucht

Dominik

und ja, das wird da als

Dominik

Suchersatz benutzt. Also ganz klassisch

Johannes

so. Ja, finde ich ganz toll. Also da bin ich zu

Johannes

alt dafür. Das finde ich ganz komisch.

Johannes

Ja, also Leute denken,

Dominik

das ist aber auch komisch, dass es nicht direkt die Wahrheit

Dominik

gesagt hat oder dass man da ja so ein paar

Dominik

Informationen hatte, die man so mal kurz überprüfen musste.

Dominik

Gut, das mit der Medienkompetenz ist

Jochen

halt ein Problem, aber das war auch schon immer ein Problem.

Jochen

Ich meine, ich erinnere mich noch, als Internet und Google

Jochen

neu waren. Hast du nicht dem Marksteiger geglaubt,

Jochen

dass er gerufen hat? Oder das Fernsehen, genau.

Jochen

Als das Fernsehen neu war, auch

Jochen

als das Radio neu war, irgendwie

Jochen

War of the Worlds,

Jochen

war auch ein großes Medienkompetenz. Damals, als man

Dominik

den Propheten noch wirklich glauben konnte.

Dominik

Ja,

Dominik

also es ist ein

Dominik

wiederkehrendes Muster.

Jochen

Bei Plato gibt es das schon, der wettert

Jochen

gegen die Schrift. Und der Schaffal der Jugend, sowieso.

Jochen

Ja, also

Jochen

ich würde mal einfach sagen,

Jochen

wenn man kann, so, Plato

Jochen

hat nicht recht gehabt.

Jochen

Und das mit der Schrift war schon Fortschritt.

Johannes

Und das wird ihn jetzt aber ganz schön atzen.

Jochen

Ja, aber ich glaube, du bist ein Fan,

Jochen

Jochen. Ja, auf der anderen

Jochen

Seite natürlich schon, bin auch irgendwo

Jochen

ein Plato-Fanboy, das ist richtig, ja.

Dominik

Ja, das können wir in der MCP-Folge noch mal

Jochen

genauer auslassen. Ja, wobei, du hattest ja ein Hashtag

Jochen

Mathematik, da habe ich einen Haken, um da mich rein...

Jochen

Ich habe jetzt eine Podcast-Episode gehört

Jochen

mit Terence Howe.

Jochen

Ja, der jetzt auch anfängt.

Jochen

Oder der jetzt auch viele Dinge

Jochen

macht. Ja, ja, der macht vor allen Dingen viel

Jochen

mit Lean, also sozusagen

Jochen

eine Programmiersprache, mit der kann man...

Jochen

Also schreibt man halt nicht Code, sondern quasi

Jochen

Mathe und... Ja, man schreibt schon

Johannes

Code, aber hinterher sagt er einem dann das.

Jochen

Genau, kann der Compiler, der Compiler zählt nicht zu den beiden Readers,

Jochen

sondern der gibt einem ein Zertifikat,

Jochen

dass das, was man halt hingeschrieben hat,

Jochen

folgerichtig war.

Jochen

Und wenn das ein Beweis war,

Jochen

dann ist es halt dann bewiesen.

Jochen

Genau.

Jochen

Und das macht es halt auch zugänglicher.

Jochen

Das macht es halt auch möglich,

Jochen

dass mehrere Leute miteinander irgendwie kollaborieren,

Jochen

weil das Problem an der bisherigen Mathe-Notation,

Jochen

auch die ist natürlich ein Riesenfortschritt

Jochen

gegenüber früher,

Jochen

aber die ist halt so,

Jochen

wenn man jetzt so ein aktuelles Mathe-Paper nimmt

Jochen

und schlägt Seite 15 auf,

Jochen

dann kann einem niemand sagen,

Jochen

was da steht, ohne die 15 Seiten

Jochen

vorher gelesen zu haben. Und das ist super

Jochen

anstrengend. Und deswegen macht das keiner und

Jochen

dann kann man nicht so gut zusammenarbeiten, sondern muss jeder

Jochen

für sich das irgendwie, und das limitiert

Jochen

natürlich die

Jochen

Menge an Dingen, die man

Jochen

irgendwie tun kann. Und jetzt können halt auch

Jochen

irgendwie Nicht-Profis quasi

Jochen

da Pull-Requests gegen

Jochen

lange Beweise stellen und man kann

Jochen

halt automatisch checken, ob das halt so halbwegs stimmt, was

Jochen

die geschrieben haben oder nicht. Und dann

Jochen

genau. Das machen sie auch schon.

Jochen

Die haben da ein total cooles Projekt,

Jochen

wo es darum geht, quasi

Jochen

nicht neue Sachen zu beweisen

Jochen

oder so, sondern die gesamte

Jochen

mathematische Theorie, die es so gibt

Jochen

und alle Lemmas, die man halt so hat,

Jochen

die alle mal

Jochen

formal mit Linen durchzubeweisen

Jochen

und das dann halt in der Datenbank zu haben,

Jochen

sodass man halt später sagen kann, okay.

Jochen

Im Endeffekt halt Mathematik, oder?

Johannes

Also das, was es gibt so an Mathematik

Johannes

einmal komplett

Jochen

durchformalisiert zu haben

Jochen

und dass man es halt auch noch suchen kann, dass man mal sagen kann,

Jochen

okay, ich habe jetzt dieses Problem, welche

Jochen

Lemmas könnten mir da helfen oder welche Tricks

Jochen

gibt es, siehst du denn in den Dingen, die

Jochen

alle bewiesen sind, die man jetzt verwenden könnte und dann

Jochen

kann einem auch ein LLM da vielleicht helfen.

Jochen

Ja, also fand ich

Dominik

auf jeden Fall. Ja, gewusst wie, aber man muss ja eigentlich

Dominik

on top von den Dingen stehen oder nicht

Dominik

nach neuer Information suchen,

Dominik

sondern auch was man selber quasi auch schon

Dominik

rausputzen könnte und das geht dann halt schneller.

Dominik

Ja.

Dominik

So ein bisschen anders, glaube ich, als wenn man

Dominik

sich davon erstmal die Welt erklären lässt.

Dominik

Ja, aber

Jochen

es ist auf jeden Fall, Mathematik ändert sich auch

Jochen

noch immer und mehr Leute

Jochen

können an Dingen, die hatten dann jetzt auch so

Jochen

ein Paper dazu und da waren halt dann

Jochen

50 Autoren drauf oder so und das

Jochen

Wo ist so ein Paper? Das gab es ja

Jochen

sonst so in der Physik mit tausend Autoren

Jochen

und in der Mathematik eigentlich nicht.

Jochen

Ja, ist spannend.

Jochen

Kennt ihr das Chicken Paper?

Jochen

Nee, was ist das?

Jochen

Chicken, Chicken, Chicken, Chicken, Duck Tonka.

Jochen

Also es gab jemand, der hat es tatsächlich geschafft,

Dominik

ein Paper zu veröffentlichen, weil das

Dominik

alles Standards erfüllt, formalen Standards.

Dominik

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

Dominik

so ein... Das ist ein offiziell

Dominik

peer-reviewtes Paper.

Dominik

Da kommen ziemlich viele

Dominik

Hühner drin vor. Ja, genau.

Dominik

Eigentlich nur Hühner.

Dominik

Ja, alles Ding.

Dominik

Ist auf jeden Fall

Dominik

eine sehr spitze Zielgruppe.

Dominik

Genau, also was

Jochen

der, also ich würde ja sagen,

Jochen

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 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

Jochen

experimentelle Mathematik machen, wo man einfach irgendwie

Jochen

zufällig Beweise generiert

Jochen

und dann überprüft mit einem Ding, das halt

Jochen

nicht alle checken kann, aber

Jochen

checkt, ob da irgendwas interessant, äh, ob das

Jochen

wahr ist erstmal, ob das richtig ist und dann,

Jochen

ob irgendwas Interessantes dabei rausgekommen ist und dann manchmal

Jochen

fällt da irgendwas Interessantes dabei raus und dann

Jochen

wie kann man das über so einen Prozess

Jochen

erfunden haben, sondern das muss man

Jochen

halt eher entdeckt haben und auch so andere Dinge

Jochen

wie, weiß ich nicht, dass es Kreise gibt oder

Jochen

Dreiecke oder so, da hat man so intuitiv

Jochen

das Gefühl, naja, die gibt's schon irgendwie,

Jochen

da draußen und die kann man eher entdecken,

Jochen

dass das halt 180 Grad sind in der Winkelsumme

Jochen

und das kann man nicht erfinden oder

Jochen

das ist halt einfach so und

Jochen

deswegen dachte ich immer so, ja, also

Jochen

quasi so

Jochen

mathematischer

Jochen

Platonismus ist eigentlich schon so die richtige Geschichte

Jochen

und dann, genau, Intuitionisten seit

Jochen

Anfang des 20. Jahrhunderts sagen so, nee, nee, das kann man

Jochen

vielleicht alles nicht so machen und das ist doch eher vielleicht eine Erfindung.

Jochen

Das habe ich eher so für Quatsch gehalten

Jochen

und der hatte jetzt aber ein super

Jochen

Argument für den

Jochen

mathematischen Intuitionismus und zwar

Jochen

Wie war denn das noch?

Jochen

Jetzt musst du das auch richtig zusammenkriegen.

Jochen

Jetzt muss ich es zusammenkriegen, verdammt.

Jochen

Mathematik war besonders

Jochen

einfach.

Jochen

Genau, achso, ja richtig,

Jochen

das ging ungefähr so, der sagte halt,

Jochen

naja, also es gibt ja so Zahlen wie Pi, wir hatten es glaube ich auch

Jochen

mal im Podcast schon mal irgendwann davor, als wir

Jochen

über Pi geredet haben, naja, das ist halt

Jochen

völlig unklar, zum Beispiel, also

Jochen

es ist Pi, die Dezimalbruchentwicklung

Jochen

von Pi besteht jeden Test für

Jochen

Zufälligkeit.

Jochen

und ja, aber niemand weiß, ob

Jochen

wirklich zufällig ist oder nicht, oder ob nicht doch irgendeine

Jochen

Conspiracy da drin,

Jochen

Verschwörung ist, die halt

Jochen

doch nicht zufällig sein lässt

Jochen

oder so, das weiß halt keiner und man hat auch keine Idee,

Jochen

wenn man das rauskriegen kann. Aber er sagt,

Jochen

eigentlich ist es ja ganz einfach, also natürlich

Jochen

wahrscheinlich, was man erwarten würde, ist, dass es

Jochen

zufällig ist, weil

Jochen

man kann relativ einfach

Jochen

beweisen, dass

Jochen

quasi die allermeisten realen Zahlen

Jochen

zufällig sein müssen,

Jochen

sonst wäre einfach nicht genug Platz.

Jochen

Wenn da irgendwelche Muster wären,

Jochen

dann könnte man das irgendwie

Jochen

diagonalisieren oder so.

Jochen

Das darf nicht gehen. Die allermeisten müssen

Jochen

zufällig sein. Aber das ist was ganz Schlimmes.

Jochen

Das ist ein ganz schlimmes Argument, Jochen, weil

Johannes

jetzt kommst du

Johannes

auf einen ganz schlimmen Punkt in der Mathematik.

Johannes

Die allermeisten reellen Zahlen

Johannes

können wir nicht erfassen.

Johannes

Die können wir nicht sehen.

Johannes

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

Johannes

doofe, das sind so

Johannes

völlig doofe Zahlen wie Pi. Und das sind

Johannes

die allermeisten und wir kennen vielleicht

Johannes

drei davon.

Johannes

Aber es sind die allermeisten.

Johannes

Ja, und das finde ich

Johannes

sehr unangenehm. Genau.

Jochen

Und Vorstellung. Da gibt es ja dann dieses

Jochen

Bild von den, das hat ja bestimmt auch schon jeder mal gehört,

Jochen

von den, diese

Jochen

Infinite Monkeys, so relativ viele Affen,

Jochen

wenn die nur lange genug irgendwie auf ihre

Jochen

Schreibmaschinen eindreschen, dann

Jochen

kommt dabei auch mal Shakespeare raus oder so.

Jochen

Jede von diesen Zahlen muss alle Werke von

Jochen

Shakespeare in der richtigen Reihenfolge

Jochen

und so enthalten werden. Alle urheberrechtlich geschützt.

Jochen

Wenn die echt zufällig sind.

Jochen

Das kann nicht anders sein. Das muss so sein.

Jochen

Und jetzt ist halt natürlich die Frage so,

Jochen

okay, also wenn jede einzelne von diesen blöden Zahlen

Jochen

im Grunde das ganze Universum irgendwie enthält,

Jochen

weil, naja, also egal, wie man das Universum beschreibt,

Jochen

diese Beschreibung muss da auch drin vorkommen irgendwo.

Jochen

Wie kann das denn sein, dass das schon vorher existiert da draußen

Jochen

und wir es nur entdecken?

Jochen

Oder ist es dann nicht so, dass man, ja,

Jochen

wenn man das jetzt erzeugen wollte, zum Beispiel über die...

Johannes

Ja gut, aber das geht ja weg, Johan.

Johannes

Da musst du nur sagen, das Universum ist quantifiziert

Johannes

und schon existieren diese Zahlen nicht mehr.

Johannes

Ja, aber das, gut, okay,

Jochen

Universum, sehr weit gefasst jetzt nicht

Jochen

als physikalisches Universum,

Jochen

Mathematisches Universum eingeschlossen,

Jochen

wo alle mathematischen Objekte auch drin sind,

Jochen

inklusive Pi und so.

Jochen

Aber jetzt ist es doch jetzt zirkulär.

Jochen

Zirkulär?

Jochen

Aber jetzt ist es zirkulär.

Jochen

Ja.

Johannes

Du sagst, es existiert, weil wir annehmen,

Johannes

dass das Universum, in dem wir drin sind,

Johannes

das Universum ist, in dem die existieren.

Johannes

Nee, nee, ich würde sagen,

Jochen

ich meine jetzt nicht das physikalische Universum,

Jochen

sondern ganz weit gefasst,

Jochen

Also auch

Jochen

die Welt, in der halt auch

Jochen

mathematische Objekte existieren,

Jochen

da ist halt alle, also als Platoniker würde ich

Jochen

davon ausgehen, eben sowas wie Pi, das existiert

Jochen

da draußen halt nicht in unserem

Jochen

Universum natürlich, im physikalischen

Jochen

Sinne, sondern quasi

Jochen

als Konzept, als Idee. Ja, in einem

Jochen

anderen Universum, wenn es ein anderes gibt, müssen

Jochen

sie auch auf diese Idee kommen, weil

Jochen

diese Idee existiert halt unabhängig davon.

Jochen

Und ich kann auch nicht getäuscht sein, wenn man

Johannes

da sitzt oder so. Ich finde, da gibt es eine Grenze,

Johannes

Jochen. Ich verstehe, worauf

Johannes

du raus willst, dass das sozusagen was Universales ist.

Johannes

Egal, welches Universum du dir vorstellst, die

Johannes

Kreiskonstante ist immer so.

Dominik

Überall gibt es sowas wie Gravitation.

Johannes

Brauchst du nicht mal. Du brauchst nicht mal die Gravitation.

Johannes

Du brauchst nur Mathematik. In jedem Universum,

Johannes

das Mathematik enthält, gibt es die Kreiskonstante

Johannes

und die ist immer gleich. Ist aber Mathematik

Johannes

keine Gravitation? Weil Geometrie immer gleich ist.

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

Johannes

offensichtlich von Menschen ausgedacht.

Johannes

Ja, klar. In der Mathematik.

Johannes

Ach so, okay. Die gibt es nur,

Johannes

weil wir so denken.

Dominik

Da kannst du einfach fliegen gehen.

Johannes

Und die Frage ist, wo ist die Grenze?

Johannes

Wo sind die Sachen von Gott

Johannes

gegeben, wie man so sagt? Dieses Zitat,

Johannes

die natürlichen Zahlen

Johannes

sind von Gott gegeben.

Johannes

Menschenwerke, ja.

Johannes

Aber da gibt es eine Grenze.

Johannes

Sind die komplexen Zahlen, sind die schon ausgedacht?

Johannes

Ja, ne.

Johannes

Die haben ja schon eine Entsprechung in anderen Dingen

Johannes

drin und die findest du überall in der Physik und so weiter.

Johannes

Aber dann gehst du

Johannes

weiter, sind, keine Ahnung, ist die Monstergruppe

Johannes

ausgedacht oder nicht?

Johannes

Wobei die Monstergruppe

Johannes

ein schlechtes Beispiel ist.

Dominik

Jetzt musst du kurz erklären, was denn die Monstergruppe ist, also wenn du nicht uns drei

Dominik

meinst.

Johannes

Es gibt so eine Klassifizierung von Gruppen

Johannes

und in vielen Bereichen

Johannes

der Mathematik ist es so, dass du fünf

Johannes

sehr schöne Beispiele findest.

Johannes

Da gibt es die natürlichen

Johannes

Zahlen und die

Johannes

ganzen Zahlen und dann

Johannes

die könntest du so erweitern und

Johannes

da gibt es irgendwie fünf verschiedene Kategorien und dann gibt es

Johannes

noch drei zusätzliche,

Johannes

die einzeln sind und die eine hat

Johannes

fünf Elemente und die andere hat sieben Elemente und dann

Johannes

gibt es noch die Monstergruppe, die hat 880.973

Johannes

verschiedene Elemente.

Johannes

Irgendwie so komische Zahlen.

Johannes

Und weil die da so rausfällt, aus dieser

Johannes

schönen Klassifizierung, hast du einen schönen

Johannes

Setzkasten mit den ganzen ordentlichen Gruppen drin

Johannes

und dann hast du drei so komische dazwischen

Johannes

und dann hast du da noch die riesige Monstergruppe

Johannes

daneben. Hat die den Namen Monstergruppe.

Johannes

Okay.

Johannes

Das ist ein schlechtes Beispiel, weil die fällt halt aus diesen Klassifizierungen raus. Aber ganz viele von diesen Dingen, finde ich, sind schon eindeutig ausgedacht. Die sind so, weil wir die Definitionen so gewählt haben und daraus fallen die Sachen raus. Aber ja, das ist eine schwierige Frage.

Jochen

Ja, aber ich würde auch eben, wenn man sagt, man kommt ja an die Dinger nicht dran, wenn man es jetzt ausrechnet, dann fallen da zwar diese langen Zahlen raus, aber da braucht man Energie und Energie hat man aber nicht unendlich viel, das heißt, also Shakespeare's Werk hat rauszukriegen, wird schwierig, da braucht man irgendwie nahezu unendlich viel Energie, das heißt, man könnte ja sagen, okay, vielleicht existieren die…

Jochen

In unserem physikalischen Universum.

Jochen

Ja, genau. Ja, aber ich finde das halt schon irgendwie, damit könnte man schon was sagen, 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, also wenn ich das sozusagen in unsere Existenz holen will, dann muss ich halt irgendwie, dann bin ich plötzlich, unterliege ich wieder all diesen Beschränkungen und dann ist es doch wieder mehr erfunden, weil ja, was.

Jochen

Zeit vielleicht?

Jochen

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

Dominik

Aber wenn das mit Zeit nützen kann,

Dominik

könnte das ja vielleicht gehen, weil in der Zeit könnte es ja noch eine andere

Dominik

Dimension versteckt haben, die dann

Dominik

nicht nur linear in der Architektur geht.

Johannes

Ja, aber das bringt nichts, weil das ist ja nicht unendlich.

Johannes

Stipsen und dann...

Jochen

Ich würde ja sagen, das ist ja im Grunde das Gleiche, ob das jetzt Zeit

Jochen

oder Energie, das kannst du ja

Jochen

gegeneinander

Jochen

aufrechnen.

Dominik

Vielleicht eine Abkürzung, so eine Meta-Abkürzung.

Dominik

Ja, keine Ahnung.

Jochen

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

Jochen

Keine Ahnung, das waren so meine Gedanken.

Jochen

Ja, vielleicht finden wir ja einen

Jochen

Mathematiker, der

Jochen

was weiß.

Jochen

Ja, das ist auch

Jochen

vielleicht eher in der Mathematik esoterisch.

Jochen

Ja,

Johannes

nee, aber solche Diskussionen sind in der Mathematik

Johannes

schon,

Johannes

die kommen immer wieder, gerade in den

Johannes

früheren Semestern. Sobald man mal ins

Johannes

Grundstudium abgeschlossen

Johannes

hat, dann, ja,

Johannes

hat man es akzeptiert. Das ist

Johannes

die Mathematik, die gibt es halt.

Johannes

Und da gibt es auch nicht alles. Ich hatte mal eine sehr lange

Johannes

Diskussion mit einem, der

Johannes

ein Student von mir,

Johannes

den ich tutoriert habe, der offensichtlich

Johannes

auch schon

Johannes

einen Hang zur Esoterik hatte

Johannes

und der dann gesagt hat, ja, aber du musst

Johannes

alles untersuchen. Warum

Johannes

untersuchst du das hier nicht? Und dann habe ich ihm bewiesen,

Johannes

wenn ich das untersuche oder wenn ich diese Annahme

Johannes

treffe, dann führt das zu Paradoxa.

Johannes

Dann falle ich direkt raus, brauche ich gar nicht

Johannes

weitermachen. Das hat er aber nicht akzeptiert, sondern

Johannes

er wollte mir dann versuchen zu erklären,

Johannes

dass das aber eine Sinneserfahrung

Johannes

ist und du musst alle Sinneserfahrungen

Johannes

versuchen, als Wissenschaftler

Johannes

musst du alles akzeptieren.

Johannes

Das ist aber nicht so, sondern

Johannes

als Mathematiker geht man da pragmatischer vor

Johannes

und sagt, ja, aber da brauche ich nicht

Johannes

weitermachen, weil das bringt mir nichts.

Dominik

Du bist ja eigentlich nur Statistiker, du hast ja so eine Approximation gemacht

Dominik

von dem, was du glaubst, was dabei rauskommt und dann doch

Dominik

dich auf deine eigene Sinneserfahrung verlassen,

Dominik

die irgendwie da so ein bisschen

Dominik

in die Glocke, in die Mitte gesetzt wird.

Dominik

Ja, Mathematik und Sinneserfahrung.

Johannes

Ja, das hat keine riesige

Johannes

Überschneidungsmenge.

Jochen

Genau, der Versuch quasi von den Sinneserfahrungen

Jochen

zu abstrahieren.

Jochen

Mit den eigenen Sinnen.

Jochen

Was natürlich schwierig ist, klar.

Jochen

Ja, sagen wir mal zu den

Johannes

praktischen Dingen.

Johannes

Ich habe auch ein News-Ding.

Johannes

Ja, genau.

Jochen

Jetzt können wir das sagen, jetzt haben wir die ganzen

Jochen

Leute vergrault irgendwie mit

Jochen

unseren letzten

Jochen

drei Zuhörern.

Jochen

Trauen wir das jetzt auch noch zu?

Dominik

Du wolltest doch nicht irgendwas sagen, du hast

Dominik

ein Learnings vom Barcamp, was man nicht machen soll.

Dominik

Achso, jetzt ist der Film wieder eingeweiht.

Dominik

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.

Jochen

Machen wir nicht?

Jochen

Nein.

Jochen

Ey!

Jochen

Wir machen eine eigene Folge zu MCP.

Jochen

Wir machen eine eigene Folge zu MCP?

Jochen

Ja.

Jochen

Okay, na gut.

Johannes

Also ich finde ja, MCP ist das Master Control Program.

Johannes

Genau, das fand ich auch.

Jochen

Ich habe da Vortragsvorteile.

Johannes

Oder Metoclub Ramit, je nachdem, wie man möchte.

Jochen

Na gut, dann machen wir das heute eben nicht.

Jochen

Aber das müssen wir echt dann bald machen,

Jochen

sonst weiß ich das alles nicht mehr, ich weiß das jetzt gerade.

Jochen

Mit dem Jochen unter den Nägeln.

Jochen

Ja, Mathematical Compute.

Johannes

Liebe Hörer, schreibt uns an hello

Johannes

at python-podcast.de, ob ihr

Johannes

diese Folge dringend hören wollt oder nicht.

Johannes

Ja, okay.

Johannes

Meinst du, jetzt hört noch jemand zu?

Jochen

Aber das News-Item wäre an der Stelle irgendwie

Jochen

hier, Ex-CTO von OpenAI

Jochen

hat irgendwie von einem Venture Capital

Jochen

Fonds irgendwie zwei Milliarden gekriegt,

Jochen

ohne irgendwas, bei einer Validierung von

Jochen

zehn Milliarden oder so.

Jochen

Also der ursprüngliche Entwickler von ChatGPG ist halt auch dabei,

Jochen

John Schulmann und ein paar andere Größen.

Jochen

Also ich meine, die ganzen ursprünglichen Leute

Jochen

sind ja alle nicht mehr bei OpenAI.

Jochen

Und na ja, also das ist halt völlig irre.

Jochen

Die haben kein Produkt, nichts und kriegen halt so viel Geld.

Jochen

Das ist echt Wahnsinn.

Jochen

Aber wenn man sich für MCP interessiert,

Jochen

der aktuell beste Podcast, den man hören kann,

Jochen

eine Podcast-Episode, ist tatsächlich irgendwie von einem Partner

Jochen

auch von diesem Venture Capital Fonds

Jochen

von einer Partnerin

Jochen

mit Interview mit

Jochen

David Soria Parra

Jochen

oder ich weiß gar nicht, wie man das ausspricht.

Jochen

Einer der beiden ist, die sich das

Jochen

ausgedacht haben und das ist irgendwie echt ganz nett.

Jochen

Ja, also

Jochen

aber dieser ganze Bereich ist momentan völlig

Jochen

irre. Das erinnert mich echt sehr stark

Jochen

an diese ganze DotCamp

Jochen

Bubble Ende der 90er

Jochen

und es ist irre.

Jochen

Ja, naja.

Jochen

Genau.

Jochen

Aber dann machen wir das nochmal in einer anderen Episode.

Jochen

Okay.

Dominik

Ja, dann ist es endgültig

Dominik

Zeit für den

Dominik

Unfucked.ai.

Dominik

Jetzt kommt aber ein radikaler Wechsel. Achtung, jetzt kommt ein radikaler Bruch.

Dominik

Data Class Builders.

Dominik

Ah, okay.

Dominik

Weil wir ja bei Unfucked.ai sind, das wollte ich noch einmal kurz

Dominik

erwähnt haben, das hat Johannes eben geschickt.

Dominik

Das war schön.

Dominik

Link in den Show Notes.

Dominik

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

Dominik

Wichtig.

Dominik

Alles klar.

Johannes

Ja, Kapitel 5 ist ein etwas kürzeres Kapitel

Johannes

und ich fand es sehr gemischt beim Lesen.

Johannes

Ich fand, es ist so ein bisschen, es meandert so ein bisschen

Johannes

und bringt dann so ein paar Themen einfach noch so mit rein.

Dominik

Sollen wir erst über das Ende reden, warum das ein Kurzmeld ist

Dominik

oder warum das keiner ist?

Dominik

Ja, ich stimme dem überhaupt gar nicht zu.

Dominik

Was ist denn das Argument?

Dominik

Warum sollte das denn ein Kurzmeld sein?

Johannes

Sag du doch mal, Dominik, du findest, das ist ein Kurzmeld.

Johannes

Das habe ich nicht gesagt.

Dominik

Also vielleicht geht es erstmal um, was es im Kapitel

Dominik

geht. Es geht darum, wie man

Dominik

Datenobjekte

Dominik

einfach,

Dominik

welche Instanz hier ist vielleicht falsch,

Dominik

deklariert.

Dominik

Also mit Data Class oder Named Tuple.

Johannes

Eine Klasse, die nur Daten hält und keine Funktionen hat.

Johannes

Wie so ein Named Tuple?

Johannes

Ja, zum Beispiel. Das ist eine, also gleich auf der

Johannes

ersten Seite sind drei Mechanismen

Dominik

genannt. Oder auch wie ein TypeDict Johannes.

Dominik

Named Tuple. Ne,

Johannes

das nicht. Kommt direkt auf der zweiten

Johannes

Seite, steht direkt drauf, das nicht.

Johannes

Also es gibt Collections.NameTupel, das ist schon lange in der Python-Schneider-Bibliothek seit 2.6, haben sicherlich viele schon mal gesehen, können wir gleich noch erklären, was das ist. Dann gibt es eine neue Variante davon, Typing.NameTupel und der heißeste Scheiß ist natürlich DataClasses.DataClass, ein Dekorator, der diese ganzen Sachen mitnehmen soll.

Johannes

Am Ende geht es immer darum, Klassen zu machen, die nur Attribute haben. Und im Endeffekt ist das auch alles nur so ein bisschen Zucker obendrauf gestreut, weil man könnte prinzipiell diese ganzen Sachen alle mit Dicks machen oder sogar mit Tuples, wenn man möchte. 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 lintet zum Beispiel

Dominik

vom Typing-Import-Name-Tupel

Dominik

und sagt, naja, es ist Collections-Name-Tupel, bitte.

Dominik

Darfst du nicht.

Dominik

Ja, sagen die das?

Johannes

Ich bin so ein bisschen, ich bin nicht

Johannes

ganz hundertprozentig mal einverstanden mit den

Johannes

Sachen, die Ruff sagt. Und ich habe heute auch einen Ruff-Cycle

Johannes

gefunden.

Johannes

Wo ich einen Hinweis

Johannes

gekriegt habe von Ruff, der gesagt hat,

Johannes

der Generator ist unwichtig,

Johannes

ist nicht wichtig, mach bitte eine Dict-Comprehension

Johannes

draus. Dann habe ich eine Dict-Comprehension draus gemacht.

Johannes

Dann hat er gesagt, ah, das ist eine unnütze Dict-Comprehension,

Johannes

mach bitte einen Dikt-Aufruf mit Generator drin draus.

Johannes

Sehr amüsiert.

Johannes

Wie man es macht, ist falsch.

Johannes

Ruff 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

Johannes

zwischen Named Tuple und Named Tuple,

Johannes

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,

Johannes

eine Klasse, die keine Funktionen hat,

Johannes

sondern nur Daten halten soll,

Johannes

kommt direkt in der Einleitung,

Johannes

sagen sie, ja, das ist eigentlich nicht so gut.

Johannes

Es wird an diesem Kapitel mehrmals darauf hingewiesen,

Johannes

dass namhafte Personen

Johannes

Data Classes durchaus als Code Smell sehen

Johannes

oder als Einstiegspunkt

Johannes

und als das ist noch nicht fertig ansehen.

Johannes

Und das Hauptargument, so wie ich es verstehe,

Johannes

ist, dass wenn du eine

Johannes

Data Class hast, dann bedeutet

Johannes

das, dass du eine Klasse hast, die

Johannes

nur Daten enthält und keine Funktionen hat.

Johannes

Und du musst ja aber trotzdem was

Johannes

mit den Daten machen.

Johannes

Und das bedeutet, dass die

Johannes

eigentlich schon Funktionen hat, nur dass die irgendwo

Johannes

anders drin stehen.

Johannes

Weil es nur

Johannes

ein Vehikel ist und das wäre blöd?

Johannes

Weil du

Johannes

mit Daten halt irgendwas machen musst.

Johannes

Und eigentlich bedeutet

Johannes

Data Class dann in dem Sinne,

Johannes

dass du deine Funktionen, die zu den Daten

Johannes

gehören sollten, irgendwo anders

Johannes

hinschiebst.

Johannes

Und dass du die irgendwo anders hast.

Johannes

Und ich stimme diesem

Johannes

Argument überhaupt gar nicht zu.

Johannes

Das hört sich

Johannes

für mich sehr nach, also

Johannes

ich meine diese Namen, die immer da

Johannes

gesagt bekommt, Martin, Fowler und Kent Beck,

Johannes

es hört sich für mich sehr nach

Johannes

Kingdom of the Nouns an, es hört sich für mich

Johannes

sehr nach Java an, es hört sich für mich sehr an nach

Johannes

der Code ist wichtiger als

Johannes

die Daten. Und das stimmt halt in

Johannes

ganz vielen Fällen nicht. In ganz vielen Fällen

Johannes

sind die Daten viel wichtiger als

Johannes

der Code. Was du da drin hast,

Johannes

welche Felder du hast, wie du drankommst,

Johannes

ist in ganz vielen

Johannes

Anwendungsfällen, zumindest in denen, die mir so

Johannes

begegnen, viel wichtiger als

Johannes

dann, dass die

Johannes

Funktion direkt dabei steht und dass

Johannes

du die direkt dazu packst.

Johannes

Das ist der eine Aspekt.

Johannes

Du gibst der Funktionalität

Johannes

mehr Gewicht als den Daten und das

Johannes

ist oft nicht der Fall.

Jochen

Da könnte man dann, mir fällt das Zitat

Jochen

jetzt nicht ein, aber da gibt es eines von

Jochen

Linus Torvalds, wo er sagt, naja, das ist halt

Jochen

quasi oft ein Fehler von Leuten,

Jochen

die quasi das Licht noch nicht so

Jochen

richtig gesehen haben, dass sie halt Wert auf

Jochen

Algorithmen oder sozusagen

Jochen

auf Dinge legen und wenn man dann mal

Jochen

irgendwann später da so weiß, was man tut,

Jochen

dann guckt man sich eher so die Datenstrukturen

Jochen

an und wie die eigentlich aussehen sollen

Jochen

und dann ist das mit der

Jochen

Funktionalität

Jochen

ist dann ganz klar und einfach,

Jochen

hoffentlich.

Jochen

Und ja, aber ich würde

Jochen

auch denken, dass, genau, also für mich erinnert

Jochen

das auch total an irgendwie

Jochen

objektorientierte Programmierung Ende der 90er

Jochen

ist halt irgendwie das Heilmittel für alles

Jochen

und

Jochen

aber inzwischen wird man ja sagen so,

Jochen

naja, das aktuelle Heilmittel für alles ist halt

Jochen

Domain Driven Design und

Jochen

aus der Perspektive

Jochen

ist es halt, gibt es halt zwei unterschiedliche

Jochen

Arten von Dingen, für die man halt

Jochen

Klassen hat und das ist halt, eine sind halt

Jochen

Entities, also Dinge, die

Jochen

halt irgendwie eine Identität haben,

Jochen

die halt wichtig ist. Und das andere

Jochen

sind halt so Value Objects und

Jochen

bei denen ist es halt wurscht.

Jochen

Also sowas wie zum Beispiel ein Objekt,

Jochen

das halt einen Geldbetrag repräsentiert

Jochen

und das Wichtige ist halt der Wert von dem Geld

Jochen

und aber nicht, welchen Geldschein man

Jochen

hat, das ist völlig egal. Und für

Jochen

solche Value Objects sind halt Data Classes halt auch

Jochen

total super, weil

Jochen

genau, aber

Jochen

wenn es halt State hat und

Jochen

dann braucht man halt natürlich vielleicht schon Methoden

Jochen

und so. Also ich würde auch denken, also das

Jochen

ist differenzierter, ja.

Jochen

Es gibt noch einen zweiten

Jochen

Aspekt, der mir

Jochen

da fehlt in

Jochen

dieser Argumentation.

Johannes

Der geht so ein bisschen in das, was du eben gesagt hast, die Leute, die

Johannes

sich noch nicht gesehen haben.

Johannes

Wenn man über Klassen

Johannes

nachdenkt und

Johannes

die sieht als

Johannes

eine Anzahl von

Johannes

Funktionen und ein paar Daten dazu,

Johannes

dann ist das ein anderer Blick auf das, was man tut.

Johannes

Es ist ein anderer Blick auf das Programm

Johannes

und was ein Programm kann.

Johannes

Und zwar ist es ein Blick auf einzelne Objekte.

Johannes

Weil wenn ich so eine Klasse schreibe,

Johannes

also in Python gibt es den Self-Parameter,

Johannes

in anderen Sprachen heißt der This-Parameter,

Johannes

dann gibt es immer ein Objekt, was irgendwie hervorgehoben ist.

Johannes

Das ist nämlich das Objekt, an dem ich gerade dran bin,

Johannes

in dem ich gerade drin bin.

Johannes

Wenn ich 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, sondern dann verändert sich mein Denken hinzu, 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? 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, was kann ich denn dann damit machen? Und diese Art zu denken oder auch diese Art zu modellieren ist in der klassischen OOP nicht naheliegend, weil im klassischen OOP denkt man eben oft über Einzelobjekte nach, weil du eben eine Klasse schreibst, die eine Instanz hat 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. Und 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

Johannes

Gefährliches zu sagen, meiner Meinung nach,

Johannes

dass das ein Codesmell ist, weil du

Johannes

nur diesen einen Blick auf Programmierung

Johannes

haben darfst.

Johannes

Und deshalb, ich bin

Johannes

da sehr skeptisch, wenn Leute sagen,

Johannes

Dataclasses, ja, das ist schon

Johannes

okay, aber hier,

Johannes

das fängt direkt an, Dataclasses are like

Johannes

children, they are okay as a starting point, but to

Johannes

participate as a grown-up object, they need to take some

Johannes

responsibility. Das heißt, die

Johannes

grob übersetzt, Datenklassen

Johannes

sind wie Kinder, das ist okay, wenn man

Johannes

damit anfängt, aber wenn man sie

Johannes

wie richtige Objekte verwenden will, dann müssen sie

Johannes

schon auch Funktionalität haben.

Johannes

Sehe ich gar nicht so und finde

Johannes

ich tatsächlich nicht gut,

Johannes

diesen Blick so zu haben.

Dominik

Aber vielleicht meint das so ein bisschen was wie,

Dominik

dann zu Pedantic überzugehen,

Dominik

was ja fast sowas ist wie eine Dataklasse,

Dominik

mit sowas wie

Dominik

Validierung dran dann noch

Dominik

oder so. Ja, aber auch

Johannes

das ist noch, Pedantic

Johannes

sind natürlich, ja, sind schon

Johannes

Dataklasses 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 aktueller, also das Buch ist ja relativ aktuell, aber gerade so der auf, sozusagen das, Pydentic, ja genau, beschränkt sich mehr so auf die Standard, aber wobei ja auch das Vorbild von Dataclasses in der Standardlib ist Atris, ist halt auch nicht, ja, Hynix sollte man vielleicht mal fragen.

Jochen

Es wird auch ein Band am Ende, aber mehr so als Further Reading.

Jochen

Ja, genau, aber sozusagen Pydentic ist ja danach erst so richtig populär geworden, würde ich sagen, oder jetzt auch noch neuer Message-Spec, gibt's ja auch, ist ja vielleicht noch mal schneller und keine Ahnung, aber da muss man vorsichtig sein, also ich glaube, da vermischt man dann, also Pydentic, es ist natürlich auch praktisch, aber es vermischt halt zwei so Sachen, einmal diese Klassenbilder-Geschichte mit den Adnotationen, damit man halt sozusagen, ja, 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,

Jochen

der ist aber irgendwie anders,

Jochen

weil das hast du halt in Dataclasses

Jochen

und halt bei NameTupel oder so eigentlich nicht.

Johannes

Auch mal bei Typing.NameTupel hast du Validierung.

Johannes

Nee, gar nicht, genau.

Jochen

Und da muss man halt extrem vorsichtig sein.

Jochen

Also ich meine, das kann natürlich auch sehr praktisch sein,

Jochen

aber es gibt da auch eben von dem Entwickler von Atos

Jochen

einen sehr schönen Vortrag von der letzten PyCon US,

Jochen

wo jetzt auch die Vorträge rausgekommen sind

Jochen

und der heißt, glaube ich, Design Pressure

Jochen

und das ist eigentlich

Jochen

Der Entwickler heißt Design Pressure

Jochen

Der Vortrag heißt Design Pressure

Jochen

Aber ist das nicht

Jochen

Hinek Schlaback? Genau

Jochen

Der ist doch auch Deutscher, oder?

Jochen

Ja, genau, den sollte man auch echt mal fragen, weil

Jochen

der hat immer tolle

Jochen

Artikel zu diesen ganzen

Jochen

Tolle Software geschrieben, tolle Artikel geschrieben, macht tolle

Jochen

Videos, toller Typ, müssen wir mal fragen

Jochen

Wenn du in dieser Episode

Johannes

zeigst, ob er diesen tollen Podcast kommen möchte

Jochen

Genau. Vielleicht werden wir auch toll

Jochen

dann so ein bisschen Glanz könnte auf uns abfallen.

Jochen

Wer weiß. Mal schauen.

Jochen

Ja, genau. Und

Jochen

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

Jochen

Der hat ja, war ja auch Reviewer

Jochen

für hier das Architekturbuch, was ich

Jochen

immer empfehle, also das Software-Architecture

Jochen

with Python.

Jochen

Und er hat auch schon häufiger Vorträge

Jochen

über Software-Architektur gehalten.

Jochen

Und das ist auch wieder so einer.

Jochen

Und der startet mit dem

Jochen

Hot-Take irgendwie so Dinge wie

Jochen

Identik oder irgendwie diese Geschichten

Jochen

Data-Validation-Dinger,

Jochen

das macht eure Architektur

Jochen

von eurem Programm kaputt.

Jochen

Ihr Trottel!

Jochen

So, und jetzt sage ich euch mal,

Jochen

warum das so ist. So, gut, man braucht

Jochen

halt irgendwie so ein, meinte so, ja,

Jochen

ich komme ja aus der YouTube-Welt, da macht man

Jochen

das so, dass man so einen Hook platzieren muss

Jochen

und dann muss man drauf deliveren oder nicht.

Jochen

You want to believe what happens next. Genau, genau.

Jochen

Und wenn man das halt schafft, dann ist gut und wenn man

Jochen

es nicht schafft, ist halt doof, aber mal schauen.

Jochen

Und ja,

Jochen

also da

Jochen

und ich, aber ich würde sagen, im Grunde

Jochen

hat er da ganz recht, ja, also ich meine, wenn man

Jochen

jetzt das so macht, dass man

Jochen

ein paar Identik-Modelle

Jochen

verwendet, halt als

Jochen

Data-Classes-Ersatz und die dann

Jochen

halt quasi benutzt, um die eigene

Jochen

Domain, ich weiß gar nicht,

Jochen

ob es da für irgendeinen guten deutschen Begriff gibt oder so,

Jochen

dass also der Bereich, in dem die

Jochen

eigene Business-Logik stattfindet,

Jochen

zu beschreiben, dann hat man halt schon einen bösen

Jochen

Fehler gemacht eigentlich oder dann hat man

Jochen

sich in der Ecke modifiziert, aus dem man schlecht wieder rauskommt.

Jochen

Ja,

Jochen

und da muss man aufpassen. Also ich meine, man kann

Jochen

das ja auch richtig verwenden, aber es ist

Jochen

halt nicht so einfach. Also

Jochen

das ist halt schon gefährlich. Also

Jochen

insofern bei Pidentic, also

Jochen

ist auch ein sehr cooles Projekt, aber

Jochen

man muss halt echt aufpassen, dass man da

Jochen

nicht, also

Jochen

wenn man damit auf

Jochen

irgendein Problem zielt, dann hat

Jochen

der Pidentic-Lauf auch immer so die Tendenz,

Jochen

so weich zu werden und so auf den eigenen Fuß runter

Jochen

zu neigen und

Jochen

wenn man im falschen Moment schießt, dann hat man ein Loch im Fuß.

Dominik

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

Jochen

Naja, also wenn du zum Beispiel anstelle einer Dataclass halt ein Pidentic-Modell verwendest.

Jochen

Warum ist das blöd?

Jochen

Naja, weil du dann zum Beispiel Pidentic importierst in deiner Business-Logik.

Jochen

Und dann bist du davon abhängig?

Jochen

Ja, genau. Du hast halt dann diese Konzerns irgendwie miteinander vermischt.

Jochen

Und dann kriegst du alle möglichen Arten von üblen Design-Problemen, Architektur-Problemen.

Jochen

Ähm, genau.

Jochen

Ja. Welche?

Jochen

Naja, äh, also

Jochen

zum Beispiel, wenn das dann halt jetzt nicht

Jochen

äh, schnell genug ist

Jochen

und du willst jetzt was anderes, eine schnellere Art

Jochen

irgendwie die Sachen zu, weil du hast das

Jochen

jetzt gekoppelt an, du spreifst das als JSON

Jochen

raus und liest JSON rein und so,

Jochen

was ja Pidentic auch ganz gut kann,

Jochen

und jetzt stellst du halt fest so, oh,

Jochen

oder gibst das über eine API raus,

Jochen

und jetzt stellst du halt fest so, oh shit, aber,

Jochen

also ich meine, das ist relativ schnell,

Jochen

aber das ist nicht so schnell, wie es geht. Also es geht natürlich,

Jochen

es gibt da Dinge draußen, die sind deutlich schneller als Pydentic

Jochen

und dann stellst du halt fest, so okay,

Jochen

irgendwie Pydentic ist zu langsam für mich.

Jochen

Du wirst Pydentic niemals

Jochen

austauschen können, da kannst du dein Ding neu schreiben, das ist halt,

Jochen

kannst du einfach völlig vergessen.

Jochen

Und

Jochen

ja, das ist halt,

Jochen

wenn man das halt

Jochen

quasi nicht so

Jochen

gebaut hat, dass man halt Pydentic austauschen

Jochen

kann, dann hat man halt, so ähnlich wie bei

Jochen

man hält von den Django,

Jochen

Models Model erbt, also oft kann

Jochen

das ja auch okay sein und bei Pydentic kann das ja auch oft

Jochen

okay sein, aber wenn du halt ein Großprojekt hast und dann

Jochen

hast du halt

Jochen

irgendwann, willst du Dinge anders

Jochen

machen, dann kann es gut sein, dass

Jochen

das nicht mehr geht.

Jochen

Ja, okay, klar, natürlich.

Jochen

Ja.

Jochen

Hm.

Jochen

Ich fand das jetzt nicht so, dass

Jochen

Kinder gegen ein Win.

Jochen

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

Johannes

drei Alternativen genannt.

Johannes

Also Collections.NameTupel,

Johannes

TypingNameTupel und DataClass.

Johannes

Und warum nicht

Johannes

TypeDict?

Johannes

Ja, das ist tatsächlich hier,

Johannes

da lese ich, ich zitiere,

Johannes

TypeDict may seem like another DataClass-Builder.

Johannes

Ja, das ist es nicht. However, TypeDict does not

Johannes

build concrete classes that you can instantiate.

Dominik

Genau, es ist in Kapitel 25

Dominik

oder sowas, geht ja nochmal drauf ein.

Johannes

Genau, also das macht nicht solche

Johannes

Klassen, wie wir sie hier brauchen, sondern

Johannes

das ist nur... TypeAnnotations für Dicts

Johannes

aber es funktioniert anders.

Johannes

Genau, und es ist eine böse Falle.

Jochen

Ich weiß nicht, wie oft ich das schon gesehen habe,

Jochen

dass Leute denken, dass sie dann sicher werden,

Jochen

aber nie MyPy oder sowas ausführen.

Jochen

Und dann, wenn man es dann mal ausführt,

Jochen

kriegt man halt gesagt,

Jochen

das, was du da machst mit den Type-Ticks,

Jochen

das ist bei uns alles falsch.

Jochen

Nie einer gemerkt.

Jochen

Hat dir das Claude erzählt?

Jochen

Nee, mir begegnet sowas ständig.

Jochen

Hat sich jemand ausgedacht.

Johannes

Okay, aber im Endeffekt funktionieren doch

Johannes

diese drei Verfahren

Johannes

alle irgendwie gleich. Du musst irgendwie eine

Johannes

Definition schreiben und du sagst, ich möchte jetzt eine Klasse

Johannes

haben, die soll einen Namen haben

Johannes

und die soll folgende Attribute

Dominik

haben. Und die werden dann getypt

Dominik

und getyped hinted? Ja,

Johannes

entweder getypt oder auch nicht getypt. Musst du ja nicht

Johannes

unbedingt getypt haben.

Johannes

Und selbst wenn du es getypt hast,

Johannes

kannst du es ja immer noch anders verwenden.

Johannes

Selbst wenn du deine Dataglass schön mit

Johannes

Types versehen hast, kannst

Johannes

du ja immer noch reintun, was du möchtest.

Johannes

Also ein Tuple wäre jetzt immutable,

Dominik

dann muss ich ein Frozen machen bei der Data-Klasse.

Johannes

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

Johannes

Du kannst auch, also auch das Typing.name-Tuple

Johannes

kann ja andere Sachen nehmen.

Johannes

Das ist ja erst mal nur eine Absichtserklärung.

Johannes

Ich beabsichtige, dass dieses Attribut nur ein Int sein kann,

Johannes

aber da hält dich niemand davon ab.

Johannes

Kannst auch eine Letzte reinmachen.

Johannes

Das ist ja generell bei Python so.

Johannes

Okay, aber ich finde es interessant,

Johannes

weil im Wesentlichen gibt es da zwei verschiedene Syntax-Möglichkeiten.

Johannes

Und die eine, das ist die, die von Name-Tupel kommt,

Johannes

wo man halt sagt, ich möchte einen Name-Tupel haben

Johannes

und dann rufe ich die Funktion oder rufe ich den Konstruktor Name-Tupel

Johannes

als Konstruktor auf und sage eben, diese Datenklasse soll den Namen,

Johannes

hier haben Sie das Beispiel Coordinate haben, also Koordinate haben

Johannes

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,

Johannes

sondern ich kriege nur den Konstruktor raus

Johannes

und das ist so

Johannes

ein bisschen irgendwie so eine textuelle Beschreibung und

Johannes

ich habe da immer so ein bisschen Hemmungen, das fühlt sich

Johannes

so ein bisschen an, als ob man irgendwie

Johannes

um diesen

Johannes

ja, um so Python

Johannes

außen rum geht und

Johannes

um den Interpreter

Johannes

außen rum geht und dass man irgendwelche

Johannes

langsamen, magischen Sachen

Johannes

macht, aber ich glaube

Johannes

tatsächlich, man muss da weg davon und muss sagen, okay

Johannes

dieses Herstellen der Klasse

Johannes

das ist langsam, aber das ist ja egal,

Johannes

weil das macht man nur einmal. Das

Johannes

Instanziieren, das ist dann so schnell wie ein Tupel.

Johannes

Und das ist nicht,

Johannes

und die verbrauchen auch nicht mehr Speicher. Also diese

Johannes

Namen werden nicht bei jeder Instanz

Johannes

dazu gespeichert. Das ist nicht wie bei einem

Johannes

Dictionary, sondern es ist eben ein

Johannes

Tupel. Und im Endeffekt ist es ein Tupel mit

Johannes

so einem kleines bisschen

Johannes

Karamellsoße obendrauf gestreut, wo man

Johannes

eben nicht Index 0, Index 1

Johannes

und Index 2 hat, sondern wo man eben Latitude

Johannes

und Longitude sagen kann.

Johannes

Und das bedeutet dann Index 0 und Index 1.

Johannes

Ja, das sieht viel schneller aus tatsächlich.

Jochen

Also lange Zeit war NameTupel

Jochen

auch irgendwie deutlich schneller, also wobei

Jochen

nichts ist so schnell wie tatsächlich einfach

Jochen

quasi, wenn man eine Klasse

Jochen

instanziiert, aber NameTupel war dann

Jochen

halt die schnellste Alternative.

Jochen

Und wenn man

Jochen

jetzt früher war das halt oft so,

Jochen

oder wenn man

Jochen

halt Attribut-Lookup

Jochen

macht, dann ist das bei

Jochen

NameTupel natürlich schneller.

Jochen

Also irgendwas, Instance, Punkt,

Jochen

irgendein Attribut, weil

Jochen

Tupel-Index.

Jochen

Und inzwischen macht er aber Dataclasses

Jochen

und auch, glaube ich,

Jochen

nennt Tupel, wenn man davon erbt, per Default

Jochen

irgendwie Slots. Aber vielleicht erzähle ich jetzt auch Unsinn.

Jochen

Das müsste, muss man irgendjemand nachgucken.

Jochen

Aber ich glaube, das ist tatsächlich so.

Jochen

Das Fazit ist für mich,

Johannes

das hat gar keine praktische Auswirkung.

Johannes

In keinem Fall, den ich je hatte,

Johannes

hätte das eine Auswirkung gehabt, dass die Konstruktion

Johannes

von diesen Datenobjekten

Johannes

zu langsam gewesen wäre. Das heißt, das ist auch wieder so ein

Johannes

Jagdnig-Fall. Das ist so eine Angst,

Johannes

die ich in meinem Kopf habe, die aber eigentlich

Johannes

in dem Moment noch nicht berechtigt ist.

Jochen

Eine große API-Response

Jochen

ist, oder wo du Zeugs

Jochen

reinkriegst, weil da kann das schon

Jochen

so bei, wenn du so halt irgendwie 10.000

Jochen

Dinger in Objekte verwandelst und

Jochen

dann ist halt dein Objekt erzeugt gemeinsam.

Johannes

Wenn da Jason reinkommt, hast du ja eh schon verloren.

Jochen

Ja, aber es gibt ja schnelle Jason-Parser, aber

Jochen

du musst es ja nochmal zu Objekten machen.

Jochen

Aber du kriegst ja auch einen Dikt.

Jochen

Wie auch immer,

Johannes

für mich der Takeaway ist,

Johannes

ich habe da immer so ein bisschen Hemmungen.

Johannes

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

Johannes

weil das nicht so richtig in die Syntax

Johannes

passt, weil das anders aussieht, als

Johannes

andere Sachen aussehen, aber es ist gar nicht

Johannes

schlecht. Es ist gar nicht

Johannes

falsch, ein Name-Tupel zu machen.

Dominik

Ja, aber was meinst du, es sieht anders aus? Also ich finde,

Dominik

wenn du das jetzt vom Typing

Dominik

oder vom Collections importierst, dann kannst du ja

Dominik

Klasse schreiben. Sieht ja fast aus wie eine Data-Klasse,

Dominik

nur dass du nicht jetzt Data-Klassen importierst.

Johannes

Genau, das kannst du machen. Das sieht auch normal aus.

Johannes

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

Johannes

Das

Johannes

das Ganze machen, aber dieser Konstruktor,

Johannes

der Named-Tubel-Konstruktor, also das ist

Johannes

tatsächlich alles klein geschrieben und dann musst du da

Johannes

Strings reingeben.

Johannes

Ja, das ist schon...

Jochen

Was daran auch komisch ist halt,

Jochen

also einmal, ich finde es auch ehrlich gesagt ein bisschen hässlich,

Jochen

ich meine, das ist uralt, das gibt es schon ewig.

Jochen

Das ist super praktisch.

Jochen

Das ist natürlich manchmal super praktisch, wenn man

Jochen

halt irgendwie auf alten

Jochen

Interpreterversionen rumguckt, aber

Jochen

genau, das funktioniert wahrscheinlich bis,

Jochen

also da gibt es nichts mehr, was noch läuft, was irgendwie

Jochen

älter ist. Das funktioniert wirklich

Jochen

überall, aber also was halt auch

Jochen

blöd ist, ist, dass es halt, es geht zwar auch,

Jochen

dass man da Methoden dranhängt, aber das ist auch voll umständlich.

Jochen

Da muss man halt auch erstmal

Jochen

die Funktionen anzeugen und dann muss man

Jochen

das Ding irgendwie da dranhängen und so. Und es geht

Jochen

alles, klar, aber es ist halt schon so, wenn das

Jochen

als Methode dransteht, ist das schon leichter

Jochen

verständlich, wie das passiert. Ja, da kann man ganz viel

Dominik

hässliche Magie mitmachen. Ich glaube, wenn man so Codecoil

Dominik

spielt oder sowas, dann ist das eine Disziplin, die man so spielen kann.

Dominik

Und wer Leute verwirren will oder

Dominik

so ein bisschen Obfuscation, ne?

Dominik

Nee, nee, nee, das ist nicht gut.

Johannes

Nee, dann gehen wir über zu Typing-Name-Tupel,

Johannes

weil Typing-Name-Tupel hat nämlich Klassen-Syntax.

Johannes

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

Johannes

Es wird gleich noch ein Problem beschrieben werden,

Johannes

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 aus einer anderen Sprache kommt,

Johannes

dann sagt man, ich möchte eine Klasse haben

Johannes

und die soll folgende Attribute haben.

Johannes

Und das ist hier genauso, weil die Klassen-Syntax halt so ist,

Johannes

dass ich sage, Class, dann den Klassennamen,

Johannes

abgeleitet von Name-Touple,

Johannes

was aber so ein bisschen

Johannes

nicht ganz

Dominik

richtig ist. Weil die MRO da gar nicht

Dominik

drin ist, weil das nur in Meta-Klasse ist, weil da

Dominik

nämlich gar nicht tatsächlich Name-Touple entsteht, sondern

Dominik

ein richtiges Toupe. Genau. Und dann

Johannes

innerhalb von der Klasse gebe ich einfach

Johannes

die Attribute an, die ich haben möchte

Johannes

mit ihrem Typen. Also hier in dem Fall beispielsweise

Johannes

Latitude, Doppelpunkt Float

Johannes

und Longitude, Doppelpunkt Float.

Johannes

Und das bedeutet, dass diese Klasse

Johannes

automatisch einen Konstruktor bekommt,

Johannes

der eben diese zwei

Johannes

Attribute nimmt, entweder named oder unnamed.

Johannes

Das war so der Hauptanwendungsbereich.

Johannes

Du möchtest jetzt nicht irgendwie eine Klasse schreiben,

Dominik

wo du reinschreibst in init, nimm folgende

Dominik

Argumente, latitude und longitude und dann machst du

Dominik

save, init, lot, gleich, lang und da.

Dominik

Genau, kannst du alles selber machen,

Johannes

aber es wird dir alles abgenommen, wenn du das hier machst.

Johannes

Genau. Durch Meta-Klassen-Magie.

Johannes

Und im Endeffekt

Dominik

Jetzt ist schon das zweite Mal, dass ich

Dominik

jetzt wieder das Trinkspiel mache, was wir letztes Mal angefangen haben.

Dominik

Ja, ich weiß, das ist

Johannes

mein Wort, was

Johannes

zu oft kommt. Wir sagen das jetzt nicht

Johannes

nochmal.

Johannes

Bei Delta Classes

Johannes

ist ja im Grunde genommen

Johannes

das Gleiche, dass du so eine gewisse

Johannes

du sagst, welche Klassennamen du

Johannes

haben möchtest, welche Attribute du haben möchtest, welchen Typ

Johannes

du haben möchtest. Und da ist natürlich

Johannes

leicht, weitere Methoden hinzuzufügen.

Johannes

Die schreibst du einfach in den Klassenkörper rein.

Johannes

Ja, das mache ich auch.

Johannes

Das geht ja eigentlich schon häufig im Delta Class.

Dominik

Aber ich mache das tatsächlich relativ häufig, dass wenn irgendwie

Dominik

auffällt, ah, ich hätte noch gerne keinen und doch das Maximum

Dominik

und die Summe berechnet von irgendwas.

Dominik

Das war schon super praktisch.

Dominik

Ja, natürlich, das ist auch wichtig.

Dominik

Das ist ja dann das, was hier

Dominik

der Onkel Bob würde sagen,

Dominik

das ist gut, bist du auf dem richtigen Weg.

Dominik

I just implemented that last night.

Dominik

Genau, es ist interessant,

Dominik

weil da ist ja so ein bisschen

Johannes

Triggery drin hier, dieses Name-Tupel,

Johannes

dieses Typing-Name-Tupel, das ist ja gar keine normale

Johannes

Klasse, sondern das ist ja eine Meta-Klasse.

Johannes

Ja.

Johannes

Was ist denn jetzt so eine Meta-Klasse?

Johannes

Eine Meta-Klasse?

Johannes

Welches Kapitel ist das?

Jochen

Das ist weiter hinten, glaube ich.

Jochen

Da machen wir noch ein bisschen.

Dominik

Es sind Komplimente von Dynamic, Attribute

Dominik

and Property. Wir verschieben das.

Dominik

Das Metaprogramm ist Kapitel 24.

Dominik

Ja, also Kapitel 24.

Johannes

Also nur noch 19 weitere

Johannes

Episoden und schon sind wir über das Buch

Johannes

Fluren passen.

Johannes

Dazwischen natürlich noch die

Johannes

anderen. Okay, aber

Johannes

dann, dieses Kapitel macht ja jetzt

Johannes

hier eine total interessante Biege,

Johannes

weil das nächste

Johannes

ist ja jetzt, ah übrigens, wir müssen

Johannes

Type-Ins machen, wir müssen noch ein bisschen über Typing sprechen.

Johannes

Ja, ja, ja. Und das fand ich

Johannes

interessant, als ich es gelesen habe, weil das hatte ich,

Johannes

das war so ein Twist, den ich nicht erwartet

Johannes

hatte.

Dominik

Er hat deswegen darüber gesprochen, weil er

Dominik

gesagt hat, dass es total cool ist, wenn man

Dominik

jetzt Match-Case benutzt. Und das liegt auch daran,

Dominik

dass das... Ja, aber das ist dann der dritte,

Johannes

das ist der nächste Twist. Achso.

Dominik

Ja, das wurde ja gerade erst eingeführt, als das Buch rauskam.

Dominik

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

Dominik

tiefer. Ja, vielleicht war es

Johannes

auch nicht genügend für ein, ups, jetzt geht hier

Johannes

mein Aufnahmekomputer geht gerade aus,

Johannes

die,

Johannes

vielleicht ist es auch noch nicht groß

Johannes

genug für ein eigenes Kapitel, aber ich

Johannes

finde es interessant, dass hier so Type Hints

Johannes

oder Type

Johannes

Annotations so

Johannes

in einem ganz

Johannes

anderen Kapitel versteckt

Johannes

wird.

Johannes

Und auch nicht so, dass man es jetzt,

Johannes

also ich habe mir ja die,

Johannes

das, das, habe mir ja die Inhaltsangabe

Johannes

hier die Sachen durchgelesen,

Johannes

Aber da habe ich damit gerechnet,

Johannes

dass das jetzt hier so eine

Johannes

Abbiegung macht und dann sagt, ach so, übrigens,

Johannes

hier, lassen Sie über Typen sprechen.

Johannes

Also kommt natürlich nachher noch mal,

Johannes

aber

Jochen

ja. Ja, ist natürlich schon auch so

Jochen

ein bisschen naheliegend, weil man muss halt jetzt dann

Jochen

irgendwie, wenn man schon erklärt,

Jochen

wie das da bei diesen

Jochen

Class-Bildern funktioniert, dass man halt

Jochen

über die

Jochen

Typ-Annotation im Grunde

Jochen

halt, ja,

Jochen

schon sagt, was das dann sein soll, dann muss man ja auch

Jochen

erklären, wie das funktioniert. Und dann kann man ja,

Jochen

dann muss man ja irgendwie andere

Jochen

Annotations irgendwie erwähnen und dann

Jochen

ist man ja mittendrin in den Annotationen.

Jochen

Ja, das

Johannes

man muss da so ein bisschen in den Wald reinlaufen

Johannes

und sich so ein bisschen drin verlaufen, ja. Also

Johannes

ich verstehe es schon, aber es war irgendwie

Johannes

was, hatte ich nicht erwartet.

Johannes

Und da kommt

Johannes

auch das eine Problem raus mit den Data Classes.

Johannes

Also wenn ich so eine Data Class schreibe, dann

Johannes

habe ich ja diesen Dekorator vorne dran, Data Class.

Johannes

Dataclass ist dort Dataclass, dann

Johannes

schreibe ich Class den Klassennamen, also

Johannes

in dem Fall jetzt hier ClassCoordinate

Johannes

und im Klassenkörper schreibe ich

Johannes

dann die Attribute, die die Instanzen haben sollen.

Johannes

Und das

Johannes

wird hier in dem Kapitel sehr

Johannes

deutlich gemacht und das finde ich auch sehr richtig und sehr gut,

Johannes

weil das da tatsächlich

Johannes

eigentlich eine Abwendung ist

Johannes

von dem, was Python normalerweise macht.

Johannes

Weil wenn ich normalerweise hier

Johannes

ein Attribut reinschreibe,

Johannes

also wenn ich Latitude gleich

Johannes

X reinschreibe und Longitude gleich

Johannes

Y, dann ist es ja erst mal

Johannes

ein Klassenattribut.

Johannes

Und hier

Johannes

in dem Fall, wenn ich jetzt aber

Johannes

Latitude Doppelpunkt Float,

Johannes

also Latitude getypt mit dem

Johannes

Float-Typ,

Johannes

hinschreibe, dann ist es auf einmal ein

Johannes

Instanzattribut.

Johannes

Und dieser Unterschied wird hier

Johannes

in einer gewissen Länge

Johannes

diskutiert, weil der wirklich sehr wichtig

Johannes

ist, weil es sehr leicht ist, diesen Unterschied

Johannes

zu machen, diese beiden Sachen sind sehr nah aneinander

Johannes

und die sehen sehr gleich aus, machen

Johannes

aber dann andere Dinge und sind eigentlich

Johannes

anders als das, was

Johannes

in Python so normal ist, das heißt

Johannes

da muss man schon besondere Vorsicht

Dominik

Du musst nochmal bitte den Unterschied

Dominik

genau erklären zwischen diesem

Dominik

Instanzattribut und dem Klassenattribut, ich habe nämlich schon

Dominik

mehrfach Menschen gesehen, die das so

Dominik

gewohnt waren, dass das halt dann immer

Dominik

ein Instanzattribut ist, was man

Dominik

da direkt unter die Klasse schreibt, dass sich das

Dominik

erst später festgestellt hat, dass das

Johannes

In anderen Sprachen ist das ja auch so, wenn du in

Johannes

Java oder C oder sonst wo bist, dann ist es

Johannes

genau so. Dann sagst du, die Klasse soll folgende

Johannes

Instanzattribute enthalten.

Johannes

Und in Python ist es

Johannes

aber anders. In Python sagst du, die Klasse

Johannes

soll folgende Klassenattribute

Jochen

enthalten. Der Hauptunterschied zwischen

Jochen

Klassenattributen und Instanz ist halt, dass

Jochen

ein Klassenattribut ist halt für alle Instanzen

Jochen

der Klasse gleich. Und das ist halt

Jochen

wahrscheinlich überraschender. Also diese

Jochen

Eigenschaft ist mir auch schon mehrfach blöd

Jochen

auf die Füße gefallen.

Jochen

Aber so ist es halt. Genau.

Jochen

Da muss man vorsichtig sein.

Dominik

Das heißt, wenn du das setzt, irgendwo an einer existierenden

Dominik

Entität, dann wäre das für alle

Dominik

Gesetz?

Dominik

Ja, also wenn das eine Klasse ist, zum Beispiel

Jochen

sagst halt jetzt, schaffst du es irgendwie,

Jochen

dass tatsächlich irgendwie

Jochen

ein Klassenattribut defaultmäßig

Jochen

zum Beispiel eine Liste ist, also

Jochen

indem du das auf Ecke Klammer auf

Jochen

Klammer zusetzt oder so,

Jochen

dann... Oh, das ist jetzt aber

Jochen

ganz hässlich, was du jetzt machst.

Jochen

Und du überschreibst das nicht nachher nochmal irgendwie

Jochen

in einem Konstruktor oder so, was ja dann

Jochen

oft passiert, dann ist es kein Problem mehr,

Jochen

weil in dem Moment, wo man es neu setzt oder so,

Jochen

ist es dann ein Instanzattribut

Jochen

und nicht mehr ein Klassenattribut.

Jochen

Merkt man auch nichts von, ist vielleicht ein bisschen gefährlich,

Jochen

aber wenn das nicht passiert, dann

Jochen

passieren plötzlich wilde Dinge, weil

Jochen

dann ist das halt für alle Instanzen gleich

Jochen

und es funktioniert zwar, dass man da

Jochen

Sachen appendet, aber da sind dann halt nicht nur die Sachen,

Jochen

die man selber appendet hat drin, sondern alle anderen auch.

Dominik

Deswegen ist es eine Konvention, wie man das

Dominik

macht und zwar kann man das nennen Cache

Dominik

unter Strich irgendwas

Dominik

oder, ne? Dann hast du

Dominik

einen Cache für alle Instanzen

Dominik

dieser Klasse. Dann kannst du damit merken, alle

Dominik

Errors, die aufgetreten sind, ever oder sowas.

Jochen

Ja, also das hat durchaus Gründe,

Jochen

weshalb man sowas haben will.

Dominik

Ist ganz gut, aber damit kann man sich

Dominik

hart infusieren. Also tatsächlich, das

Dominik

hatten wir, glaube ich, auch schon ein paar Mal gesagt,

Dominik

dieses Instanzieren von

Dominik

leeren Dicts oder

Dominik

Listen ist in Python generell sehr

Dominik

gefährlich. Wenn man das als Default-Argument macht,

Jochen

sollte man nicht. Ja, ganz, ganz

Jochen

gefährlich, ja. Ja, und

Johannes

Und generell Klassen, also ich mache oft Programmierkurse und das ist wirklich schwierig zu verstehen, was eine Klasse ist und was eine Instanz von einer Klasse ist und wie die zusammenhängen und was die zusammen tun und warum die das so tun.

Johannes

Und das ist echt, echt schwierig. Und jetzt gibt es hier eben genau diesen subtilen Unterschied hier. Das eine, das sieht genauso aus wie das andere, aber wenn du nicht Doppelpunkt Int hinterschreibst, dann ist es auf einmal eine Klasseninstanz.

Johannes

Ja, und das ist schon, das ist wirklich was sehr Subtiles und das geht eben weg von dem, was Python normalerweise macht. 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 Instanzeigenschaften rein, die Instanzattribute.

Jochen

Wobei dir dann natürlich zum Beispiel Data Classes

Jochen

schon auch auf die Finger haut, wenn du da

Jochen

irgendwie einfach eine Liste hinschreibst

Jochen

oder so, dann sagt dir das so,

Jochen

nee, das kannst du aber nicht machen, du musst ja irgendwie

Jochen

dann Default

Jochen

wie heißt das Ding?

Jochen

Field? Ja, eine Factory musst du rein.

Jochen

Factory angeben, genau.

Jochen

Aber da kommt es natürlich rum.

Johannes

Es gibt viele Mutable Classes

Johannes

oder viele Dinge, die du da reintun kannst,

Johannes

die eben nicht, das ist nur jetzt für Liste und

Johannes

für Dictionary und für Set ist es

Johannes

Special Cased, weil

Johannes

die so häufig vorkommen.

Jochen

Genau. Ja, also das ist gefährlich, das

Jochen

stimmt. Das ist,

Jochen

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

Jochen

normalerweise, also sicher,

Jochen

auch wenn man jetzt Konstrukturen hat von

Jochen

normalen Klassen, da ist es ja auch

Jochen

gefährlich, wenn man da irgendwie

Jochen

zum Beispiel sagt, annotiert, das ist

Jochen

jetzt eine Liste und dann sagt man gleich und dann

Jochen

Ecke, Klammer auf, Klammer zu. Und so

Jochen

viele Leute denken sich wahrscheinlich nichts dabei, wenn sie das tun, aber das

Jochen

ist halt auch schon brutal gefährlich.

Dominik

Also ich mache immer listor none

Dominik

gleich none.

Dominik

Das ist das Pattern, das muss man sich einfach

Johannes

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

Jochen

einfach merken. Aber das ist ja auch

Jochen

nicht so schön, weil einmal

Jochen

ist dann deine Typ-Annotation halt

Jochen

so ein bisschen, also einmal ist sie halt hässlich,

Jochen

würde ich jetzt mal so sagen, mit diesem

Jochen

pipe none, das ist halt

Jochen

schon so, uh.

Dominik

Es gibt doch diesen schönen unknown-typed

Jochen

hin. Der kannst du auch optional nehmen, ist auch hässlich.

Jochen

Unknown gibt es da noch

Jochen

dazu? Ja, aber Anna und

Jochen

U, da ist ja schon, wer kennt denn das?

Jochen

Annie. Ja, U.

Jochen

Oder Annie. Es gab noch

Dominik

einen dritten Type, der da so ein bisschen spezieller war,

Dominik

dass das klar ist, dass das irgendwann in der Liste hängen könnte.

Dominik

Also, was ich an der Stelle mache,

Dominik

also mir gefällt das alles nicht. Also,

Jochen

okay, Leute machen das, aber ich finde auch,

Jochen

es funktioniert nicht richtig. Wenn man jetzt

Jochen

dem statischen Typchecker sagt,

Jochen

das kann jetzt auch None sein, dann hat man damit

Jochen

so einen riesen, dann hat man sich

Jochen

einen riesen Haufen Würmer.

Dominik

Dann sagt er immer, tatsächlich, irgendwann im Kotakt

Dominik

immer, hey, du hast ja nicht auf None geprüft

Dominik

und dann lintet dir das alles, weil du

Dominik

musst vorher mal so ein Assert-as-not-none machen.

Jochen

Oder noch schlimmer, also wenn es dann halt nur

Jochen

nervt, ist ja noch, was noch schlimmer

Jochen

ist, ist halt, dass Bugs dann halt

Jochen

irgendwie unerkannt, dass halt, du kannst

Jochen

plötzlich

Jochen

Illegal-State repräsentieren. Und normalerweise sagt man

Jochen

immer so, also, make

Jochen

Illegal-State unrepresentable. Ja, das

Jochen

sollte gar nicht passieren dürfen. Da sollte der

Jochen

Type-Checker dir sagen, nee, das darf nicht None sein.

Jochen

Und du hast dieses None ja nur

Jochen

benutzt, damit du es initialisieren konntest.

Jochen

Das hat ja gar nicht, wenn in deiner Logik

Jochen

nicht None vorkommen darf,

Jochen

was ja dann oft bei diesen Initialisierungsgeschichten

Jochen

gar nicht so ist, dann darf das

Jochen

da nicht drinstehen. Und wenn

Jochen

du es trotzdem möglich machst, dass es drinsteht,

Jochen

dann machst du halt eine Büchse

Jochen

Backwürmer auf, die dich irgendwann

Jochen

beißen werden. Und die Frage ist halt

Jochen

nur,

Jochen

warum ist das?

Jochen

Oder umgekehrt, du

Johannes

machst es wie in Java,

Johannes

wo jeder Typ optional ist und hast dann auf einmal

Johannes

in jeder Scheiß-Funktion, in die du reingehst,

Johannes

musst du acht Variablen auf Null überprüfen.

Jochen

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

Jochen

Genauso schlecht.

Jochen

Also ich würde sagen, aus der Perspektive betrachtet

Jochen

musst du eigentlich sagen, nee, das darf

Jochen

nicht Null sein dürfen und nicht Optional

Jochen

sein dürfen. Die allermeisten Sachen, die man

Jochen

so hat, die sind nicht Optional.

Jochen

Also du würdest sagen, es ist eine leere Liste

Jochen

und wenn da eine leere Liste reinkommt, musst du es

Jochen

neu initialisieren.

Jochen

Ja, das war da auch wieder verwirrend.

Jochen

Das kannst du ja auch nicht gut machen.

Jochen

Ne, was ich an der Stelle mache, ist, ich nehme

Jochen

einen Trick von... Oh, eine Sentinel.

Jochen

Eine Sentinel. Ja, genau. Von

Jochen

Luke Plant, da habe ich das her.

Jochen

Ja. Und zwar

Jochen

definiere ich mir einen Typ namens

Jochen

Auto und

Jochen

der ist definiert

Jochen

über eine Klasse unterstrich Auto

Jochen

und das Ding, es macht

Jochen

nichts, außer, dass es nach

Jochen

Falls evaluiert

Jochen

und

Jochen

in

Jochen

In Kindern dann.

Jochen

Auto, Auto, Auto, Auto, Auto.

Jochen

Und den Typ Any hat.

Jochen

Und dann musst du nicht oder irgendwas sagen,

Jochen

sondern Any geht halt überall durch.

Jochen

Das heißt, wenn du mal eine Auto hinschreibst,

Jochen

dann kann man die Typ-Annotation richtig lassen

Jochen

und Auto geht halt trotzdem durch.

Jochen

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

Jochen

Nee, aber das ist so.

Jochen

Aber das ist falsch.

Jochen

Dadurch, dass Auto Any hat,

Jochen

ist es egal, welche Typ-Annotation du vorher dran geschrieben hast,

Jochen

ist es richtig.

Dominik

Das ist übrigens PEP 696, oder?

Jochen

Das weiß ich nicht. Ich kenne die nicht auswendig.

Jochen

Wie, du kennst nicht alle

Jochen

PEPs auswendig?

Jochen

Entschuldigung.

Jochen

Und dann kannst du halt

Jochen

in dem Kurzdruck zum Beispiel dann halt

Jochen

sagen, if das Ding

Jochen

oder if not das Ding,

Jochen

dann machst du, das kannst du ja mit none auch

Jochen

nicht machen, weil none musst du in Cocktailweise immer sagen,

Jochen

if das da ist none,

Jochen

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.

Johannes

Eine eigene Klasse Auto.

Johannes

Es ist halt Auto.

Jochen

Also das importiere ich dann irgendwo her.

Jochen

Also der Default-Wert ist Auto.

Jochen

Die Annotation ist so, wie sie halt sein soll.

Jochen

Und dann?

Jochen

Und dann sage ich, if not das Ding, dann setze ich es neu.

Johannes

Okay, aber wenn jemand eine leere Liste reingeben würde,

Johannes

würdest du es dann auch neu setzen?

Dominik

Der Unterschied ist tatsächlich nur,

Dominik

dass da halt ein None

Dominik

sparen kann.

Jochen

Aber dann würde ja, wenn das halt nicht

Jochen

okay wäre, dann würde ja der Type-Checker meckern.

Jochen

Also du hast halt nicht

Dominik

dieses If-Ding, das ist None.

Johannes

Du hast einen semantischen Unterschied

Johannes

eingeführt.

Johannes

Schreibst halt nicht If-Not-Fu,

Dominik

also du schreibst If-Not-Fu,

Dominik

dann Foo neu setzen,

Dominik

weil das halt Auto ist immer fault,

Dominik

sagst nicht Foo ist None, weil dann sparst du halt

Dominik

einfach das None, sondern... Genau, ich spare mir das None

Jochen

und ich spare mir die Is-Geschichte

Jochen

und ich mache es halt so, wie es

Jochen

Leute miteinander machen. Wobei die X-Geschichte,

Jochen

du könntest ja immer noch

Jochen

X-Is-Auto machen. Das könnte ich auch machen, ja.

Johannes

Ich würde tatsächlich sogar sagen, du musst

Johannes

das machen, weil

Johannes

nehmen wir mal an, ich rufe diese

Johannes

Funktion, die du mir gerade eben gesagt hast,

Johannes

oder diesen Konstruktor, rufe ich auf mit

Johannes

dem Parameter

Johannes

und der Parameter ist eine leere Liste.

Johannes

Und ich behalte

Johannes

die aber außen vor und benutze die an einer anderen Stelle

Johannes

nochmal. Das heißt, ich pende da Sachen rein

Johannes

Das hast du jetzt genau den Use Case,

Johannes

den Python so gefährlich macht,

Johannes

den hast du jetzt kaputt gemacht.

Johannes

Und jetzt überlassen wir jetzt,

Johannes

wir starten jetzt eine Umfrage.

Johannes

Schreiben Sie uns an hallo.python-podcast.de,

Johannes

ob das gut oder schlecht ist.

Johannes

Schlecht?

Johannes

Ja, genau.

Jochen

Also ich bin auch noch nicht endgültig zufrieden.

Jochen

Ich halte mich zurück, damit die Hörer was sagen können.

Jochen

Aber ich mache es halt jetzt gerade so.

Jochen

Ich leide dann auch mal ein bisschen darunter,

Jochen

dass zum Beispiel LLMs, die halt das gewohnt sind,

Jochen

dass Leute da Nan oder Nan schreiben.

Jochen

Denn die sind immer total verwirrt.

Jochen

So, was will der denn da jetzt?

Jochen

Und dann sagt er mir schon wieder,

Jochen

ich soll dieses Auto verwenden.

Jochen

Hä?

Jochen

Ich verstehe nur Bahnhof.

Jochen

Hast du deine Instruktionen nicht im Griff?

Jochen

Machen sie irgendwie komische Sachen.

Jochen

Und ja, ja, gut.

Jochen

Ich schreibe das dann auch immer

Jochen

in die entsprechenden Rules mit rein.

Jochen

Aber es hilft ja auch nur so begrenzt.

Jochen

Es ist ein Kreuz.

Jochen

Ich weiß auch nicht.

Johannes

Der Code ist einfach zu wenig standardkonform.

Johannes

Der ist zu wenig gewöhnlich.

Johannes

Kann man den ja noch lesen?

Johannes

Wenn er über ein Auto steht,

Johannes

weiß ja jeder, was gemeint ist.

Jochen

Nee, das wissen Leute dann halt dummerweise auch nicht,

Jochen

das wäre auch schon passiert.

Jochen

Wenn er das in NLM schaut, ich weiß.

Jochen

Ja, genau.

Jochen

Kontrollklick drauf.

Jochen

Okay, aber

Johannes

das Kapitel macht ja jetzt noch eine zweite

Johannes

Abbiegung, der Dominik hat es ja schon erwähnt.

Johannes

Und zwar Richtung Pattern Matching

Johannes

Class Instances.

Johannes

Auf einmal kommt hier in dem Kapitel noch

Johannes

Pattern Matching. Hooray.

Johannes

Was?

Johannes

Ist doch schön.

Johannes

Zweiter Twist in the end.

Johannes

Ja.

Johannes

Da war ich ja

Johannes

überhaupt gar nicht drauf vorbereitet.

Johannes

Dominik, warum magst du Pattern-Matching? Erklär mal.

Dominik

Weil ich damit relativ

Dominik

verschiedene,

Dominik

das ist erst blöd, weil das mag man eigentlich

Dominik

nicht. Also ich kann verschiedene Objekte entgegennehmen

Dominik

und die checken und dann gucken.

Dominik

Und wie geht das? Erklär mal, wie das geht.

Dominik

Du machst ein Match und ein Case auf,

Dominik

matchst dann deine Variable, die du hast

Dominik

und gibst dann verschiedene Cases. Also da hättest du gerne

Dominik

irgendwas ist

Dominik

schwieriges Beispiel,

Dominik

so eine Koordinate.

Dominik

Dann gibst du rein, dass das eine Koordinate sein könnte

Dominik

und dann hat der tatsächlich den Pfad,

Dominik

okay, hier ist eine Koordinate. Und wenn du danach

Dominik

zum Beispiel sagst, es ist eine Straßenadresse,

Dominik

dann guckt der,

Dominik

okay, hier ist eine Straßenadresse, passt da rein und geht weiter.

Dominik

Und du kannst da bestimmte Attribute

Dominik

omitten, indem du die einfach auf dann

Dominik

setzt, falls das verständlich

Dominik

ausgerückt ist. Und kannst

Dominik

damit relativ schön Cases abfangen und

Dominik

hast dann irgendwann einen Standardcase. Also so ein bisschen

Dominik

so if, then,

Dominik

if, elif, elif, elif,

Dominik

in, gut lesbar finde ich.

Dominik

Also ich mag das sehr gerne.

Dominik

Du kannst auch Types machen

Dominik

und kannst Guards machen

Dominik

und sowas. Ja, man kann ja sehr viele

Johannes

Sachen machen. Ich glaube, das verdient

Johannes

fast eine eigene Episode. Da muss man eine eigene Episode

Jochen

zu machen, haben wir noch nicht gemacht, haben wir auch schon häufiger

Jochen

geplant, aber ja, genau, das müssen wir mal machen.

Jochen

Man kann auch da, ich finde, ja,

Jochen

es ist super mächtig. Ich brauche es ehrlich gesagt

Jochen

nicht so oft. Ja, das ist

Jochen

ich bin ein großer Fan davon.

Johannes

Ich finde es großartig, das ist eines der besten

Johannes

Language Features, was es gibt, aber ich habe es noch nie verwendet.

Johannes

Das ist ganz komisch.

Johannes

Also ich meine,

Jochen

ich glaube, das ist halt auch für Leute,

Jochen

die jetzt oft Parser für irgendwelche

Jochen

Sachen schreiben oder so,

Jochen

oder halt so Domain-Specific

Jochen

Languages für irgendwas haben,

Jochen

die brauchen das wahrscheinlich oft.

Jochen

Aber das mache ich halt nicht so oft.

Jochen

Also ich, also

Johannes

das erste Mal habe ich Pattern Matching gesehen,

Johannes

da war ich noch ein junger Mann

Johannes

damals und das war

Johannes

ein Erlang. Ah, ja, ja, ja, gut.

Johannes

Und da ist es ja

Johannes

ein Core-Language-Feature, ja, da ist es ja so

Johannes

ein, ja, hier, da hast du eine Funktion und

Johannes

natürlich, das Erste, was die Funktion macht, ist

Johannes

immer erst mal Pattern-Matching.

Johannes

Und die benutzen

Johannes

das für alles, ja, wenn du hier ein None reinkriegst,

Johannes

ja, klar, dann geht die Funktion, wenn das Pattern

Johannes

hier ein None ist, dann musst du erst mal hier diesen, das

Johannes

jedes Mal.

Johannes

Und da ist es ja nicht, da geht es nicht so sehr um Parse,

Johannes

sondern da geht es ja schon irgendwie auch

Johannes

um Schnittstellen und um Datenaustausch und

Johannes

ich habe in meinem Kopf

Johannes

schon immer den Gedanken, dass

Johannes

man, wenn ich eine Schnittstelle schreibe,

Johannes

dass ich da irgendwie so ein

Johannes

Pattern-Matching reinmachen könnte.

Johannes

Aber irgendwie hat es noch nie so

Johannes

richtig gut gepasst.

Johannes

Ja.

Jochen

Weiß auch nicht. Ich weiß auch nicht.

Jochen

Kann man verschiedene Exception-Types

Jochen

gucken oder...

Johannes

Ja, aber die fange ich doch in den

Johannes

Accept-Blocks schon ab, die verschiedenen

Johannes

Exception-Types. Da gibt es doch schon Syntax für.

Johannes

Und für die verschiedenen Instanz-Typen

Johannes

muss ich eher irgendwie

Johannes

in Funktionen reinverzweigen.

Johannes

Und ich weiß irgendwie,

Johannes

ich würde es gerne mehr benutzen. Ich weiß nicht, ob das

Johannes

ein Problem an mir ist oder

Johannes

ob das ein Problem an...

Jochen

Also ein Problem war

Jochen

eine ganze Zeit lang auch, also

Jochen

jedenfalls als das Feature total frisch war, für mich

Jochen

jedenfalls auch, dass ich mir gesagt habe, ah, ich muss

Jochen

ein bisschen vorsichtig sein, dass ich das jetzt nicht

Jochen

irgendwie mich zu sehr darauf verlasse, dass es das gibt,

Jochen

weil es ist ja noch ganz neu und

Jochen

viele verwenden halt noch ältere Python-Versionen.

Jochen

Und vermutlich super langsam.

Jochen

Ja, genau, aber

Jochen

das ist ja jetzt inzwischen, ist ja

Jochen

so 3.10 ist ja jetzt schon die

Jochen

älteste Version, die man so, mit der man normalerweise

Jochen

so zu tun hat.

Johannes

Nee, 3.10, also

Johannes

3.10 meinst du nicht? Ja, genau, und in 3.10 ist es

Jochen

genau, nicht 3.10, meinte ich nicht, nee,

Jochen

3.10, genau. Ja, 3.10, ja, das ist,

Jochen

würde ich sagen, ja. Und da ist es ja

Jochen

dazugekommen, also insofern würde ich sozusagen, jetzt ist

Jochen

sicher, dass man es eigentlich immer verwenden kann,

Jochen

insofern, ja,

Jochen

muss man mal gucken, ob es da nicht doch mehr Use Cases gibt, als man

Jochen

so denkt, aber es ist auch, auch

Jochen

fiese Syntax, also ich habe mir dazu auch schon ein paar

Jochen

Vortrag angeschaut und man kann sich

Jochen

auch da wieder leicht in den Fuß schießen.

Dominik

Ja, was nicht so ganz so interessant ist, ist, dass wenn man so die

Dominik

Bild in Typen nimmt, also man sagt

Dominik

irgendwie Match Unknown und dann machst du

Dominik

eine Case List oder

Dominik

Tupel und wenn man die dann

Dominik

nicht instanziiert mit den Klammern,

Dominik

dann ist es Kacke, weil es always

Dominik

true ist, weil der auch die Funktion

Dominik

guckt und nicht guckt, ob es eine List oder ein Tupel ist.

Dominik

Genau.

Dominik

Dann kann man sich auch mit den Fuß schießen.

Jochen

Ja, und das ist der Default

Jochen

Fall auch immer irgendwie,

Jochen

wenn nichts anderes gefunden wird, ist es auch irgendwie etwas,

Jochen

was halt in anderen Sprachen anders ist.

Jochen

Und es gibt ja schon so ein paar

Jochen

Falschstricke.

Jochen

Naja. Und dass man den

Jochen

am besten immer handeln sollte, genau.

Jochen

In Python. Ja, aber das ist

Jochen

doch auch nervig. Ja gut, aber

Dominik

das ist ja klassische Programmierung, dass man immer

Dominik

das else für alles, was man

Dominik

nicht erwartet, schreibt.

Johannes

Wenn man das else weglassen kann,

Johannes

dann lässt man es weg.

Johannes

Tja.

Johannes

Je mehr man weglassen kann, umso mehr

Johannes

kann man weglassen. Das ist doch viel besser.

Johannes

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 einschickt, dann alles abreißen.

Dominik

Alles vernichten.

Dominik

Ist das

Dominik

Quantum-Sort, ja?

Johannes

Kennt ihr den Quantum-Sort-Algorithmus?

Johannes

Der ist ein O-von-1-Sortier-Algorithmus.

Johannes

du machst

Johannes

eine zufällige Permutation

Johannes

von deinem Input

Johannes

und guckst, ob sie sortiert ist.

Johannes

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

Johannes

Ja.

Johannes

Und das in dem Universum,

Johannes

in dem sortiert ist,

Johannes

da überlebst du immer.

Johannes

Schneller geht nicht mehr.

Johannes

Also

Johannes

dieses Kapitel macht mehrere interessante

Johannes

Wendungen und

Johannes

es schneidet einige

Johannes

Sachen an, die

Johannes

interessant sind, die aber so ein bisschen

Johannes

über Data Classes

Johannes

hinausgehen.

Johannes

Ich muss ja sagen...

Dominik

Macht ihr denn lieber einen Data Class oder lieber einen M2P?

Dominik

Lieber Data Class.

Jochen

Ja, ich auch. Lieber Data Class.

Jochen

Ich weiß jetzt gar nicht so genau, warum.

Jochen

Ja, weil das

Johannes

gutes Marketing hat.

Johannes

Man steht auch hier im

Johannes

Abschnitt Further Reading. Da sind natürlich

Johannes

viele Verweise dann drin.

Johannes

Und da steht auch drin hier, bei der

Johannes

PyCon US 2018, da gibt es einen

Johannes

Talk von Raymond Hettinger,

Johannes

den auch wir alle schon gesehen haben.

Johannes

Und ich gehe davon aus, dass die Hörer

Johannes

den auch alle gesehen haben. Der heißt Data Classes,

Johannes

the Code Generator to End All Code Generators.

Johannes

Und das hört sich ja schon

Johannes

sehr hochtrabend an. Und ich muss

Johannes

sagen, ich habe mir den Talk angeguckt

Johannes

und ich habe danach Data Classes verwendet und

Johannes

das war gar nicht so beeindruckend.

Johannes

Ja.

Johannes

Es ist irgendwie gar nicht so

Johannes

viel, was einem das macht, was

Johannes

einem das gibt.

Dominik

Deswegen auch Dreck neben Tupel, ist ein Tupel.

Dominik

Ja, man darf da gar nicht

Dominik

so viel

Johannes

drauf geben. Da werden viele Worte

Johannes

darüber gesagt und es wird viel

Johannes

darüber gesprochen, aber es ist eigentlich was

Johannes

total Simples und was total

Johannes

Kleines und Nettes und Einfaches und das

Johannes

ja.

Jochen

Ja, also es

Jochen

gibt halt so Anwendungsfälle, da verwende ich es halt sehr gerne

Jochen

für. Also zum Beispiel eben in so

Jochen

für, also wenn man jetzt halt so

Jochen

Event-Driven-Architecture hat dann

Jochen

für die Events und Commands, da

Jochen

sind Data-Classes halt super.

Jochen

Genau, für

Jochen

alle Arten von Value-Objects, wo man halt

Jochen

nichts drauf gibt, was

Jochen

das denn konkret für ein Objekt ist, wo einem nur der Wert

Jochen

von irgendwelchen Dingen interessiert, da ist

Jochen

das total super. Und für alles

Jochen

andere nehme ich normale Klassen. Also

Jochen

genau, das ist so mein Daumenregel

Jochen

für diesen Kram.

Jochen

Und ja, ich glaube, in allen Fällen, wo ich

Jochen

Data-Classes verwende, könnte ich wahrscheinlich auch einen Topfel

Jochen

verwenden, aber

Jochen

Ja, aber es ist schon

Johannes

bequemer, dass man die Namen schreiben kann.

Johannes

Das ist schon cool.

Johannes

Das kannst du bei NameTupel auch.

Johannes

Ja, genau. Aber dann kannst du nicht ein normales

Dominik

Tupel nehmen. Nee, nee, aber NameTupel ist

Dominik

doch schon... Also ich benutze fast

Dominik

kein... Ich würde, glaube ich, fast nie

Dominik

ein normales Tupel nehmen.

Dominik

Sondern statt einem normalen Tupel immer ein NameTupel,

Dominik

weil ich gerne die Namen verwende und ich mag

Dominik

Indizes nicht so. Ja.

Dominik

Ja, okay. Ich verwende

Dominik

Tupel sehr häufig.

Dominik

Ja, ich würde so implizit...

Jochen

Genau, beim Zurückgeben von irgendwelchen

Jochen

Sachen ist es halt ja automatisch so.

Johannes

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

Johannes

und dann ist ja schon diese Tupel, ist dieses Tupel

Jochen

so ein bisschen... Da willst du ja dann nicht

Jochen

ein Name-Tupel verwenden, ja. Ja doch, also warum nicht?

Dominik

Als Return-Wert ein Name-Tupel, dann hast du schon

Dominik

Type-Annotation und kannst danach auf die Attribute des Dings

Dominik

wieder zugreifen. Ach, viel zu viel Arbeit.

Dominik

Viel zu viel Arbeit.

Johannes

Einfach zwei Werte zurückgeben, zack.

Johannes

Zack, zack, dies und jenes.

Johannes

Dies und jenes wird

Dominik

vielleicht auch das und dafür wird ein Match-Case wieder gut.

Dominik

Ja, sorry.

Dominik

Ja. Ich glaube, wir haben das

Johannes

Kapitel besprochen, oder? Wir müssen mal Beispiele sehen.

Dominik

Wollt ihr noch was erzählen? Also,

Jochen

genau, was wir noch tun könnten, ist irgendwie,

Jochen

wir machen noch Picks und

Jochen

ich weiß nicht, ob irgendjemand anders anfangen

Jochen

möchte? Ja, ja, mach doch mal.

Jochen

Völlig? Ja. Okay, also. Das ist doch was Gutes.

Jochen

Ja, also was ich gerne picken würde

Jochen

und ja, ich weiß nicht, ob die

Jochen

so viele Hater haben wir gar nicht, aber

Jochen

das wäre ein guter Hook für

Jochen

die Hater. Wir hätten erst einmal einen.

Jochen

Ja. Wenn ich mich aktiv verändere.

Jochen

Und zwar, was mir

Jochen

momentan tatsächlich... Nachts um halb drei mit dem

Dominik

Tunnel, da war ich auch schon vor.

Jochen

Ja, aber was mir tatsächlich

Jochen

momentan richtig viel Spaß macht, ist

Jochen

ein Tool von Anthropic.

Jochen

Und zwar heißt das

Jochen

Claude Coote. Und

Jochen

das ist quasi so ein

Jochen

LLM-basierter

Jochen

Kommando-Teil.

Jochen

Dein neuer

Jochen

Agent, oder? Ja.

Jochen

Genau. Was ist ein Agent?

Jochen

Ja, schwierig.

Jochen

Was ist ein Agent?

Jochen

Und ja, also das Ding ist einfach nur, es ist halt ein LLM und es läuft in einer Schleife und macht halt Dinge. Und das funktioniert, also ich will jetzt gar nicht so definieren, was das ist.

Dominik

Und hast du Clues schon einen Rutschgriff auf deinen Rechner gegeben?

Jochen

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

Dominik

Ja, gib dir doch mal ein, zwei Server, da kannst du dich austoben.

Dominik

Ein bisschen Budget dafür.

Dominik

Ja. Ich hab mal gefragt,

Dominik

also auch Claude, ob

Dominik

der ist jetzt eigentlich

Dominik

mich ersetzt oder ist das,

Dominik

was ist das so für eine Beziehung?

Dominik

Muss ich Angst haben

Dominik

oder augmentiert mich das eher oder sowas?

Dominik

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

Dominik

Ja, okay.

Dominik

Das glaube ich bei dir,

Dominik

Dominik, das glaube ich bei dir.

Dominik

Ja.

Dominik

I agree.

Johannes

Die Bromance zwischen dir und KI.

Johannes

Aber

Jochen

also ich würde es einfach mal,

Jochen

man kann das nicht gut beschreiben, man muss das mal ausprobieren

Jochen

und da ist das eigentlich schon sehr

Jochen

cool. Also ich benutze das

Jochen

jetzt in letzter Zeit super häufig

Jochen

und das hat mir schon echt viel...

Dominik

Super häufig ist es untertrieben, weißt du, wenn du jochen beim Arbeiten

Dominik

zu guckst, dann schlägst du die ganze

Dominik

Zeit nur drauf und dann so, nö,

Dominik

ja, doch, vielleicht, ach, mach noch mal

Dominik

so. Ja, aber

Jochen

das ist auch schon wichtig, also ich gucke schon noch drauf

Jochen

und ich... Also das heißt, das

Dominik

draufgucken ist das, was dich von Vibe unterscheidet?

Jochen

Ist das dann... Ja, ja, nee, das ist nicht Vibe-Coding.

Jochen

Also ich nenne das manchmal

Jochen

bosnacherweise Vibe-Coding. Nein, nein, das ist nicht Vibe-Coding.

Jochen

Um die Leute zu ärgern,

Jochen

die... Keine Sorge,

Jochen

das ist nicht Vibe-Coding.

Dominik

Ja, es gibt ja zwei Menschen, glaube ich, die sich mit dem Begriff

Dominik

Vibe-Coding so ein bisschen schwer tun. Simon zum Beispiel

Dominik

sagt, das wäre gar nicht gut, weil

Dominik

der Begriff total blöd ist, weil

Dominik

er davon abdenkt, dass das total anstrengend ist.

Jochen

Das war mal gut definiert und zwar

Jochen

als Vibe-Coding ist halt dann, wenn

Jochen

in der das Ergebnis und der Code

Jochen

egal sind und du halt nur

Jochen

sozusagen basierend auf dem

Jochen

Vibe

Jochen

sozusagen den Kram baust.

Johannes

Ja, okay, das habe ich abgelesen, dass der Simon Wilson das nicht mag, weil jemand

Johannes

anders sein Wort verwendet hat, was nicht so ist,

Johannes

wie er es haben möchte. Ist doch auch Old Man

Johannes

in der Z-Cloud. Ja, aber er hat schon

Jochen

recht, also das war ursprünglich mal so definiert

Jochen

und jetzt benutzen es halt alle irgendwie anders

Jochen

und das ist natürlich schon ein bisschen doof, aber

Jochen

Egal, jedes Wort ist halt

Jochen

anders definiert. Ja, aber es gibt

Jochen

in dem Bereich halt schon so viele Worte, die halt ihre

Jochen

Bedeutung verloren haben, dass jetzt so, dass

Jochen

ja, okay, naja gut,

Jochen

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

Jochen

Meinetwegen ist es auch

Jochen

Vibe-Coding, aber, also es ist tatsächlich so,

Jochen

dass ich damit halt

Jochen

viele Dinge irgendwie

Jochen

jetzt so machen kann, die vorher mühselig waren

Jochen

und jetzt sind sie halt nicht mehr so mühselig.

Jochen

Und auch quasi das

Jochen

über Copy-Paste und, oder

Jochen

halt über Cursor oder

Jochen

sonst wie Copilot kann man das ja auch machen.

Jochen

Das hat auch schon alles ganz gut funktioniert, aber

Jochen

Cloud-Code ist tatsächlich für mich nochmal

Jochen

eine deutliche Verbesserung. Also das ist halt,

Jochen

macht alles nochmal deutlich angenehmer.

Dominik

Das ist schon mega gut, aber da

Dominik

möchte ich tatsächlich für alle, die es noch nicht kennen,

Dominik

die meisten kennen es wahrscheinlich, mein Pick machen.

Dominik

Und zwar ist das tatsächlich

Dominik

wie der Manns Ausschuss,

Dominik

weiß ich nicht, NITN?

Dominik

Ah, mhm.

Dominik

Ich finde normalerweise so

Dominik

Logo-Sachen ziemlich schlecht und schwachsinnig

Dominik

und scheiße, aber das Ding ist

Dominik

erschreckend gut.

Dominik

In Business-Prozessen direkt anbinden

Dominik

an der Postgres, an SAP, an

Dominik

was auch immer du gerade brauchst.

Dominik

Und du kannst es dir so zusammenklicken.

Dominik

Du machst da einen Telegram-Channel dazu und dein Discord

Dominik

und hast einen Bot und ziehst da so

Dominik

zwei Lines irgendwie zusammen und

Dominik

machst dann noch einen Prompt dahin und setzt dann

Dominik

da noch eine Nachfrage für das

Dominik

Ergebnis vom Prompt, passt das dann in JSON,

Dominik

kannst einen kleinen Python-Schnipsel reinbauen.

Dominik

Also wenn ich

Dominik

Low-Code mir überlegen würde, würde ich das wahrscheinlich auch so

Dominik

machen.

Dominik

Ich würde sagen, das ist sehr gefährlich für

Dominik

unsere Profession auch.

Dominik

Also ich kann jetzt jeder Marketier hinsetzen und sagen, hey, ich bin Coder und macht sich miteinander so einen Business-Prozess, wo man vorher halt gut bezahlte Software-Ingenieure für braucht. Das ist schon so ein bisschen, schon nicht schlecht. Also da sind wir wieder bei dem Pick, den ich eben schon gespoilert habe, den der Johannes verraten wollte.

Dominik

Nee, das ist nicht mein Pick.

Dominik

Gut, dass das nicht dein Pick war.

Dominik

Aber das macht es ja schon so ein bisschen.

Dominik

Das ist, ja, erzeugt halt viel Zeugs, viel Code,

Dominik

den man halt kaputt machen kann oder halt auch nicht.

Dominik

Oder ist der kaputt?

Dominik

Wen braucht man dafür?

Dominik

Die richtigen Ingenieure wie uns, um das wieder zu reparieren?

Dominik

Oder schafft das dann Cloud Code selber?

Jochen

Naja, also ich meine, für den Anwendungsfall,

Jochen

dass du halt überhaupt erstmal irgendwie rausfinden willst,

Jochen

ob das etwas ist, was du gebrauchen kannst

Jochen

oder nicht, dafür ist das

Jochen

wahrscheinlich schon nicht so schlecht. Nein, aber das ist

Dominik

ein Irrtum. Es geht nicht nur darum, rauszufinden,

Dominik

was ist das, was du willst, weil das

Dominik

ist genau das, was die,

Dominik

ich sag mal, mediocre

Dominik

Devs immer schon verkauft haben.

Dominik

Irgendein Scheiß, der gerade so

Dominik

aussieht, als würde er funktionieren und

Dominik

nach zweimal Gegenpusten zusammenbricht und das

Dominik

ist kein Unterschied mehr zu dem, was du dir einfach da

Dominik

viben kannst und das ist das, mit dem die

Dominik

meisten Leute irgendwie in der Branche irgendwie

Dominik

ihren Umsatz gemacht haben und das ist jetzt einfach quasi

Dominik

obsolet.

Jochen

Ah, obsolet, weiß ich nicht.

Jochen

Du bist ja immer noch dann abhängig auch da von dem Service

Jochen

und so. Also, naja.

Jochen

For business leaders,

Dominik

unfuckete I. How did you find us?

Dominik

My therapist recommended you.

Dominik

Are you very sorry? Yes, no, fuck you.

Dominik

Genau.

Jochen

Ja, also ich muss, ich

Jochen

stimme zu, dass das halt von den ganzen

Jochen

Dingern, die es da draußen gibt, halt tatsächlich irgendwie

Jochen

gut gemacht ist. Ich persönlich, für mich hat das

Jochen

nicht so Appeal, weil ich denke mir so, ja gut, ich schreibe halt

Jochen

Python macht für mich jetzt

Jochen

mehr Aufwand. Ich kann schon programmieren, ich brauche

Jochen

das nicht. Sehr gut, aber so eine

Dominik

Postgres-Schnittstelle mit zwei Klicks, ne?

Dominik

Ja, aber also

Jochen

ist für mich jetzt nicht so ein Aufwand, aber

Jochen

ja, gut.

Jochen

Wir werden sehen. Vielleicht, ja, keine Ahnung.

Jochen

Mein Pick geht in eine

Jochen

ganz andere Richtung.

Jochen

Turning Caffeine into Code?

Johannes

Ich picke Unregistry.

Johannes

Ich bin ja ein Docker-Anhänger

Johannes

und ein Problem, was man aber hat mit Docker

Johannes

Containern, ist, dass wenn man die lokal

Johannes

gebaut hat, auf seine Entwicklungsmaschine,

Johannes

dann muss man die

Johannes

irgendwo hin tun, damit die deploybar werden.

Johannes

Das heißt, wenn ich die auf meinem

Johannes

Produktionsserver dann ausrollen möchte, dann müssen die

Johannes

irgendwo sein. Und dieses irgendwo heißt normalerweise

Johannes

RetroG. Ja, Docker Hub

Johannes

kannst du nehmen, wenn du Open Source machst

Johannes

und wenn du keine Geheimnisse, wenn du alle

Johannes

deine Sachen

Johannes

offenlegen willst auf der Welt.

Dominik

Ansonsten ist es eine Artifactory.

Dominik

to Factory Nexus oder

Dominik

in die Amazon,

Johannes

in so eine private Registry

Johannes

für Amazon. Aber jetzt gibt es hier

Johannes

ein Projekt, das heißt Unregistry

Johannes

und

Johannes

damit kann ich direkt von meiner

Johannes

Maschine auf die Server-Maschine

Johannes

ein

Johannes

Image pushen,

Johannes

ohne über eine Registry zu gehen.

Johannes

Der Trick ist,

Johannes

also das geht natürlich manuell auch,

Johannes

ich kann natürlich manuell dieses

Johannes

Docker-Image exportieren und kann es zippen,

Johannes

und dann per SCP rüber kopieren

Johannes

und so weiter. Aber das ist zum einen

Johannes

nervig und es ist auch langsam, weil jedes Mal

Johannes

das komplette Image übertragen werden muss und nicht nur

Johannes

die Schichten, die man neu braucht.

Johannes

Und das macht Unregistry

Johannes

einfach alles im Hintergrund. Das heißt, der Trick ist,

Johannes

das tut so, als ob es ein Registry wäre

Johannes

und wenn du sagst, hier,

Johannes

push mal auf den Server, dann macht es dort einfach kurz

Johannes

ein Registry auf, dann pushst du dahin

Johannes

und dann ist es bei dem Server,

Johannes

bei dem Produktionsserver

Johannes

einfach im lokalen,

Johannes

in den lokalen Images drin und das ist

Johannes

großartig, weil das macht viele

Johannes

Deployment-Prozesse einfach super viel einfacher.

Johannes

Du musst dann aber nicht

Dominik

History und so was

Dominik

hast du dann halt weg, ne?

Johannes

Wie meinst du History? Hast du bei Docker-Containern

Dominik

nie. Na doch.

Dominik

Das zu, hast

Johannes

die, jeder Tag, den du

Johannes

pushst, ist dort. Also

Johannes

du hast kein zentrales

Johannes

Repo mehr und das ist genau das, was du möchtest.

Johannes

Okay. Wenn du

Johannes

die Sachen aufbewahren möchtest, dann brauchst du

Johannes

eine Registrierung.

Jochen

Ach so, mein History von

Jochen

Images.

Jochen

Nee, das ist ja eben

Johannes

unregistered. Das hast du jetzt nicht mehr.

Johannes

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

Dominik

nicht haben. Ja, ist eben meistens noch ein Müll im Ballast.

Johannes

Ich habe immer nur Latest. Es gibt nur Latest.

Johannes

Aber wenn du was kaputt gemacht hast,

Dominik

da musst du ja dann wieder zurück, anstatt dass du

Dominik

vorwärts gehst. Ja, gut,

Dominik

aber das habe ich dann noch lokal.

Dominik

Na gut.

Dominik

YOLO, YOLO Driven Development.

Dominik

YOLO Vibe.

Dominik

Ja, danke

Dominik

fürs Zuhören. Das war etwas ganz anderes.

Dominik

Kommt zum Hörer-Treffen

Dominik

vorbei und wir freuen uns auf euch

Dominik

hier. Wann war das gleich noch?

Dominik

Ja, Ende August, Ende

Dominik

September. We are discussing that

Dominik

in another episode.

Dominik

Okay. Und machen wir es.

Dominik

Ja, dann bleibt uns gewogen. Hallo at peisenpodcast.de

Dominik

Dankeschön und bis bald.

Dominik

Jo, macht's gut.