Transcript: Das Python Data Model

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Dominik

Ja, hallo, liebe Hörerinnen und Hörer, willkommen beim Python-Podcast, Episode 58.

Dominik

Wow, 58.

Dominik

Ja, gar nicht so schlecht, oder?

Dominik

Über was reden wir heute? Über Fluent Python. Hi, Jochen.

Jochen

Jo, hallihallo, Dominik. Herzlich willkommen.

Jochen

Und hi, Johannes.

Jochen

Johannes, hi.

Jochen

Schön, dass du da bist.

Jochen

Ja, schön, dass ich wieder da sein darf.

Jochen

Wir hatten dich ja schon ein paar Mal hier, habe ich gehört.

Johannes

Ich war schon, ich glaube, ein- oder zweimal oder so ungefähr dabei, ja.

Dominik

Ja, glaube ich auch. Anderthalb oder so.

Dominik

Wir wollen heute über ein Buch sprechen, Fluent Python, von Luciano Ramalho.

Dominik

Richtig ausgesprochen? Ich weiß nicht, genau.

Jochen

Ja, oder das haben wir uns so ein bisschen als Vorlage hergenommen.

Jochen

Ich würde eher denken, wir, also, es wurde, es wurde, wir hatten,

Jochen

Warum sprechen wir denn über ein Buch?

Jochen

Uns erreichten, genau, uns erreichten irgendwie Zuschriften, die sagten,

Jochen

ah, mach doch mal ein bisschen was mehr für Anfänger und irgendwie mehr.

Dominik

Und dann hast du dir das tollste Buch ausgedrückt, wo du dann.

Jochen

Mein, mein, mein, tatsächlich mein Lieblings, Lieblings-Python-Buch.

Jochen

Und dann dachte ich, ah ja, da kann man ja vielleicht mal so ein bisschen durchgehen.

Jochen

Ja.

Jochen

Dass da so die.

Dominik

Ich lese mal kurz aus dem Buch vor, weil du sagtest ja, du bist ein Anfänger.

Dominik

Ja, aber ein Anfänger, ja.

Dominik

If you are just learning Python, this book is going to be hard to follow.

Dominik

Not only that, if you read it too early in your Python,

Dominik

it may give you the best and every Python-Scription-level-special-message

Dominik

and metaprogramming-tricks und so weiter.

Dominik

Also, da steht für alle Leute, die es nicht verstanden haben,

Dominik

es ist kein Anfängerbuch.

Jochen

Ja, ja, gut, aber wir machen ja jetzt nicht Metaprogramming.

Jochen

Also, Metaprogramming-Zeugs ist da auch drin,

Jochen

aber das machen wir ja jetzt gar nicht, noch nicht.

Dominik

Okay, dann steigen wir leicht ein mit Datenstrukturen und sowas.

Jochen

Genau, wir fangen jetzt mit so ganz grundlegenden Dingen dann an.

Dominik

Nicht, dass wir Struktur hätten in dieser Folge, aber wir versuchen es heute.

Dominik

Ja, so ein bisschen.

Jochen

Also, wir hatten ja auch schon mal was zu Dicts gemacht und zu Listen.

Jochen

Ja.

Jochen

Ich weiß nicht, ob wir schon Strings hatten.

Jochen

Hatten wir, glaube ich, noch nicht.

Dominik

Also, wir haben darüber schon öfter gesprochen,

Dominik

aber ich glaube, wir haben tatsächlich noch keine Folge dazu gemacht.

Dominik

Steht noch auf unserer Möchten-wir-gerne-machen-Liste.

Dominik

Aber vielleicht jetzt noch mal zu News.

Dominik

Gibt es denn was Neues in Python, in der Python-Community?

Jochen

Ja, also, seitdem wir das letzte Mal aufgenommen haben,

Jochen

ist nicht so wahnsinnig viel passiert.

Jochen

Ist jetzt auch gar nicht mehr her.

Jochen

Letzte Woche war YouTube.

Jochen

Euro-Python, Jürgen.

Jochen

Ach ja, ja, Euro-Python.

Jochen

Wie war denn die Euro-Python?

Jochen

War gut, hat Spaß gemacht.

Jochen

Ja, war cool.

Dominik

Hat sehr viel nette Leute kennengelernt und mit ihnen geschnackt,

Dominik

wie das halt so ist.

Dominik

Ich weiß aber nicht, ob das einen News-Charakter hat.

Dominik

Also, außer mich persönlich natürlich.

Dominik

Was ich sehr genossen habe, war tatsächlich Luca Schlanger

Dominik

und der Python-Rapple-3.13-Talk,

Dominik

der quasi der letzte war vor der Abschlussrede,

Dominik

wo man so ein bisschen interaktive Möglichkeiten sehen konnte

Dominik

von dem, was so möglich ist.

Dominik

Es war so ein bisschen eine Mischung aus iPython

Dominik

mit Python.

Dominik

Und man konnte richtig coole Sachen machen

Dominik

und Bindings und Fancy-Stuff.

Dominik

Ist so ein bisschen ein Spaß-Talk gewesen.

Dominik

Also, er hat dabei Musik gemacht,

Dominik

hat Euro-Rack angeschlossen

Dominik

und seine MIDI-Synthesizer damit bedient.

Dominik

Also, genau war mein Ding.

Dominik

Ja.

Dominik

Fanden die Talks raus und schaut doch mal rein.

Dominik

Ist mit Sicherheit sehr nett.

Dominik

Und was ich auch ganz gut fand,

Dominik

war, wir haben alle relativ viel darüber diskutiert,

Dominik

was Armin Ronacher so erzählt hat zu,

Dominik

was scheiße läuft in Python,

Dominik

und zwar das ganze Packaging-Ding und so.

Dominik

Ja.

Dominik

Das wissen, sind wir ja wahrscheinlich

Dominik

alle derselben Meinung.

Dominik

Dass es da irgendwann mal so ein Tool geben könnte,

Dominik

das sowas macht wie vielleicht Cargo für Rust oder so.

Jochen

Ja, nein, der Meinung bin ich aber nicht.

Jochen

Also, ich bin der Meinung,

Jochen

dass es schön wäre, wenn wir sowas hätten.

Jochen

Aber ich glaube, ich fürchte,

Jochen

dass wir sowas nicht kriegen können.

Jochen

Okay, aber das ist ja was anderes.

Johannes

Aber da gibt es auch schon 23 Tools,

Johannes

die sowas machen.

Johannes

Ja, genau.

Johannes

Armin meinte auch,

Johannes

da gibt es halt noch ein 24.

Johannes

Das ist jetzt.

Johannes

Aber das ist so,

Dominik

das ist der alte XKCD-Comic.

Dominik

Aber das ist so ein bisschen,

Dominik

vielleicht doch.

Dominik

Also, vielleicht sollte man einfach miteinander reden

Dominik

und vielleicht doch so ein Ding,

Dominik

bauen, was dann übrig bleibt.

Dominik

Weil man braucht halt was,

Dominik

was diese ganze Quark-Sache,

Dominik

wie Pakete managen und PIP-Tools

Dominik

und PyEnv und Conda

Dominik

und, und, und, und, und, und, und.

Dominik

Irgendwie so schön nutzbar macht,

Dominik

dass irgendjemand,

Dominik

der das noch alles nicht kennt,

Dominik

einfach mal so ein Curl macht

Dominik

auf so eine Installation

Dominik

und dann hat der ein Tool,

Dominik

mit dem das alles geht.

Dominik

Das wäre schon ziemlich gut.

Dominik

Also, so vom.

Dominik

Ja.

Dominik

Vom Paint-Faktor her.

Dominik

Und immer dann,

Dominik

wenn ich jetzt Leuten versucht habe,

Dominik

das beizubringen,

Dominik

oder versucht habe,

Dominik

bei denen Python zu installieren,

Dominik

oder auf so einer Schulung

Dominik

irgendwie kleine Sachen

Dominik

mit denen machen wollte,

Dominik

oder die zum ersten Mal

Dominik

so ein Notebook in die Hand nehmen wollten,

Dominik

oder irgendwie irgendwas anderes,

Dominik

das war immer Schmerzen damit verbunden.

Dominik

Ja.

Dominik

Und da ja Rust gerade so.

Johannes

Nein, eigentlich ist das ganz einfach.

Johannes

Also, du musst folgende Sachen installieren.

Johannes

Das ist wirklich nur eine sehr kurze Liste.

Johannes

Ja, ja.

Johannes

Also, erst mal brauchst du Build Essentials

Johannes

und dann brauchst du die ganzen Abhängigkeiten

Johannes

und LibJPG und LibJPG 98

Johannes

und LibJPG 2K.

Johannes

Und dann musst du Pyra installieren

Johannes

und dann bist du schon fast so weit.

Johannes

Und dann Apfel und eine Banane

Johannes

und wie Jochen sagt,

Johannes

den ganzen Dschungel.

Johannes

Und ja.

Dominik

Also, ich habe am.

Dominik

Das ist wirklich sehr.

Dominik

Der RealPython am Sprint

Dominik

und für Pyra und so ein paar Sachen installiert,

Dominik

weil ich es kompilieren wollte.

Dominik

Es hat tatsächlich drei Stunden gedauert,

Dominik

bis ich es kompiliert habe

Dominik

auf meinem Tunnel.

Dominik

Klasse.

Dominik

Ja.

Dominik

Aber so ist das manchmal.

Dominik

Ja.

Jochen

Ja, also, ja, ich bin mal gespannt.

Jochen

Also, ich bin da.

Jochen

Also, ich habe ja auch schon dann irgendwie gehört,

Jochen

was Leute dazu sagen,

Jochen

die sich mit diesem ganzen Thema

Jochen

schon lange beschäftigen.

Jochen

Und es gab auch schon mehrere,

Jochen

Versuche, das zu vereinheitlichen

Jochen

und da auch Peps zu etablieren,

Jochen

die quasi das standardisieren.

Jochen

Und die sind gescheitert alle bisher.

Jochen

Auch das letzte Mal,

Jochen

als jetzt der,

Jochen

wie heißt er jetzt noch?

Jochen

Einer ganz bekannter,

Jochen

einer der bekanntesten

Jochen

Python-Core-Entwickler,

Jochen

der halt auch da irgendwie

Jochen

so ein großes Team

Jochen

bei Microsoft leitet.

Jochen

Der große Kanadier,

Jochen

wie heißt er noch?

Jochen

Ich habe den Namen vergessen.

Jochen

Keine Ahnung.

Jochen

Auf jeden Fall,

Jochen

der hat da versucht,

Jochen

einen Peps zu gemacht.

Jochen

Das ist halt hinterher gescheitert,

Jochen

weil, ja, also mit dem Fazit,

Jochen

es geht nicht.

Jochen

Armin meinte,

Jochen

es braucht vielleicht noch ein Jahr,

Jochen

dann sind viele

Dominik

der Grundvoraussetzungen geschaffen,

Dominik

die da noch fehlen

Dominik

und das wären gar nicht mehr so viele.

Dominik

Okay, ich bin gespannt.

Dominik

Also, wenn das dann funktioniert,

Dominik

dann lasse ich mich überzeugen.

Dominik

Aber das, ja, gut.

Jochen

Werden wir dann sehen.

Jochen

Was auch interessant ist,

Jochen

es gibt einmal diese UV-Geschichte,

Jochen

da gibt es dann auch noch

Jochen

diese Firma von Charlie Marsh,

Jochen

die hat ja das irgendwie übernommen,

Jochen

das zu maintainen, das UV.

Jochen

Ja, genau.

Jochen

Ja, also UV und RAI,

Jochen

was war von einem?

Jochen

Quatsch, genau,

Jochen

der hat nicht UV übernommen,

Jochen

sondern RAI, sondern genau.

Jochen

Die integrieren sich tatsächlich

Jochen

relativ,

Jochen

die reden auch voneinander

Jochen

und übereinander und so

Jochen

und die integrieren einander

Jochen

relativ viel

Dominik

und RAI benutzt das UV

Dominik

statt PIP-Tools, glaube ich,

Dominik

oder so, ne,

Dominik

dann darüber,

Dominik

das sieht alles gar nicht

Dominik

so schlecht aus

Dominik

und die Firma ist, glaube ich,

Dominik

Astral oder so

Dominik

und die machen ja auch RUF

Dominik

und das,

Dominik

was eigentlich auch relativ gut

Dominik

funktioniert, finde ich.

Dominik

Ja, ja, die machen so

Dominik

eben ganz viel um RUF.

Jochen

Gibt es auch eine Firma hier,

Jochen

also es gibt ja da irgendwie

Jochen

auch eine schnellere Alternative

Jochen

zu Conda, Mamba,

Jochen

von PrefixDev

Jochen

oder weiß ich nicht,

Jochen

Wolf,

Jochen

Volbrecht

Jochen

oder so,

Jochen

den könnten wir vielleicht

Jochen

auch mal,

Jochen

den könnten wir

Jochen

über diesen Thema fragen.

Jochen

Ja, du weißt ja gerade,

Jochen

dass du für dich zuhörst.

Jochen

Ja, und genau, genau

Jochen

und das kommt da auch

Jochen

irgendwie mit rein,

Jochen

deren Geschichten sollen da

Jochen

auch irgendwie mit integriert werden,

Jochen

weil das ist halt unten drunter

Jochen

auch alles Rust

Jochen

und ja, also okay,

Jochen

es tut sich was,

Jochen

also insofern ist es schon mal gut.

Jochen

Ja, mal mal gespannt.

Jochen

Ja, und ich finde es auch gut,

Jochen

dass man tatsächlich jetzt

Dominik

echt irgendwann durch ist

Dominik

mit diesem ganzen Snarf

Dominik

und vielleicht also Standards,

Dominik

also ich mag ja zum Beispiel

Dominik

diesen Go nicht,

Dominik

weil zu viel Standard und so,

Dominik

das ist immer zu viel Opinion

Dominik

und so und dann, okay,

Dominik

dann nutzt man dann doch Black,

Dominik

aber vielleicht gibt es

Dominik

also ein paar.

Dominik

Moment, das habe ich nicht verstanden,

Dominik

was nützt du nicht?

Dominik

Also ich mag Standards nicht,

Dominik

also ich mag es eigentlich nicht,

Dominik

wenn irgendjemand sagt,

Dominik

wie es sein muss,

Dominik

wenn jemand so opinionated ist

Dominik

und sagt, wir machen jetzt,

Dominik

keine Ahnung,

Dominik

Tabs instead of Spaces,

Dominik

weil ich will das so,

Dominik

wenn ich das anders möchte

Dominik

und das nervt mich immer so ein bisschen,

Dominik

weil das ist das Schöne an Python,

Dominik

es ist halt dynamisch,

Dominik

ich kann es nicht aussuchen,

Dominik

wie ich es mache.

Jochen

Ja, aber gut,

Jochen

also ich meine,

Jochen

aber würdest du das,

Jochen

sozusagen würdest du,

Jochen

du würdest aber nur

Jochen

das konfigurieren wollen,

Jochen

wie es aussieht,

Jochen

aber du würdest schon

Jochen

ein Auto formaten wollen?

Jochen

Ja.

Jochen

Ja, okay, ja gut,

Jochen

kann man machen, wie man will.

Dominik

Ja, also ich meine,

Dominik

aber wenn man jetzt bei Black

Dominik

dann irgendwie eine Konfigurationsdatei

Dominik

jedes Mal mit schieben muss,

Dominik

das ist halt auch irgendwie

Dominik

ad absurdum, ne?

Dominik

Ja, genau, weil Black gibt es

Dominik

das halt nicht, genau,

Dominik

dann muss man halt das andere sehen,

Dominik

aber es gibt ja auch noch andere.

Dominik

Das ist so eine Sache,

Johannes

die denke ich mir schon lange,

Johannes

dass eigentlich diese ganze

Johannes

Code-Formatting-Debatte,

Johannes

die ist doch Quatsch, oder?

Johannes

Ja.

Johannes

Eigentlich sollte doch

Johannes

eine Python-Datei

Johannes

den AST enthalten

Johannes

und dann hast du einen Editor

Johannes

und der kann dir den AST anzeigen,

Johannes

auf eine Art und Weise,

Johannes

wie es dir passt.

Johannes

Ja, genau.

Johannes

Und wenn du die Sachen

Johannes

in grün oder gelb haben willst

Johannes

oder in Dateien

Johannes

oder Modulen aufgeteilt

Johannes

oder wie auch immer

Johannes

du es haben willst,

Johannes

da gibt es so viele Sachen,

Johannes

die man auf der Ebene

Johannes

machen könnte,

Johannes

aber stattdessen haben wir

Johannes

Textdateien.

Johannes

Ja, so ein bisschen so,

Johannes

da müsste man

Johannes

jemandem was machen.

Johannes

Da kommt dann immer der Einwand,

Johannes

dann mach doch mal was dagegen

Johannes

und dann sage ich,

Johannes

nee.

Jochen

Das Problem ist halt,

Jochen

wie kriegst du denn

Jochen

aus dem AST wieder was,

Jochen

wenn du jetzt tatsächlich

Jochen

was manuell anders haben willst?

Jochen

Also du möchtest

Dominik

deine VR-Brille aufziehen

Dominik

und dann hast du vor dir

Dominik

den einen Balken,

Dominik

den einen Graphen

Dominik

und hast die Nodes,

Dominik

musst du eine durchmaschinen,

Dominik

kannst du dich auf dein Laufband

Dominik

stellen und hinlaufen?

Johannes

Nee, also da gibt es bestimmt

Johannes

Leute, die das so wollen,

Johannes

aber ich will ja nicht laufen,

Johannes

ich bin ja ein Softwareentwickler.

Johannes

Aber ob du jetzt

Johannes

Tabs oder Spaces hast

Johannes

oder ob du die Variablen

Johannes

so oder so nennst

Johannes

oder ob du, keine Ahnung,

Johannes

viele Dinge, die du da,

Johannes

ob du Einrückungen

Johannes

oder Braces haben willst,

Johannes

das ist doch auch völlig egal.

Johannes

Wenn Leute lieber

Johannes

Braces haben wollen,

Johannes

dann sollen sie halt

Johannes

sich ihren Editor so einstellen,

Johannes

dass der die Blöcke

Johannes

mit Braces umfasst.

Johannes

Und umgekehrt,

Johannes

wenn ich TypeScript schreibe

Johannes

oder so,

Johannes

dann will ich dann nicht

Johannes

überall Braces haben.

Johannes

Dann muss doch mein Editor,

Johannes

muss doch smart genug sein,

Johannes

das umformen zu können.

Johannes

Und warum ist das so schwierig?

Jochen

Ja, also ein Grund,

Jochen

der mir jetzt sofort...

Jochen

Das ist so eine Debatte,

Johannes

die jetzt auch ins Gebüsch führt.

Johannes

Ja, also ein Grund,

Johannes

der mir direkt so einfallen würde,

Johannes

ist halt, was ist,

Johannes

weil das hatte ich jetzt

Johannes

letztens wieder,

Jochen

ist halt, was ist,

Jochen

wenn ich Dinge anders machen möchte

Jochen

als jeder andere?

Jochen

Du meinst Innovation?

Jochen

Nein, einfach optisch.

Jochen

Müll.

Jochen

Ach so, Entschuldigung.

Jochen

Ja, das muss doch

Jochen

dein Editor können.

Jochen

Das muss doch eine

Jochen

Einstellungssache bei dir sein.

Jochen

Weil am Ende kommt

Jochen

der gleiche Python,

Jochen

der weiß den Code raus.

Jochen

Ja, aber wenn jetzt sozusagen,

Jochen

du kriegst jetzt Code

Jochen

von jemand anders.

Jochen

Wie soll denn das,

Jochen

so wie ich das sehen will,

Jochen

wie soll der denn

Jochen

dahin transformiert werden?

Jochen

Das kannst du nur

Jochen

im Sprachmodell machen.

Jochen

In der Standardform geht leicht,

Jochen

aber der umgekehrte Weg

Jochen

geht halt nicht.

Jochen

Oder?

Jochen

Über den Sprachmodell.

Jochen

Ich glaube, das geht

Jochen

in alle Richtungen.

Johannes

Aber das wäre halt das,

Johannes

was da zu beweisen wäre.

Johannes

Und ich glaube,

Johannes

dass die richtige Darstellungsart

Johannes

eben nicht Text

Johannes

in ASCII oder Unicode ist,

Johannes

sondern halt

Johannes

ein strukturierteres Modell.

Johannes

Und aus diesem

Johannes

strukturierteren Modell

Johannes

kannst du dann ja mehr Sachen

Johannes

auch rausziehen.

Johannes

Ja, gut.

Johannes

Aber es ist unbewiesen.

Johannes

Ja, das ist hier so ein,

Johannes

wie gesagt,

Johannes

so ein Jemand-sollte-das-mal-tun-Projekt.

Johannes

Ja.

Johannes

In meiner vierstelligen Liste

Johannes

der Nebenprojekte

Johannes

ist es nicht auf Platz 1.

Johannes

Also jedenfalls,

Johannes

ich wollte eigentlich

Johannes

für Standards

Johannes

an der Stelle sprechen,

Johannes

weil ich tatsächlich finde,

Johannes

dass das so ein bisschen

Johannes

anstrengend ist.

Johannes

Und es wäre schon gut,

Johannes

wenn so ein Standard

Johannes

das so löst,

Johannes

dass diese ganzen

Johannes

Pains und Probleme

Dominik

eine Lösung haben,

Dominik

die tatsächlich von allen

Dominik

so mitgetragen wird.

Dominik

Das wäre schon irgendwie

Dominik

nice to have.

Dominik

Also so ein

Dominik

Cholera-Boutive-Spiel,

Dominik

äh, Cholo,

Dominik

boah,

Dominik

Zungenbrecher.

Dominik

Ihr wisst, was ich meine.

Dominik

Ein Cholera-Spiel?

Dominik

Ja.

Dominik

Aber du meinst jetzt

Dominik

für Code-Format?

Dominik

Nein.

Dominik

Ach so, okay.

Dominik

Ich meine für Packaging.

Dominik

Packaging.

Dominik

Und also Installation

Dominik

und Python generell

Dominik

und Binarys verteilen

Dominik

und Setup

Dominik

und VENVs

Dominik

und Dependencies

Dominik

und,

Dominik

und sowas alles.

Dominik

Naja, ich habe mir halt

Jochen

diese Diskussion

Jochen

halt so ein bisschen angeguckt

Jochen

und die hinter,

Jochen

hat mich so ein bisschen

Jochen

hoffnungslos

Jochen

zurückgelassen,

Jochen

weil,

Jochen

also auch die Leute,

Jochen

die sich damit beschäftigt haben,

Jochen

die sind ja,

Jochen

haben das ja auch,

Jochen

das sei ja das Ziel

Jochen

und das Ergebnis war,

Jochen

geht nicht.

Jochen

Ja, das Problem ist halt,

Jochen

man will sich aber

Jochen

damit gar nicht beschäftigen.

Jochen

Doch, doch,

Jochen

da haben sich,

Jochen

oh yeah,

Jochen

da haben sich viele Leute

Jochen

ganz lange mit beschäftigt.

Jochen

Ich möchte mich nicht

Jochen

damit beschäftigen,

Jochen

was für Problem-Python

Jochen

beim Packaging installieren

Jochen

beim VENV hat,

Jochen

sondern ich möchte

Jochen

Packages installieren,

Jochen

die die benutzen.

Jochen

Ja, aber,

Jochen

weil ich möchte halt

Jochen

Programme schreiben.

Jochen

Ja, aber die Frage ist,

Jochen

ist das überhaupt möglich

Jochen

bei einer so alten Sprache?

Jochen

Geht das?

Jochen

Und bei Rust,

Jochen

also die Antwort ist,

Jochen

warum geht das bei Rust,

Jochen

ist halt,

Jochen

die Antwort darauf ist halt,

Jochen

das geht deswegen,

Jochen

weil das eine sehr junge Sprache ist

Jochen

und weil man all die Dinge,

Jochen

die man früher bei Python macht,

Jochen

hat da halt nicht drin.

Jochen

Ja, aber da müssen wir

Jochen

auftärmen,

Jochen

das sind also,

Jochen

so jung ist Rust nicht.

Jochen

Ja, aber das Problem ist,

Jochen

das ist ja,

Jochen

ja, aber ein Großteil

Jochen

von dem Zeug,

Jochen

das verwendet wird,

Jochen

ist halt älter als 20 Jahre

Jochen

und macht Dinge,

Jochen

die total komisch sind.

Jochen

Und dann,

Johannes

Johann, was würdest du sagen,

Johannes

wann ist Rust erschienen?

Johannes

Wann war das erste Release

Johannes

von Rust?

Johannes

Ich glaube,

Johannes

das ist etwas mehr

Johannes

als 10 Jahre her.

Jochen

Also irgendwann 2013,

Jochen

2015?

Jochen

15. Mai 2015,

Jochen

also 9 Jahre.

Jochen

Ah, gut.

Jochen

Nicht so schlecht.

Jochen

Habe ich sogar ein bisschen

Jochen

zu alt geschätzt, ja.

Jochen

Ja, okay,

Jochen

aber also ganz junge Sprache

Jochen

ist es auch nicht mehr.

Jochen

Nee, aber viel, viel jünger

Jochen

als Python,

Jochen

viel, viel jünger.

Jochen

Ja, gut,

Jochen

das stimmt natürlich.

Jochen

Wobei Python 3

Jochen

ist jetzt auch noch nicht,

Jochen

ist doch auch erst

Jochen

seit ein paar Jahren.

Jochen

Ja.

Jochen

Ich sage ja,

Jochen

wir zeigen Python 4.

Jochen

Okay, ja.

Jochen

Die nächste Version

Jochen

ist Python 8, oder?

Jochen

Da gab es doch mal

Jochen

so einen April-Scherz.

Jochen

So ein Pep,

Jochen

wie die nächste Python-Version

Jochen

heißen sollte

Jochen

und dass man dann

Jochen

immer additiv vorgeht.

Jochen

Der große Vorteil

Jochen

von dem Versionsschema

Jochen

ist, dass man

Jochen

alle anderen Versionen

Jochen

einholt.

Dominik

Das war auch ein lustiger Talk.

Dominik

Wer ist nochmal

Dominik

der Release-Manager

Dominik

von 13 und 14?

Dominik

Wisst ihr?

Jochen

Thomas Waters?

Jochen

Kann er auf jeden Fall,

Jochen

ja.

Jochen

Ich meine,

Dominik

der war auch lustig,

Dominik

weil er meinte nämlich,

Dominik

er möchte gerne

Dominik

das Versioning

Dominik

von Python ändern,

Dominik

einfach auf Jahreszahlen

Dominik

anpassen.

Dominik

Dann wäre es halt

Dominik

demnächst Python 24

Dominik

einfach,

Dominik

dann Python 25.

Dominik

Und dann aber

Dominik

mit drei davon,

Dominik

wenn wir drei behalten,

Dominik

dann 325,

Dominik

weil Semantik-Version

Dominik

irgendwie Blut wäre.

Dominik

Dann müssen sie sich

Dominik

aber auch noch

Dominik

irgendwelche lustigen

Dominik

Tiernamen ausdenken,

Dominik

die da dazu passen.

Dominik

Ja.

Dominik

Und bitte

Dominik

alphabetisch aufsteigend.

Dominik

Ja, genau,

Dominik

so ungefähr.

Dominik

Ja, das war dann

Dominik

die Debatte.

Dominik

Ja, also ich meine,

Dominik

es gab viel Spaß

Dominik

und die Talks sind

Dominik

sicher auch irgendwann bald da

Dominik

und die kann man sich

Dominik

alle angucken

Dominik

gucken.

Dominik

Es gab ja

Dominik

verschiedene Tracks,

Dominik

der Data-Track war

Dominik

relativ viel vertreten

Dominik

wieder.

Dominik

LLMs und so

Dominik

sind ja wie immer

Dominik

hoch dabei.

Dominik

Ich hatte nicht

Dominik

das große Glück,

Dominik

dass ich jetzt da

Dominik

so einen Talk erwischt

Dominik

hatte, der mich

Dominik

so total faszinierte.

Dominik

Die waren immer sehr,

Dominik

ich sag mal,

Dominik

High-Level,

Dominik

was jetzt auch

Dominik

nicht schlecht sein muss.

Dominik

Aber ja,

Dominik

bis auf so ein paar Sachen,

Dominik

die halt darum gingen,

Dominik

so wie man das vielleicht

Dominik

mit dem Trainieren

Dominik

noch ein bisschen

Dominik

besser hinkriegt

Dominik

oder mit dem Feintunen,

Dominik

dass man ein bisschen

Dominik

effektiver sein kann

Dominik

und nicht so viel

Dominik

Speicher dafür braucht

Dominik

oder so.

Dominik

Aber das müssten wir uns

Dominik

eigentlich mal für eigene

Dominik

Episoden irgendwann aufheben.

Dominik

Sowas.

Dominik

Ja.

Dominik

Was für News

Dominik

haben wir noch, Jochen?

Dominik

Ah ja,

Dominik

jetzt wo es um

Dominik

Euro-Python ging,

Dominik

was mir eingefallen ist,

Dominik

stimmt,

Dominik

wir hatten ja

Dominik

letztes Mal auch

Dominik

über die DjangoCon

Jochen

Europe 2024 geredet

Jochen

und die Vorträge

Jochen

sind jetzt online.

Jochen

Ja.

Jochen

Können Sie sich angucken

Jochen

und da bin ich jetzt

Jochen

gerade dran,

Jochen

die so ein bisschen

Jochen

nach und nach anzugucken,

Jochen

die ich interessant finde.

Jochen

Und da habe ich auch

Jochen

schon interessante gesehen.

Jochen

Da war auch jetzt

Jochen

diese Woche

Jochen

ein Treffen

Jochen

der Pythons

Jochen

User Group,

Jochen

Django Cologne

Jochen

User Group,

Jochen

wo es dann halt

Jochen

auch einen Vortrag gab

Jochen

über Background Tasks,

Jochen

was ganz interessant war.

Jochen

Genau.

Jochen

Und ja,

Jochen

das klingt alles

Jochen

tatsächlich ziemlich interessant.

Jochen

Also da haben sich schon

Jochen

Gedanken über das Interface

Jochen

gemacht.

Jochen

Salary ID.

Jochen

Ja, könnte sein,

Jochen

was eine gute Sache wäre.

Jochen

Ja, und es wäre richtig gut.

Jochen

Ja, aber

Jochen

da wollte ich noch sagen,

Jochen

weil du gesagt hast,

Jochen

die ganzen Talks gucken,

Jochen

das war tatsächlich auch super.

Jochen

Ich mag dieses

Jochen

hybride Format

Jochen

von Konferenzen.

Jochen

Auch bei der Europe Heist

Jochen

konnte man halt,

Jochen

weil abends,

Jochen

wenn man ganz

Dominik

schon durch war

Dominik

von dem ganzen Tag

Dominik

und die ganzen Konferenzen

Dominik

live gesehen hat,

Dominik

sich nochmal den Track

Dominik

von den Sachen,

Dominik

die man verpasst hatte,

Dominik

bei YouTube auf anderthalbfach

Dominik

angucken zum Einschlafen

Dominik

oder zum Runterkommen.

Dominik

Ja, das war sehr cool.

Dominik

Das heißt,

Dominik

man kann alle Sachen

Dominik

parallel gucken gleichzeitig

Dominik

oder länger frühstücken,

Dominik

wenn man mag.

Dominik

Was echt schön ist.

Dominik

Sehr zu empfehlen.

Dominik

Sehr zu empfehlen.

Jochen

Ja, ansonsten

Jochen

so in Ermangelung

Jochen

von Dingen,

Jochen

die jetzt mit Pythons

Jochen

so viel zu tun haben,

Jochen

was mich hier gerade

Jochen

so noch so ein bisschen

Jochen

umtreibt,

Jochen

ist halt,

Jochen

ach ja,

Jochen

es war bald Urlaub

Jochen

und ich habe ein bisschen

Jochen

neue Hardware

Jochen

irgendwie mir zugelegt.

Jochen

Jochen,

Jochen

das ist keine Werbeveranstaltung

Jochen

hier.

Jochen

Nee, aber

Jochen

was ganz cool ist,

Jochen

es gibt jetzt so ein,

Jochen

tatsächlich,

Jochen

also dieser Haushalt

Jochen

enthält Computer,

Jochen

kann Spuren von Computern

Jochen

enthalten

Jochen

und der schnellste Computer

Jochen

in diesem Haushalt

Jochen

ist jetzt ein iPad.

Jochen

Und ja,

Jochen

also da sind ja

Jochen

diese M4-Dinger drin,

Jochen

die sind sackschnell.

Jochen

Also es ist unglaublich

Jochen

schnell.

Dominik

Also lässt du das jetzt

Dominik

deine Machine Learning-Modelle

Dominik

tunen?

Dominik

Aber das ist doch kein

Johannes

General-Purpose-Computer.

Johannes

Nee, leider nicht.

Johannes

Argumentiert,

Johannes

dass es kein

Johannes

General-Purpose-Computer ist.

Jochen

Ja, das ist blöd,

Jochen

aber es wäre voll cool,

Jochen

wenn es ein

Jochen

General-Purpose-Computer wäre,

Jochen

weil es wäre nämlich

Jochen

der schnellste,

Jochen

den ich hätte.

Jochen

Bau doch einfach

Jochen

die CPU aus.

Jochen

Ja.

Jochen

Kannst nicht

Jochen

Wanders einlöten.

Jochen

Nee.

Jochen

Genau, also ja,

Jochen

das ist so ein bisschen

Jochen

so,

Jochen

aber das Ding ist tatsächlich,

Jochen

also es gibt das,

Jochen

M4 gibt es auch noch

Jochen

in keinem anderen Gerät

Jochen

irgendwie von Apple,

Jochen

also nur im iPad.

Jochen

Ja, es ist schon

Jochen

so ein bisschen traurig.

Jochen

Es gab auch eine Tastatur

Jochen

diesmal mit einer

Jochen

Escape-Taste,

Jochen

sodass halt irgendwie

Jochen

mit der Escape-Taste

Jochen

kannst du eigentlich

Jochen

auf iOS überhaupt

Jochen

gar nichts anfangen,

Jochen

sodass halt viele Leute

Jochen

gedacht haben,

Jochen

es kommt irgendwann

Jochen

ein Mac OS für iPad,

Jochen

was auch voll cool wäre,

Jochen

aber nein,

Jochen

kam nicht.

Jochen

Und ja,

Jochen

jetzt habe ich ein iPad

Jochen

und kann es nicht benutzen.

Jochen

Ein bisschen doof,

Jochen

aber ja,

Jochen

ansonsten wirklich

Jochen

sehr schnell.

Jochen

Du darfst ja schnell

Jochen

YouTube gucken.

Jochen

Ja, genau.

Jochen

Und gut, genau.

Jochen

Ich habe noch so eine

Jochen

Platine mitgebracht,

Jochen

die kann man sich

Jochen

ankleben und

Jochen

mit so einem Magneten

Jochen

und da kann man

Jochen

so einen Text hin und her

Jochen

laufen lassen.

Jochen

Und da gibt es

Jochen

so ein Python-Modul,

Jochen

da kann man dann

Jochen

den Text auswählen.

Jochen

Und das ist

Jochen

dein schnellster Computer?

Jochen

Ja, genau.

Jochen

Und ja,

Jochen

ansonsten gab es

Jochen

noch so ein bisschen

Jochen

irgendwie,

Jochen

ja,

Jochen

LLM-Krams.

Jochen

Ja, da gibt es

Jochen

doch immer was,

Jochen

oder?

Jochen

Ja, also

Jochen

SAPIC hat tolle neue Modelle

Jochen

rausgebracht,

Jochen

die ziemlich beeindruckend sind.

Jochen

Ja, und Mistral

Jochen

hat jetzt,

Jochen

ich glaube,

Jochen

heute ein neues Modell

Jochen

rausgebracht.

Jochen

Nemo heißt das,

Jochen

mit einem neuen Embedding.

Jochen

Die haben einen neuen

Johannes

Embedder trainiert,

Johannes

der wohl deutlich besser ist.

Johannes

Das müsste man sich

Johannes

mal anschauen.

Johannes

Und dieses Nemo-Modell

Johannes

hört sich auch interessant an.

Johannes

Da ist Zusammenarbeit

Johannes

mit Nvidia entstanden.

Johannes

Das ist ein 12B-Modell.

Johannes

Das ist also etwas größer

Johannes

als diese 7B-Modelle

Johannes

und das ist wohl

Johannes

genau so trainiert,

Johannes

dass du es auf einer

Johannes

normalen Grafikkarte

Johannes

laufen lassen kannst.

Johannes

Also auf einer

Johannes

40, 90...

Johannes

Ja, die haben ja alle

Johannes

11, 12 Gigabyte

Johannes

Hauptspeicher, ja.

Johannes

Genau.

Johannes

Und das ist wohl auch

Johannes

schon so trainiert,

Johannes

dass es mit FP8 geht,

Johannes

ohne Leistungsabfall.

Johannes

Und das ist natürlich

Johannes

direkt sehr praktisch.

Johannes

Ja, ich habe auch

Johannes

letztens gesehen,

Johannes

dass irgendjemand quasi,

Jochen

also war das

Jochen

Microsoft Research?

Jochen

Ich weiß es nicht.

Jochen

Ich hatte ein Paper

Jochen

veröffentlicht zu einem

Jochen

Modell,

Jochen

dass die gleiche

Jochen

Performance irgendwie

Jochen

überführt wird.

Jochen

Viele unterschiedliche,

Jochen

oder sogar deutlich

Jochen

bessere Performance

Jochen

über viele unterschiedliche

Jochen

Benchmarks hingekriegt hat

Jochen

als GPT-3.5,

Jochen

aber auf einer

Jochen

einzelnen GPU läuft.

Jochen

Also auf so einer

Jochen

Consumer-GPU.

Jochen

Und das war auch

Jochen

zum ersten Mal,

Jochen

dass das jemand

Jochen

geschafft hat,

Jochen

quasi GPT-3.5

Jochen

auf irgendwie

Jochen

so Consumer-Hardware

Jochen

zu schlagen.

Jochen

Und das auch

Jochen

selber ein...

Jochen

Also das geht jetzt,

Jochen

du kannst da wirklich

Jochen

auf deinem Rechner zu Hause

Jochen

irgendwie Sachen

Jochen

laufen lassen,

Jochen

lokal,

Jochen

auf deiner

Jochen

Spielegrafikkarte,

Jochen

die halt irgendwie

Jochen

das,

Jochen

das Chat-GPT

Jochen

von,

Jochen

vom Anfang halt

Jochen

deutlich schlagen.

Jochen

Und das ist interessant.

Jochen

Also,

Jochen

ja,

Jochen

es geht dran.

Jochen

Ja,

Jochen

da tun sich doch

Jochen

viele Dinge.

Jochen

Das ist schön,

Jochen

dass da so,

Jochen

auch so,

Jochen

auch so völlig,

Johannes

sag ich mal,

Johannes

normale Sachen,

Johannes

ja,

Johannes

dass sich jetzt hier

Johannes

GPT-4 und 4.0

Johannes

und so,

Johannes

dass die sich

Johannes

weiterentwickeln

Johannes

und Cloud Sonnet

Johannes

und so weiter.

Johannes

Ach so,

Johannes

und das

Johannes

Mistral-Nemo-Modell

Johannes

hat ein 128K

Johannes

Contacts-Window.

Johannes

Das ist eine

Johannes

Besonderheit.

Johannes

Das ist auch

Johannes

was Interessantes,

Johannes

weil die anderen

Johannes

lokalen Modelle

Johannes

hatten ja immer nur

Johannes

irgendwie 4K

Johannes

oder 8K.

Johannes

Ja.

Johannes

Und das,

Johannes

das macht doch

Johannes

nochmal deutlich

Johannes

eine Schicht aus.

Johannes

Dass sich so,

Johannes

so ganz normale

Johannes

Sachen,

Johannes

sag ich mal,

Johannes

weiterentwickeln,

Johannes

dass man eben,

Johannes

genau wie du sagst,

Johannes

Jochen,

Johannes

das jetzt auf

Johannes

normalen GPUs

Johannes

laufen lassen kann

Johannes

und dass die Modelle

Johannes

größer und schneller

Johannes

und trotzdem

Johannes

skalierbar werden

Johannes

und dass,

Johannes

dass es auch

Johannes

in der Richtung

Johannes

Entwicklung gibt,

Johannes

das finde ich

Johannes

eigentlich ziemlich cool.

Johannes

Ja.

Johannes

Dass es nicht nur so

Johannes

eben in diesen,

Johannes

in diesen Hochburgen

Johannes

und in den

Johannes

Diensteanbietern

Johannes

festhängt,

Johannes

sondern die Szene

Johannes

ist auch sehr lokal.

Johannes

Und wenn man sich

Johannes

da mal so dieses,

Johannes

wenn man sich

Johannes

Hugging Face anguckt,

Johannes

ja,

Johannes

und wie viele

Johannes

Pflege von Lama es gibt

Johannes

und dann gibt es

Johannes

manche,

Johannes

wo die,

Johannes

wo das

Johannes

Sicherheitstraining

Johannes

weg ist

Johannes

und der Einzel

Johannes

spricht nur

Johannes

keine Art und Sprache

Johannes

und der Einzel

Johannes

ist nur

Johannes

mit diesem,

Johannes

das und jenes

Johannes

kann.

Johannes

Ja.

Johannes

Es ist schon schön,

Johannes

dass da was passiert.

Johannes

Ja, genau.

Johannes

Ja, und die,

Johannes

die andere Seite,

Johannes

also OpenAI und so,

Johannes

das ist auch interessant.

Johannes

Also überhaupt,

Johannes

da, da,

Johannes

da wollte ich auch noch

Johannes

wegen Apple irgendwie

Jochen

drauf zu sprechen kommen, die

Jochen

bauen ja jetzt dann irgendwie die Dinger ein

Jochen

in

Jochen

iOS und

Jochen

was eingebaut wird, ist auch

Jochen

GPT-4.0.

Jochen

Also du kriegst halt jetzt, wenn du ein iPhone

Jochen

oder sonst irgendwas kaufst, wahrscheinlich dann ab jetzt,

Jochen

wenn die neuen Geräte kommen, kriegst du halt

Jochen

oder eine neue iOS-Version, kriegst du

Jochen

halt quasi die Bezahl-Version

Jochen

von OpenAI

Jochen

irgendwie in deinem Gerät

Jochen

und

Jochen

das ist halt ein relativ dicker

Jochen

Deal wohl und dafür

Jochen

kriegst, also das ist glaube ich nur ein Gerücht, das ist

Jochen

noch nicht bescheidigt, aber. Er hat noch sogar einen

Jochen

Board-Seed. Ja genau, die haben jetzt

Jochen

Microsoft hat doch die Daten von allen

Johannes

iOS-Muttern. Haben sie wieder aufgegeben, sind nicht

Johannes

mehr.

Johannes

Sowohl Microsoft als auch Apple

Johannes

haben ihren Board-Seed aufgegeben. Es waren eh nur Beobachtende,

Johannes

aber haben sie beide, es haben sich beide zurückgezogen.

Jochen

Achso, okay, ich dachte

Jochen

eigentlich, dass jetzt

Jochen

sozusagen das Gerücht war, dass das Phil Schiller

Jochen

irgendwie ins Board von OpenAI geht, aber

Jochen

Ja, haben sie aber wieder

Jochen

zurückgezogen. Ah, okay, dann, naja,

Jochen

dann war ich halt schon nicht mehr so aktuell,

Jochen

aber ich meine. Ja, es bewegt sich so

Jochen

schnell, dass du nicht

Jochen

Wahnsinn. Wenn man hinguckt, ist schon alles ganz

Jochen

anders. Aber, naja,

Jochen

gut, also ich, in gewisser Weise verstehe ich es ja auch, also

Jochen

das große Problem von OpenAI ist ja irgendwie,

Jochen

dass sie halt zwar irgendwie ganz

Jochen

gute Modelle haben, aber sie haben halt

Jochen

die Geräte nicht da draußen. Also sie haben halt

Jochen

einen strukturellen Nachteil gegenüber sowas wie Google

Jochen

oder so. Google braucht das alles nicht. Die können

Jochen

einfach irgendwie über Android

Jochen

haben sie da halt einen riesen Hebel.

Jochen

Und, aber OpenAI,

Jochen

wenn sie halt nicht Partnerschaften

Jochen

mit Microsoft oder mit Apple

Jochen

haben, dann haben sie halt ein Problem, weil

Jochen

ja, wenn die, sonst

Jochen

passiert ihnen das, was halt irgendwie, keine Ahnung,

Jochen

Slack passiert ist mit Teams oder so

Jochen

und dann sind sie halt weg. Ja,

Jochen

insofern, ja, ist auf jeden Fall

Jochen

interessante Zeiten. Bin mal gespannt.

Jochen

Aber 4.0 ist auch so gut, also

Jochen

ich finde das hier auch dauernd, also

Jochen

dass das wahrscheinlich irgendwie

Johannes

Was machst du denn damit? Ja, programmieren.

Johannes

Ach so, ja, gut,

Johannes

okay, das, ich weiß nicht, das geht nicht in den

Johannes

Flow rein. Ja,

Dominik

aber auch Opus, das ist schon

Jochen

Ja, Opus ist auch super, also ja, absolut.

Jochen

Oder so nicht. Ja, du gibst

Dominik

halt einfach so Fragen und das stimmt

Dominik

dann auf einmal doch eher mehr

Dominik

als früher. Noch mehr

Dominik

als früher. Und dann, man kann es

Dominik

halt so steuern, ne? Habt ihr das irgendwo

Dominik

integriert oder? Ja, ja, ID.

Dominik

Also auch Konsole halt,

Dominik

ne? Und wenn man halt,

Dominik

dann kannst du halt auch pipen, mit Cut reinpipen

Dominik

irgendwas oder sag dann halt,

Dominik

äh, Template, äh,

Dominik

mach einen PyTest drauf oder so.

Dominik

Und das ist gut. Gute Vorschläge.

Dominik

Also die sind nicht immer ganz rein, aber man

Dominik

kann das ja auch modifizieren, kann sagen, so, ja, ein bisschen mehr

Dominik

in, ne, ein bisschen mehr Fixtures, ein bisschen weniger

Dominik

dies, ein bisschen weniger das, wenn man das nicht schon im System

Dominik

prompt eh schon drin stehen hat. Und dann ist das

Dominik

ziemlich das, was man will. Man kann ja auch so ein Beispiel

Dominik

geben, wie, hey, und so wie ich das hier gemacht hab,

Dominik

so, dass es ungefähr so sollte, könnte es

Dominik

aussehen. Und dann

Dominik

fertig.

Johannes

Ich bin ja mal neidisch, wenn da Leute

Johannes

das so erzählen, weil ich komm mit,

Johannes

mit solchen Systemen einfach irgendwie nicht in den,

Johannes

ich komm nicht in den Flow.

Johannes

Vielleicht muss man sich da mal zusammensetzen.

Johannes

An E-Mails, Johannes.

Johannes

Ich hab doch Peitscham, bin doch

Johannes

Peitscham-Unterstützer.

Johannes

Ja, aber

Jochen

hast du da den, den Copilot zum Beispiel an

Jochen

oder so? Weil das ist auch schon ganz okay. Also

Jochen

ich find, ehrlich gesagt, das ist nicht so gut, wie wenn man

Jochen

jetzt quasi direkt mit, ähm.

Dominik

Wann hast du das letzte Mal probiert, Johan?

Johannes

Keins, keins dieser Systeme

Johannes

hat mich je überzeugt.

Johannes

Okay. Hab's, hab's ein paar Mal probiert und das war,

Johannes

jedes Mal so, ne.

Johannes

Johannes hätte es besser gewusst.

Johannes

Das, vielleicht ist das Problem, vielleicht

Johannes

weiß ich es einfach besser. Ja, ich würd's auch sagen.

Dominik

Ja gut, kann man. Da würd ich aber sagen, dass das

Dominik

genau das. Ne, wenn der Jochen sagt,

Johannes

dass das bei ihm hilft, dann kann das

Johannes

bei mir nicht sein, dass ich es besser weiß.

Johannes

Also hier ist eine wundervolle, wundervolle

Dominik

Überleitung jetzt übrigens, weil Tim Peters, der

Dominik

äh, Co-Entwickler und

Dominik

Autor von Zen auf Python, das ihr bestimmt alle kennt, ne,

Dominik

im Prozess, äh, dann meinte

Dominik

der Plan wäre, wenn jemand ein Feature entwickelt,

Dominik

das du nicht verstehst, dann knall ihn einfach ab.

Dominik

Ja. Und das ist der Einstieg

Dominik

in das wunderschöne Buch von

Jochen

Python. Ja, muss man direkt mal klar machen, wie

Jochen

die Sachen dann so laufen und, äh, genau.

Dominik

Das ist auf jeden Fall einfacher, als etwas Neues zu lernen.

Jochen

Ja, und dann am Schluss hat man nur noch Leute, die

Jochen

irgendwie kein Problem mehr haben, das zu verstehen, was man sagt.

Dominik

Und, ja, und bevor, äh, die einzelnen

Dominik

lebenden, überlebenden Entwickler, dann

Dominik

ja, kann man ein

Dominik

kleines Stück von dem, was man schon tun kann,

Dominik

dann verwenden und kommt damit irgendwie weiter.

Dominik

Also sind wir jetzt bei Flut und Python?

Dominik

Sind wir jetzt bei Flut und Python?

Dominik

Sind die News, äh, ja, ich würde tatsächlich,

Dominik

tatsächlich jetzt so ein bisschen unser

Dominik

Quatsch versuchen, in eine Struktur

Dominik

zu überführen, die uns ein bisschen zurückführt auf

Dominik

dieses wundervolle

Jochen

Python-Data. Also ich, Flut und,

Jochen

was heißt denn Flut und Flüssig? Also ich habe, wollte nicht

Jochen

über das Buch sprechen eigentlich. Fließend, fließend.

Jochen

Ich wollte eigentlich, eigentlich wollte ich gar nicht erwähnen,

Jochen

dass das Buch, äh, das, das, das jetzt

Jochen

aus dem Buch klaut, aber gut. Ach so, du, du, ach so,

Dominik

du wolltest einfach so tun, als ist das deine, deine,

Dominik

Entschuldigung.

Dominik

Ach so, so gründlich versaut.

Dominik

Okay. Ja.

Jochen

Ja, nee, wir können das auch sagen.

Jochen

Ist ja kein Problem, aber, äh, genau, was wir,

Jochen

dann können wir es schon abgeben, finde ich, ja. Was es, was es

Jochen

heute, äh, im Grunde geht, ist halt, wie,

Jochen

sie nennen das Python-Data-Model, oder

Jochen

im Buch wird es auch so genannt, es wird auch in der Referenz

Jochen

so genannt. Es gibt andere Leute, die nennen das

Jochen

irgendwie anders, Python-Object-Model oder so.

Jochen

Und im Grunde geht es darum,

Dominik

was ist denn das jetzt überhaupt wieder alles?

Dominik

Genau. Also ich tue jetzt mal einmal so, ne.

Dominik

Ja, ja.

Dominik

Tu mal so, als ob du das nicht wüsstest, damit ich. Ja, genau, das sag ich doch.

Dominik

Ja. Wie immer.

Dominik

Ähm.

Dominik

Also zum Beispiel,

Jochen

ist halt die, die, die, die,

Jochen

ein super Beispiel ist halt, um da

Jochen

vielleicht einen Einstieg zu finden, warum sagt man

Jochen

in Python eigentlich irgendwie len

Jochen

von irgendwas, irgendeiner Collection oder so

Jochen

und nicht collection.len

Jochen

Klammer auf, Klammer zu, wie man das jetzt vielleicht

Jochen

in Ruby machen würde oder so. Ich weiß ehrlich gesagt

Jochen

gar nicht, wie man es in Ruby macht, aber

Jochen

In Java, sehr gerne. In Java, in Java.

Jochen

Die machen das komisch. Genau.

Jochen

Warum macht man das eigentlich so? Und, ähm,

Jochen

ja, also der,

Jochen

das, was halt, äh,

Jochen

Python an der Stelle

Jochen

halt anders macht, ist halt,

Jochen

dass es irgendwie ein bisschen

Jochen

objektorientierte Purity sozusagen

Jochen

irgendwie opfert, um halt eine Menge

Jochen

andere Vorteile zu kriegen.

Jochen

Und, ähm, ja, das macht es, also das ist

Jochen

überhaupt so eine charakteristische Geschichte von, von

Jochen

Python, dass man halt, ähm,

Jochen

oft irgendwie, ja, halt nicht

Jochen

die, die reine Lehre irgendwie macht, sondern

Jochen

halt irgendwie etwas, was nicht ganz so rein ist,

Jochen

aber was halt praktisch viel besser funktioniert.

Dominik

Okay, ich verstehe jetzt meine Sache nicht. Also warum ist erstens irgendwas mit

Dominik

Klasse und Attribut und Methode

Dominik

called die reine Lehre und zweitens, was ist das

Dominik

Problem, wenn man irgendeine Funktion hat oder eine

Dominik

äh, äh, call it whatever you like

Dominik

oder eine Closure und kippst da, äh,

Dominik

ein Objekt rein und dann

Dominik

passieren Dinge damit? Naja, also

Jochen

sozusagen, wenn du jetzt reine Objektorientierung

Jochen

machen wollen würdest, dann würde man ja

Jochen

sagen, naja gut, du schickst halt irgendwie Nachrichten an

Jochen

ein Objekt oder du rufst halt Methoden auf oder was auch immer,

Jochen

wie man das nennt. Und das

Jochen

ist dann die Sache des Objekts.

Jochen

Warum? Ja, so ist es halt gedacht.

Johannes

Also, ja. Das ist zum Beispiel in Java so.

Dominik

Ja, aber warum ist das so? Java heißt

Johannes

Kingdom of Nouns und, äh,

Johannes

äh, es gibt quasi keine

Johannes

Funktionen in Java, sondern es gibt nur Objekte und

Johannes

denen kannst du Nachrichten schicken und die machen

Johannes

dann irgendwas. Und das ist der einzige

Johannes

Mechanismus, den es im Wesentlichen gibt. Und selbst

Johannes

wenn du sowas hast wie eine Main-Funktion,

Johannes

dann hast du da irgendwo eine Klasse und dann ist es halt

Johannes

eine Static-Methode

Johannes

auf dieser Klasse drauf. Und

Johannes

anstatt, dass du sagst, äh,

Johannes

wenn unser Programm läuft, dann rufen wir die Main-Funktion

Johannes

auf, sagst du, wir schicken eine

Johannes

Main-Nachricht an unsere Main-Klasse.

Johannes

Aber warum

Johannes

würde man auf die Idee kommen, dass das eine gute

Dominik

Idee sein könnte?

Dominik

Naja. Also, was ist

Dominik

das? Also, ich muss mal kurz über die Trade-Offs reden,

Dominik

um das mal so zu rütteln. Warum wollte man

Dominik

denken, dass das eine gute Idee sein könnte, sowas

Dominik

zu tun? Naja,

Jochen

es reduziert natürlich schon die Anzahl von

Jochen

Dingen, die es so gibt.

Jochen

Es sind halt nur Objekte und Methodenaufrufe und mehr nicht.

Dominik

Und das ist warum gut?

Dominik

Also, Simplicity...

Dominik

Einfach eine Sache lernen.

Jochen

Weil Einfachheit ein Wegweiser zur Wahrheit ist.

Jochen

Oder zur Schönheit oder so.

Jochen

Okay.

Dominik

Point 1 für den Java-Entwickler.

Dominik

Für den dir.

Dominik

Ja. Okay, und

Dominik

warum ist es denn nicht auch einfach,

Dominik

einfach sowas wie

Dominik

funktionale Programmierung zu machen und da

Dominik

Zeug hintereinander hin und her zu reichen?

Dominik

Was fehlt einem denn da in diesem Vergleich?

Jochen

Funktionale Programmierung ist ja auch was anderes.

Jochen

Das gibt's auch, aber das ist was ganz anderes.

Jochen

Also, das ist ja...

Jochen

Also, kann man auch machen. Aber dann...

Jochen

Also, das wäre... Kannst du auch

Jochen

Pure haben, sowas wie Haskell oder so,

Jochen

oder Erlang oder weiß ich nicht.

Jochen

Ah, Standard-ML.

Jochen

Ja. Haskell, ja, diese modernen...

Jochen

Ja.

Jochen

Aber das ist halt

Jochen

ein anderes Konzept als jetzt Objektorientierung.

Jochen

Naja, aber wir sprechen gerade...

Jochen

Von ästhetischer Einfachheit

Jochen

oder so. Jaja, ist es auch.

Jochen

Aber es ist halt anders. Da gibt's halt dann nur

Jochen

Funktionen, sozusagen. Okay, aber ich wollte

Jochen

kurz auf die Trade-Offs hinaus, weil...

Jochen

Warum ist das jetzt...

Jochen

Naja, also

Jochen

der Grund, warum man jetzt denken könnte, dass es halt im Halten

Jochen

nicht so schön ist halt, dass man sagt,

Jochen

jetzt muss man halt auch noch so... Jetzt haben wir so Build-ins wie

Jochen

Len oder so, die so ein bisschen komisch sind.

Jochen

Aber tatsächlich hat es halt

Jochen

praktisch sehr viele Vorteile, wie

Jochen

ähm... Naja, ähm...

Jochen

Also, einmal

Jochen

du musst dir nicht für jedes Objekt merken,

Jochen

wie das denn jetzt nun heißt

Jochen

mit dieser Methode, weil das kann ja jeder dann anders

Jochen

machen. Das wäre ja irgendwie schlecht.

Jochen

Sondern... Das ist zum Beispiel ein Problem, was

Jochen

PHP hat. Ja. Oder JavaScript.

Johannes

Da heißt es manchmal Size und manchmal Length

Johannes

und manchmal Count. Ja.

Jochen

Ja. Und, ähm...

Jochen

Eine andere Geschichte ist halt, es ermöglicht

Jochen

dir halt, äh, irgendwie

Jochen

so ein paar dreckige Optimierungen

Jochen

zu machen, die halt irgendwie

Jochen

die Dinge, die wirklich, äh, Zeit

Jochen

kosten, irgendwie deutlich schneller zu machen. Wie zum Beispiel

Jochen

äh, du kannst halt

Jochen

da diese Sachen...

Jochen

Tatsächlich, was Len halt macht, ist ja

Jochen

schon dann quasi, wenn das

Jochen

ein Objekt ist, einer Klasse, die du erstellt hast,

Jochen

dann wird halt, äh, dann da

Jochen

Len aufgerufen. Schon doch die Methode,

Jochen

die geheime... Die Methode aufgerufen.

Jochen

Mhm. Äh, aber die ist halt

Jochen

nicht dafür da, dass, ähm, irgendwie

Jochen

andere die aufrufen, sondern, äh,

Jochen

oder dass man die von Hand aufruft, ähm,

Jochen

zu Fuß, äh, oder wie auch immer, sondern die ist

Jochen

halt dafür da, dass der Interpreter die aufruft.

Jochen

Wenn man halt Len von

Jochen

irgendwas sagt. Und dann ruft

Jochen

der Interpreter die auf, aber der Interpreter kann halt auch andere Dinge tun.

Jochen

Der kann zum Beispiel jetzt, wenn das ein, ähm,

Jochen

irgendwie so ein

Jochen

native, also ein Ding im Interpreter selber ist,

Jochen

also oder irgendwie ein C

Jochen

geschriebenes Ding, wie ein Dikt oder eine Liste

Jochen

oder sowas ist, dann kann es halt direkt,

Jochen

äh, irgendwie in diesem PyObject irgendwie

Jochen

drauf gucken, wie lang ist denn dieser, dieses Ding

Jochen

und gibt es dann halt zurück. Und muss halt keine

Jochen

Methode aufrufen. Also Methodenaufrufe sind halt

Jochen

etwas, was halt in Python super langsam ist.

Jochen

Oder in allen interpretierten

Jochen

Programmiersprachen, die so ähnlich sind wie Python,

Jochen

sind halt Funktionsaufrufe, Methodenaufrufe immer

Jochen

total langsam. Ist halt, da ist

Jochen

wirklich so ein Faktor tausend dazwischen, zwischen

Jochen

irgendwie reinem C und

Jochen

Funktionsaufruf und, äh, und Python

Jochen

oder so. Und, äh, ja,

Jochen

für die ganzen

Jochen

Standardfälle, wo man das halt benutzt,

Jochen

kann der Interpreter das halt alles

Jochen

wegoptimieren. Und dann macht er das halt einfach nicht.

Jochen

Sondern da wird gar nichts aufgerufen.

Jochen

Ähm, ja. Also das sind halt

Jochen

zwei große Vorteile, die man halt kriegt,

Jochen

wenn man halt ein bisschen Reinheit

Jochen

opfert, sozusagen. Und, ähm,

Jochen

genau. Das ist halt irgendwie diese Balance zwischen

Jochen

irgendwie, äh,

Jochen

Reinheit und, und funktioniert

Jochen

super. Und Magie. Genau.

Jochen

Ist halt so eine Spezial... Ja, Magie

Jochen

mag der, mag jetzt zum Beispiel der Autor

Jochen

von Flunepython an der Stelle gar nicht so

Jochen

gerne. Äh, so der, der

Jochen

also, man, man nennt die Dinger ja irgendwie

Jochen

äh, äh, Magic Methods auch.

Jochen

Also dieser, äh, Magic Methods

Jochen

ähm, äh, die...

Johannes

Das finde ich eine sehr schöne Diskussion. Ja. Über diese

Johannes

Namen, über die Magic Methods und über die

Johannes

Nicht-Magic Methods. Ja, ja.

Jochen

Fand ich, fand ich auch so. Das kommt halt so aus der

Jochen

Ruby, Ruby Community. Das wusste ich gar nicht.

Jochen

Ich dachte eigentlich, das gibt halt ein paar

Jochen

Python-Entwickler, die nennen das halt Magic Methods.

Jochen

Die dann sagen halt Dunder Methods oder sowas. Oder...

Jochen

Ja, aber

Jochen

in, in der Ruby-Welt ist das wohl

Jochen

üblich. Und, ähm,

Jochen

ja, aber der... Das ist der offizielle Name,

Johannes

oder, in Ruby? Ja, ja. Das, das, die heißen

Johannes

Magic Methods. Genau.

Jochen

Ja, oder auch in iPython oder so

Jochen

heißen die auch irgendwie Magic und dann gibt's diverse...

Jochen

Aber, aber... Aber das ist ja auch

Jochen

wirklich Magic. Das ist wirklich Magic? Okay.

Jochen

Aber eigentlich sind halt eben

Jochen

die, die Python-Dinger gar nicht Magic, sondern

Jochen

das ist halt eigentlich völlig klar, das dokumentiert, was das ist

Jochen

und was das tut. Und, ähm,

Jochen

insofern, der, der Autor sagt selber, okay,

Jochen

er findet das nicht gut. Die sollten lieber Muggel,

Jochen

Muggel-Methoden heißen oder so, weil sie halt

Jochen

so unmagisch sind. Aber

Jochen

ja. Ja, er nennt's ja dann auch

Jochen

auf Special Methods einfach. Special Methods

Johannes

ist auch ein guter Name. Ich glaube, das, was da,

Johannes

was da magisch ist, ist, dass man die

Johannes

implementiert und dann, äh, werden sie

Johannes

irgendwo her aufgerufen und... Ja.

Johannes

Wenn er das nicht weiß, dann ist das schon magisch.

Johannes

Ja, ich glaube auch. Dann gibt's Lenden von irgendwas ein

Johannes

und es wird aber was ganz anderes. Dass du für Anfänger

Dominik

es nicht ersichtlich, dass wenn du irgendwie so eine Methode dazu fügst,

Dominik

die Dinge macht, wo du nicht weißt, warum.

Dominik

Weil das unter der Haube passiert. Genau.

Dominik

Und, aber das Spiel war ja auch nicht, also magisch

Dominik

schon gut. Das macht ja Magie. Ah, es

Dominik

passiert irgendwas, ne, dann machst du einen String auf

Dominik

irgendein Objekt und dann kommt da irgendwas raus, weil du eine

Dominik

Repre-Methode beschriebst und dann, ah, Magie.

Dominik

Ne, so.

Johannes

Ja, ja. Wobei das natürlich eine sehr,

Johannes

eine sehr dünne Schicht Magie ist.

Johannes

Ja, das, äh, wie der Jochen schon gesagt hat, das, da gibt's

Johannes

eine Liste, so viel Magie gibt's

Johannes

und die sieht auch so und so aus und

Johannes

im Wesentlichen ist das ja nur eine syntaktische

Johannes

Umformung. Syntaktische Magie.

Johannes

Damit, syntaktische Magie, genau.

Dominik

Ja, aber das ist doch quasi echte Magie.

Dominik

Ich meine, echte Magie, da fummelt jemand

Dominik

vor den Augen mit deinem

Dominik

Fingerschnipsen rum und auf einmal zieht der hinterher

Dominik

seinem Ohr eine große, goldene, glänzende Münze.

Dominik

Ja, das sind Illusions.

Dominik

Das ist, das ist keine Magie. Das ist so ein bisschen

Dominik

aber so eine taktische Magie.

Johannes

Ja, aber echte Magie ist doch das, was man aus Harry Potter kennt.

Johannes

Dann schwingst du deinen Zauberstab und dann passiert

Johannes

irgendwas. Die richtigen Worte, der richtige

Jochen

Händler. In der richtigen Reihenfolge sagen, genau.

Johannes

Der macht irgendwas, was thermodynamisch nicht

Dominik

möglich ist. Ja, genau, aber sind wir uns eigentlich alle

Dominik

relativ einig, das gibt's halt auch nur in Harry Potter

Jochen

oder in. Ich weiß nicht, also ich finde

Jochen

tatsächlich. Und in Ruby. Die Analogie auch gar

Jochen

nicht so schlecht für Programmieren insgesamt. Also ich meine,

Jochen

halt, also ich meine, was ist, also man

Jochen

sagt irgendwie. Du sagst die richtigen Wörter

Jochen

in der richtigen Reihenfolge und dann passieren

Jochen

Dinge, genau.

Jochen

Ja, ich finde, das ist gar nicht so

Jochen

weit hergeholt, dass man dann das vergleicht. Deshalb sind wir

Jochen

alle Wizards. Ich hab auch den Wizard-Pullover.

Jochen

Es gibt auch tatsächlich Leute, die

Jochen

Nicht-Programmierer als Muggel bezeichnen.

Jochen

Also ich weiß, so weit würde ich jetzt nicht gehen vielleicht, aber.

Johannes

Echt, ich bezeichne die mal als NPCs.

Johannes

Ja. Nein.

Johannes

Tatsächlich, das

Johannes

erste Beispiel in einem

Johannes

nicht näher benannten Buch, was ich kürzlich gelesen

Johannes

habe,

Johannes

das hat mich tatsächlich etwas überrascht. Da war

Johannes

tatsächlich ein bisschen Magie drin. Und zwar,

Johannes

da wird ein

Johannes

Card-Deck implementiert.

Johannes

Ja. Und er implementiert nur

Johannes

zwei von diesen Methoden. Ja,

Johannes

für Kartentricks dann.

Johannes

Und er implementiert nur zwei

Johannes

Methoden, nämlich dann der Len und dann der Get-Item.

Johannes

Ja. Und

Johannes

das reicht aus für Slicing

Johannes

und Ranges und Wurst und Iteration.

Johannes

Das hat mich etwas überrascht,

Johannes

dass der Python-Interpreter sich aus einem

Johannes

Get-Item, aus einem Len,

Johannes

kann er sich alles zusammenbasteln. Ich meine, es ist nicht,

Johannes

wenn man so ein bisschen drüber nachdenkt, ist es

Johannes

einfach nur smart,

Johannes

dass das geht. Und es ist auch klar, dass das geht.

Johannes

Wenn ich weiß, wie viele es sind und ich ein einzelnes

Johannes

holen kann, dann kann ich

Johannes

auch mehrere holen. Okay, gut.

Johannes

Und ich kann auch

Johannes

Reverse machen drauf. Okay, auch das

Johannes

ist nicht arg überraschend.

Johannes

Und ich kann auch Iteration machen drauf. Okay, auch das

Johannes

ist nicht arg überraschend mehr.

Johannes

Aber dass es implementiert ist,

Johannes

das fand ich

Johannes

sehr cool.

Jochen

Ja, man delegiert im Grunde

Jochen

die ganze schlaue

Jochen

oder die ganze schwierige Funktionalität von

Jochen

wie das halt so funktioniert an die

Jochen

interne Liste in der Datenlage. Genau, wie das schnell auch funktionieren kann,

Dominik

indem man einfach so eine Len und ein Get-Item definiert.

Dominik

Ja, aber man ist nicht

Dominik

delegiert, sondern

Johannes

der ruft Len und Get-Item an.

Dominik

Ja, aber das macht dann die interne Repräsentation von Längen

Dominik

wird ja aufgerufen. Also das heißt, die Magie,

Dominik

die wirklich dann in C-Python-

Dominik

passiert, die ja damit schnell ist und so.

Dominik

Okay, also er implementiert.

Johannes

Gut, in dem Beispiel wird nicht implementiert,

Johannes

wie du tatsächlich

Johannes

Objekte speicherst, sondern benutzt eine Liste.

Jochen

Genau, es wird halt sozusagen, das wird weitergereicht,

Jochen

die Position wird weitergereicht an die Liste.

Jochen

Genau. Und die kann halt auch

Johannes

sein. Also die Implementierung

Johannes

dieser beiden Attribute ist

Johannes

tatsächlich,

Johannes

ist einfach durchdelegiert. Aber

Johannes

dass du dann daraus

Johannes

eine Slicing-Syntax kriegst mit Render.

Johannes

Ja, das ist ja, das macht ja der Interpreter

Johannes

für dich. Ja.

Johannes

Also der macht sich diese Ranges und ruft

Johannes

dann die einzelnen Get-Items auf.

Jochen

Ja. Also hat mich auch gewundert.

Jochen

Hätte jetzt auch nicht gedacht, dass

Jochen

man dann schon iterieren kann.

Jochen

Genau, das war

Jochen

mir gar nicht klar, dass das reicht, Get-Items

Dominik

zu implementieren. Also ich muss meine naive

Dominik

Karteninterpretation von meinem Kartenspiel, von meinem

Dominik

Pokerspiel auch nochmal anpassen, wenn ich das so sehe, weil

Dominik

tatsächlich ich da auch immer dann

Dominik

ein Objekt gemacht habe, an dem Karten dran waren, was natürlich

Dominik

dann eine Liste war, was aber nicht

Dominik

hieß, dass man einfach das Ding mischt,

Dominik

sondern man musste halt diese Mischmethode aufrufen. Ich glaube, das ist einfach

Dominik

totaler Quatsch.

Johannes

Ja, da gibt es aber auch verschiedene Ansätze.

Johannes

Da kannst du auch auf verschiedene Arten und Weisen

Johannes

drangehen. Du kannst drangehen und sagen, ich

Johannes

mache jetzt eine neue

Johannes

Klasse, die eine Liste

Johannes

einpackt und dann halt so ein paar magische Methoden,

Johannes

ich sage jetzt ja magische Methoden,

Johannes

exportiert. Oder du kannst sagen,

Johannes

ich behandle jetzt eine Liste wie

Johannes

ein XYZ.

Johannes

Und dann implementierst

Johannes

du erstmal selber gar nichts, sondern

Johannes

benutzt halt die Werkzeuge,

Johannes

die es gibt, auf eine bestimmte Art und Weise.

Dominik

Das sind ja schon zwei unterschiedliche, aber gleich

Dominik

herangehensweise. Aber dieser letzte Ansatz,

Dominik

das irgendwie wirkt, also smart,

Dominik

weil man halt tatsächlich nicht das Rad

Dominik

neu machen muss.

Dominik

Und ich glaube, das ist eigentlich sehr PySonic.

Dominik

Aber trotzdem sehr PySonic, sehr

Dominik

Implizites. Und in der Kombination,

Dominik

indem man das halt irgendwie schön

Dominik

modularisiert, kann man tolle Sachen machen.

Dominik

Also man muss so ein bisschen

Dominik

Boilerplate schreiben vielleicht, aber wie man es dann hinterher

Dominik

wirklich benutzt, wenn man diese Objekte in der Hand hat,

Dominik

wirkt einfach wie PurePython.

Dominik

Also, wenn man halt dann direkt auf dem Deck,

Dominik

was man in der Hand hat, Indizes

Dominik

machen kann, Ranges machen kann und so.

Jochen

Ja gut, hier geht es ja vor allen Dingen

Jochen

darum, diese Methoden zu erklären. Insofern

Jochen

überhaupt, ob man das jetzt so implementieren würde, weiß ich nicht.

Jochen

Also, keine Ahnung. Kommt drauf an, was man damit machen möchte.

Jochen

Aber, ja.

Jochen

Ja, ja, also ich finde es auch, ich finde es auch, also

Jochen

es sieht gut aus. Kann jetzt keiner sehen,

Jochen

weil es ein Podcast leider.

Jochen

Aber, ja, ja.

Jochen

Kannst du das teilen? Ist das public?

Jochen

Äh, nee.

Jochen

Oh.

Dominik

Na gut. Also, ich glaube, es gibt irgendwo

Dominik

bestimmt auf irgendwelchen Kanälen

Dominik

oder sowas. Ja.

Dominik

Das nächste Beispiel,

Johannes

was er bringt, fand ich auch interessant, aber das ist natürlich

Johannes

so ein bisschen dieses Vektorbeispiel.

Johannes

Das ist natürlich mehr so ein bisschen

Johannes

ja.

Dominik

Du musst das einfach unterleuchtern, bitte.

Dominik

Für alle unsere HörerInnen, was denn das Vektorbeispiel

Dominik

ist. Ja, er

Johannes

macht sich eine Klasse, eine

Johannes

zweidimensionale Vektorklasse.

Johannes

Also mit Richtung XY.

Johannes

Genau, also genau.

Johannes

Ein Koordinatenmodell, ein zweidimensionales

Johannes

Koordinatenmodell. Er sagt auch gleich im

Johannes

Vorhinein, könntest du auch die

Johannes

Bild-In-Klasse komplex verwenden.

Johannes

Die kann alles, was

Johannes

wir gleich hier machen und noch viel mehr.

Johannes

Aber zum Zeigen ist es ja ganz

Johannes

schön. Und da implementiert

Johannes

er drei Special Methods,

Johannes

nämlich add, abs und mul.

Johannes

Und

Johannes

kriegt daraus dann

Johannes

die Möglichkeit, zwei Vektoren zu addieren.

Johannes

Abs

Johannes

wird hier als die

Johannes

Metrik implementiert. Das heißt, es ist die Länge

Johannes

eines Vektors und mul ist

Johannes

eine Skalarmultiplikation. Das heißt, kannst du einen

Johannes

Vektor mit einem Integer oder mit einem

Johannes

Float multiplizieren, kannst du die Länge

Johannes

verändern.

Johannes

Auch das mit wenigen Methoden

Johannes

schon relativ viel erreicht

Johannes

und auch relativ viel Syntax erreicht.

Dominik

Das fehlt aber noch Vektor mit Vektor multiplizieren.

Jochen

Ja, das ist nicht so

Jochen

einfach. Das ist nicht so einfach, dummerweise, weil

Jochen

mathematisch nicht so einfach.

Jochen

Genau, da steht

Jochen

glaube ich im Buch irgendwas drin. Ja, also wie man sagt,

Jochen

das dann macht mit Magic Method, das ist dann

Jochen

Kapitel 16 oder so viel weiter hinten,

Jochen

weil das ist nicht so einfach.

Jochen

Und er sagt auch, er verschiebt

Johannes

auch, das tatsächlich in diesen ersten Kapiteln

Johannes

verschiebt er relativ viel auch später.

Johannes

Ja, hier, das kommt in Kapitel 17 nochmal oder

Johannes

in Kapitel 38 oder Kapitel

Johannes

12. Tatsächlich

Johannes

auch Skalar mit

Johannes

Vektor multiplizieren, also

Johannes

eine Zahl mal Vektor

Johannes

verschiebt er auch auf später, weil da brauchst du

Johannes

nochmal einen anderen, eine andere Special

Johannes

Method, weil eben mul nur

Johannes

Vektor mit Skalar kann.

Johannes

Und das ist dann so ein kleines

Johannes

bisschen unbefriedigend. Was ich aber

Johannes

eigentlich, worauf ich eigentlich raus wollte, ist,

Johannes

er hat halt dann die Möglichkeit,

Johannes

seine Klasse mit Plus, hat er zwei

Johannes

Vektoren, zwei Instanzen von seiner Klasse

Johannes

kann er mit Plus addieren. Und

Johannes

das fand ich nicht so beeindruckend,

Johannes

weil

Johannes

das gab es in C++ auch schon.

Johannes

Das musste ich auch schon mal lernen.

Johannes

Und da heißen die Methoden

Johannes

halt anders, da heißen sie Operator Plus und Operator

Johannes

der Minus und Operator noch irgendwas

Johannes

und dann kriegst du es aber auch.

Johannes

Da kannst du auch Vektoren addieren und so weiter.

Johannes

Deshalb, da war ich

Johannes

jetzt nicht so beeindruckt davon.

Dominik

Ich habe das mit dem Multiplizieren nicht verstanden,

Dominik

was du meinst mit Skalar mal Vektor und Vektor mal Skalar.

Dominik

Wo ist der Unterschied? Ist das nicht komputativ?

Dominik

Das ist die Reihenfolge.

Dominik

Eigentlich mathematisch gesehen

Johannes

ist diese Operation komputativ,

Johannes

aber in Python an dieser Stelle ist sie noch nicht

Johannes

komputativ, weil wenn du

Johannes

die Mull-Methode

Johannes

implementierst

Johannes

auf deiner Klasse,

Johannes

dann musst

Johannes

wenn du x mal y machst,

Dominik

dann wird x.mull

Dominik

aufgerufen. Weil ansonsten wird dann tatsächlich

Dominik

ja, genau, sonst von dem

Dominik

Skalar die Mull-Methode aufgerufen, da gibt es

Johannes

den Vektor nicht. Genau, und die kann natürlich nicht mit Vektoren

Johannes

umgehen. Und damit es in die andere Richtung geht, brauchst

Johannes

du eine zweite Special Method, da heißt

Johannes

r.mull, also Reverse Multiplication.

Johannes

Und die hat aber auch später verschoben,

Johannes

weil die später nochmal kommt.

Dominik

Ach, man kann auch r.mull? Interessant.

Dominik

Das wusste ich auch nicht. Genau, damit

Johannes

eben diese Kommutativität.

Johannes

Aber es wird zuerst mull aufgerufen.

Johannes

Das heißt, da geht es dann

Johannes

auch noch um Präzedenz und deshalb verschiebt

Johannes

du das, glaube ich, auch später.

Dominik

Wie kriegt man denn die Präzedenz hin?

Dominik

Also ich möchte das gerne spoilern.

Johannes

Die kriegst du hin,

Johannes

also ist in dem Fall jetzt hier

Johannes

tatsächlich unproblematisch, aber du musst dann natürlich

Johannes

Type-Checks machen, dass du sagst, okay, was ist denn,

Johannes

wenn ich ein r.mull mache mit

Johannes

dieser oder jener Sorte von

Johannes

Objekt? Weil da kann ja dann prinzipiell alles rein.

Johannes

Ja, ich denke so.

Dominik

Match-Case.

Dominik

Ja, so

Johannes

mit einem Match-Case oder mit einem

Dominik

Alles, was du nicht implementiert hast,

Dominik

wird einfach im Normalkreis abgehandelt und ansonsten

Dominik

schreibst du für alle Cases, die

Dominik

einmal auftauchen, was rein.

Dominik

Finde ich gut.

Dominik

Ja, im Endeffekt macht der Interpreter

Johannes

das ja auch so. Also wenn eine von diesen

Johannes

Methoden halt einen Fehler wirft oder

Johannes

kein Ergebnis zurückgibt, dann wird

Johannes

halt so lange weitere Methoden durchprobiert,

Johannes

bis es eins gibt und wenn es keinen

Johannes

gibt, dann sagt der Herr halt, ja, das ist nicht definiert für diese

Johannes

Typen.

Johannes

Das haben wir ja auch alle schon mal gesehen, oder?

Johannes

Dass man versätlich einen String zu einer Zahl addiert hat

Johannes

und dann gesagt bekommen hat, das kannst du nicht.

Dominik

Es sei denn, man war in JavaScript.

Dominik

Ja, ja, das ist halt so

Dominik

ein fundamentaler Unterschied

Jochen

zwischen JavaScript und Python.

Jochen

Ja, also ich, genau, ich finde das ja auch sehr,

Jochen

ich weiß nicht, haben wir überhaupt schon definiert,

Jochen

mir fällt das gerade so heiß ein, jetzt reden wir schon die ganze Zeit drüber,

Jochen

aber ich weiß nicht, haben wir überhaupt gesagt, was,

Jochen

wie diese

Jochen

Danda-Methods denn aussehen?

Jochen

Also die sind immer, haben immer irgendwie

Jochen

zwei Underscores, damit fangen sie mal an

Jochen

und hören immer mit zwei Underscores auf

Jochen

und Danda... Genau, Danda, für alle, die es nicht kennen,

Dominik

ist Unterstrich, Unterstrich.

Jochen

Danda ist halt quasi die Abkürzung für

Jochen

Double Underscore Before and

Jochen

Double Underscore After. Warum machen

Dominik

Underscores damit? Man denkt, die gibt es gar nicht,

Dominik

damit man die nicht sieht, damit die nicht auffallen.

Dominik

Nö, Konvention.

Dominik

Keine Ahnung. Wie du sie unterscheiden kannst von allen anderen.

Johannes

Das ist eine Konvention

Johannes

im Python-Interpreter, wenn du eine Methode hast,

Johannes

die zwei Unterstriche vorne und

Johannes

zwei Unterstriche hinten hat, dann

Johannes

verspricht der Interpreter gar nichts

Johannes

darüber. Das kann sich jederzeit ändern und es kann jederzeit

Johannes

passieren, dass die nicht mehr funktioniert.

Johannes

Es ist einfach nur eine visuelle Abtrennung,

Johannes

dass du siehst, dass das was Spezielles ist.

Dominik

Aber wenn ich das richtig verstehe, ruft man solche Methoden

Dominik

niemals selber einfach so an?

Jochen

Niemals, stimmt nicht so ganz, also ab und zu

Jochen

schon, also eine ganz populäre ist, achso,

Jochen

das wolltest du auch gerade sagen, weil

Jochen

es halt dann erinnert.

Jochen

Ja, also

Dominik

wann ruft man denn Inet explizit auf? Von außen?

Dominik

Ständig. Nur mit super?

Dominik

Ständig, ne, ständig.

Jochen

Wenn du halt Klasse, Klammer auf, Klammer zu,

Jochen

dann hast du schon aufgerufen.

Jochen

Nein, aber das ist ja die implizite.

Dominik

Ich meine, dass du explizit

Dominik

jetzt dran schreibst Inet.

Jochen

Ja, okay, das passiert tatsächlich nicht so häufig.

Johannes

Ja, bei super Aufrufen schon.

Dominik

Ja gut, aber super machst du Inet.

Dominik

Absolut im anderen Inet.

Dominik

Und das offensichtlich, aber

Dominik

außer dem Fall kenne ich jetzt

Dominik

eigentlich keinen. Also es sei denn, man will irgendwas

Dominik

debuggen oder sowas, dann war alles anders, aber

Dominik

ja. Es ist halt auch nicht notwendig.

Johannes

Das ist ja der Trick da dran.

Johannes

Du brauchst die nicht direkt aufrufen, weil

Dominik

es gibt da Syntax. Wenn ich jetzt ein App definiere, dann mache ich einfach

Dominik

ein String, dann kriege ich das Ergebnis. Und wenn ich ein Apps definiere,

Dominik

dann möchte ich halt irgendwie

Dominik

mit Dingen rechnen und gucken, was passiert.

Dominik

Oder beim Bool vergleiche ich mit irgendwas

Dominik

oder so, oder ich mache ein If vor. Aber ich würde

Dominik

niemals selber das vormachen. Und das ist ja

Dominik

vielleicht das Interessante an den Dunder-Messages,

Dominik

dass sie halt quasi die Reimplementierung

Dominik

sind, um mit normaler Python

Dominik

Syntax und den Objekten zu interagieren.

Dominik

Also zum Beispiel Equals oder so, oder

Dominik

Lesser-Send oder ein komparatives

Dominik

Verhalten zwischen einzelnen Objekten von

Dominik

Klassen oder von Instanzen.

Jochen

Ja, du kannst halt sozusagen

Jochen

mit dem Interpreter so interagieren, wie

Jochen

die anderen Teile in Python halt

Jochen

auch. Und das ist halt eine Besonderheit von Python,

Jochen

das geht in vielen anderen Sprachen nicht.

Dominik

Das macht es halt toll. Das ist halt

Dominik

genau das Schöne an diesen

Dominik

Magic-Messages ist, dass wenn man das ordentlich

Dominik

implementiert, man hinterher in seinem Code

Dominik

Sachen machen kann, die sehr

Dominik

natürlich aussehen. Und die

Dominik

auch in der logischen Sprache dann

Dominik

natürlich Sinn machen, wenn man Dinge miteinander vergleichen möchte,

Dominik

die man dann vielleicht auch vergleichen kann,

Dominik

weil man denen ordentliche Namen gegeben hat und das aber einfach

Dominik

mit den instanzierten Objekten geht. Und man

Dominik

halt nicht irgendwie komische Dunder-Methoden

Dominik

oder irgendwelche kryptischen

Dominik

Namen an Objekten

Dominik

aufrufen muss, wie das in anderen Sprachen der Fall ist. Und das

Dominik

ist toll, weil diese Syntax sogar Magie

Dominik

macht. Und deswegen finde ich den Namen

Dominik

Magic-Message auch sehr schön.

Johannes

Ja, du kriegst also Zugriff auf

Johannes

die Innereien.

Johannes

Dass Python integriert das

Johannes

und du kannst dich da genauso rein

Johannes

integrieren wie alle, als ob du

Johannes

dazugehörst. Und das ist schon was sehr Schönes.

Johannes

Aber du hast eben noch was anderes gesagt, Dominik,

Johannes

was auch hier vorkommt, was ich auch in meinen Notizen

Johannes

habe. Du hast gesagt, du möchtest hier

Johannes

die String-Methode implementieren und dann kriegst du

Johannes

eine schöne String-Repräsentation raus.

Johannes

Ich habe die Rep-Methode gesagt.

Johannes

Oh, dann muss ich noch mal

Johannes

zurückscrollen und mir das anhören.

Johannes

Aber das ist tatsächlich was, ich tendiere

Johannes

auch dazu, immer die String-Methode zu implementieren,

Johannes

weil man

Johannes

es halt so gewöhnt ist. Bei Java machst du

Johannes

Two-String, bei irgendwelchen anderen

Johannes

machst du irgendeine Two-String-

Johannes

Transformation oder was auch immer.

Johannes

Und in Python gibt es da ja zwei

Johannes

davon. Es gibt Repre und Stre.

Johannes

Genau.

Johannes

Und der Unterschied ist

Johannes

schwer zu

Johannes

erklären,

Johannes

weil es nicht so

Johannes

was Formales ist.

Dominik

Die Repräsentation ist das, was in der

Dominik

Kommandozeile auftaucht oder einem String, wenn du ihn

Dominik

da reingeschrieben hast und Stre ist das,

Dominik

was rauskommt, wenn du die String

Dominik

Conversion versuchst.

Dominik

Ja, aber warum

Jochen

macht man dann da überhaupt einen Unterschied?

Jochen

Könntest du da genau mit einer machen dann?

Dominik

Das Identifiziert das Objekt?

Dominik

Okay, erklär du, Johannes.

Dominik

Ja.

Dominik

Ne, also das

Johannes

geht schon so ein bisschen runter auf die Krux des

Johannes

Problems, weil diese zwei Methoden doch

Johannes

relativ ähnlich sind.

Johannes

Aber interessanterweise, wenn du Stre

Johannes

nicht implementiert hast, fällt der zurück auf Repre.

Johannes

Also auf die Repräsentation.

Johannes

Und die Repräsentation

Johannes

ist in dem Sinne ein bisschen formaler, weil

Johannes

das heißt, du sollst

Johannes

eine Repräsentation wählen, die du idealerweise

Johannes

direkt in den Interpreter rein

Johannes

kopieren kannst.

Johannes

Und das schränkt dich natürlich relativ ein.

Johannes

Das heißt, da hast du üblicherweise dann sowas wie

Johannes

eben einen Konstruktor da drinstehen.

Johannes

Oder eine String-Repräsentation

Johannes

des Konstruktors. Die Stre-Methode

Johannes

soll einfach nur eine menschenlesbare

Johannes

Beschreibung dieses Objektes sein.

Johannes

Und die kann dann natürlich auch was anderes sein.

Johannes

Also zum Beispiel für

Johannes

diese Vektorklasse, da hat er

Johannes

als Repräsentation halt den Namen

Johannes

der Klasse, Vektor 2, Klammer auf,

Johannes

dann die beiden Koordinaten

Johannes

und dann Klammer zu.

Johannes

Und das ist gut, weil das

Johannes

kannst du direkt reinkopieren, das identifiziert

Johannes

genau diese Sache.

Johannes

Als Stre-Methode, hat er jetzt hier

Johannes

kein Beispiel im Buch drin,

Johannes

würde ich aber tatsächlich was anderes

Johannes

wählen. Ich würde entweder

Johannes

je nach Kontext

Johannes

vielleicht eckige Klammern wählen.

Johannes

Oder in einem mathematischen Kontext

Johannes

vielleicht sogar runde Klammern.

Johannes

Genau, spitze Klammern, Entschuldigung.

Johannes

Oder vielleicht sogar runde, je nachdem,

Johannes

welchen Kontext es hat. Und da hat man natürlich einfach

Johannes

mehr Freiheit, weil das einfach eine

Johannes

menschenlesbare

Johannes

Darstellung dieses Objektes sein soll.

Johannes

Und ich

Johannes

tendiere eher dazu, die Stre-Methode zu

Johannes

implementieren und die Argumente,

Johannes

die hier der

Johannes

Luciano uns gibt,

Johannes

ähm,

Johannes

die lassen mich jetzt doch auch tendieren

Johannes

dazu eher Rapper zu sein.

Jochen

Also das ist sozusagen die Regel, die man da mit

Jochen

mitnehmen kann, ist halt, wenn man die,

Jochen

wenn man sozusagen

Jochen

sich entscheiden muss, dann lieber eher nur die

Jochen

Rapper-Methode implementieren, nicht unbedingt Stre.

Jochen

Ja.

Jochen

Und das war mir auch nicht so

Jochen

in der Feinheit klar,

Jochen

was jetzt da der genaue Unterschied oder der Sinn dahinter

Jochen

ist. Und das weiß ich jetzt voll gut.

Jochen

Weiß ich schon wieder mehr.

Jochen

Ja. Ja, das war gut, oder? Ja.

Jochen

Ja, ja, ja.

Jochen

Das, äh, ich, ich war etwas

Jochen

überrascht, als ich das Buch angefangen hab, weil das erste

Jochen

Kapitel schon ordentlich

Jochen

rangeht. Ein länger Buch, hat Jocken gesagt.

Jochen

Ja.

Johannes

Nein, das ist auf jeden Fall ein

Johannes

fortgeschrittenes Buch und der, also der macht

Johannes

auch keine, keine Pausen, ja.

Johannes

Der geht direkt weiter hier.

Johannes

Zwei, zwei Klassen mit Operatoren,

Johannes

also das ist diese Deck-Klasse und die

Johannes

Vector-Klasse und dann macht er noch

Johannes

Bool-Implementierung und dann geht

Johannes

es gleich mit der Collection-API weiter.

Johannes

Auch das,

Johannes

sehr interessant, äh, sehr

Johannes

interessanter Abschnitt über die Collection-API,

Johannes

wo natürlich jetzt mehr an Details drin ist, die,

Johannes

die ich weder präsent

Johannes

hatte, noch jetzt so präsent habe.

Johannes

Ja, also jetzt musst du aber trotzdem

Dominik

mal kurz, äh, einmal

Dominik

aufräumen, bitte. Ja, dafür

Jochen

ist das Buch halt, also das Buch ist schon dicht, okay,

Jochen

ich geb's zu, aber dafür ist es halt auch nicht so lang.

Jochen

Ähm. Ja, das steht

Jochen

nur, die nächste Lüge

Jochen

von Jocken. 975

Jochen

Seiten. Ja, ich würde sagen. Aber es ist,

Jochen

es ist ein Taschenbuch-Format, also kann man,

Johannes

wenn man es mal locker in, auch in die Tasche stecken,

Johannes

ist es auch relativ klein.

Dominik

961. Also so vielleicht

Dominik

18 mal 20 Zentimeter.

Jochen

Ja, also das ist auf jeden Fall doch die Größe,

Jochen

die man sich locker unter das Kopfkissen legen kann.

Dominik

Damit sich man automatisch lernt, ja.

Johannes

Du kannst ja dein Kopfkissen ersetzen, kannst du

Johannes

das mit dem Buch.

Johannes

Ja.

Jochen

Ja, aber tatsächlich, also diese,

Jochen

diese, ähm,

Jochen

da ist sogar ein UML-Diagramm, das, also

Jochen

muss ich sagen, da war ich so fast ein bisschen abgeschreckt.

Jochen

Jetzt kauf ich's auch.

Jochen

UML-Diagramm, oh Gott, oh Gott.

Jochen

Oh Gott, aber, äh, ja, in der Stelle

Jochen

macht's tatsächlich Sinn.

Jochen

Ja, ähm, genau.

Johannes

Das ist ja hier der Dominik und ich, wir blättern jetzt gerade

Johannes

für die, für die Zuhörer.

Jochen

Ja, ich, genau, da gibt's, gibt's halt

Jochen

ein, ein, äh, ein UML-Diagramm

Jochen

von der Collection-API.

Dominik

Was ist jetzt die Collection-API? Ich hab's immer noch

Dominik

nicht genau verstanden. Bitte, äh, wiederhol das doch noch mal.

Jochen

Ja, also, die ist, äh,

Dominik

Was ist, was ist überhaupt eine Collection?

Dominik

Ist da, geht's, um, um was geht's da?

Dominik

Etatools oder?

Jochen

Nee, äh, da geht's darum,

Jochen

wie grundsätzlich

Jochen

quasi Objekte

Jochen

in Python, äh,

Jochen

irgendwie so funktionieren, die eine Collection

Jochen

von irgendwas sind. Und das sind,

Jochen

das sind halt die allermeisten, ja. Das sieht jetzt hier nicht so aus,

Jochen

sieht nach irgendwas Speziellem aus, aber das sind halt

Jochen

die allerallermeisten sind da, sowas.

Jochen

Und, ähm, da gibt's

Jochen

also Collection selber,

Jochen

äh, damit's eine ist.

Dominik

Man soll nicht verklicken, äh, Jochen, aber, ähm.

Jochen

Also, damit's, damit's eine ist,

Jochen

äh, äh, quasi müssen drei

Jochen

Sachen irgendwie, äh,

Jochen

ja, implementiert sein. Also, es gibt halt drei

Jochen

Methoden, die, äh,

Jochen

sozusagen dann ein Ding zu einer Collection

Jochen

machen und das ist halt.

Jochen

Iter? Iter, ja. Du kannst halt irgendwie

Jochen

drüber iterieren. Äh, das heißt.

Dominik

Also, einen Iterator bauen, einen Generator,

Dominik

der irgendwas yieldet. Nee.

Jochen

Nein. Äh, du kannst halt, es muss halt

Jochen

irgendwie. Aber jetzt, fast. Ja.

Jochen

Mal ganz generell, so eine Collection

Johannes

ist einfach eine Sammlung

Johannes

von anderen Sachen. Ja.

Johannes

Eine Sammlung von anderen Dingen.

Johannes

Und um das zu ermöglichen, gibt's jetzt hier

Johannes

diese verschiedenen Interfaces, die der Jochen

Johannes

jetzt gerade. Okay, erst mal, es muss ein Iterable

Johannes

sein, ja, und dann? Ja. Es muss irgendwie.

Johannes

Muss nicht, aber kann.

Jochen

Doch, muss eigentlich. Also, eine Collection,

Johannes

okay, eine Collection, äh, muss das schon

Johannes

sein. Ja. Aber es kann ja, es kann etwas

Johannes

geben, was Iterable ist, aber keine Collection ist.

Dominik

Ja, klar, genau. Das gibt's natürlich. Ja, ja, okay. Aber eine Collection

Dominik

muss Iterable sein und das ist irgendwas, was

Jochen

gilt. Sie muss halt Iterable sein, also. Oder nicht? Ja.

Jochen

Sie muss halt, äh, irgendwie eine Größe haben,

Jochen

sie muss halt Size sein und sie muss

Jochen

halt, äh, irgendwie ein Container

Jochen

sein, den man halt fragen kann,

Jochen

ja, ist das denn in dir

Jochen

drin oder nicht? Und das

Jochen

sind die drei Dinge, die man halt, äh, quasi

Jochen

implementiert haben muss, damit man irgendwie eine Collection

Jochen

ist. Also, ist, ist this a part of your collection?

Dominik

Ähm, wie viel bist du

Dominik

denn? Und, äh, gib mal

Dominik

mehr von dir. Von allem, was

Dominik

in dir drin ist. Ja, gibt's immer mehr. Das heißt, wenn ich über

Dominik

alles iteriere, dann hab ich alles drin, was drin war.

Dominik

Alle, alles Toys.

Dominik

For everything in collection

Dominik

iter. Ist das, ist das so, Jochen?

Dominik

Müssen, müssen Iterate über alle

Dominik

Elemente drüber? Nee, ich denk nicht, ich denk nicht.

Jochen

Also, du kannst ja dann in der, wenn du das

Jochen

implementierst, da drin ja machen, was du willst.

Jochen

Das, äh, das kann jetzt auch

Jochen

von irgendwas anderem abhängig sein, was das

Jochen

so gibt. Du musst nur das Iter-Protokoll erfüllen. Ja, genau.

Jochen

Du musst nur das Protokoll erfüllen. Ja. Ein, ein

Jochen

nächstes rausgeben. Ja, ja. Also immer dasselbe.

Johannes

Also, diese pathologischen Edge-Cases.

Dominik

Gib mir mal alle in deinem Ding. Ich will das erste. Nee, du kriegst das erste.

Dominik

Du kriegst doch das erste. Nein, das und das erste.

Dominik

Immer noch das erste. Nee, nee, das ist, nee, nee, du rufst

Johannes

ja, das Iter, Iter-Protokoll ist ja, du rufst immer

Johannes

Next auf, auf dem Iter-Protokoll. Ach, das ist doch kein

Johannes

Erwartung. Das heißt, du kriegst immer ein nächstes Element.

Johannes

Aber das bedeutet nicht, dass du alle kriegst und

Johannes

das bedeutet auch nicht, dass du alle kriegen kannst.

Johannes

Es gibt da diese pathologischen Edge-Cases,

Johannes

die man immer in Einführungsveranstaltungen

Johannes

macht, dass man sagt, hier, wir machen jetzt jetzt mal was

Johannes

Iter-Protokoll und das berechnet einfach

Johannes

die nächste Primzahl. Es gibt ja alle Primzahlen.

Johannes

Aber das ist natürlich keine Sammlung,

Johannes

die je aufhört. Und was, was ist denn da unter

Johannes

Primzahlen, Iterin? Unterschied,

Dominik

äh, Joachim, mit dem

Dominik

Generator und dem, dem Next und dem Yield und dem

Jochen

Naja, also, weil, also Iter

Jochen

ist halt die grundsätzliche Geschichte. Das

Jochen

ist halt das, was du brauchst, wenn du vor

Jochen

irgendwas in irgendwas sagst.

Jochen

Ja, ein Generator ist eine spezifische,

Jochen

ist halt nicht so allgemein. So ein Generator heißt

Jochen

halt dann, äh, äh, sozusagen

Jochen

da, äh,

Jochen

ja, kriegst du halt eins nach dem anderen drin.

Dominik

Aber, halt im Moment, also wenn ich jetzt irgendwas

Dominik

iteriere, ist was anderes als ein eins nach dem anderen?

Dominik

Äh,

Dominik

also, sagen wir mal so,

Jochen

Generator ist nochmal eine ganz, ist nochmal eine

Jochen

speziellere Geschichte. Das hat halt irgendwie,

Jochen

das ist jetzt nicht das Gleiche wie, wie

Jochen

irgendwie was, was du iterieren kannst.

Jochen

Das ist was anderes. Ein Generator implementiert

Johannes

ja, ein Generator implementiert

Johannes

das Iterable-Protokoll. Also, Generator ist, ja, genau,

Jochen

klar, also ist schon Iterable ein Generator,

Jochen

aber es ist ja eine sehr spezielle Art von was

Jochen

Iterable. Aha, also, aha,

Jochen

okay, weil. Aber eine Liste

Jochen

ist auch irgendwie was Iterable ist,

Jochen

aber das ist kein Generator, gar nicht.

Dominik

Nein? Nein. Als Comprehension schon.

Jochen

Also, wenn du eine List Comprehension schreibst,

Jochen

kriegst du eine Liste zurück.

Jochen

Du kannst den Generator Expression hinschreiben, dann kriegst du

Jochen

einen Generator, aber das ist wieder was anderes. Also,

Jochen

mhm, ja.

Jochen

Aber interessant

Jochen

finde ich halt, dass das halt reicht.

Jochen

Ja, also, diese drei Dinge, also, wenn du

Jochen

halt die, wenn du die Dunner-Methods

Jochen

Iter, Len und Contains implementierst,

Jochen

dann hast du halt ein Collection,

Jochen

quasi, und

Jochen

dann gibt's halt noch die eine zusätzliche Geschichte,

Jochen

die halt sozusagen

Jochen

dann daraus etwas,

Jochen

nochmal was Besonderes macht, das ist halt

Jochen

Reversible.

Jochen

Wenn das irgendeine Reihenfolge

Jochen

hat, dann ist es halt eine Sequence

Jochen

Ja, aber das ist halt das, was

Jochen

das unterscheidet. Also, eine Sequence

Jochen

kann halt irgendwie beliebig sortiert werden,

Jochen

so, das macht es halt besonders, und

Jochen

dann, ja. Und das klassische Beispiel ist eine Liste.

Johannes

Liste ist eine Sequence. Wenn man Sequence

Johannes

sagt, kann man immer an Liste denken. Ja.

Jochen

Und, äh, genau,

Jochen

ansonsten ist halt

Jochen

ein Dict ist halt auch ein Collection,

Jochen

ist halt ein Mapping,

Dominik

sozusagen. Und ein Set

Dominik

ist keine Liste, aber ein Set ist schon

Dominik

eine Collection. Genau, das ist schon eine Collection.

Dominik

Das ist der Basistyp. Aber keine Sequence. Genau. Also, das sind ja

Johannes

die Basistypen, die sie da ableiten. Sequence, Mapping

Johannes

und Set. Und, äh,

Johannes

die drei verhalten sich unterschiedlich

Johannes

und daraus, das sind aber die Dinge, die man dann einsetzt.

Johannes

Also, diese Bausteine, also

Johannes

ein pures Iterable, ich meine,

Johannes

geht prinzipiell schon, oder ein

Johannes

pures Sized,

Johannes

ja, ist nicht nett, dass ich das schon mal gesehen

Johannes

habe. Aber natürlich Sequence und Mapping

Johannes

und Set, das sind die Sachen, die man dann tatsächlich benutzt.

Johannes

Weil da hast du dann die Bausteine zusammengesetzt zu dem,

Johannes

was man tatsächlich einfach braucht.

Johannes

Das, was dann sinnvoll ist.

Johannes

Ja. Und da kann man

Johannes

dann auch Beispiele sagen, ja. Also, ein Beispiel

Johannes

von einem Iterable könnte ich jetzt nicht unbedingt sagen.

Johannes

Also, von einem puren.

Johannes

Ein Huhn. Ein Huhn ist ein Iterable.

Johannes

Legt ein Ei, legt noch ein Ei,

Johannes

legt noch ein Ei, legt noch ein Ei.

Johannes

Ja, das wisst ihr jetzt nicht,

Johannes

wenn man es in Python implementiert,

Johannes

aber ja.

Johannes

Es gibt auch Hühner

Johannes

in Pythons. Dann ist halt die Frage,

Jochen

was war zuerst da? Das Ei oder das Huhn?

Jochen

Ja, weiß auch nicht.

Johannes

Wenn du eine große Schlange hast, kannst du ja mal einen Huhn

Johannes

reintun und dann schauen, ob es iteriert.

Jochen

Ich habe letztens irgendwo so ein Schaubild

Jochen

gesehen, wo ein Biologe meinte, so war es

Jochen

eine Quatschfrage. Also, wir malen

Jochen

hier einfach mal so diesen evolutionären Schlangenbogen

Jochen

auf und da haben wir überall Eier, aber nur

Jochen

da ganz unten ein Huhn.

Jochen

Natürlich war das Ei zuerst da.

Jochen

Völlig

Jochen

triviale Frage.

Jochen

Ja. Okay.

Johannes

Genau. Und Mapping, ich meine,

Johannes

das kennt man auch, das ist ein Dictionary und Set kennt man auch,

Johannes

das ist ein Set. Und das sind dann die Sachen, die man tatsächlich

Johannes

benutzt. Aber diese Protokolle,

Johannes

also das, was die tatsächlich an Funktionalität

Johannes

anbieten, das ist hier

Johannes

zusammengesetzt aus diesen ABCs, aus den

Johannes

Abstract Base Classes.

Johannes

Benutzt die tatsächlich immer?

Johannes

Der Trick ist, dass

Johannes

wenn du diese ABCs implementierst,

Johannes

dann, genau wie vorhin bei den

Johannes

Special Methods oder bei den Magic Methods,

Johannes

dann kannst du dich in den Python Interpreter so rein

Johannes

integrieren, wie wenn du ein Dict wärst

Johannes

oder eine Liste oder was auch immer.

Johannes

Also dann habe ich ein Interface

Dominik

implementiert. Kann man das so

Johannes

sagen? Ja, es heißt hier nicht Interface, sondern Protokoll.

Johannes

Aha. Das heißt,

Dominik

beim Typing Protokoll kann ich das dann benutzen.

Jochen

Das ist nochmal eine andere

Jochen

Geschichte, aber ja, das funktioniert dann, das ist

Jochen

eine andere Art, das zu machen. Aber das macht

Dominik

quasi genau, deswegen, also Abstract Base Classes,

Dominik

ja, braucht man das? Nein. Also du kannst,

Jochen

das Problem bei den Abstract Base Classes,

Jochen

das ist halt, es funktioniert halt anders.

Jochen

Es ist halt sozusagen, das hatten wir in der

Jochen

Typing Episode auch, es ist halt

Jochen

sozusagen nominatives,

Jochen

nominative Typisierung

Jochen

sozusagen in dem Sinne, dass du jetzt bei

Jochen

jedem Ding, das du erzeugst,

Jochen

dadurch, dass du von so einer Abstract Base Class erbst,

Jochen

sagst du halt genau, was es ist.

Jochen

Und es ist das, weil

Jochen

du es davon erbst. Genau, bei Protokoll nicht,

Dominik

weil es kann nicht das sein, weil das ist im Protokoll

Dominik

eigentlich viel flexibler für sowas

Dominik

und auch viel besser geeignet.

Dominik

Ja,

Jochen

ja, aber es hat dann natürlich auch wieder

Jochen

Nachteile. Naja, wenn du sagst, es muss

Dominik

eine Collection sein, die da reingeht, dann ist doch scheißegal, was

Dominik

für eine Collection das ist.

Dominik

Wenn das das Protokoll der Collection erfüllt

Dominik

und die dann, das Mapping

Dominik

oder das Set oder sowas, und da ist irgendein Set, das da

Dominik

rein muss, aber du sagst halt, es muss halt diese Sachen,

Dominik

die da drin haben, die im Protokoll

Dominik

definiert sind, also in den Methoden,

Dominik

die man für ein Set halt braucht.

Dominik

Genau, aber was sagst du ja damit? Ja, aber dann

Dominik

ist das doch okay, aber da muss ich doch keine Abstract Base

Dominik

Klasse verwenden, das ist irgendwie komisch.

Dominik

Doch, klar. Das ist ja genau

Johannes

die Formalisierung davon.

Johannes

Du erbst von dieser Abstract Base Class,

Johannes

dann hast du erstmal nichts umgesetzt, dann implementierst du die ganzen

Dominik

Sachen. Nein, Protokoll. Dann wirst

Johannes

du zu einer Collection. Deine Klasse ist

Johannes

eine Collection. Dann kannst du es auch überprüfen.

Johannes

Wenn du nur im Typing sagst,

Johannes

das entspricht dem, dann hast du es nicht überprüft.

Jochen

Wenn du nur im Protokoll Dings machst, dann würdest du sagen,

Jochen

ist Collection, also ist Instance

Jochen

auf Collection, sagt dir halt, ne,

Jochen

eher nicht.

Jochen

Was du dann machen kannst,

Jochen

ist halt, dann dein

Jochen

statischer Type Checker kann immer noch Fehler

Jochen

finden. Ja, genau.

Dominik

Mein Linter sagt mir halt, ja, nee, aber der

Dominik

will jetzt ein Collection haben und nichts anderes.

Jochen

Ja, aber wenn da jemand anders

Jochen

ein ist Instance auf deinem, was auch

Jochen

immer das Ding ist, irgendwie aufruft,

Jochen

dann kriegt der nicht und sagt, ist das eine Collection?

Jochen

Dann kommt er zurück, nö, ist nicht.

Dominik

Ja, okay, weil das kein hartes

Jochen

Geerbe ist. Weil es ist nicht wirklich eine Collection

Dominik

in dem Sinne. Ja, aber es interpretiert nur das Protokoll

Dominik

als wäre es eine Collection.

Dominik

Genau, also das ist quasi die

Johannes

Formalisierung davon. Du gibst

Johannes

es technisch rein und sagst, das ist eine

Johannes

Collection. Glaubst du der Sprache,

Johannes

die das mit Instance überprüft,

Dominik

oder glaubst du deinem Linter, der dir sagt,

Dominik

das könnte passen oder nicht?

Jochen

Naja, es hat halt alle so Vor- und Nachfälle.

Jochen

Den Linter glaube ich überhaupt gar nicht. Ja, aber warum will ich denn

Dominik

jemals testen, ob es ist Instance auf Collection ist?

Dominik

Ich will nur wissen, ob dann das lintet, weil es die

Dominik

Methoden implementiert.

Dominik

Und ich will, ob es Instance

Dominik

auf, keine Ahnung, meine Superliste

Dominik

dann gibt.

Dominik

Da gibt es ja schon Use Cases

Dominik

dafür, dass du sagst, okay,

Dominik

ich habe eine Funktion, die alles mögliche

Dominik

verarbeiten kann,

Johannes

muss ja schon eventuell auf unterschiedliche

Dominik

Arten drücken. Nein, aber ich will wissen, ist Instance

Dominik

Buch? Weil wenn ich nach der Bücher-Collection

Dominik

gucke und ich will niemals wissen,

Dominik

ob es eine Collection von irgendwelchen

Dominik

abstrakten Dingen ist. Deswegen ist es Bullshit, das mit

Dominik

abstrakten Base-Classungen. Meiner Meinung nach ist das super,

Johannes

wenn es ein Protokoll gibt. Damit, dass du noch nie eine Bibliothek-Implementierung

Johannes

die so eine Funktion hat.

Johannes

Funktionalität anbietet, ist jetzt

Johannes

schade, aber so ist es.

Jochen

Ich meine zum Beispiel,

Jochen

wo das halt häufig

Jochen

auftritt, also wo ich das kenne mit

Jochen

denen, dass man halt irgendwie, es gibt halt viele

Jochen

Methoden, zum Beispiel nehmen wir jetzt bei Data Science

Jochen

Geschichten, irgendwie sowas wie

Jochen

irgendwie Data Pipelines oder irgendwelche

Jochen

Modelle oder so

Jochen

und da kommen halt

Jochen

manchmal so wirklich komische Sachen rein

Jochen

und ich

Jochen

habe auch schon viel

Jochen

Scikit-Learn-Code zum Beispiel gelesen und so

Jochen

viele Methoden oder

Jochen

viele Funktionen, die fangen an mit

Jochen

also, sag mal,

Jochen

bist du eigentlich ein sowas? Oder bist du

Jochen

vielleicht sowas? Und dann machen sie halt unterschiedliche Dinge,

Jochen

je nachdem, was das dann ist und

Jochen

das ist halt teilweise, das ist wirklich

Jochen

lang am Anfang und

Jochen

ja, ich wüsste jetzt nicht,

Jochen

wie man das anders machen könnte, außer so, also

Jochen

hmm

Jochen

also, ja

Johannes

Eine Sorte Funktion,

Johannes

die man auch häufig sieht in Bibliotheken

Johannes

ist, wo du entweder

Johannes

einzelne Elemente reingeben kannst oder gleich

Johannes

eine ganze Sammlung. Und dann musst du halt auch

Johannes

am Anfang dieser Funktion in der

Johannes

Implementierung unterscheiden können, ob du jetzt gerade ein

Johannes

einzelnes Element in der Hand hast oder ganz viele

Johannes

einzelne Elemente. Und da

Johannes

musst du schon irgendwie eine formalisierte

Johannes

Unterscheidung machen, da hilft dir auch der

Johannes

Linternix, weil der geht ja zur Laufzeit nicht.

Johannes

Also

Johannes

es macht schon seinen Sinn,

Johannes

diese Sachen so zu deklarieren,

Johannes

insbesondere, wenn du eben hier solche,

Johannes

sag ich mal, grundlegenden Funktionen

Johannes

implementierst.

Johannes

Man kann das auch zu weit treiben,

Johannes

wenn man das zu weit treibt, dann kriegt man Java.

Johannes

Ja.

Johannes

Und

Johannes

man muss da eine Balance finden.

Johannes

Ja.

Johannes

Aber es ist,

Johannes

um wieder darauf zurückzukommen,

Johannes

es ist schon interessant, dass das eigentlich so relativ

Johannes

simple Sachen sind. Also hier dieses

Johannes

UML-Diagramm ist eine Viertelseite

Johannes

und es stehen ja wirklich nicht viele

Johannes

Sachen da drin. Ja.

Johannes

Es sind nicht viele Methoden, die man umsetzen muss.

Jochen

Ja, und das ist halt irgendwie

Jochen

quasi,

Jochen

also die meisten oder viele

Jochen

Leute werden sich niemals aus diesem Universum

Jochen

von dem, was da definiert ist, rausbewegen,

Jochen

weil damit quasi fast

Jochen

alles erschlagen ist, was man so normalerweise so tut.

Jochen

Das ist schon faszinierend, dass das geht, ja.

Jochen

Ja, außer Skalare.

Jochen

Okay, die stehen da jetzt auch nicht so normal.

Jochen

Ja.

Johannes

Ja, und dann ist das erste

Johannes

Kapitel ja schon fast vorbei. Dann haben wir noch hier die Übersicht

Johannes

der Dunder-Methods. Da wird einmal nochmal

Johannes

komplett alle aufgeführt auch.

Johannes

Ja. Schön, so völlig ohne

Johannes

Zusammenhang hier mit Metaprogramming

Johannes

und Abstract-Base-Glasses und

Johannes

Attribute-Descriptors und Attribute-Management.

Johannes

Also da

Johannes

ist es interessanter reinzuschauen,

Johannes

was es alles gibt, aber ich wüsste jetzt nicht

Johannes

bei allen, was die tun. Was ist der Unterschied

Johannes

zwischen Get-Attribute und Get-Attribute?

Johannes

Ja, es kommt in Kapitel.

Johannes

Ja.

Jochen

Also das eine ist

Jochen

irgendwie nochmal ein Stückchen

Jochen

allgemeiner, glaube ich, als das andere.

Jochen

Ich glaube, Get-Attribute ist halt das,

Jochen

das wirklich ganz allgemeine Ding.

Jochen

Und Get-Attribute ist halt, guckt halt wirklich

Jochen

ganz tief runter.

Jochen

Das eine ist näher dran, oder?

Jochen

Ja. Also Get-Attribute kannst du

Jochen

auch Methoden überschreiten.

Dominik

Genau, die Frage ist halt, wann, welches Dick das reinguckt,

Dominik

wenn du guckst.

Jochen

Aber so ganz genau weiß ich das jetzt auch

Dominik

alles nicht. Oder In-It-Sub-Class.

Johannes

Wüsstest du, was In-It-Sub-Class macht,

Jochen

Johann, oder Prepare? Ich weiß es aus

Jochen

einem,

Jochen

wir haben ja auch schon die Wechsel-Saison wieder.

Jochen

In-It-Sub-Class, das ist halt,

Jochen

der Grund, warum Leute

Jochen

Meta-Klassen verwenden, ist eigentlich der,

Jochen

dass sie halt irgendwie die Klasse-Instanzierung

Jochen

ab und zu mal so ein bisschen modifizieren wollen.

Jochen

Und fast alle Use-Cases lassen sich,

Jochen

also Meta-Klassen selber zum Benutzen ist

Jochen

super viertelig. Man muss

Jochen

extrem aufpassen, was man da tut.

Jochen

Und

Jochen

daher ist das halt so ein bisschen auch in Verruf

Jochen

geraten. Und Leute raten einem davon immer ab,

Jochen

das zu machen.

Jochen

Aber genau, man

Jochen

kann,

Jochen

wenn man jetzt In-It-Sub-Class

Jochen

verwendet,

Jochen

dann kann man fast alle Anwendungsfälle, für den

Jochen

Leute normalerweise so Meta-Klassen verwenden,

Jochen

halt damit hinkriegen und

Jochen

hat all diese Probleme nicht, die man halt sonst

Jochen

so kriegt, wenn man Meta-Klassen verwendet.

Jochen

Und das ist

Jochen

eingeführt worden mit Python 3.6. Und ich weiß das

Jochen

halt nicht deswegen, weil ich sowieso immer alles

Jochen

weiß, sondern in dem speziellen Fall,

Jochen

in dem speziellen Fall weiß ich es,

Jochen

in diesem Fall weiß ich es,

Jochen

weil den Pep dafür hat

Jochen

irgendwie, wir hatten ja Martin hier

Jochen

auch mal zu Gast, der irgendwie dann in diesen

Jochen

XFile-Rond-Laser geschrieben hat.

Jochen

Und den Pep zur Einführung von In-It-Sub-Class,

Jochen

den hat er geschrieben und ist

Jochen

damals in Python 3.6 reingekommen.

Jochen

Ja. Und deswegen hast du natürlich ganz

Johannes

besonders. Okay, dann habe ich jetzt das Falsche gefragt. Dann

Johannes

sag mal, was Sub-Class-Check macht der Hund? Weißt du mal alles?

Jochen

Ja, siehst du. Weiß ich nicht. Keine Ahnung.

Johannes

Ja, okay, gut. Also das kommt dann in einem

Johannes

späteren Kapitel und da sind auch

Johannes

MRO-Entries. Also ich meine, dass man

Johannes

da sein MRO bearbeiten kann, das ist ja

Johannes

schon hart.

Dominik

Kann man sich einfach sagen, ich bin jetzt

Dominik

ein bisschen tiefer implementiert und ich bin

Dominik

jetzt einfach type.

Dominik

Ja, keine Ahnung. Ich weiß es nicht.

Dominik

Wir werden

Johannes

es im Laufe dieser Vortragsreihe

Johannes

eine Type

Johannes

vielleicht lernen.

Jochen

Genau, aber was mich also auch

Jochen

überrascht hat, ist, dass wie viele... Oder machen wir jetzt das ganze Buch

Jochen

heute.

Jochen

Genau, ja. Das wird jetzt ein bisschen dauern.

Jochen

Einmal ansteigen.

Jochen

Türen schließen.

Jochen

Was ich auch

Jochen

irgendwie nicht erwartet hätte,

Jochen

also ist das halt so viel

Jochen

Volkssicht um arithmetische

Jochen

Geschichten und Operator

Jochen

Overloading. Also mehr als

Jochen

die Hälfte. Und das

Jochen

hätte ich jetzt nicht gedacht.

Jochen

Wenn man mich jetzt nachts geweckt hätte und gefragt hätte,

Jochen

was machen die Menschen, welche Magic Methods gibt's

Jochen

und was machen die so, dann wäre ich jetzt bei

Jochen

sowas wie Repre oder

Jochen

irgendwie, genau, Bool oder

Jochen

weiß ich nicht, sowas gewesen.

Dominik

Ja, es ist auch, es geht in

Johannes

beide Richtungen und dann geht's mit Integer und dann

Johannes

gibt's mit Reversed und dann gibt's mit Augmented und dann

Johannes

gibt's mit Bitwise und mit Reversed und

Johannes

Augmented. Also das gibt's alles

Johannes

in drei verschiedenen Varianten.

Johannes

Jeweils. Ja. Sonst sind's

Johannes

ja nicht so viele, aber es...

Johannes

Ja.

Johannes

Ja, ja, ja. Ja gut, Mathematik

Johannes

regiert die Welt. Ja.

Jochen

Das, das, ja.

Jochen

So ist es.

Jochen

Ja.

Jochen

Ja, dann, das ist doch interessant

Johannes

hier. Und am Ende seines Kapitels

Johannes

hat er immer noch einen Soapbox

Johannes

...

Dominik

Abschnitt. Eine Seifenkiste. Den finde ich auch

Johannes

sehr schön. Ja, ja, genau, wo er sich

Johannes

hinstellt und mal ein bisschen predigt. Und das, das

Johannes

fand ich ja tatsächlich auch sehr schön.

Johannes

The Art of the

Johannes

Meta-Object Protocol.

Johannes

Großartiger Buchtitel

Johannes

und hab ich mir jetzt auch mal auf meine Liste

Johannes

... Das musst du noch mal genau

Johannes

erklären, bitte.

Johannes

Ja, ich weiß es auch nicht. Ich hab's auch noch nicht gelesen, aber ich fand den Titel

Johannes

gut genug, dass ich es mir direkt auf meine Leseliste

Johannes

gesetzt hab.

Johannes

Was ich viel

Johannes

interessanter fand noch, war ganz am Ende was,

Johannes

wo er sagt hier, der Autor,

Johannes

der dieses AMOB-Buch geschrieben hat,

Johannes

Art of the Meta-Object Protocol,

Johannes

der hat Aspect-Oriented Programming

Johannes

entwickelt oder getrieben.

Johannes

Und

Johannes

ich hab's dann mal auf Wikipedia

Johannes

nachgelesen, was Aspect-Oriented Programming

Johannes

ist, aber nicht so richtig

Johannes

verstanden.

Dominik

Also Aspekte sind auch irgendwas mit Magie, oder?

Dominik

Da geht's entweder Wasser oder Feuer

Dominik

oder ...

Dominik

Irgendwas mit gegen die Muggel.

Dominik

Ja, vielleicht. Ich weiß es.

Dominik

Ich weiß es nicht. Da muss uns mal jemand erklären.

Dominik

Da würde ich gerne mehr wissen, wie es geht.

Johannes

Aber da sind auf jeden Fall

Johannes

in dieser Soapbox sind schöne Pointer drin, wo man

Johannes

dann dem

Johannes

geneigten Leser als Übungsaufgabe

Johannes

überlassen werden.

Dominik

Vielleicht werden die Designer von Go irgendwann

Dominik

das Meta-Objekt-Protokoll erweitern.

Dominik

Aber das ist im Moment nicht das,

Dominik

was man

Dominik

auf dem Niveau, mit dem man in Python arbeiten kann.

Dominik

Genau, das ist halt das, was er hier

Johannes

dann sagt. In anderen Sprachen hast du diese

Johannes

Möglichkeiten nicht. In Go gibt's halt nicht.

Johannes

Magic-Sachen, weil die halt im

Johannes

Interpreter drin sind, kommst du auch nicht dran, kannst nichts machen.

Johannes

Und

Johannes

Pech gehabt. Und das ist

Johannes

in Python eben nicht so. Deshalb hier

Johannes

Muggel-Methods.

Johannes

Jeder kann da hingehen und die Finger drauflegen

Johannes

und dann so tun, als ob er zu Python

Johannes

gehört.

Dominik

Du wolltest damit einen exklusiven

Dominik

Kreis aufmachen, lieber Johannes.

Johannes

Du musst nur die magischen Worte

Johannes

wissen und in der richtigen Reihenfolge sagen und

Johannes

dann deinen Zauberstab in der richtigen Bewegung schwingen.

Dominik

Ja, du musst aber schon noch in jede Ecke vom Raum schon eine Kerze

Dominik

reinstellen und so.

Dominik

Das ist dann,

Johannes

das ist Meta-Programming, was du da meinst.

Johannes

Und Meta-Klasse.

Jochen

Da muss man immer ein bisschen aufpassen, was man damit

Jochen

sich heraufbeschwört, wenn man zu viel

Jochen

Meta macht, dann das kann auch.

Jochen

Zu viel Magie.

Dominik

Wie sagt man?

Dominik

Merry meet, merry greet.

Dominik

And merry meet again.

Dominik

Also,

Dominik

wegen des Heraufbestands.

Johannes

Das erste Kapitel war nicht so lang.

Johannes

Nö, ich war überrascht.

Johannes

Es fängt

Johannes

ordentlich an und ist dann aber nach

Johannes

also hier 19 Seiten schon vorbei.

Johannes

Also, das fand ich

Johannes

überraschend. Der legt ordentlich los

Johannes

und macht dann aber gleich direkt eine Pause.

Jochen

Ja, ja, und danach kommen dann jetzt

Jochen

irgendwie Sequences und, und, und, und.

Jochen

Ja, das ist ja deutlich länger.

Jochen

Und ja.

Jochen

Da hatten wir schon mal drüber gesprochen.

Jochen

Aber, genau. Ja, Pattern Matching ist ja auch

Jochen

sowas, das haben wir auch noch nie wirklich ausführlich

Jochen

besprochen. Das sollten wir vielleicht auch mal

Jochen

tun. Jetzt gibt es dann Kapitel 2.

Jochen

Ja.

Johannes

Das ist dann, das ist tatsächlich etwas über 60 Seiten

Johannes

lang. Das ist dann gleich deutlich länger.

Johannes

Tja. Aber ich meine, wenn man auf 980

Johannes

Seiten kommen will, muss man auch mal

Jochen

ab und zu mal eine füllen.

Jochen

Kapitel machen. Ja.

Jochen

Wie viele Kapitel

Johannes

gibt es denn? Gar nicht nachgeguckt.

Johannes

Ich habe einfach losgelesen, ohne zu lesen,

Johannes

wie viele Kapitel es gibt.

Dominik

Ja, du hast doch viele. 900 Seiten. Hast du ein bisschen Platz.

Johannes

24 Kapitel gibt es.

Dominik

Ah ja. Hätten es 25 sein sollen.

Dominik

Oder wie ist da eine andere von den magischen Zahlen,

Dominik

damit man auch in die richtige Stelle kommt?

Dominik

Nee, 24 ist doch gut.

Dominik

Das ist eine

Dominik

Abandoned Number, oder?

Johannes

Das ist doch eine, wo die Summe der Teile

Johannes

größer ist als die Zahl selbst.

Johannes

Okay.

Johannes

Ist doch immer gut.

Johannes

Aha.

Johannes

Ja, jetzt kommen die Mathe-Nerds

Johannes

raus.

Johannes

Okay, kannte ich auch noch nicht.

Johannes

Ja.

Johannes

Da habe ich eine Buchempfehlung

Johannes

dazu, wenn dich das interessiert.

Johannes

These Wonderful Numbers.

Johannes

Da ist quasi

Johannes

zu jeder Zahl sind die Eigenschaften beschrieben.

Johannes

Hm.

Johannes

Das ist ein sehr

Johannes

nerdiges Buch für nerdige Mathematiker.

Dominik

Einfach keine Angst haben,

Dominik

die Dunkelheit länger ins Auge zu schauen.

Dominik

Je älter man wird, desto mehr

Dominik

versteht man davon auch.

Dominik

Als Mathematiker hat man da keine Angst davor.

Dominik

Hat auch wieder was mit Magie zu tun.

Dominik

Worte der Weisheit.

Dominik

Genau. Spezielle Art von Magie.

Dominik

Genau.

Dominik

Da wir die ganze Zeit von Magie reden,

Dominik

würde ich gerne meinen Pick tatsächlich nehmen.

Dominik

Ja.

Dominik

Ich nehme doch tatsächlich

Dominik

noch einen Euro-Python-Talk, weil

Dominik

der liebe Rodrigo

Dominik

einen sehr schönen Talk

Dominik

gemacht hat über so

Dominik

Turtle. Kennt ihr vielleicht?

Dominik

Auch ganz magische Sachen macht das. Das kann

Dominik

Dinge auf die

Dominik

Leinwand malen, die sich drehen,

Dominik

spiralen. Und dann kann man das erweitern,

Dominik

auch zu Fraktalen. Und damit kann man animierte

Dominik

Fraktale für

Dominik

Live-Performances zum Beispiel

Dominik

schreiben.

Dominik

Und zwar relativ einfach, indem man so einfache

Dominik

mathematische Prinzipien verwendet. Und da war ein toller Talk zu.

Dominik

Und er hat auch einen schönen Blog-Post dazu geschrieben.

Dominik

Deswegen würde ich den gerne mal in die Show umzlinken.

Dominik

Okay, okay.

Dominik

Okay, gut. Cool. Spannend.

Dominik

Mhm.

Johannes

Ich habe heute zwei Picks dabei.

Johannes

Der erste Pick

Johannes

ist ein Buch

Johannes

ähnlichen Ausmaßes

Johannes

wie Fluent Python.

Johannes

Ich halte mal hier die Kamera für die anderen beiden.

Johannes

Oh, okay. Noch ein Schläger.

Johannes

Als es kam, ist es, es hat ein tatsächlich

Johannes

ähnliches Format. Es heißt

Johannes

Django 5 by Example

Johannes

von Antonio Mele.

Johannes

Und

Johannes

ich glaube, dass das

Johannes

ähnlich ist wie Fluent Python,

Johannes

nur halt für Django.

Johannes

Ach, sehr cool. Ganz, ganz frisch mit

Johannes

Django 5.

Johannes

Weil, also hier, ich habe es leider noch nicht durchgelesen.

Johannes

Es ist, wie gesagt,

Johannes

auch das, auch dieses Buch hat

Johannes

ja, 750 Seiten,

Johannes

ein bisschen weniger, aber trotzdem ein ähnliches

Johannes

Format.

Johannes

Was ist das mit diesen Autoren von

Jochen

Programmierhandmüchern? Warum müssen die immer

Jochen

so viel schreiben?

Jochen

Es dauert irgendwas nicht richtig mit drin.

Jochen

Es gibt viel zu sagen.

Jochen

Ah ja, gut.

Jochen

Und

Johannes

ich glaube, der Trick da drin ist,

Johannes

halt, dass es bei Example ist und

Johannes

eben sehr viele

Johannes

einfach handfeste Projekte

Johannes

enthält, wo er sagt, hier, wir machen

Johannes

jetzt mal, hier, wir machen

Johannes

mal einen Blog und jetzt machen wir mal noch mehr Blog und

Johannes

jetzt machen wir mal noch mehr Blog und jetzt machen wir mal noch Social

Johannes

Website und Social Authentication

Johannes

und Content Sharing und Online

Johannes

Shop und Tracking User Actions und

Johannes

Managing Payments and

Johannes

Orders and Extending Your Shop und

Johannes

Internationalization und

Johannes

Caching und E-Learning und

Johannes

Content Management und API und

Johannes

Okay.

Johannes

Das ist, glaube ich, geht so ein bisschen

Johannes

in die Richtung, wo

Johannes

auf Lohnpeisen hingeht, dass es

Johannes

halt über die Basics hinausgeht

Johannes

und ich glaube, dass das

Johannes

eine Lücke in meinem Bücherschrank

Johannes

füllt, von der ich bisher nicht wusste, dass

Johannes

ich sie hatte und das freut mich sehr.

Johannes

Ah ja.

Dominik

Also hast du jetzt endlich Zeit, deinen

Dominik

Dango-Webshop zu implementieren, von dem du schon die ganze Zeit räumst?

Johannes

Mein Blog, ich werde jetzt endlich mal

Johannes

meinen Blog

Johannes

modernisieren.

Johannes

Das war gestern, jetzt ist es wieder.

Johannes

Ja, nee, das ist doch langweilig.

Johannes

Ich muss dynamisch sein und mit User Tracking und mit

Johannes

Payments and Orders.

Dominik

Ja, das wird ja auch mal Zeit.

Dominik

Ja, ja, klar.

Dominik

Roy, Roy, Roy.

Dominik

Wieder Magie.

Dominik

Ja.

Johannes

Der zweite Pick, den ich mitgebracht habe, ist eine

Johannes

Bibliothek, die heißt Dramatic oder

Johannes

vielleicht heißt sie auch Dramatic Q.

Johannes

Und

Johannes

das kam auf in einer

Johannes

Diskussion über, was kann man denn statt

Johannes

Celery verwenden?

Johannes

Da gibt es jetzt zwar in Django was.

Johannes

Die Background-Tasks

Johannes

hatten wir ja vorhin auch schon kurz gelernt.

Dominik

Du hast denselben Mastodon-Social-

Dominik

Thread gelesen.

Johannes

Ja, offenbar, ja. Und ich habe mir aber die Links

Johannes

rausgeklickt. Und einer, der mir

Johannes

ins Auge gestochen ist, war eben Dramatic.

Johannes

Was auch so ein Queuing-System

Johannes

ist, was aber ein bisschen

Johannes

eine pythonischere Syntax hat

Johannes

als Celery jetzt zum Beispiel.

Johannes

Und das sah auf den ersten Blick

Johannes

sehr gut aus und ich freue mich da drauf,

Johannes

das irgendwann mal

Johannes

einsetzen zu können.

Johannes

Ja, stimmt. Habe ich mir auch angeguckt. Das

Dominik

fand ich tatsächlich nett. Ich hatte noch keine

Dominik

Zeit und habe mir gedacht, wenn ich jetzt eh noch bis April

Dominik

warten darf, bis Django Background-Tasks

Dominik

rauskommt, dann spare ich mir einfach.

Jochen

Du kannst es auch jetzt schon verwenden.

Jochen

Ich meine, es ist noch nicht wirklich dafür gedacht, dass man

Jochen

es jetzt verwendet, aber

Jochen

Django-Tasks ist ja sozusagen,

Jochen

kannst du einfach installieren und dann verwenden.

Jochen

Geht.

Jochen

Ja.

Jochen

Ja.

Jochen

Warum eigentlich nicht?

Jochen

Kann vielleicht noch zu wenig, aber

Jochen

ja. Also, ja.

Jochen

Also ist auf jeden Fall eine gute Idee, dass

Jochen

wenn man das noch nicht gemacht hat, einfach mal das

Jochen

auszuprobieren, weil

Jochen

dann muss man

Jochen

nichts mehr umstellen, wenn es dann irgendwann

Dominik

dazu kommt. Ja, also es gibt so ein paar Module. Wie heißt das?

Dominik

Django Background-Tasks tatsächlich?

Dominik

Django-Tasks heißt das Paket.

Dominik

Genau, weil das habe ich gerade Background-Tasks gesagt, weil das ist

Dominik

ein fürchterliches Modul.

Dominik

Und Django-Tasks ist tatsächlich

Dominik

gut im Vergleich dazu.

Dominik

Weil Django Background-Tasks gibt es auch und das wird man schwer

Jochen

wieder loslegen. Ja, ich verlinke das dann, aber

Jochen

es ist genau, es ist...

Dominik

Es gibt mehrere Module, die ähnlich benannt sind, die

Dominik

alle versuchen, was ähnliches zu tun oder

Dominik

mal so oder so naiv

Dominik

implementiert sind und dann relativ anstrengend wieder

Dominik

zu enden. Ja, wie auch immer. Also Django-Tasks

Dominik

ist, glaube ich, das, was wir

Jochen

nehmen wollen. Genau.

Jochen

Ja, was...

Jochen

Dann packe ich auch noch mal was. Was ich jetzt...

Jochen

Ich habe ein... Ich weiß nicht.

Jochen

Ist auch etwas

Jochen

Spezielleres, was jetzt gar nicht so viel mit Python...

Jochen

Du warst einfach nur auf Shopping-Tour.

Jochen

Ja, aber ich finde

Jochen

es ganz interessant, weil

Jochen

ich habe ganz lange jetzt

Jochen

so Dinge verwendet, wie... Also ich habe auch schon mal...

Jochen

Also ich mache mal so...

Jochen

Du hast doch erst Geburtstag, Jochen.

Jochen

Ja, ja, aber ich brauche es ja

Jochen

für was anderes.

Jochen

Ich habe auch tatsächlich irgendwie

Jochen

mal vor, mal wieder... Also ich weiß nicht, ich schaffe

Jochen

irgendwie... Ich wollte mal Videos machen.

Jochen

Mehr wieder. Und dann

Jochen

da brauche ich dann natürlich auch entsprechendes Equipment,

Jochen

dafür. Und... Soll ich jetzt demnächst

Jochen

mal meine Euro-Recksammlung picken?

Jochen

Ja, ja, mach das. Finde es gut.

Jochen

Ja, also

Jochen

wie kriegt man eigentlich quasi Bilder

Jochen

von der Kamera irgendwie auf den Rechner?

Jochen

Und ich habe auch schon sowas wie Lightroom verwendet

Jochen

oder so früher mal. Und dann irgendwann

Jochen

dachte ich mir, ach, das brauche ich alles nicht mehr. Und dann

Jochen

habe ich irgendwie teilweise

Jochen

auch eine Zeit lang sogar Apple Fotos

Jochen

verwendet und fand das ganz okay, weil ich muss

Jochen

ja nicht viel machen. Und das hat geklappt.

Jochen

Und jetzt geht das aber nicht mehr, weil

Jochen

die

Jochen

RAW-Files, die aus der Kamera rausfallen,

Jochen

die mag Apple Fotos nicht mehr.

Jochen

Und... Ich habe meine Kamera gekauft.

Jochen

Ja. Und

Jochen

da gibt es aber

Jochen

dann vom Hersteller, von Nikon

Jochen

gibt es halt Nikon NX Studio.

Jochen

Und die kann das... Die Software

Jochen

kann dann halt tatsächlich das RAW-Format lesen.

Jochen

Und das Coole ist, und das wusste ich gar nicht, dass das geht,

Jochen

das

Jochen

versteht das so gut, dass es

Jochen

halt irgendwie auch die

Jochen

die

Jochen

also quasi Profile für

Jochen

alle möglichen Dinge aus der Kamera damit drin hat.

Jochen

Das heißt, wenn du das halt jetzt in der Kamera schon so

Jochen

eingestellt hast, dann kriegst du das halt automatisch

Jochen

mit rein oder sowas, was bei anderen, bei

Jochen

Lightroom oder so eben nicht kriegst. Und

Jochen

du kannst auch dann dir deine eigenen Profile

Jochen

zusammenstellen und wieder auf die Kamera

Jochen

speichern. Und dann kannst

Jochen

du halt Bilder machen, die genauso sind, wie du

Jochen

das halt

Jochen

wie dein Look halt aussehen soll und so.

Dominik

Das heißt, du kannst den vorher vorprogrammieren.

Jochen

Ja, ja. Also das ist wirklich...

Jochen

Man kann damit halt Dinge machen, die sonst nicht so richtig gehen.

Jochen

Das fand ich ganz nett. Und also,

Jochen

viele Leute schwärmen da auch von, dass

Jochen

das halt irgendwie mit den Farben richtig umgeht und solche

Jochen

Sachen, was halt immer so ein Problem ist bei Fotos.

Jochen

Und das ist alles richtig und das ist

Jochen

wirklich faszinierend. Das kann mehr, als man so erwartet. Auf der

Jochen

anderen Seite ist es halt unfassbar schlecht programmiert.

Jochen

Das ist unglaublich.

Jochen

Also einmal ist es ultra langsam und dann

Jochen

ist... Also man kann es

Jochen

halt nur so ein paar Minuten lang verwenden und dann

Dominik

verbraucht... Das klingt als hättest du noch ein neues Hobby. Du hast ja

Dominik

gerade schon Computerspiele in Rust programmiert.

Jochen

Ja, ja. Vielleicht zu viel Zeit.

Jochen

Ich weiß nicht genau. Aber

Jochen

also das leckt halt

Jochen

unglaublich, was Speicher angeht.

Jochen

Und das verbraucht halt irgendwie innerhalb von...

Jochen

So nach einer halben Stunde sind die 32 GB weg.

Jochen

Und dann muss man es neu starten. Was natürlich irgendwie

Jochen

echt totaler Quatsch ist. Aber...

Dominik

Hast du nicht genug Speicher, oder musst du neu starten?

Jochen

Nee, das ist halt alles...

Jochen

Wieso hast du nur so wenig Speicher, Jochen?

Jochen

Ich bin nicht nur

Jochen

GPU-Pur, ich bin auch RAM-Pur.

Jochen

Ja, nur 32 GB.

Jochen

Ja, ja, ja. Schon ziemlich lächerlich.

Jochen

Ja, muss ich auch sagen. Stimmt.

Jochen

Ja. Aber, ja, genau.

Jochen

Also da kann man nicht genug... Kann man irgendwie

Jochen

mit dem RAM-Kaufen nicht hinterherkommen, wenn man halt

Jochen

Software hat, die einfach irgendwie das

Jochen

alles wegchrisst. Einfach so.

Jochen

Ohne Grund. Ja.

Jochen

Jedenfalls, genau. Also aber wenn man das sich lange

Jochen

nicht angeguckt hat, weil man immer dachte, ah, das ist alles

Jochen

furchtbar. Vielleicht nochmal hingucken. Ist ganz interessant,

Jochen

was da so passiert. Also ich meine,

Jochen

ist auch so ein bisschen ärgerlich, aber auf der anderen Seite auch

Jochen

faszinierend, was da alles so geht.

Jochen

Ja. Genau.

Jochen

Tja.

Jochen

Ja, vielleicht muss ich doch... Das war jetzt aber schon

Jochen

ein sehr spezieller Pick, Jochen. Ja, war sehr speziell.

Dominik

Nochmal, was du bei Fox hat oder so

Dominik

was machen, wenn wir hier die ganze Zeit nur so

Dominik

Mediensachen tun,

Dominik

wie mit den Bildern.

Jochen

Wir sind ja in so einem Medium

Jochen

Dings hier auch, ne? Ja.

Jochen

So Musik,

Jochen

ja, die Musik, die ich mache, die finde ich meistens

Jochen

sowieso abartig.

Dominik

Ja, ich glaube, dann sind wir

Dominik

für diese Episode tatsächlich

Dominik

ausnahmsweise mal früh fertig.

Dominik

Ich habe übrigens zwischendurch Kritik bekommen

Dominik

auf die Peißen von Leuten, die den Podcast hören.

Dominik

Es wäre viel zu lang. Es wäre total nervig.

Dominik

Man könnte es gar nicht mal zwischendurch

Dominik

durchhören, sondern müsste sich immer so viel Zeit vernehmen.

Dominik

Man kommt da gar nicht durch. Man hört sich nie zu Ende.

Dominik

Ja, da müssen wir mal ein bisschen... Also alles, was

Dominik

wir an weitere Kritikanregungen fragen

Dominik

und so weiter, hallo at peißenpodcast.de

Dominik

Bleibt uns gewogen, hört uns weiter. Danke, Johannes,

Dominik

dass du wieder da warst. Das nächste Mal gerne

Dominik

wieder vor Ort. Du weißt, das war eine...

Johannes

Ich komme jedes Mal gerne vorbei,

Johannes

wenn ich da bin. Ja, wir freuen

Dominik

uns wieder drauf. Ja, danke, Jochen

Dominik

und hört uns bald wieder.

Dominik

Bis dann. Bis dann. Tschüss.

Dominik

Ciao, ciao.