Transcript: PyPy - Just in Time

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Dominik

Ja, hallo liebe Hörerinnen und Hörer, willkommen bei einem Python-Podcast, Episode 48, heute geht es um PyPy.

Dominik

Hallo Jochen.

Dominik

Ja, hallo Dominik.

Dominik

Hallo Karl.

Dominik

Herzlich Willkommen.

Dominik

Hallo Karl.

Dominik

Ja, wir wollen wie immer erstmal News machen. Was hast du denn da, Jochen?

Jochen

Oh, oh, oh, jetzt muss ich mal, wir müssen hochscrollen.

Jochen

Ja, also es gab jetzt ein Python-Enhancement-Proposal tatsächlich, der glaube ich schon, also ich meine das richtig gelesen zu haben,

Jochen

dass das jetzt schon für Python 3.12

Jochen

irgendwie ein

Jochen

Compiler-Flag einführen soll, das den

Jochen

Global Interpreter-Log optional macht.

Jochen

Das war so die letzte Woche

Jochen

große Neuigkeit. Also ich glaube, es gibt zwei große Themen,

Jochen

Packaging und

Jochen

irgendwie diesen

Jochen

PEP 703.

Jochen

Ja, und ich habe dann auch so ein bisschen reingeguckt.

Jochen

Ich bin ja immer so ein bisschen der Ansicht

Jochen

oder ich habe dir so ein bisschen vertreten, dass

Jochen

ich das eigentlich nicht so ganz nachvollziehen kann,

Jochen

warum das so ein Riesenthema ist, weil

Jochen

ehrlich gesagt betrifft es mich meistens nicht.

Jochen

ich bin eigentlich bisher kaum je in die Situation

Jochen

gekommen, dass

Jochen

dieser Global Interpreter-Log für mich jetzt ein

Jochen

großes Problem gewesen wäre.

Jochen

Aber ich habe mir den jetzt nochmal angeguckt und

Jochen

tatsächlich, also es gibt da schon viele Situationen,

Jochen

wo einem das halt Ärger machen kann. Also mein

Jochen

Beispiel war, ich hatte ja mal gefragt, ob jemand ein anderes

Jochen

Beispiel hatte, also wenn jetzt eine Datenbank in Python

Jochen

schreiben will, dann könnte einem das Ärger machen.

Jochen

Und es gibt aber noch viel mehr

Jochen

Beispiele und da standen auch welche

Jochen

drin, wo ich dann sagen muss, okay, doch, das hat

Jochen

schon, da haben Leute schon ein Problem

Jochen

dann eventuell. Gerade so im

Jochen

Data-Science-Bereich, das war mir gar nicht klar, also ganz wichtig

Jochen

ist da wohl, dass man halt

Jochen

nicht von unterschiedlichen Prozessen aus auf

Jochen

den GPU-Speicher zugreifen

Jochen

kann, tatsächlich, so richtig.

Jochen

Und dann kriegt man natürlich sehr schnell ein Problem,

Jochen

wenn man da nicht mehrere Sets auf

Jochen

unterschiedlichen CPUs laufen lassen kann.

Jochen

Ja, genau.

Jochen

Ja,

Jochen

das war so, das ist

Jochen

ganz interessant gewesen.

Carl Friedrich

Aber ist noch voll auch in Diskussion, oder?

Carl Friedrich

So ein richtiges, so einen klaren

Carl Friedrich

Konsens gibt es da noch nicht, oder? Hast du da einen

Jochen

Überblick? Ne, genau, also die Diskussion

Jochen

habe ich mir teilweise angeguckt, aber auch nicht komplett und

Jochen

ob es jetzt wirklich kommt oder nicht, keine Ahnung.

Jochen

Es stand auch irgendwann ein Zeitplan

Jochen

in dem PEP selber drin, der eher so

Jochen

sagte, ja, also der Plan ist

Jochen

eher, das ab 2024 einzuführen

Jochen

und dann 25,

Jochen

26, dann halt

Jochen

irgendwann dazu überzugehen,

Jochen

das halt quasi

Jochen

3,15.

Jochen

Ja, ich weiß jetzt gar nicht mehr,

Jochen

in welcher Relation es war, so 13, 14, 15,

Jochen

dann irgendwann umzusteigen

Jochen

auf per Default ist der

Jochen

Global Interpreter locker aus und dann

Jochen

irgendwann es zu deprecaten

Jochen

und dann bis irgendwann 2030 oder so wegfallen

Jochen

zu lassen, aber das ist dann halt sehr weit in der Zukunft.

Jochen

Kleine Ahnung.

Carl Friedrich

Und der Plan ist aber erstmal, das quasi hinter einer

Carl Friedrich

Interpreter

Carl Friedrich

Compile-Time-Flag zu verstecken.

Carl Friedrich

Ja, okay, alles klar.

Dominik

Jetzt haben wir ja direkt am Anfang so was Schwieriges

Dominik

gemacht. Können wir vielleicht

Dominik

nochmal ganz kurz erklären, was nochmal ein

Dominik

Gehör ist?

Dominik

Ja, soll ich?

Dominik

Ja, gerne.

Dominik

Also das Problem ist einfach,

Carl Friedrich

dass der Python-Interpreter selber nicht Thread-safe ist.

Carl Friedrich

Dass quasi die ganzen Datenstrukturen,

Carl Friedrich

die quasi der Interpreter selbst verwendet,

Carl Friedrich

halt nicht mit irgendwelchen Logs versehen sind,

Carl Friedrich

sondern es einfach nur davon ausgegangen wird,

Carl Friedrich

in der Implementierung überall,

Carl Friedrich

dass zu jedem Zeitpunkt halt nur ein Python-Thread,

Carl Friedrich

ein Thread wirklich Python-Code ausführen kann.

Carl Friedrich

Und das führt dazu, dass man halt quasi,

Carl Friedrich

wenn man Python-Code schreibt,

Carl Friedrich

nur von einem Thread aus wirklich gerade ausführen kann.

Carl Friedrich

Und dazu, das hat halt die Auswirkung,

Carl Friedrich

es war lange kein Problem,

Carl Friedrich

weil halt keiner irgendwie ein Multi-Prozessor-System hatte.

Carl Friedrich

Aber jetzt, wo es halt Multi-Core gibt seit 20 Jahren oder so,

Carl Friedrich

ist es halt immer wieder ein großes Diskussionsding,

Carl Friedrich

dass es halt nicht so toll ist,

Carl Friedrich

dass man wirklich Multi-Thread-Algorithmen in Python schreiben kann.

Carl Friedrich

Ist das brauchbar zusammengefasst?

Carl Friedrich

Ja, ja, doch, nee, klingt gut.

Carl Friedrich

Und ich glaube, das Coole an der PEP ist eigentlich, dass halt wirklich eine Firma, nämlich Facebook, soweit ich das verstanden habe, die den nötigen, nicht ganz kleinen Engineering-Aufwand halt mal investiert hat, um sich anzuschauen, wie man den loswerden könnte.

Carl Friedrich

Also und halt auch, das Loswerden ist jetzt gar nicht so das prinzipielle Problem, sondern das Problem ist halt, man will den loswerden, ohne dass Single-Threaded-Python viel langsamer wird. Das ist quasi das Schwierige.

Jochen

Ja, weil es gab ja schon mal von Larry Hastings oder so, das ist jetzt auch fast zehn Jahre her oder so, dass er hatte dieses Gilectomy-Projekt, wo er eben halt auch versucht hat, das loszuwerden über so Fine-Grained-Locking, weil normalerweise ist halt, also für den Garbage-Collector braucht man, also das ganze Reference-Counting ist halt hinter dem Gill oder ist halt der Grund dafür, warum der Gill das halt schneller macht, als wenn man es halt einzeln locken würde.

Jochen

Und ja, das war halt immer so, die erste naive Implementation war irgendwie so 40 Mal langsamer als mit Git und dann ist es im Verlauf der Zeit auf 20 Mal langsamer runter oder so. Aber das war halt immer noch nicht wirklich so, dass man das verwenden kann.

Jochen

Und jetzt die aktuelle Geschichte hat angeblich irgendwie so, wie es dann implementiert werden soll in dem PEP, 10% Kosten in Single-Thread-Performance, was ja so, und es gibt halt schon ein Ding, das kann man auch über PyInf zum Beispiel installieren, ich habe das mal ausprobiert, das nennt sich irgendwie Python Nogil oder so, das macht nur 5% quasi Performance-Einbußen,

Jochen

Aber das hat auch noch ein paar Sachen da drin,

Jochen

die jetzt in dem aktuellen Pep nicht drin sind.

Jochen

Daher wäre das ein bisschen

Jochen

langsamer. Aber ja, also

Jochen

10% ist jetzt noch nicht so allzu viel.

Jochen

Es gibt auch noch so ein paar andere Sachen, wie zum Beispiel,

Jochen

man muss jetzt halt da, es gibt dann so

Jochen

ein paar Tricks, die da verwendet werden.

Jochen

Und einer ist halt auch,

Jochen

dass es jetzt halt immer

Jochen

einen Pointer auf den Thread gibt, in jedem

Jochen

Python-Objekt,

Jochen

der das erzeugt hat, weil man

Jochen

der Garbage Collector zwar nur innerhalb der

Jochen

von einem Thread erzeugten Sachen aufräumt,

Jochen

oder Reference-Counting macht und dann muss man

Jochen

das halt vielleicht nicht mehr locken, aber dann muss man halt

Jochen

sich merken, welcher Thread das war und das sind halt

Jochen

ein 64-Bit-Ding und dann

Jochen

hat man noch so einen

Jochen

Pointer auf, das ist gar nicht mehr genau,

Jochen

das sind insgesamt drei Pointer, die jedes Objekt mehr

Jochen

kriegt, drei 64-Bit-Pointer und das ist natürlich schon

Jochen

irgendwie, das sind halt 24 Byte

Jochen

mehr pro Objekt,

Jochen

das ist schon nicht so ohne, also speichermäßig

Jochen

ist es auch ganz schön und

Jochen

ja,

Jochen

ja, so

Jochen

Es sind halt nur Trade-Offs.

Jochen

Wenn man es gebrauchen kann, ist es vielleicht gut, aber

Jochen

wenn man es halt irgendwie nicht braucht,

Jochen

dann kann es auch sehr nervig sein.

Jochen

Ja, und deswegen

Jochen

und die C,

Jochen

dieses Application

Jochen

Binary Interface

Jochen

ist halt auch nicht mehr kompatibel,

Jochen

sodass halt man im Grunde

Jochen

halt die C-Extensions,

Jochen

also für jedes

Jochen

Paket, das halt eine

Jochen

C-Extension ist,

Jochen

muss man halt die entsprechend richtige

Jochen

Version installieren für den Infrared-Richter, den man

Jochen

verwendet. Also man muss quasi jede C-Extensions

Carl Friedrich

einmal anfassen und halt zum Teil die

Carl Friedrich

C-API

Carl Friedrich

Usage irgendwie dann

Carl Friedrich

korrekt machen und die Logs einführen,

Carl Friedrich

wenn das nicht Thread-Safe ist.

Carl Friedrich

Also das ist halt möglicherweise schon auch Aufwand.

Carl Friedrich

Ja, ja.

Dominik

Also wenn man, okay, also das wird dann tatsächlich ein

Dominik

Breaking-Change sein, dann, wenn die C-Extensions

Dominik

dann nicht mehr gehen.

Dominik

Das ist dann eigentlich Python 4?

Jochen

Nee, also sag mal so, du kannst es ja parallel

Jochen

verwenden, also wenn du das nicht benutzen willst.

Jochen

Wenn der Default sich ändert.

Jochen

Ja, aber das ist dann irgendwann, das ist in der weiten

Jochen

Zukunft, also das ist halt noch Jahre heran.

Dominik

Ja, aber wenn das Python 3.5 ist, dann ist es Python 4.

Dominik

Ja gut, ich meine,

Jochen

wenn niemand bis dahin umgestellt hat und es keine

Jochen

Pakete gibt, dann wird man das wahrscheinlich einfach nicht machen.

Jochen

Wenn es alle schon machen, alle relevanten,

Jochen

dann ist es halt auch nicht mehr so schlimm, wenn man das deprecated

Jochen

also, ja, keine Ahnung,

Jochen

ist wahrscheinlich jetzt sehr schwer, da irgendwelche Voraussagen zu

Jochen

machen. Aber, ja.

Carl Friedrich

Ich glaube, wir müssen nachher einfach, aber auf jeden Fall

Carl Friedrich

uns merken, dass wir noch ein bisschen über C-Extensions

Carl Friedrich

reden müssen. Oh ja, ich glaube, das werden wir.

Carl Friedrich

Wer war denn

Dominik

da bei Facebook noch mal mit dabei? War das Sam Gross?

Dominik

Sam Gross, genau.

Jochen

Du hattest vielleicht den Vortrag auf der Eurofight

Jochen

letztes Jahr gesehen. Ja, ja.

Dominik

Ich habe nicht so viel verstanden, aber ich habe ihn mir angeguckt.

Dominik

Okay, ja.

Jochen

Ja, ja, ist auch ein schwieriges Thema, glaube ich.

Jochen

der, der, der, also einige der Ideen

Jochen

sind auch schon, also diese Geschichte mit den

Jochen

drei Pointern, die es jetzt gibt, es gab ein akademisches

Jochen

Paper dazu, wie man das denn bauen kann

Jochen

und da wurden die, diese

Jochen

Informationen, die darin stecken, in einen Pointer

Jochen

reingefriemelt irgendwie,

Jochen

reinkodiert und das war den Leuten

Jochen

aber dann jetzt zu heiß und dann haben sie gesagt,

Jochen

nee, wir nehmen lieber drei, das ist zu gefährlich,

Jochen

was können da alles für Overflows passieren?

Jochen

Und also daran sieht man

Jochen

schon, dass es halt, dass sie sich das nicht getraut haben,

Jochen

das einfach so zu übernehmen, es ist kompliziert.

Jochen

Würdest du das Paper bitte auch verlinken?

Jochen

Das klingt eigentlich spannend. Ja, kann ich machen.

Jochen

Mach auch den Talk von

Dominik

der Europython rein, wenn es den irgendwo schon gibt.

Dominik

Ich füge das mal hinzu.

Dominik

Alles klar.

Dominik

Er hat das nämlich genau erklärt, wie er das so vorhat.

Dominik

Und das war schon...

Dominik

Er hat einige clevere Ideen dabei gehabt, fand ich.

Dominik

Auch ein spannender Typ, ja.

Dominik

Ja.

Dominik

Okay.

Dominik

Habt ihr noch nichts? Du hast gesagt Packaging.

Jochen

Ja, Packaging.

Jochen

Das war ein anderes großes Thema.

Jochen

Auch vor zwei Wochen oder so gestartet.

Jochen

Oder noch ein bisschen länger.

Jochen

Und das kann ich halt immer noch so versichern.

Jochen

Es gibt einen sehr, sehr langen Thread.

Jochen

ich weiß gar nicht genau, wo war das

Jochen

denn? Das Ding heißt

Jochen

irgendwie Python Packaging Strategy Discussion

Jochen

Teil 1, das ist auf DiscussPython.org.

Jochen

Ah, okay. Ja, und

Jochen

habe ich nicht ganz gelesen, das war mir dann zu viel,

Jochen

aber es gab, dann haben

Jochen

auch diverse Leute da längere

Jochen

Blogposts darüber geschrieben, was sie denn so denken.

Jochen

Also ja, das Problem ist natürlich

Jochen

irgendwie bei allen Umfragen, die man zum Thema

Jochen

Python macht, dann wird

Jochen

das von Leuten, die da nicht so

Jochen

erfahren sind, immer als Painpoint Nummer 1

Jochen

beschrieben, dass es halt so kompliziert ist

Jochen

und dass man nicht weiß, was man denn jetzt

Jochen

nehmen soll für welche Tools und

Jochen

wie man die dann jetzt am besten, wie rum man die hält

Jochen

und dann wird es nicht irgendwie

Jochen

keine furchtbaren Sachen passieren und

Jochen

ja, das ist ein Problem und

Jochen

aber es gibt auch keine so richtig einfache

Jochen

Lösung

Jochen

und ich weiß es nicht so genau. Ich glaube, das Fazit

Jochen

war mehr so, ja, es liegt halt vor allen Dingen

Jochen

daran, dass halt auch Python einfach sehr alt ist und Leute

Jochen

das auf sehr unterschiedliche Art verwenden und man

Jochen

kann es nicht gut lösen, weil

Jochen

man kann nicht allen gerecht werden,

Jochen

weil manche Leute brauchen halt sehr feingranulare

Jochen

Geschichten und andere lieber

Jochen

ein eigenes Interface und das kann man,

Jochen

ja, wie will man das unter einen Hut bringen?

Jochen

Das ist schwierig. Also auch interessant,

Dominik

fand ich genau, ich weiß nicht, ob das in dem Zusammenhang

Dominik

aufgetaucht ist, aber es ist auch erst wenige Wochen alt, von

Dominik

Nathaniel Smith, ein

Dominik

neuer Paketsprachler, Posey heißt er,

Dominik

oder Posey, ich weiß nicht genau, wie man das ausspricht,

Dominik

der ist das eine, ein Rust-Binary,

Dominik

die quasi das ganze Zeugs von

Dominik

Python übernehmen soll, also den Interpreter mit ausliefern

Dominik

und Pakete bauen und

Dominik

Dependencies bauen und

Dominik

deren Grafen bauen und so. Und das

Dominik

sah, fand ich, relativ interessant aus, weil genau

Dominik

das auch eines der Pages ist, die allen Leuten, mit denen ich

Dominik

irgendwas mit Paisen machen will, erstmal

Dominik

erklären muss, hä, wie geht denn das? Oh, das ist aber kompliziert und warum

Dominik

ist das denn so? Und ja,

Dominik

sobald dann halt, also wenn die einen Paisen machen, okay, aber wenn die

Dominik

nochmal eine andere Paisenversion, irgendwann habe ich es ja später so,

Dominik

geht alles kaputt und Fahrt anpassen und dies, das

Dominik

ist für einige Menschen gar nicht so einfach zu handeln.

Carl Friedrich

Ja, und Natalia ist auch jemand, dem man

Carl Friedrich

quasi den Geschmack zutraut, das

Carl Friedrich

richtig gut zu machen. Ja.

Carl Friedrich

Ja, ja, ja, also bekannt

Jochen

wie, er hat ja Trio

Jochen

geschrieben, also eine andere Implementation

Jochen

für so Async-Geschichten

Jochen

und eine andere

Jochen

Art, das zu machen. Er hat einen sehr

Jochen

tollen Artikel geschrieben, irgendwie

Jochen

für Structured Concurrency,

Jochen

den verlinke ich auch mal gerne

Jochen

oder sage Leuten, dass sie sich das mal durchlesen sollen.

Jochen

Ja, insofern,

Jochen

ja genau, das habe ich auch da direkt aufhorchen

Jochen

lassen, als ich gehört habe, wer das gemacht hat.

Jochen

Ja, auf der

Jochen

anderen Seite weiß ich jetzt nicht so genau. Also er

Jochen

schreibt, gut, er macht das jetzt in Rust, weil

Jochen

er wollte schon immer mal was von Rust machen.

Jochen

Ich weiß nicht genau, wo man das unbedingt, also alle Leute

Jochen

machen und haben irgendwie Dinge, Tooling in Rust.

Jochen

Bei

Jochen

JavaScript verstehe ich das so ein bisschen, weil

Jochen

die haben da, also jede Änderung

Jochen

im Code führt halt dazu, dass irgendwie so 20

Jochen

Transpiler, irgendwelche

Jochen

Linter, sonst was irgendwie loslaufen und Dinge machen.

Jochen

Und

Jochen

wenn dann jedes Mal so ein fetter Node.js-Prozess

Jochen

gestartet wird, dann

Jochen

dauert das, dann addiert sich das natürlich

Jochen

irgendwie auf in der Latenz. Aber Python

Jochen

hat man das ja jetzt so eigentlich auch nicht.

Dominik

Naja, aber immerhin hast du eine vorkompilierte Binary,

Dominik

die du irgendwie ausliefern kannst. Und in Rust ist das

Dominik

vielleicht so ein Typensicher und irgendwie ordentlich

Dominik

schnell. Und ich glaube, man kann

Carl Friedrich

die halt auch relativ leicht dann so statisch

Carl Friedrich

verlinken und hat halt wirklich nur eine

Carl Friedrich

Datei. Ja, genau. Ja, okay.

Jochen

Ansonsten hat man das Bootstrapping-Problem, dass man erstmal

Jochen

einen Package-Manager installieren muss, damit man sich

Jochen

den richtigen Package-Manager, also das Problem

Jochen

das Poetry hat mit dem

Jochen

curl und get Poetry

Jochen

schrecklich Schell-Skript irgendwie von

Jochen

einer Webseite ausführen. Ja. Ja.

Jochen

Ja, okay. Gut, das löst es. Das stimmt.

Dominik

Ja. Das sind so ein paar Sachen,

Dominik

die glaube ich gar nicht schlecht sind. Also ja, aber Rastor ist cool.

Dominik

Ich habe es auch mal ein bisschen ausprobiert in Advent of Cody.

Dominik

Aber

Dominik

die Weihnachtszeit ist ja jetzt schon wieder vorbei.

Dominik

Ich weiß nicht, was ich finde.

Jochen

Also das, was ich meistens

Jochen

verwende, ist halt für Pakete bauen

Jochen

Flit. Das macht eigentlich nur das.

Jochen

Ansonsten verwende ich für Abhängigkeit Pip-Tools.

Jochen

Und

Jochen

ja. Pip-Tools fand ich

Dominik

ja fürchterlich, aber du findest Poetry fürchterlich.

Dominik

Ich habe Poetry lange verwendet.

Jochen

Also fürchterlich ist...

Dominik

Ja, wir hatten uns ja, glaube ich, das war schon ein, zwei

Dominik

Folgen her, über dieses

Dominik

Problem mit den Dependencies irgendwie schon

Dominik

auseinandergesetzt noch.

Dominik

Warum das vielleicht

Dominik

blöd ist, aber ich sage mal so, theoretisch kann man

Dominik

die ja trotzdem einfach dann selber

Dominik

einstellen in der PyProject-Hummel.

Dominik

Ja, ja, das

Jochen

Problem ist, dass Poetry

Jochen

implizit halt,

Jochen

wenn man sagt Poetry add irgendein Paket,

Jochen

irgendwie ein

Jochen

Upper Bound auf die

Jochen

Version macht, was

Jochen

Wenn man eine Library schreibt, wo andere halt sehr blöd

Jochen

ist, weil die dann sofort in Dependency-Problemen

Jochen

laufen, Konflikte laufen.

Dominik

Man muss ja manuell quasi tatsächlich dann

Dominik

die Funktion wegnennen.

Dominik

Naja, gut.

Dominik

Das ist, glaube ich, eine gute Idee.

Dominik

Ich habe letztens gesehen, PipTools

Dominik

in PyProject Hummel irgendwie rein

Dominik

gemeldet.

Dominik

Letzte Woche war

Jochen

PyGDF-Treffen und

Jochen

Jens hat mir das mal

Jochen

erzählt, dass er das jetzt macht.

Jochen

Er benutzt PipTools. Ist auch nicht so super

Jochen

nicht hundertprozentig zufrieden, aber

Jochen

irgendwie

Jochen

benutzt man das auch häufiger

Jochen

und hat einen Weg gefunden, wie man das

Jochen

relativ einfach, die Abhängigkeiten auch in

Jochen

der PyProject-Tunnel da reinschreiben

Jochen

kann und hat mir mal gezeigt, wie man das macht.

Jochen

Das könnte ich auch verlinken, stimmt.

Jochen

Ist natürlich auch nicht so schlecht.

Jochen

Weil dann hat man alles wieder, weil das ist natürlich

Dominik

im Moment ist das ganze Packaging und

Dominik

Dependency-Management-Zeugs irgendwie relativ

Dominik

furchtbar. Das funktioniert

Dominik

auch nicht US-übergreifend gut und

Dominik

das ist

Dominik

ziemlich ein Mist. Ich hoffe ja wirklich, dass dieses

Dominik

RAS-Paket da einiges

Dominik

ändert, weil das

Dominik

will man so alles nicht haben.

Dominik

Ja.

Dominik

Wird uns noch eine Zeit lang begleiten, das sehen wir, glaube ich.

Dominik

Ja.

Dominik

Okay.

Dominik

Kommen wir zu erfreulicheren Dingen.

Jochen

Django gibt es jetzt eine neue Alpha-Version, also die

Jochen

Django 4.2 kommt

Jochen

im März irgendwann, hoffentlich.

Jochen

Ist das wieder die LTS?

Jochen

Ja.

Jochen

Genau, wobei das nicht so eine

Jochen

große Rolle spielt. Die offizielle Empfehlung an der Stelle ist

Jochen

immer, die letzte

Jochen

Stabile zu nehmen und nicht LTS. LTS

Jochen

ist mehr so, naja, es gibt halt Firmen, die das irgendwie

Jochen

haben wollen oder keine Ahnung, aber das ist nicht

Jochen

mehr so, wie man das machen sollte. Es wird nicht empfohlen,

Jochen

immer auf den LTS-Version zu bleiben.

Jochen

Dafür verändert sich auch einfach zu wenig.

Jochen

Also es gibt schon lange nicht mehr

Jochen

irgendwie so große Probleme, wenn man upgradet.

Jochen

Daher braucht man das eigentlich

Jochen

nicht mehr so wirklich.

Jochen

Genau, was dabei ist, ist

Jochen

ganz nett, PsychoPG3

Jochen

Support, das heißt Async

Jochen

Datenbank-Unterstützung

Jochen

kommt damit halt so, rückt näher.

Jochen

Es gibt ja jetzt auch ein Interface

Jochen

seit Django 4.1 für

Jochen

Async-Geschichten mit dem

Jochen

ORM. Ist alles noch nicht wirklich implementiert,

Jochen

aber das Interface ist schon mal da, sodass man das halt

Jochen

so verwenden kann, dass wenn irgendwann sich

Jochen

unten drunter das mal so verändert, dass halt mehrere

Jochen

Sachen gleichzeitig irgendwie an die

Jochen

Datenbank geschickt werden und dann

Jochen

zurückkommen, dass es einfach so,

Jochen

dass man einfach so davon profitiert und dass man selber

Jochen

nochmal was ändern muss. Das muss ich auch mal irgendwann

Dominik

verstehen, wie das mit der Datenbank funktionieren soll?

Dominik

Naja, du kannst, also im Grunde

Jochen

der OEM weiß ja, was er an Queries an die Datenbank

Jochen

schickt und der schickt dann, also was momentan

Jochen

so der übliche Weg ist halt, dass

Jochen

er halt ein

Jochen

Query nach dem anderen an die Datenbank

Jochen

schickt und die Latenzen sich alle aufaddieren.

Jochen

Das ist halt so, wie es, was jetzt,

Jochen

wenn man nicht so viele Queries macht und

Jochen

wenn man ein bisschen aufpasst, dann ist es auch nicht so schlimm.

Jochen

Aber kann natürlich schon sein, wenn man jetzt

Jochen

50 Queries hat und jede dauert

Jochen

10 Millisekunden, dann ist man natürlich bei einer halben Sekunde

Jochen

allein Datenbank-Latenz.

Jochen

Besser wäre es ja, wenn man alle gleichzeitig an die Datenbank

Jochen

schickt oder alle, die nicht voneinander

Jochen

abhängen, kann man gleichzeitig an die Datenbank schicken

Jochen

und dann hat man

Jochen

die Gesamtlatenz, nur die Latenz

Jochen

von dem Query, was am längsten

Jochen

dauert sozusagen.

Jochen

Und das könnte natürlich die

Jochen

Gesamtlatenz deutlich reduzieren. Also es wäre sehr nett, wenn

Jochen

das irgendwie ginge.

Jochen

Aber es ist natürlich eine sehr komplizierte Änderung.

Dominik

Aber da muss die Datenbank ja natürlich schon parallel auch rechnen können.

Jochen

Ja, das können die. Das können die alle.

Dominik

Und wie stellt die Datenbank

Dominik

sicher, dass sich jetzt keine

Dominik

Probleme

Dominik

hab, festzustellen, dass Dinge auf die

Dominik

gleichen Stellen zugreifen.

Jochen

Das ist ja so

Jochen

die Kernkompetenz eines Datenbankmanagements

Jochen

Systems sozusagen.

Jochen

Wie soll das denn gehen?

Jochen

Das Problem hast du jetzt ja auch schon, wenn du mehrere Frontends hast

Jochen

oder mehrere Prozesse auf deinem Frontend, die gleichzeitig

Jochen

alle irgendwie...

Dominik

Man muss ja gucken, dass sie einen Lock setzt dann irgendwie und dann muss sie

Dominik

gucken, ist das Lock auch da oder muss halt

Dominik

eins setzen, wenn sie da irgendwie dran rumfuchtelt und dann

Carl Friedrich

muss sie es wieder... Du meinst jetzt so Richtung

Carl Friedrich

Right zu Griff oder was? Ja. Ja, aber ich meine,

Carl Friedrich

dann schaust du halt eine Transaktion und

Carl Friedrich

siehst, dass dann, hast du eine

Carl Friedrich

konsistente Sicht der Dinge

Carl Friedrich

innerhalb der Transaktion oder die wird halt

Carl Friedrich

dann committed oder aborted und das

Carl Friedrich

ist, also ich glaube, ich stimme

Carl Friedrich

dir zu, dass, Jochen, zu, dass

Carl Friedrich

das halt genau das ist, was die Datenbank halt

Carl Friedrich

im Prinzip richtig gut können sollte.

Carl Friedrich

Also so. Aber das

Carl Friedrich

macht ihr doch eigentlich dann langsamer, oder?

Jochen

Ja, natürlich macht das alles, das macht alles viel langsamer,

Jochen

wenn man Transaktionen ausschaltet und F-Sync

Jochen

ausschaltet, dann wird das, wird eine Datenbank viel schneller.

Jochen

Also aber das Problem ist halt, dann sind halt deine Daten eventuell auch weg.

Jochen

Das ist ja doof.

Jochen

Das ist auch wieder doof.

Jochen

Wieder so ein Schritt auf den Haken.

Jochen

Also, aber dieses Problem hast du auch, wenn du zwei Frontends hast, die auf den gleichen Daten arbeiten, hast du das ja auch schon.

Jochen

Auch ohne, dass die Frontends in sich selber nochmal irgendwie Concurrent-Dinge machen.

Jochen

Die machen ja auch Sachen Concurrent auf Prozessebene oder auf Rechner-Ebene, die da auf die gleiche Datenbank zugreifen.

Jochen

Also das sollte eine Datenbank schon können?

Jochen

Ja, gut, man hat nochmal ein bisschen Probleme, weil zum Beispiel Postgres kann halt nur, oder es kommt darauf an, welches Protokoll man verwendet, aber das Textprotokoll von Postgres kann halt nur eine Querie gleichzeitig beantworten.

Jochen

Das heißt, bisher war das kein Problem,

Jochen

weil man kann sowieso immer nur

Jochen

im Code synchron

Jochen

eins nach dem anderen machen. Aber jetzt

Jochen

kann man ja mehrere, das heißt, man muss auch mehrere

Jochen

Verbindungen aufmachen, weil

Jochen

halt immer nur ein Query pro Verbindung

Jochen

geht. Das heißt, da muss man

Jochen

dann halt intern poolen

Jochen

oder muss irgendwie

Jochen

außen poolen.

Jochen

Es ist sowieso alles sehr kompliziert. Auch die ganze

Jochen

Geschichte im OEM, was man dann umstellen muss,

Jochen

das wird noch lange dauern, bis das alles

Jochen

richtig funktioniert. Aber wenn es denn mal

Jochen

irgendwann funktioniert, das ist ja cool.

Jochen

Und das ist jetzt ein Schritt,

Dominik

weiterer Schritt dahin. Also wir haben jetzt Async-URM,

Dominik

Async-Views, Async-Tests.

Dominik

Ja, ja, Async-URM haben wir

Dominik

noch nicht. Wir haben nur die Interfaces.

Dominik

Jetzt auch den Support für eine

Jochen

Library, die man dafür braucht, um das überhaupt machen zu können.

Jochen

Das heißt, das letzte, was du nimmst, ist Async-URM.

Jochen

Genau, das

Jochen

ist halt auch noch das komplizierteste

Jochen

Stück Arbeit, was noch da bevorsteht.

Jochen

Genau.

Jochen

Dann, es gibt jetzt

Jochen

Unterstützung für Kommentare,

Jochen

für Spalten und Tabellen.

Jochen

Das ist irgendwie ein Issue, der ist seit

Jochen

Jahren offen und war irgendwie

Jochen

kompliziert zu fixen, ging nicht so gut. Aus welchen

Jochen

Gründen auch immer, ich weiß gar nicht genau. Das geht jetzt.

Jochen

Also wir haben irgendwie den Weg gefunden, wie sie das so

Jochen

hinkriegen, dass es kein Problem mehr ist.

Jochen

Und das, was ganz nett ist,

Jochen

dann

Jochen

früher, oder ab dann wird man halt

Jochen

eventuell, es gibt so

Jochen

Django in Memory Storage, ich weiß

Jochen

nicht genau, gibt es ein externes

Jochen

Paket nicht mehr brauchen, das ist dann auch in Django

Jochen

selber drin. Das heißt, man hat jetzt einen

Jochen

in Memory-Storage-Backend

Jochen

für Django mit dabei,

Jochen

dass man einfach so verwenden kann für Tests zum Beispiel.

Jochen

Macht halt Tests einfach schneller.

Jochen

Und, das freut mich

Jochen

besonders, es gibt jetzt

Jochen

eine Streaming-HTTP-Response

Jochen

mit Async-Iteraturen

Jochen

dran. Das ist im Grunde,

Jochen

wenn man jetzt

Jochen

zum Beispiel Files ausliefern will,

Jochen

ist das halt

Jochen

ein Problem. Das ging bisher nicht so gut,

Jochen

einfach deswegen, weil man

Jochen

da halt über die Blocks

Jochen

eines Files, die man rausschicken wollte, halt da

Jochen

so nicht Async drüber iteriert

Jochen

hat. Und

Jochen

genau, ich habe da ja mal

Jochen

auf der Django

Jochen

2021 einen Vortrag

Jochen

wie kann man eigentlich Files mit Django

Jochen

surfen gehalten. Da habe

Jochen

ich das halt, dieses Ding rausgepatcht

Jochen

irgendwie so per Monkey-Patching.

Jochen

Es gibt noch ein Paket, Django-File-Response,

Jochen

wo ich das so mache. Das ist dann nicht mehr nötig,

Jochen

weil das macht jetzt Async-Iterator. Das heißt,

Jochen

es müsste eigentlich Files surfen, müsste jetzt einfach so gehen.

Jochen

Ja, das ist natürlich auch sehr cool. Wir haben noch ein paar Konferenzen von zweien. Weiß ich jetzt schon die Daten. DjangoCon EU ist irgendwie 29. Mai bis 2. Juni 2023 in Edinburgh. Edinburgh, ich weiß gar nicht, sprechen wir uns auf?

Jochen

Ja, okay. Tja. Und PyCon.de oder PyData ist in Berlin 17. bis 19. April, da gehe ich wahrscheinlich auch hin.

Dominik

Euro-Pricen ist vom 17. bis zum 23. Juli.

Dominik

Okay, ein bisschen später.

Dominik

Aber ich weiß nicht wo.

Dominik

Okay.

Dominik

Das ist noch top secret.

Carl Friedrich

Damit auch ja keiner einen guten Flug buchen kann.

Carl Friedrich

Genau.

Carl Friedrich

Das wird in Europa passieren wahrscheinlich.

Dominik

Oder das ins Budget fürs Jahr einplanen kann.

Dominik

Für was auch immer.

Dominik

Ja.

Dominik

Ich glaube gerade das Management-Team hat da gewechselt.

Dominik

Ja.

Dominik

Ja, also die letzte

Dominik

hat noch Marc-André mit organisiert

Dominik

und jetzt machen das irgendwie andere Menschen.

Dominik

Die haben so eine

Dominik

neue Art und Weise wollen die machen mit

Dominik

wer das wie veranstaltet und sich was neues Konzept

Dominik

da überlegt. Mal gucken, ich bin gespannt.

Dominik

Jojo.

Dominik

Okay, ja, nee, dann

Jochen

das wäre ja nach nur fast

Jochen

20 Minuten mit den News durch,

Jochen

das ist mal relativ flott, dann

Jochen

kommen wir zum Hauptthema.

Jochen

Eine ganz schnelle Folge. Das glaube ich nicht.

Jochen

Pai Pai? Ja.

Dominik

Warum macht man damit nicht was schneller oder was ist der Zweck davon?

Dominik

Oder weißt du was, womit wir anfangen?

Dominik

Karl, wer bist du denn eigentlich?

Carl Friedrich

Hi, ich gebe jetzt schon die ganze Zeit so meinen Senf dazu.

Carl Friedrich

Aber ja, also ich bin Karl Friedrich Bolz-Tereik.

Carl Friedrich

Ich bin hier an der Uni ein wissenschaftlicher Angestellter in Düsseldorf

Carl Friedrich

und habe da eine halbe Stelle und bin im Prinzip angestellt,

Carl Friedrich

um eine Python-Einführung zu halten jedes Semester für Leute,

Carl Friedrich

die nicht Informatik studieren.

Carl Friedrich

Also das ist so Studium Universale mäßig.

Carl Friedrich

Und wenn ich die gemacht habe,

Carl Friedrich

kann ich die restliche Zeit so ein bisschen frei einteilen.

Carl Friedrich

Das ist eigentlich ein ganz angenehmer Deal.

Carl Friedrich

Und ich bin seit irgendwie 2005 ungefähr

Carl Friedrich

einer der Kernentwickler des PiPi-Projekts,

Carl Friedrich

über das wir jetzt auch dann gleich noch mehr reden wollen.

Carl Friedrich

Also ich habe da halt irgendwie am Anfang von meinem Studium angefangen.

Carl Friedrich

Ich war dann auch bei den EU-Projekten,

Carl Friedrich

die da am Anfang eine Zeit lang für Finanzierung gesorgt haben,

Carl Friedrich

recht intensiv involviert.

Carl Friedrich

Und bin halt so mit mal mehr, mal weniger Involvierung

Carl Friedrich

seitdem immer wieder halt dran beteiligt.

Dominik

Also an dem Open-Source-Funded-Ding,

Dominik

was dann PiPi direkt entwickelt.

Dominik

Genau.

Carl Friedrich

Also ich bin jetzt quasi einfach erst mal nur so,

Carl Friedrich

quasi in Anführungszeichen, also nur

Carl Friedrich

einer der Kernentwickler, also die halt quasi

Carl Friedrich

Commit Rights und

Carl Friedrich

Zeug machen. Ich bin aber halt auch

Carl Friedrich

einer der recht Aktiven im Moment.

Carl Friedrich

Also das Projekt

Carl Friedrich

schrumpft so ein bisschen, da können wir vielleicht später auch noch drüber reden.

Carl Friedrich

Und ich

Carl Friedrich

bin einer derjenigen, die jetzt halt gerade

Carl Friedrich

noch viel, recht viel machen.

Carl Friedrich

Genau, aber

Carl Friedrich

das Projekt hatte über seine Lebenszeit

Carl Friedrich

halt immer wieder auch Phasen, wo das wirklich

Carl Friedrich

auch viel Geld hatte.

Carl Friedrich

Also EU-Förderung, Forschungsförderung, immer mal wieder auch Geld von Firmen.

Carl Friedrich

Und bei einigen von diesen Forschungs- oder Förderungsprojekten war ich halt auch dann quasi aktiv dabei.

Dominik

Da musst du auch mal direkt erzählen, was PyPy überhaupt ist.

Carl Friedrich

Ja, genau. Das ist quasi die andere Frage.

Carl Friedrich

Also PyPy ist quasi eine Alternative für CPython.

Carl Friedrich

Wenn man halt irgendwie Python, in Python seine Programme schreibt,

Carl Friedrich

dann geht man halt normalerweise auf python.org

Carl Friedrich

oder vielleicht kriegt man das auch irgendwann das her,

Carl Friedrich

aber man hat halt ein Executable, das heißt Python 3 in der Regel oder Python.

Carl Friedrich

Das führt man aus und dann kriegt man halt irgendwie seine Shell

Carl Friedrich

und kann da Python-Code eingeben oder kann halt damit dann auch Python-Dateien ausführen

Carl Friedrich

und kann auf diese Art und Weise irgendwie seine Programme laufen lassen.

Carl Friedrich

Und dieses Programm, das wird halt von den Kernentwicklern der Sprache Python geschrieben

Carl Friedrich

und das gibt quasi vor, wie sich die Sprache entwickelt.

Carl Friedrich

Und dieses Programm ist in C geschrieben und deswegen kann man das halt auch,

Carl Friedrich

um es von der Sprache zu unterscheiden, kann man das halt auch C-Python nennen.

Carl Friedrich

Also das ist quasi so ein bisschen so ein Terminologie-Trick,

Carl Friedrich

dass man halt quasi die Sprache und die Implementierung,

Carl Friedrich

dass man denen zwei verschiedene Namen gibt.

Carl Friedrich

Also Python ist halt dann die Sprache

Carl Friedrich

und das ist quasi erstmal so eine abstrakte Entität

Carl Friedrich

und dann gibt es aber halt die konkrete Implementierung,

Carl Friedrich

die man fast immer verwendet

Carl Friedrich

und das ist halt CPython.

Carl Friedrich

Und CPython funktioniert jetzt so,

Carl Friedrich

dass es halt ein Interpreter ist.

Carl Friedrich

Also wenn ich jetzt damit

Carl Friedrich

irgendwie meinen Python-Code ausführen will,

Carl Friedrich

dann gibt es so ein bisschen

Carl Friedrich

so einen versteckten Bytecode-Compiler-Schritt.

Carl Friedrich

Also der Python-Code wird dann irgendwie analysiert

Carl Friedrich

und geparst und in so ein Bytecode-Format übersetzt

Carl Friedrich

und dann werden auch so

Carl Friedrich

PYC-Dateien irgendwo

Carl Friedrich

auf der Festplatte auch noch so ein bisschen

Carl Friedrich

zwischengespeichert, damit man das nicht jedes Mal machen muss.

Carl Friedrich

Aber dieser White-Code, der wird halt

Carl Friedrich

dann jedes Mal von einem Interpreter ausgeführt.

Carl Friedrich

Und

Carl Friedrich

was

Carl Friedrich

Piper jetzt ist, ist quasi

Carl Friedrich

der Versuch,

Carl Friedrich

Python-Code schneller zu machen.

Carl Friedrich

Also es ist ja immer

Carl Friedrich

so ein bisschen so ein Meme, dass Python halt irgendwie

Carl Friedrich

besonders langsam sein soll und

Carl Friedrich

PyPy ist halt ein Forschungsprojekt oder halt auch ein Open-Source-Projekt, mit dem man eben das Ziel erreichen können möchte, dass man den Python-Code einfach unverändert viel schneller laufen lassen kann.

Carl Friedrich

Und das macht man eben so, dass man eben sich sein Binary nicht von Python.org runterlädt, sondern von PyPy.org. Man kriegt dann ein Binary, das heißt halt irgendwie PyPy. Und das verhält sich erstmal eigentlich ganz genau so, idealerweise quasi ununterscheidbar so, wie der Interpreter, den man von Python.org kriegt.

Dominik

Vielleicht nochmal ganz kurz, PyPy ist nicht PyPI?

Carl Friedrich

Genau, also P-Y-P-Y. Das ist so ein bisschen doof, dass die so ähnlich sind.

Dominik

Ja, weil man von PyPI ja auch viel runterlädt.

Carl Friedrich

Genau, ja, ja, absolut. Aber PyPI lädt man quasi in Python geschriebene Bibliotheken runter, die dann auf der Python-Implementierung laufen, aber PyPi ist eben wirklich das Binary, also die Exit-Datei sozusagen.

Dominik

Du hast nicht mehr erzählt, eigentlich war diese, weil ihr relativ gleich alt seid als Projekte, war die Unterscheidung früher gar nicht so einfach, weil das andere waren die Cheesecakes?

Carl Friedrich

Genau, also der PyPI hatte halt vorher dieses Cheese-Shop-Branding, weil das ist so ein Monty-Python-Sketch mit dem Cheese-Shop, wo man halt keinen Käse kaufen kann. Ich weiß nicht, ob du das kennst.

Carl Friedrich

Ja.

Carl Friedrich

Genau, da geht halt der Kunde dann so ganz viel Sorten durch und die gibt es aber alle nicht. Und kennst du auch das Wortspiel mit den Wheels?

Carl Friedrich

Nee.

Carl Friedrich

Naja, im Cheese-Shop gibt es halt Käseräder.

Carl Friedrich

Ja.

Carl Friedrich

Und die Wheels sind halt Käse.

Carl Friedrich

Okay, ah.

Carl Friedrich

Also, ja.

Carl Friedrich

Okay.

Dominik

Ja, okay, verstehe.

Dominik

Und deswegen gibt es Reels auf

Dominik

Pipe.pi. Genau, und irgendwann haben die halt

Carl Friedrich

dann aufgehört mit diesem, weil Cheese Shop ist halt

Carl Friedrich

doch sehr

Carl Friedrich

idiosynkratisch oder verspielt.

Carl Friedrich

Ist vielleicht eine positive...

Dominik

Der erste Draftname für unseren Podcast war

Dominik

Ministry of Silly Talk. Ah ja, alles klar, nicht schlecht.

Dominik

Und also

Carl Friedrich

irgendwann wurde halt Pipe.pi dann ein bisschen

Carl Friedrich

ernsthafter und hat halt angefangen, dann

Carl Friedrich

sich nicht mehr das Cheese Shop zu nennen.

Carl Friedrich

Und dann wurde halt die Verwechslungsgefahr plötzlich

Carl Friedrich

dann auch akuter. Aber weil halt

Carl Friedrich

PyPI und PyPi ziemlich

Carl Friedrich

genau gleich alt sind, also PyPI ist ein kleines

Carl Friedrich

bisschen älter, so ein paar Monate oder so,

Carl Friedrich

haben halt beide Projekte

Carl Friedrich

nicht so richtig eingesehen, sich jetzt umzubenennen.

Carl Friedrich

Und deswegen müssen wir

Carl Friedrich

jetzt halt mit dieser

Carl Friedrich

Verwirrung leben. Genau, also wir waren

Carl Friedrich

an dem Punkt, man kann von PyPi.org sich

Carl Friedrich

ein Binary unterladen, das heißt PyPi.exe

Carl Friedrich

oder halt einfach nur PyPi.

Carl Friedrich

Und das verhält sich eigentlich

Carl Friedrich

idealerweise ganz genau so, wie

Carl Friedrich

das Binary, was man von Python.org

Carl Friedrich

kriegt. Man kann damit Python-Code

Carl Friedrich

ausführen, man kann damit

Carl Friedrich

einen interaktiven Interpreter kriegen und

Carl Friedrich

alle Command-Line-Switches

Carl Friedrich

sind die gleichen und verhält sich genau gleich.

Carl Friedrich

Mit dem einzigen Unterschied, dass

Carl Friedrich

der Python-Code, den man

Carl Friedrich

damit ausführt, halt hoffentlich schneller ist.

Carl Friedrich

Was ist mit Paketen und

Carl Friedrich

Libraries und so weiter? Genau, also

Carl Friedrich

alles, was quasi in Python geschrieben ist,

Carl Friedrich

sollte halt gehen.

Carl Friedrich

Wir haben natürlich ab und zu Bugs, also

Carl Friedrich

es gibt immer irgendwelche super

Carl Friedrich

spezifischen Feinheiten,

Carl Friedrich

wo man dann halt doch so ein bisschen

Carl Friedrich

Verhaltensunterschiede finden kann.

Carl Friedrich

Aber so der Anspruch an uns selber ist halt,

Carl Friedrich

dass wir quasi wirklich das komplette

Carl Friedrich

Verhalten der Sprache

Carl Friedrich

eins zu eins

Carl Friedrich

nachbauen und zwar bis in die Bugs rein.

Carl Friedrich

Also es gibt halt immer wieder so

Carl Friedrich

Randfälle, wo man dann anfangen kann zu diskutieren und sagen kann,

Carl Friedrich

naja, was ist denn jetzt mit diesem Randfall?

Carl Friedrich

Könnte man dann nicht argumentieren, dass

Carl Friedrich

C-Python da halt irgendwas komisches macht?

Carl Friedrich

Aber das machen wir halt nicht, sondern wir sagen halt immer

Carl Friedrich

im Zweifelsfall bauen wir halt auch die ganz, ganz

Carl Friedrich

komischen Sachen nach, weil es stellt

Carl Friedrich

sich halt raus, dass

Carl Friedrich

irgendjemand verlässt sich so ein bisschen auf

Carl Friedrich

alles. Also es gibt eigentlich

Carl Friedrich

keinen Randfall, der so

Carl Friedrich

merkwürdig ist, dass es nicht eine Bibliothek gibt,

Carl Friedrich

irgendwie eine kleine vielleicht,

Carl Friedrich

die halt sich dann beschwert, wenn man

Carl Friedrich

das kaputt macht. Also selbst

Carl Friedrich

wenn man halt dann sagt, naja, wir sind aber viel konsistenter

Carl Friedrich

und das macht ja so viel mehr Sinn, nee.

Carl Friedrich

Das ist halt doof. Für so eine Bibliothek ist das doof,

Carl Friedrich

wenn sie halt dann so unterscheiden muss,

Carl Friedrich

auf welcher Python-Implementierung sie jetzt gerade laufen.

Carl Friedrich

Und deswegen versuchen wir da halt auch nichts mehr zu verbessern

Carl Friedrich

oder irgendwie, ja, es gibt natürlich trotzdem Stellen.

Carl Friedrich

Also wir haben halt dann, was weiß ich,

Carl Friedrich

mal eine leicht andere Fehlermeldung in irgendeinem Fall oder so.

Carl Friedrich

So was kommt halt schon vor.

Carl Friedrich

Aber so, also vom Anspruch her sollte sich halt genau gleich verhalten.

Carl Friedrich

Und der einzige Unterschied ist quasi wirklich idealerweise,

Carl Friedrich

dass bei uns die Programme halt viel schneller laufen.

Dominik

Und warum macht man das dann nicht direkt immer mit PyPy alles?

Carl Friedrich

Ja, also genau, jetzt können wir so ein bisschen über die Nachteile reden.

Carl Friedrich

Also das eine ist halt, wir sind halt nicht die maßgebende Implementierung,

Carl Friedrich

die jetzt die Evolution der Sprache selbst vorgibt.

Carl Friedrich

Also CPython hat halt so eine Doppelfunktion.

Carl Friedrich

Das ist einmal die Default-Implementierung,

Carl Friedrich

die halt von fast allen verwendet wird.

Carl Friedrich

Aber auf der anderen Seite ist es halt auch die Gruppe an Leuten,

Carl Friedrich

die letztlich darüber entscheiden,

Carl Friedrich

in welche Richtung sich die Sprache weiterentwickelt.

Carl Friedrich

Weil in jeder neuen Version von C-Python ist es ja so,

Carl Friedrich

dass da eben nicht nur, jetzt sage ich mal,

Carl Friedrich

irgendwie technische Verbesserungen

Carl Friedrich

an der Implementierung gemacht werden.

Carl Friedrich

Das kommt natürlich auch mal vor.

Carl Friedrich

Also jetzt sind 3F zum Beispiel ganz toll.

Carl Friedrich

Aber insbesondere gibt es halt auch bei jeder Version

Carl Friedrich

irgendwelche neuen Sprachfeatures.

Carl Friedrich

Das heißt, python.org, diese Community,

Carl Friedrich

ist halt für zwei Sachen zuständig. Einmal

Carl Friedrich

dafür, dass das alles funktioniert, aber auf der

Carl Friedrich

anderen Seite eben auch für so Fragen wie

Carl Friedrich

welches PEP nehmen wir an, welches neue

Carl Friedrich

Language-Feature wollen wir haben, welche neue

Carl Friedrich

Standard-Bibliothek,

Carl Friedrich

so Geschichten. Und da,

Carl Friedrich

also da sind wir halt raus. Also aus diesen ganzen

Carl Friedrich

Sprachdesign-Fragen, da haben

Carl Friedrich

wir keine Meinung zu. Ihr nehmt euch dann einfach

Dominik

das offizielle Release und dann

Dominik

das darf ein CPython und baut das dann eure

Dominik

Änderung ein. Ganz genau. Und es ist schon

Carl Friedrich

dann mal so, dass wir bei den CPython-

Carl Friedrich

Diskussionen dann auch mitreden und sagen, ja, aus unserer

Carl Friedrich

Sicht hat das die und die,

Carl Friedrich

also gibt es jetzt hier diese Trade-offs oder so,

Carl Friedrich

aber wir versuchen uns halt

Carl Friedrich

so erstmal aus Sprach

Carl Friedrich

Design-Fragen auch irgendwie erstmal rauszuhalten.

Carl Friedrich

Also einfach auch,

Carl Friedrich

weil das unser Leben so ein bisschen leichter macht, dann

Carl Friedrich

gibt es halt, ich meine, ich habe da

Carl Friedrich

natürlich dann quasi so privat auch manchmal eine

Carl Friedrich

Meinung dazu, was es jetzt an Featuren gibt und

Carl Friedrich

manche finde ich cool und manche finde ich

Carl Friedrich

weniger cool. Also ich meine, das geht ja allen

Carl Friedrich

Python-Programmierern so, dass man halt

Carl Friedrich

eine Meinung hat, aber wenn ich dann quasi

Carl Friedrich

meinen Pai-Pai-Hut aufhabe,

Carl Friedrich

dann versuche ich diese private Meinung

Carl Friedrich

halt dann auch zurückzunehmen und zu sagen,

Carl Friedrich

das ist jetzt halt so, das ist Teil der Sprache und das

Dominik

implementieren wir jetzt halt. Also du bist ja eigentlich gar kein

Dominik

Dein-Python-Programmierer, hast du selber gesagt.

Carl Friedrich

Ja, über die Architektur reden wir gleich noch.

Carl Friedrich

Also irgendwie dann schon,

Carl Friedrich

aber halt auf ein bisschen indirekte Art und Weise.

Carl Friedrich

Also ja,

Carl Friedrich

ich wollte noch was zu den Versionen sagen. Wir sind

Carl Friedrich

immer so ein bisschen hinterher.

Carl Friedrich

Das ist nicht so gut. Also eigentlich

Carl Friedrich

haben wir so ein bisschen den Anspruch, dass wir

Carl Friedrich

quasi eine Major-Version hinterher sind.

Carl Friedrich

weil, also

Carl Friedrich

wir können halt nicht Schritt halten

Carl Friedrich

C-Python hat halt einfach viel mehr Leute

Carl Friedrich

und die

Carl Friedrich

die rennen uns halt davon

Carl Friedrich

und was halt so ein bisschen unser Ziel ist, ist, dass

Carl Friedrich

wir quasi immer so eine

Carl Friedrich

Major-Version hinterher sind, das ist auch

Carl Friedrich

immer ganz gut, wenn dann quasi

Carl Friedrich

3.11 rauskommt, dann haben so

Carl Friedrich

langsam alle Bibliotheken sich drauf eingestellt

Carl Friedrich

dass sie 3.10 supporten und wenn

Carl Friedrich

wir dann auch mit unseren 3.10 rauskommen, dann passt das

Carl Friedrich

so ganz gut zusammen

Carl Friedrich

Gerade sind wir ein bisschen

Carl Friedrich

mehr, also wir haben jetzt nicht so krass getaktete

Carl Friedrich

Releases wie C-Python, sondern

Carl Friedrich

das wird halt

Carl Friedrich

wir machen alle paar Monate Release, aber das heißt nicht

Carl Friedrich

unbedingt, dass dann auch die neue C-Python

Carl Friedrich

Version

Carl Friedrich

supported wird

Carl Friedrich

und gerade sind wir so ein bisschen hinterher

Carl Friedrich

3.9 ist jetzt eigentlich sehr sehr stabil

Carl Friedrich

und 3.10

Carl Friedrich

ist in der Mache, aber noch nicht released

Carl Friedrich

und danach kommt halt dann

Carl Friedrich

3.11, also das ist ein quasi

Carl Friedrich

ein Nachteil, warum man Piper halt nicht

Carl Friedrich

nehmen sollte,

Carl Friedrich

ist ein bisschen hinterher.

Carl Friedrich

Und dann habe ich vorhin gesagt,

Carl Friedrich

naja, jedes Python-Programm sollte halt gehen

Carl Friedrich

und idealerweise schneller sein.

Carl Friedrich

Da gibt es jetzt zwei Fußnoten an dieser

Carl Friedrich

Aussage. Die eine Fußnote ist halt

Carl Friedrich

C-Extensions.

Carl Friedrich

Und NumPy ist kaputt?

Carl Friedrich

Nee, kaputt halt nicht. Also inzwischen ist das

Carl Friedrich

so, dass wir so eine komplette

Carl Friedrich

Kompatibilitätsschicht haben,

Carl Friedrich

mit der, sag ich mal,

Carl Friedrich

80% aller

Carl Friedrich

in C-geschriebenen Bibliotheken

Carl Friedrich

in Piper auch gehen.

Carl Friedrich

Aber, das ist wirklich,

Carl Friedrich

wir emulieren halt dieses Interface.

Carl Friedrich

Für C-Python ist das Interface halt wirklich

Carl Friedrich

genau so, wie der Interpreter

Carl Friedrich

auch wirklich funktioniert.

Carl Friedrich

Und der Interpreter benutzt halt Reference-Counting

Carl Friedrich

und die C-API,

Carl Friedrich

die hat halt

Carl Friedrich

überall die Tatsache, dass das Reference-Counting

Carl Friedrich

ist exposed. Es gibt halt

Carl Friedrich

ein Increase-Reference-Count-Makro

Carl Friedrich

und ein Decrease-Reference-Count-Makro

Carl Friedrich

und alle Libraries, die dann

Carl Friedrich

gegen diese API implementiert sind,

Carl Friedrich

die müssen das halt überall auch korrekt verwenden.

Carl Friedrich

Aber bei uns ist es so, dass wir unseren

Carl Friedrich

Speicher halt nicht mit Reference Counting verwalten.

Carl Friedrich

Das heißt, wir müssen dann für

Carl Friedrich

die Bibliotheken so tun, als hätten wir

Carl Friedrich

einen Reference Count. Und das ist halt,

Carl Friedrich

das kostet halt so ein bisschen Performance. Das heißt, bei uns

Carl Friedrich

sind in C geschriebener Erweiterung

Carl Friedrich

halt quasi, die funktionieren,

Carl Friedrich

die können aber halt oft

Carl Friedrich

einfach langsamer sein.

Carl Friedrich

Und das ist natürlich doof, weil

Dominik

Ein Massenpaket, das schneller sein will,

Dominik

aber die Sachen sind langsamer, als wenn du die eigentlich auf normalem

Dominik

Python-Offenheitsmittel hast. Genau, ja, ja. Also ich meine,

Carl Friedrich

der Grund, warum man, es gibt ja so ein bisschen

Carl Friedrich

zwei Motivationen, warum man in C geschrieben die Bibliotheken

Carl Friedrich

verwendet. Einmal, weil man halt gerne mit

Carl Friedrich

irgendwelchen Bibliotheken geschrieben

Carl Friedrich

reden will, die halt in C geschrieben sind.

Carl Friedrich

Das ist halt ein Ansatz. Aber ein anderer

Carl Friedrich

Grund ist halt, wenn man irgendwas schneller machen will,

Carl Friedrich

indem man es in C schreibt. Und diese

Carl Friedrich

Motivation, die funktioniert halt dann

Carl Friedrich

auf PyPy oft nicht. Und das

Carl Friedrich

wäre dann zum Teil einfach auch echt besser, wenn man

Carl Friedrich

halt einfach Python-Code nehmen würde,

Carl Friedrich

aber weil halt für C-Python alle

Carl Friedrich

jetzt schon ihre tollen NC-geschriebenen Optimierungen

Carl Friedrich

gemacht haben, ist das dann für uns

Carl Friedrich

oft auch halt eine Verschlechterung.

Carl Friedrich

Also, ja.

Jochen

Könnte man da nicht vielleicht einfach auch

Jochen

den C aus PyPy heraus

Jochen

irgendwie einfach den C-Python-Interpreter

Jochen

wieder aufrufen und den diesen

Jochen

Kram händeln lassen? Ja,

Carl Friedrich

da gab es auch immer mal wieder so ein paar Experimente,

Carl Friedrich

aber dann verliert man halt, also man

Carl Friedrich

will halt, dann verliert

Carl Friedrich

man halt möglicherweise die Vorteile für den Python-Code,

Carl Friedrich

wieder. Also, weil das Problem ist, du willst ja

Carl Friedrich

halt beide Seiten auch miteinander reden lassen. Ja, wenn du

Carl Friedrich

halt nur C-Code hast, dann

Carl Friedrich

ist halt eh die Frage, warum du eigentlich, was

Carl Friedrich

hast du da noch mit Python zu tun?

Carl Friedrich

Spannend wird es halt dann, wenn du quasi Python,

Carl Friedrich

also wenn dein Programm halt wirklich aus

Carl Friedrich

interessanten Teilen auf der Python-Seite

Carl Friedrich

besteht und interessanten Teilen auf der

Carl Friedrich

Bibliotheksseite.

Carl Friedrich

Die andere Fußnote ist, dass es manchmal nicht

Carl Friedrich

klappt. Also es gibt halt,

Carl Friedrich

manchmal hat man wirklich in Python geschrieben

Carl Friedrich

Code und

Carl Friedrich

der wird nicht schneller.

Carl Friedrich

Also man muss halt einfach

Carl Friedrich

messen. Um mal so ein bisschen

Carl Friedrich

so eine Größenordnung zu nennen,

Carl Friedrich

wir haben halt so Speedups

Carl Friedrich

zwischen, so im allerbesten

Carl Friedrich

Fall, wenn halt alles ganz toll ist

Carl Friedrich

und du Pure Python Code hast, gar keine Bibliothek

Carl Friedrich

in C geschrieben ist und das

Carl Friedrich

ist alles jetzt, sag ich mal, sehr numerisch. Also hast

Carl Friedrich

viele Zahlen

Carl Friedrich

und irgendwie viele Floats oder, aber du machst

Carl Friedrich

das auch wirklich alles in Python. Dann kannst du halt so

Carl Friedrich

Speedups von 50 mal

Carl Friedrich

schneller als CPython kriegen. Also das ist halt, das ist

Carl Friedrich

schon, also alle Leute, die halt so was

Carl Friedrich

wie Advent of Code machen, ja,

Carl Friedrich

Advent of Code ist eigentlich so,

Carl Friedrich

ich scherze, aber ist irgendwie auch was

Carl Friedrich

Wahres dran. Advent of Code ist halt irgendwie einer der

Carl Friedrich

Haupt-coolen Use Cases

Carl Friedrich

für PyPy. Es ist halt

Carl Friedrich

irgendwie nicht so viel Code, es passt auf ein paar

Carl Friedrich

Bildschirme, es ist irgendwie sehr algorithmisch

Carl Friedrich

und man braucht nicht so viele Bibliotheken

Carl Friedrich

und das wird halt dann, und Performance ist irgendwie

Carl Friedrich

auch wichtig und da ist halt PyPy einfach

Carl Friedrich

mega gut dafür.

Carl Friedrich

Genau, und weil, also bei

Carl Friedrich

Performance ist es halt so, man muss halt einfach messen.

Carl Friedrich

Also du kannst halt nicht quasi so a priori entscheiden,

Carl Friedrich

dass es immer jetzt Speed-Up X bringt,

Carl Friedrich

sondern es führt quasi keinen Weg darum,

Carl Friedrich

dass du deine konkrete Anwendung halt ausprobierst und schaust,

Carl Friedrich

bringt es was oder halt nicht.

Carl Friedrich

Habt ihr da irgendwie ein Referenzsystem

Dominik

oder macht ihr das einfach immer so objektiv von dem über den Rechner?

Dominik

Du meinst jetzt quasi,

Carl Friedrich

inwiefern das von der darunterliegenden Hardware abhängt?

Carl Friedrich

Ja, zum Beispiel, ja.

Carl Friedrich

Das ist, glaube ich, nicht so ein Problem.

Carl Friedrich

Wir unterstützen so einen Haufen CPU-Architekturen,

Carl Friedrich

aber da sind wir nicht so sensitiv.

Carl Friedrich

Es geht eigentlich dann eher darum,

Carl Friedrich

was für Bibliotheken benutzt dein Projekt

Carl Friedrich

und sind die eher so C-lastig oder was.

Carl Friedrich

Es gibt halt Teile der Sprache,

Carl Friedrich

wo wir einfach richtig, richtig gut drin sind,

Carl Friedrich

die schneller zu machen.

Carl Friedrich

Und Teile der Sprache,

Carl Friedrich

wo wir dann nicht ganz so viel rausholen können.

Dominik

Wie viel lernt C-Python von euch?

Dominik

Das ist eine gute Frage.

Carl Friedrich

Achso, ich wollte kurz die andere Abschätzung, also im besten Fall

Carl Friedrich

so 30-40x, ich antworte gleich

Carl Friedrich

und im schlechtesten Fall ist man

Carl Friedrich

halt auch mal 30%

Carl Friedrich

langsamer und das ist halt dann doof, da will man halt dann

Carl Friedrich

nicht sein.

Carl Friedrich

C-Python, also

Carl Friedrich

ich habe manchmal

Carl Friedrich

so quasi so Momente

Carl Friedrich

des Zweifelns, ich

Carl Friedrich

verbringe seit 18 Jahren

Carl Friedrich

ein Teil meiner

Carl Friedrich

Freizeit und irgendwie

Carl Friedrich

ein Teil meines Berufs damit, an diesem Projekt zu basteln

Carl Friedrich

und

Carl Friedrich

so richtig,

Carl Friedrich

also, was weiß ich,

Carl Friedrich

99% von allen Deployments sind halt

Carl Friedrich

dem C-Python. Und man kann sich dann halt die Frage

Carl Friedrich

stellen, warum macht man

Carl Friedrich

das eigentlich? Also

Carl Friedrich

mir macht das natürlich irgendwie einfach unglaublich viel

Carl Friedrich

Spaß, also ich bastel da gerne dran rum, aber

Carl Friedrich

es ist natürlich auch schön, dann so ein bisschen so

Carl Friedrich

quasi externe Motivationen aufzukriegen.

Carl Friedrich

Und

Carl Friedrich

klar, es gibt immer wieder Leute,

Carl Friedrich

die das halt dann benutzen und das ist halt auch sehr cool,

Carl Friedrich

aber es gibt halt

Carl Friedrich

immer wieder auch Momente, wo wir dann quasi so

Carl Friedrich

Rück,

Carl Friedrich

so Rück,

Carl Friedrich

politische Rückauswirkungen auf

Carl Friedrich

C-Python haben. Und das ist quasi

Carl Friedrich

meiner Ansicht nach auch so ein bisschen so

Carl Friedrich

ein, so ein, der zweite

Carl Friedrich

Grund, warum ich halt der Ansicht bin,

Carl Friedrich

dass es eine gute Sache ist, dass es

Carl Friedrich

eine zweite, sehr ernsthafte

Carl Friedrich

Implementierung der Sprache Python gibt.

Carl Friedrich

Weil wir quasi,

Dominik

Also doch so ein bisschen Feature-Entwicklung

Dominik

durch die Hintertür. So ein bisschen Feature-Entwicklung

Carl Friedrich

durch die Hintertür, ganz genau. Und das ist zum Beispiel

Carl Friedrich

interessanterweise bei den Fehlermeldungen passiert.

Carl Friedrich

Also so ein paar

Carl Friedrich

von den, das war 3.10?

Carl Friedrich

Ja, 3.10 und 3.11.

Carl Friedrich

Ja, da bleibt das Verbesserung.

Carl Friedrich

Und bei beiden,

Carl Friedrich

also ich will jetzt wirklich nicht

Carl Friedrich

Keine Credits claimen.

Carl Friedrich

Ich will keine Credits claimen.

Carl Friedrich

Ich will auf gar keinen Fall, also was Pablo

Carl Friedrich

und Batoan Toskaya und sowas,

Carl Friedrich

was die da an Aufwand reingesteckt haben,

Carl Friedrich

unglaublich nervig

Carl Friedrich

und auch wirklich

Carl Friedrich

sehr, sehr cool. Ich bin sehr zufrieden

Carl Friedrich

mit einer Verbesserung. Wie gesagt, ich unterrichte Anfänger.

Carl Friedrich

Ich kriege das quasi immer mit, wenn das

Carl Friedrich

halt mal schief geht mit den Fehlermeldungen.

Carl Friedrich

Aber so ein bisschen

Carl Friedrich

so der ursprüngliche Drive

Carl Friedrich

kam halt so ein bisschen von Piper. Also zum Beispiel dieses

Carl Friedrich

mit den nicht gematchten

Carl Friedrich

Klammern. Das ist ja so einer der neuen Fehlermeldungen,

Carl Friedrich

dass es halt steht, die öffnende

Carl Friedrich

Klammer, die öffnende Ecke Klammer auf

Carl Friedrich

Zeile 5 wird mit einer runden schließenden Klammer

Carl Friedrich

auf Zeile 9 geschlossen. Da stimmt

Carl Friedrich

das nicht. Das war halt

Carl Friedrich

einfach, das habe ich einfach vor ein paar Jahren mal

Carl Friedrich

implementiert. Und irgendwann hat es halt

Carl Friedrich

in Zepa hätten dann doch jemand mal gesehen und

Carl Friedrich

fand es cool genug, um es halt dann doch

Carl Friedrich

halt auch dann mal quasi

Carl Friedrich

nachzuimplementieren. Und

Carl Friedrich

jetzt ist es so ein bisschen, fast so ein bisschen so ein

Carl Friedrich

Race manchmal. Also gerade

Carl Friedrich

haben die ganz schön auch vorgelegt.

Carl Friedrich

Also so ein paar der Fehlermeldungen

Carl Friedrich

haben wir jetzt noch nicht wieder übernommen.

Carl Friedrich

Aber an ein paar Stellen gibt's

Carl Friedrich

halt immer noch ein paar, wo ich

Carl Friedrich

mit unseren dann zufrieden bin. Zum Beispiel

Carl Friedrich

so ein absoluter Standard

Carl Friedrich

Anfängerfehler, wo man halt

Carl Friedrich

echt Riesenprobleme hat, wenn man

Carl Friedrich

in Python einsteigt, wenn man so

Carl Friedrich

Objektorientierung lernt und man schreibt halt seine ersten Klassen

Carl Friedrich

und schreibt Methoden und kommt halt vielleicht

Carl Friedrich

von Java und vergisst das

Carl Friedrich

Self. Und dann

Carl Friedrich

versucht man, die Methode aufzurufen.

Carl Friedrich

Erstes Argument fehlt. Und dann

Carl Friedrich

stimmt halt die Argumentzahl nicht. Und dann

Carl Friedrich

vergleicht man halt einfach mal die Aufrufstelle

Carl Friedrich

mit

Carl Friedrich

der Funktionsdefinition und sagt,

Carl Friedrich

was ist denn eigentlich dein Problem? Ich hab ja doch

Carl Friedrich

drei Argumente, warum beschwerst du dich denn,

Carl Friedrich

dass ich da nur zwei reinreiche?

Carl Friedrich

Oder, ja, so,

Carl Friedrich

das stimmt ja dann immer nicht.

Carl Friedrich

Und da

Carl Friedrich

mache ich in PyPy einfach nur,

Carl Friedrich

wenn es quasi einen

Carl Friedrich

off-by-one-error bei einem Methodenaufruf

Carl Friedrich

gibt, genau in diese Richtung,

Carl Friedrich

dann schaut der

Carl Friedrich

Interpreter nach, ob das erste Argument

Carl Friedrich

self heißt. Und wenn

Carl Friedrich

nicht, steht einfach nur noch da,

Carl Friedrich

did you forget self in the method definition.

Carl Friedrich

Ja, das wäre wahrscheinlich

Carl Friedrich

eine gute Idee.

Carl Friedrich

Ja, keine Ahnung, das ist natürlich, also

Carl Friedrich

bei diesen Fehlermeldungen ist es halt

Carl Friedrich

auch wirklich so, du hast halt einfach tausend

Carl Friedrich

Fehler, also das ist auch nicht übertrieben, es gibt halt

Carl Friedrich

ganz, ganz viele Stellen im Interpreter,

Carl Friedrich

wo halt Fehler produziert werden und

Carl Friedrich

jede einzelne ist halt dann irgendwie vielleicht

Carl Friedrich

auch gar nicht so wichtig, also

Carl Friedrich

diese Arbeit an Fehlermeldungen, die ist halt

Carl Friedrich

wirklich auch in gewisser Weise sehr nervig, weil man

Carl Friedrich

sich um jede einzelne irgendwie halt Gedanken

Carl Friedrich

machen muss und da gibt es halt

Carl Friedrich

auch keine Shortcuts so, also das

Carl Friedrich

aber das ist halt eine, wo ich mal

Carl Friedrich

dann so einen Tag dran Spaß hatte, mir zu überlegen,

Carl Friedrich

wie man das halt vielleicht verbessern kann und

Carl Friedrich

aber ich, also ich bin

Carl Friedrich

halt, ich habe so ein bisschen

Carl Friedrich

wie gesagt, ich will keinen

Carl Friedrich

Credit klauen, aber ich habe so ein bisschen

Carl Friedrich

das Gefühl, dass wir da einfach so ein bisschen

Carl Friedrich

so einen Push gegeben haben, so einen Initial-Push.

Carl Friedrich

Wir hatten halt an vielen Stellen

Carl Friedrich

da so ein paar Sachen dann

Carl Friedrich

zuerst implementiert und das

Carl Friedrich

fließt jetzt ganz stark in den Zielpreisen ein, da bin ich

Carl Friedrich

einfach mega glücklich drüber.

Dominik

Das ist der Forscherdrang, der so ein bisschen auch

Dominik

in die richtige Richtung geht. Der was?

Dominik

Der Forscherdrang. Ja,

Dominik

keine Ahnung, das ist jetzt nicht mein

Carl Friedrich

Forschungsgebiet. Das war

Carl Friedrich

eher so ein bisschen, ich habe halt dann wirklich

Carl Friedrich

gesehen, dass es für die Studenten echt dann zum Teil

Carl Friedrich

wirklich blöd ist. Zum Beispiel auch mit diesen,

Carl Friedrich

das wurde jetzt auch abgeschafft,

Carl Friedrich

ich glaube jetzt auch

Carl Friedrich

in 3.11, also, oder in 3.10,

Carl Friedrich

ich weiß nicht so, also zum Teil gab es

Carl Friedrich

diese Fehlermeldung, diese Syntax-Fehlermeldung,

Carl Friedrich

die echt so ganz komische Abkürzungen drin hatten,

Carl Friedrich

die halt einfach nicht ausgeschrieben waren.

Carl Friedrich

Insbesondere bei, zum Beispiel, wenn man

Carl Friedrich

die, wenn man die,

Carl Friedrich

die, die

Carl Friedrich

Quotes vergessen hat beim String.

Carl Friedrich

Also einfach nur x gleich

Carl Friedrich

Anführungszeichen A, B, C und dann hast du hinten die Quotes

Carl Friedrich

vergessen. Da war früher die Fehlermeldung

Carl Friedrich

irgendwie

Carl Friedrich

EOL while scanning

Carl Friedrich

String Literal.

Dominik

Ein Teil ist runter oder sowas auch noch gezeigt.

Dominik

Genau, ganz genau.

Dominik

Und das haben sie jetzt gefixt, das heißt jetzt halt wirklich

Carl Friedrich

End of Line, weil ich meine,

Carl Friedrich

woher soll irgendjemand

Carl Friedrich

wissen, was EOL heißt?

Carl Friedrich

Was Scanning heißt und auch noch was String Literal

Carl Friedrich

heißt.

Carl Friedrich

Und das ist jetzt wirklich schöner und das ist

Carl Friedrich

Zum Beispiel in Triple Quoted String sagt er dir jetzt auch

Carl Friedrich

die Fehlermeldung,

Carl Friedrich

wo, ähm, wo dir,

Carl Friedrich

also, da war die Fehlermeldung halt

Carl Friedrich

immer in der allerletzten Zeile der Datei.

Carl Friedrich

Weil er sucht

Carl Friedrich

ja einfach immer weiter.

Jochen

Bei Triple Quoted String ist es halt einfach dann

Jochen

wahrscheinlich der ganze Rest quasi, der da drin liegt.

Jochen

Und am Schluss ist halt, da fehlt was dann.

Jochen

Und jetzt, das ist jetzt wirklich,

Jochen

das wurde in 3.10 gefixt,

Carl Friedrich

ist es jetzt halt so, dass er dir wirklich dann die Zeile zeigt,

Carl Friedrich

wo die öffnenden Triple Quotes sind.

Carl Friedrich

Und das ist natürlich viel schöner.

Carl Friedrich

Und die andere Zeilennummer kommt aber auch vor in der Fehlermeldung.

Carl Friedrich

Das heißt, du hast dann wirklich beides.

Carl Friedrich

Und ja, also das ist alles schon sehr, sehr cool.

Carl Friedrich

Und ich meine, in 3.11, die Position Informations,

Carl Friedrich

die sind halt auch so ein bisschen,

Carl Friedrich

das war quasi noch ein bisschen fieser von mir.

Carl Friedrich

Das hatte ich noch nicht mal implementiert.

Carl Friedrich

Da habe ich nur so einen Screenshot gefakt,

Carl Friedrich

wo ich halt einfach nur im Editor einfach mal so diese Tilde

Carl Friedrich

unter den Teil des Ausdrucks gemacht habe, wo der Fehler

Carl Friedrich

herkommt. Dann habe ich einen Screenshot

Carl Friedrich

davon getwittert und das hat

Carl Friedrich

Pablo

Carl Friedrich

gesehen und dann super

Carl Friedrich

aufwendig. Es ist ein wirklich sehr

Carl Friedrich

nerviges Feature. Ja, das glaube ich.

Jochen

Ich habe mich schon gefragt, wie

Jochen

das implementiert wurde, weil das

Jochen

ist ja cool, aber oh mein Gott, wie ist das

Jochen

denn implementiert? Wie kriegt man das denn

Jochen

alles raus an den Stellen? Man muss halt wirklich einfach

Carl Friedrich

die gesamte Information durch den gesamten

Carl Friedrich

Stack so durchfädeln

Carl Friedrich

Und das ist an jeder Stelle, da muss man das weiterreichen und an jeder Stelle hat man halt, am Anfang hatten die Syntaxbäume halt auch die Informationen gar nicht. Am Anfang hatte der Syntaxbaum halt nur eine Zeilennummer und dann kam irgendwie noch die Spaltnummer dazu, aber halt nur den Anfang. Also das Ende, bis wohin das dann geht, das war halt, das kam gar nicht vor.

Dominik

Also nochmal für alle, die das noch nicht kennen, es gibt halt Fehlermeldungen, da wird ja jetzt die Position, wo der Fehler passiert ist, mit so Dreiecken unter Kringelt quasi unterstrichen, wo das halt aufgetroffen sein könnte.

Dominik

Und da hatte ich halt diesen Tweet gefakt und jetzt gibt's das.

Dominik

Also das ist mega geil, das sollte ich einfach öfter machen.

Carl Friedrich

Und also ich muss das jetzt, das kommt dann wieder zu mir zurück,

Carl Friedrich

weil wenn wir dann 3.11 unterstützen, dann muss ich das ja auch implementieren.

Carl Friedrich

Also insofern habe ich jetzt mich da ein Stück weit auch selber mit reingelegt,

Carl Friedrich

aber dass es jetzt halt in C-Python drin ist, finde ich einfach mega cool.

Jochen

Ja, dann weiß man halt schon, dass es sich lohnen wird, das zu implementieren.

Carl Friedrich

Und ich meine, das andere große Feature, wo wir halt dann quasi so ein bisschen,

Carl Friedrich

also jetzt nicht Druck ausgeübt,

Carl Friedrich

aber halt dann quasi Einfluss

Carl Friedrich

produziert haben, sind halt

Carl Friedrich

die Ordered Dictionaries.

Carl Friedrich

Ach, okay. Also das ist ja

Carl Friedrich

in 3.6, glaube ich.

Carl Friedrich

Informell, das weiß ich nicht.

Jochen

Aber 3.7 wird dann auch tatsächlich garantiert.

Carl Friedrich

In 3.6 haben sie halt gesagt, ihr dürft euch nicht

Carl Friedrich

darauf verlassen, dass die Dictionaries jetzt

Carl Friedrich

in der Einführungsreihenfolge

Carl Friedrich

sind. Und in 3.7

Carl Friedrich

haben sie dann gesagt,

Carl Friedrich

na, das funktioniert so gut, dass wir jetzt halt

Carl Friedrich

sagen, wir werden das auch nicht wieder abschaffen.

Carl Friedrich

Man darf sich jetzt darauf verlassen, weil es halt an ganz vielen Stellen

Carl Friedrich

echt auch viele Vorteile hat.

Carl Friedrich

Und das ist ein Pi-Pi-Feature.

Carl Friedrich

Achso, okay, das war gar nicht klar.

Carl Friedrich

Da gab es halt von Raymond Pettinger, gab es mal so ein

Carl Friedrich

Prototyp, aber in Python, in Pure Python.

Carl Friedrich

Und wir haben

Carl Friedrich

halt einfach gesagt, das sieht halt

Carl Friedrich

als Algorithmus echt gut aus.

Carl Friedrich

Und wir machen jetzt das ganze Engineering,

Carl Friedrich

was man halt braucht, um

Carl Friedrich

das dann wirklich quasi in Produktiveinsatz

Carl Friedrich

in die Implementierung einzubauen.

Carl Friedrich

Das haben wir halt einfach dann irgendwann mal gemacht.

Carl Friedrich

Und zwar noch nicht mal für unsere drei, sechs Versionen, sondern halt für unsere zwei, sieben Versionen.

Carl Friedrich

Also bei uns sind halt Dictionaries schon immer, also nicht schon immer, aber jetzt schon seit ungefähr zehn Jahren irgendwie geordnet.

Carl Friedrich

Und das war auch ganz schön, also dann, das war auch dann schon noch ein ganz schwieriger Aufwand.

Carl Friedrich

Also dieser Python-Code war halt so ein, jetzt Sketch wäre ein bisschen untertrieben,

Carl Friedrich

hat halt den Algorithmus so irgendwie präsentiert.

Carl Friedrich

Aber quasi dann das zu nehmen und es dann so weit zu pushen, dass es halt so gut ist und quasi an allen Stellen mit dem bisherigen Dictionary-Algorithmus dann auch wirklich mithalten kann und trotzdem die Insertion-Order halt quasi erhalten bleibt, da haben wir halt dann wirklich nochmal sehr viel extra Aufwand reingesteckt.

Carl Friedrich

Also Maschek Fischakowski und Armin Rigo haben das vor allem gemacht und dann hatten wir das halt irgendwie und dann gab es halt einen C-Python-Entwickler, der, der Name fällt mir gleich auch wieder ein, der hat das dann quasi wieder rückportiert.

Carl Friedrich

Also hat er unseren Code genommen und hat gesagt, ja cool, wir bauen das jetzt in Zebraisen ein und hat dann die nötige, ich weiß nicht, ob es da ein PEP für gab oder ob er die nötige Mailing-Listen-Diskussion geführt und dann landete das halt in 3.6 und dann wurde es halt quasi auch offiziell Teil der Semantik.

Carl Friedrich

Und ich meine, das ist ja eigentlich auch ganz cool, weil es ist halt wirklich, ich meine, das ist ja ein extra Feature.

Carl Friedrich

Intuitiv irgendwie.

Carl Friedrich

Das ist intuitiv. Ich finde es auch zum Lehren viel nicer, wenn man halt sagen kann, wenn man nicht immer erklären muss, warum beim Printen plötzlich halt einfach die Keys halt so durcheinandergewirbelt werden.

Carl Friedrich

Das war ja früher so. Also früher war es halt irgendwie, hing es von den Hashwerten ab, das war halt komplett intransparent, warum halt dann die Sachen plötzlich ganz anders dastehen.

Carl Friedrich

Ähm, und es ist halt auch gar nicht so, es ist halt auch a priori gar nicht so klar, dass, dass das wirklich effizient geht. Weil man könnte ja halt auch denken.

Dominik

Wie macht man das jetzt? Macht man quasi so ein extra dazu, das immer noch von den Hashwerten abhängt? Oder, äh.

Carl Friedrich

Das ist gar nicht so einfach. Also so, da gibt es halt so eine, so eine komische Indirektion jetzt drin, dass man quasi einmal die Hashmap hat und dann aber noch ein zweites Array, wo die Sachen in der Insertion Order drin sind.

Carl Friedrich

und dann würde man halt erstmal

Carl Friedrich

denken, dass man halt da plötzlich

Carl Friedrich

ganz viel Speicher irgendwie mehr

Carl Friedrich

braucht, weil man diese

Carl Friedrich

Indirektion hat

Carl Friedrich

und da gibt es halt dann so einen Trick und das ist wirklich

Carl Friedrich

auch das, was ich nicht verstanden

Carl Friedrich

hätte vorher, bevor die Leute

Carl Friedrich

sich halt ausgedacht haben, der Trick ist jetzt

Carl Friedrich

die Hashmap, die darf ja nicht voll sein

Carl Friedrich

weil du sonst Collisions kriegst

Carl Friedrich

also wenn du quasi

Carl Friedrich

wenn deine

Carl Friedrich

Hashmap irgendwie zu voll wird, dann musst du halt irgendwie

Carl Friedrich

die verdoppeln, um sie

Carl Friedrich

herzustellen, dass...

Dominik

Und nächstes Mal speicherfrei ist, wo du irgendwas reinkriegst.

Dominik

Genau, ja. Und der Trick ist jetzt

Dominik

aber, dass

Dominik

du

Dominik

mit dieser Indirektion jetzt

Dominik

den großen Teil

Carl Friedrich

einfach

Carl Friedrich

linear speicherst.

Carl Friedrich

Also du kannst dann,

Carl Friedrich

diese Lücken fallen dann weg.

Carl Friedrich

Die Lücken sind nur noch in deiner

Carl Friedrich

Indirektion drin, aber nicht mehr

Carl Friedrich

in deinem wirklichen Array, wo

Carl Friedrich

halt für jeden Eintrag ein

Carl Friedrich

Hash ein Key und ein Value gespeichert werden.

Carl Friedrich

Weil ein Eintrag

Carl Friedrich

von einem Dictionary besteht ja quasi aus

Carl Friedrich

drei Maschinenwörtern und

Carl Friedrich

wenn die dann quasi immer noch so Lücken haben,

Carl Friedrich

hast du halt ständig Lücken, die

Carl Friedrich

alle drei Maschinenwörter groß sind.

Carl Friedrich

Aber wenn du die Indirektion einbaust,

Carl Friedrich

dann ist quasi ein Eintrag nur noch

Carl Friedrich

ein Index in den

Carl Friedrich

dichten, in den dichtgespeicherten

Carl Friedrich

Insertion Order

Carl Friedrich

Speicher.

Carl Friedrich

So, jetzt sind wir an dem Punkt, wo wir eigentlich gerne ein Bild

Carl Friedrich

malen würden.

Carl Friedrich

Und vielleicht ist dann der Blogpost,

Carl Friedrich

ich finde den mal

Carl Friedrich

und wir verlinken den dann, aber

Carl Friedrich

für mich war es halt erstmal nicht klar, dass es

Carl Friedrich

wirklich auch wirklich eine gute Idee ist, das so zu machen.

Carl Friedrich

Also ist es aber.

Carl Friedrich

Also stellt sich halt raus, es ist es.

Carl Friedrich

Ja, cool.

Carl Friedrich

Echt, genau.

Carl Friedrich

Dann hat man quasi dann

Jochen

für drüber iterieren, muss man dann einfach nur noch

Jochen

durch die echte Liste gehen und es gar nichts mehr macht.

Jochen

Das Iterieren ist halt auch besser, weil

Carl Friedrich

vorher war es halt so,

Carl Friedrich

Man musste quasi über die Hashmap drüber iterieren

Carl Friedrich

und bei jedem Eintrag gucken,

Carl Friedrich

ist das überhaupt ein Eintrag oder nicht.

Carl Friedrich

Jetzt kann man aber quasi über den

Carl Friedrich

dichten Speicher drüber iterieren,

Carl Friedrich

wo einfach alle Einträge gültige Einträge sind.

Carl Friedrich

Und man muss halt gar nicht mehr,

Carl Friedrich

man verliert auch ein If

Carl Friedrich

in jedem Next-Aufruf.

Carl Friedrich

Also vorher war es so,

Carl Friedrich

dass man quasi in einem Next-Aufruf

Carl Friedrich

eine Schleife brauchte,

Carl Friedrich

um den nächsten gültigen Eintrag zu finden.

Carl Friedrich

Und jetzt weiß man halt einfach,

Carl Friedrich

es ist der nächste Eintrag.

Carl Friedrich

Ja, genau. Also das wäre halt auch noch so ein Beispiel, wo wir quasi dann die Implementierungsebene so ein bisschen beeinflusst haben. Aber sonst, also so die ganzen Kerntechniken, die wir, also wir haben jetzt noch gar nicht so, bisher haben wir eher so ein bisschen phänomenologisch darüber geredet.

Carl Friedrich

Wir führen das aus, es wird schneller

Carl Friedrich

und ich glaube, irgendwie jetzt müssen wir

Carl Friedrich

vielleicht so ein bisschen anfangen darüber zu reden,

Carl Friedrich

wie das eigentlich geht.

Carl Friedrich

Also die Kern, ja.

Carl Friedrich

Ich hätte noch ein, zwei Fragen.

Carl Friedrich

Also werden

Carl Friedrich

alle Sachen schneller?

Dominik

Was mit anderen Sprachen, also kann da C++

Dominik

irgendwie, wenn das irgendwie angebunden ist, ein Problem?

Carl Friedrich

Also es wird

Carl Friedrich

halt erstmal vor allem

Carl Friedrich

Python schneller. Also wirklich, wenn du Python-Code

Carl Friedrich

ausfüllst, wird das schneller. Aber die anderen Sachen laufen

Carl Friedrich

noch. Die anderen Sachen laufen noch

Carl Friedrich

und es kommt so ein bisschen drauf an,

Carl Friedrich

was die genau machen,

Carl Friedrich

ob die dann vielleicht

Carl Friedrich

langsamer werden oder halt einfach gleich

Carl Friedrich

bleiben oder

Carl Friedrich

es gibt halt dann so Randfälle, zum Beispiel

Carl Friedrich

reguläre Ausdrücke sind auch sehr, sehr schnell

Carl Friedrich

bei uns in PyPy,

Carl Friedrich

obwohl die natürlich eigentlich kein Python-Code sind, aber da

Carl Friedrich

haben wir dann eine extra Optimierung dafür, das ist ja

Carl Friedrich

quasi so eine kleine DSL

Carl Friedrich

in Python,

Dominik

also du sollst ja DSL nochmal beschreiben, weil ich so

Dominik

Language gemeint habe. Genau, eine Domain-Specific-Language

Dominik

für String-Matching. Also

Carl Friedrich

ich meine, das ist eine sehr häufige, die halt quasi überall

Carl Friedrich

eingebaut ist, aber es ist ja schon eine andere

Carl Friedrich

Programmiersprache als Python letztlich.

Carl Friedrich

Aber wir haben halt dafür auch dann quasi

Carl Friedrich

ganz viel Optimierung gemacht,

Carl Friedrich

dass das halt auch schnell ist.

Dominik

Normalerweise kann ich die per PyEnv einfach

Dominik

installieren, dann mein

Dominik

PyPy auch? Ich glaube, PyEnv

Dominik

unterstützt auch PyPy, ja. Also

Carl Friedrich

Tox hat eigentlich zum Beispiel PyPy-Support, wenn du das testen willst.

Carl Friedrich

Das ist schon an vielen

Carl Friedrich

Stellen quasi so ganz

Carl Friedrich

gut in die

Carl Friedrich

in die

Carl Friedrich

Infrastruktur.

Carl Friedrich

Nach dem Semester-Fan

Carl Friedrich

kriegen wir hoffentlich einen Alpha-Release.

Carl Friedrich

Also da arbeite ich

Carl Friedrich

gerade halt dran. Heute Morgen

Carl Friedrich

habe ich zwei Bugs gefixt. Also das ist

Carl Friedrich

das, was ich jetzt gerade so halt wirklich

Carl Friedrich

konkret mache.

Carl Friedrich

Also die großen Features sind halt fast

Carl Friedrich

fertig. Also Pattern-Matching

Carl Friedrich

ist da und

Carl Friedrich

3.10 hatte, also außer Pattern-Matching

Carl Friedrich

halt auch viele so mittelgroße Sachen.

Carl Friedrich

aber Pattern Matching, das war wirklich

Jochen

auch, kann ich mir vorstellen, das macht

Jochen

ja beim Parsen

Jochen

ein relativ großes, ich glaube, das konnte ja auch nur

Jochen

deswegen in C-Python

Jochen

irgendwie gemacht werden,

Jochen

weil da dann der neue

Jochen

Pack-Parser irgendwie verwendet wurde und ich weiß gar nicht,

Jochen

bei Pypi, äh Pypi, äh Pypi

Jochen

ist eigentlich reingefallen.

Jochen

Da ist ja, da

Jochen

weiß ich gar nicht, was da verwendet wird, aber das

Jochen

könnte ja dann auch auswirken. Da hatte ich zum Glück sehr gut,

Carl Friedrich

also vor einem Jahr hatte ich dann 3.9

Carl Friedrich

implementiert und da war

Carl Friedrich

3.10 ja schon raus und da habe ich halt so gesehen,

Carl Friedrich

der Packparser wird wichtig

Carl Friedrich

und ich habe dann quasi bei 3.9 schon

Carl Friedrich

die ganze

Carl Friedrich

technische Vorarbeit dafür geleistet.

Carl Friedrich

Wir haben auch einen Packparser,

Carl Friedrich

quasi mehr oder weniger die gleiche Architektur.

Carl Friedrich

Wir können nicht ganz das gleiche Input-File nehmen,

Carl Friedrich

weil, ich weiß nicht, ob du mal

Carl Friedrich

in diese Grammatik-Datei reingeschaut hast?

Carl Friedrich

Nee, nicht wirklich. Also das ist halt im Prinzip

Carl Friedrich

so ein bisschen so eine kontextfreie Grammatik,

Carl Friedrich

wie man das halt irgendwie

Carl Friedrich

aus irgendeiner Informatik-Vorlesung

Carl Friedrich

vielleicht mal gesehen hat, aber

Carl Friedrich

im Unterschied zur alten Grammatik ist das so,

Carl Friedrich

dass jetzt in der Pack-Grammatik

Carl Friedrich

da sind halt so Schnipsel an C-Code drin.

Carl Friedrich

Und

Carl Friedrich

die können wir halt, die wollen wir halt nicht haben.

Carl Friedrich

Und wir müssen quasi

Carl Friedrich

die Schnipsel an C-Code, die mussten wir halt quasi von Hand

Carl Friedrich

einfach einmal überall ersetzen. Und das war sehr, sehr

Carl Friedrich

nervig. Und das

Carl Friedrich

ist auch so ein bisschen meine Kritik,

Carl Friedrich

dass quasi

Carl Friedrich

die Grammatik der Sprache vermischt

Carl Friedrich

wird mit den Parsing-Actions, die in C

Carl Friedrich

geschrieben sind, bei C-Python.

Carl Friedrich

Bei uns sind die nicht ins Ziel geschrieben, wir werden gleich noch darüber sprechen, worin die bei uns dann geschrieben sind, aber das war halt dann einmal sehr, sehr nervig, da drüber zu gehen und alle diesen C-Schnipsel dann da auszutauschen und da habe ich dann auch immer mal wieder einen Fehler gemacht, die finde ich dann jetzt auch immer mal wieder einen, also das war halt einfach Aufwand, aber ich habe halt damals quasi schon vor dem Jahr dann quasi schon vorgearbeitet und gesagt, wenn dann 3.10 kommt, dann will ich halt quasi auch schon darauf vorbereitet sein,

Carl Friedrich

dass das Pattern Matching

Carl Friedrich

dann in den Parser zumindest einfach einzufügen

Carl Friedrich

ist. Aber es ist

Carl Friedrich

halt nicht nur ein Parser, es ist ganz viel

Carl Friedrich

neues Syntax, aber es sind halt auch einiges

Carl Friedrich

an neuen Bytecodes und der Bytecode-Compiler

Carl Friedrich

hat halt ganz, ganz

Carl Friedrich

viel recht komplexe

Carl Friedrich

Logik auch gekriegt

Carl Friedrich

und das habe ich jetzt, aber das ist zum größten Teil

Carl Friedrich

jetzt halt ziemlich fertig.

Carl Friedrich

Da fehlt mir noch so ein Randfall,

Carl Friedrich

den muss ich jetzt irgendwann noch fixen, der

Carl Friedrich

hat mich bisher noch zu sehr genervt, aber

Carl Friedrich

also das ist quasi fast

Carl Friedrich

durch.

Carl Friedrich

Und dann, also jedes

Carl Friedrich

Release,

Carl Friedrich

so der,

Carl Friedrich

ich versuche mal so ein bisschen ein

Carl Friedrich

Gefühl dafür zu vermitteln, wie sich das anfühlt, an so einer

Carl Friedrich

neuen Python-Version zu arbeiten. Es gibt halt

Carl Friedrich

immer irgendwie fünf große Features, die man halt

Carl Friedrich

auf der What's New-Seite

Carl Friedrich

kennt und die implementiert man halt.

Carl Friedrich

Das ist dann irgendwie halt auch nice, ja, weil

Carl Friedrich

da ist so ein klar umrissener Task

Carl Friedrich

und man freut sich vielleicht halt auch über, vielleicht

Carl Friedrich

ist es halt auch ein Feature, was man gut findet.

Carl Friedrich

Ich weiß nicht, wie ist euer Bauchgefühl?

Carl Friedrich

Wie findet ihr Pattern-Matching?

Carl Friedrich

Ich liebe es.

Jochen

Okay, ich habe es noch nicht wirklich viel verwendet.

Jochen

Ich mag das total gerne.

Dominik

Statt if, elif irgendwie einfach schöne Cases zu machen.

Dominik

Gerade für so API-Parsing.

Dominik

Also ich finde, man muss sich ganz,

Carl Friedrich

ich verstehe absolut, dass man das total cool finden kann.

Carl Friedrich

Ich habe es auch noch nicht so richtig im Produktiv,

Carl Friedrich

also noch nicht wirklich irgendwas geschrieben,

Carl Friedrich

was halt nicht einfach so ein Toy-Beispiel ist.

Carl Friedrich

Aber man muss sich schon so ein bisschen reindenken.

Carl Friedrich

Also ich finde, es unterscheidet sich halt

Carl Friedrich

in mancher Hinsicht schon

Carl Friedrich

so ein bisschen von dem

Carl Friedrich

Feeling von Python an so ein paar

Carl Friedrich

anderen Stellen.

Carl Friedrich

Ich glaube, wenn man dann da

Carl Friedrich

so mal gedanklich drin ist, ist das glaube ich wirklich auch

Carl Friedrich

sehr, sehr cool, aber man braucht so ein bisschen.

Carl Friedrich

Oder ich habe das Gefühl, dass ich es noch so ein bisschen brauche.

Dominik

Man kann irgendwie so direkte Kommandos geben und

Dominik

man kann da direkt sagen, was das ist.

Dominik

Und im Zusammenhang mit den Typen, finde ich, ist das sehr schön.

Dominik

Weil wenn man halt tatsächlich Typen

Dominik

definiert hat irgendwie, dann kann man halt einfach

Dominik

diesen Typ als Case nehmen

Dominik

und das ist halt

Dominik

genau das, was man wahrscheinlich irgendwie

Carl Friedrich

Aber also was man dann wirklich in die Patterns

Carl Friedrich

reinschreibt, das ist halt quasi nochmal

Carl Friedrich

so ein bisschen so eine Sprache in der Sprache

Carl Friedrich

und die ist halt

Carl Friedrich

schon so ein bisschen anders halt auch

Carl Friedrich

als

Carl Friedrich

der Rest von Python.

Dominik

Ja, aber jetzt, ich glaube, du musst vielleicht gleich nochmal so ein bisschen

Dominik

ausholen darüber, was eigentlich so eine Sprache aus

Dominik

deiner Sicht halt ist.

Dominik

Ja, das ist jetzt ziemlich schwammig, da würde ich, also ja.

Dominik

Genau,

Carl Friedrich

aber auf jeden Fall, also man hat da so ein

Carl Friedrich

großes Feature, sowas wie Pattern Matching,

Carl Friedrich

das ist halt schön, da kann man, weiß man,

Carl Friedrich

das ist relativ klar umrissen, wenn

Carl Friedrich

man das Feature cool findet, dann macht es halt auch richtig

Carl Friedrich

Spaß, das zu implementieren, ja, dann

Carl Friedrich

so über ein paar Tage hinweg fängt das halt dann an

Carl Friedrich

zu funktionieren, das ist halt einfach immer wieder auch sehr

Carl Friedrich

cool und irgendwann

Carl Friedrich

ist man halt dann mit allen großen Featuren fertig

Carl Friedrich

und dann gibt es so ein bisschen,

Carl Friedrich

zusätzlich zu den fünf großen Featuren gibt es halt

Carl Friedrich

vielleicht 30

Carl Friedrich

kleinere und mittlere Feature,

Carl Friedrich

das ist halt so ein bisschen Fleißarbeit

Carl Friedrich

und dann gibt es aber halt einfach

Carl Friedrich

tausend Details

Carl Friedrich

und das sind halt,

Carl Friedrich

das ist der Teil, der quasi am längsten

Carl Friedrich

dauert und ein bisschen

Carl Friedrich

am nervigsten ist, also weil man halt jeden Tag

Carl Friedrich

einfach fünf kleine Details

Carl Friedrich

fixen kann und man

Carl Friedrich

findet die, indem man halt die

Carl Friedrich

Testsuite, die

Carl Friedrich

Teil der C-Python-Standard-Bibliothek

Carl Friedrich

ist, ausführt

Carl Friedrich

und dann halt die fehlenden

Carl Friedrich

Tests nach und nach fixt

Carl Friedrich

und

Carl Friedrich

mit den großen Features ist man halt irgendwann durch.

Carl Friedrich

Also es gibt halt Test Padma, das hat man halt irgendwann

Carl Friedrich

dann, das passt dann, dann ist es super.

Carl Friedrich

Aber dann ist halt in allen anderen Dateien

Carl Friedrich

gibt es halt dann so einen fehlschlagenden

Carl Friedrich

Test und jeder von diesen fehlschlagenden

Carl Friedrich

Tests dauert halt zwei Stunden

Carl Friedrich

und das ist halt einfach das, was einfach ganz

Carl Friedrich

ganz, also da

Carl Friedrich

gibt es halt quasi dann so einen long tail an irgendwelchen

Carl Friedrich

Details. Und der

Carl Friedrich

quasi

Jochen

Fortschritt, den man dadurch erzielt, dass man das

Jochen

fix, ist halt auch irgendwann dann nicht mehr

Jochen

so groß, dass man sich, wahrscheinlich denkt man sich dann irgendwann

Jochen

so, das lohnt sich halt nicht mehr.

Dominik

Wer das so irgendwann mal benutzt. Genau.

Dominik

Okay, aber das ist tatsächlich dann TDD auch,

Dominik

was ihr da macht. Ja, also

Carl Friedrich

Piper ist von, also so von der

Carl Friedrich

Entwicklungsphilosophie sehr,

Carl Friedrich

also ich meine, wir haben ja

Carl Friedrich

vorhin ganz kurz gesagt, dass es jetzt irgendwie

Carl Friedrich

20 Jahre altes Projekt ist, also es wurde

Carl Friedrich

fast genau,

Carl Friedrich

also irgendwie 17. Februar war das erste

Carl Friedrich

Treffen von so

Carl Friedrich

ein paar Leuten in Hildesheim. 2003.

Carl Friedrich

2003, genau. Also völlig anderes Zeitalter so ein bisschen. Und damals war das halt irgendwie so ein bisschen, hatte das so ein bisschen so ein Extreme Programming Kontext auf der Entwicklungsphilosophie Seite. Also so mit Test Development und Agile, bevor das kommerzialisiert wurde, so von der Idee her.

Carl Friedrich

Und es ist wirklich so, dass diese Implementierung von vornherein komplett testdriven entwickelt wurde. Das ist halt an vielen Stellen auch wirklich ganz tief drin in der Philosophie des Projekts. Und es ist auch so, dass PyTest aus PyPy hervorgegangen ist.

Carl Friedrich

Also der Holger Kregel, über den haben wir, bevor wir anfangen aufzunehmen, kurz schon geredet, der war halt einer der Gründer des PyPy-Projekts, also der hat das erste Treffen in Hildesheim organisiert und am Anfang wurde dann für die Tests halt einfach Unitest genommen.

Carl Friedrich

und Unitest ist ja ein

Carl Friedrich

von Java

Carl Friedrich

portiertes, an Java

Carl Friedrich

Architektur angelehntes

Carl Friedrich

Testing Framework.

Carl Friedrich

JUnit, aber ich glaube JUnit

Carl Friedrich

ist irgendwie SUnit von

Carl Friedrich

Smarttalk. Aber durch

Carl Friedrich

diesen Umweg über Java ist es halt

Carl Friedrich

irgendwie doch ein bisschen ungelenk

Carl Friedrich

an vielen Stellen.

Carl Friedrich

Und weil Holger halt dann das alles

Carl Friedrich

auch ganz schön doof fand, hat er

Carl Friedrich

recht früh als Teil

Carl Friedrich

Projekt von PyPy halt angefangen

Carl Friedrich

PyTest zu entwickeln

Carl Friedrich

und

Carl Friedrich

das ging dann quasi

Carl Friedrich

aus dem PyPy-Projekt irgendwie so ein Stück

Carl Friedrich

weit hervor und ist jetzt natürlich

Carl Friedrich

eine Million Mal erfolgreicher

Carl Friedrich

als alles, was PyPy irgendwie jemals sonst

Dominik

so gemacht hat. PyPy-Spannende, also am Anfang

Dominik

habe ich es gehasst und jetzt finde ich es richtig gut, weil es halt echt

Dominik

total gut ist und ich finde es sehr PySonic

Dominik

und wenn man einmal so ein bisschen vielleicht verstanden hat, wie das

Dominik

funktioniert, das ist sehr, sehr, sehr schön

Carl Friedrich

zu nutzen auch, ja. Also ich meine halt einfach so

Carl Friedrich

dieses, dass man davon wegkommt, dass man diese

Carl Friedrich

97 self-assert

Carl Friedrich

irgendwas

Carl Friedrich

Funktionen braucht, um gute Fehlermeldungen

Carl Friedrich

zu kriegen. Das ist halt schon

Dominik

self-assert, equal, irgendwie CamelCase und sowas.

Dominik

Equal oder Equals?

Dominik

Genau, ja, ja, genau.

Dominik

Du machst bloß nichts Falsches.

Jochen

Ja, und CamelCase natürlich auch mal.

Jochen

Ja, und ich finde

Carl Friedrich

halt also gerade so die Hürde, man schreibt halt

Carl Friedrich

einfach eine Funktion, die Test heißt, dahin und dann

Carl Friedrich

geht halt, das ist halt schon sehr, sehr cool.

Carl Friedrich

Ne, genau, also

Carl Friedrich

also Test-Driven Development war halt

Carl Friedrich

einer der Kernideen

Carl Friedrich

so auf der, wie entwickeln

Carl Friedrich

wir dieses Projekt? Das andere

Carl Friedrich

war halt, das ist so ein bisschen verloren

Carl Friedrich

gegangen über die Jahre, aber einer der Ideen am

Carl Friedrich

Anfang war halt wirklich, wir wollen eine

Carl Friedrich

sehr gut verständliche

Carl Friedrich

Implementierung der Sprache schreiben.

Carl Friedrich

Und da müssen wir

Carl Friedrich

irgendwann jetzt halt dann doch mal zur Architektur kommen.

Carl Friedrich

Warum heißt das Ding eigentlich PyPy?

Carl Friedrich

Und

Carl Friedrich

Ich weiß PyPy noch nicht ganz.

Carl Friedrich

Ja.

Carl Friedrich

Nein, Entschuldigung.

Carl Friedrich

Also das Projekt ist halt entstanden

Carl Friedrich

aus Diskussionen auf

Carl Friedrich

erst der deutschen Python-Mailing-Liste

Carl Friedrich

und dann irgendwie auch Complying Python

Carl Friedrich

von halt

Carl Friedrich

Python-Fans, also halt so ein paar

Carl Friedrich

Leute, die irgendwie Python als Programmiersprache toll fanden

Carl Friedrich

und die halt gesagt haben, naja, es ist doch

Carl Friedrich

philosophisch eigentlich irgendwie blöd,

Carl Friedrich

dass wir alle Python so toll finden,

Carl Friedrich

aber die,

Carl Friedrich

der Interpreter für Python, dass der ja

Carl Friedrich

in C geschrieben ist.

Carl Friedrich

Und Piper ist halt wirklich,

Carl Friedrich

Die Idee war wirklich, wir schreiben jetzt eine Implementierung

Carl Friedrich

für Python, aber wir wollen dafür halt

Carl Friedrich

nicht C nehmen, weil C so eine blöde Sprache ist, sondern wir

Carl Friedrich

wollen dafür halt Python nehmen, weil wir ja alle Python-Fans

Carl Friedrich

sind. Und das war quasi,

Carl Friedrich

also da kommt der Name her, PyPy ist Python

Carl Friedrich

in Python. Und das war

Carl Friedrich

halt so ein bisschen

Carl Friedrich

die Ursprungsmotivation. Wir

Carl Friedrich

wollen jetzt die Sprache nehmen, die wir cool finden,

Carl Friedrich

um die Sprache

Carl Friedrich

selbst zu implementieren. Und das klingt halt erst mal

Carl Friedrich

ganz, also nach einem sehr

Carl Friedrich

akademischen Experiment.

Carl Friedrich

Und das war es ein Stück weit, glaube ich, auch erstmal.

Carl Friedrich

Also erstmal war halt so ein bisschen die Idee auch,

Carl Friedrich

wir wollen irgendwie Code schreiben,

Carl Friedrich

die man halt einfach erstmal schön lesen kann.

Carl Friedrich

Und der soll natürlich schon auch irgendwie funktionieren,

Carl Friedrich

aber insbesondere soll der halt einfach architektonisch toll sein

Carl Friedrich

und irgendwie elegant und alles schön,

Carl Friedrich

diese Sprachsemantik soll irgendwie ganz klar ausgedrückt werden

Carl Friedrich

in diesem Python-Code.

Carl Friedrich

Das war quasi eine der Ideen.

Carl Friedrich

Und erst später kam es dann hinzu,

Carl Friedrich

dass quasi Performance eigentlich ein immer wichtiger Teil

Carl Friedrich

der Projektmotivation war.

Carl Friedrich

Also irgendwann hat man halt gesagt,

Carl Friedrich

naja, okay, wir haben das jetzt,

Carl Friedrich

aber warum sollte man das machen?

Carl Friedrich

Und wir machen jetzt halt auch noch ganz, ganz viel Aufwand,

Carl Friedrich

also welchen Aufwand, da sage ich gleich noch ein bisschen was dazu.

Carl Friedrich

Wir machen halt ganz, ganz viel Aufwand,

Carl Friedrich

um das dann doch irgendwie auch schnell zu kriegen.

Carl Friedrich

So, und vielleicht können wir da auch einfach

Carl Friedrich

wirklich historisch vorgehen.

Carl Friedrich

die erste Idee, um das jetzt schneller zu kriegen,

Carl Friedrich

also man hat dann jetzt irgendwie so eine Python-Implementierung,

Carl Friedrich

die ist in Python geschrieben und die ist schön und elegant,

Carl Friedrich

man kann das lesen, aber das bringt einem halt einfach gar nichts.

Carl Friedrich

Weil man braucht ja einfach immer noch darunter

Carl Friedrich

einen Python-Interpreter, um

Carl Friedrich

das ausführen zu können. Und dann ist es

Carl Friedrich

halt einfach quasi ein Python-Interpreter,

Carl Friedrich

der auf C-Python läuft.

Carl Friedrich

Das ist halt einfach ganz, ganz langsam.

Dominik

Aber man kann natürlich dann viel über die Sprache

Dominik

vielleicht lernen. Genau, man kann dann was lernen und man kann

Dominik

da bestimmt auch irgendwie dann

Carl Friedrich

schön einfach Experimente durchführen.

Carl Friedrich

Aber das ist jetzt nichts, was man irgendwie

Carl Friedrich

im Produktiv-Einsatz haben

Carl Friedrich

wollte. Es wäre halt dann wirklich einfach

Carl Friedrich

eher so ein, es wäre halt

Carl Friedrich

vielleicht so ein cooler Blogpost oder so, oder? Ein cooles Buch.

Carl Friedrich

Okay, ja, genau. Aber halt vielmehr

Carl Friedrich

auch nicht. Und die erste Idee

Carl Friedrich

ist quasi, dass man jetzt sagt,

Carl Friedrich

wir machen einen Prozess, den man

Carl Friedrich

halt irgendwie Bootstrapping nennen kann.

Carl Friedrich

Wir nehmen jetzt

Carl Friedrich

diesen Python-Interpreter, der in Python geschrieben

Carl Friedrich

ist, und

Carl Friedrich

übersetzen den,

Carl Friedrich

also wir schreiben einen Compiler, der jetzt diesen Code

Carl Friedrich

nehmen kann und den nach C übersetzen kann.

Carl Friedrich

Und

Carl Friedrich

das geht halt nicht

Carl Friedrich

für allgemeinen Python-Code, also man kann Python-Code

Carl Friedrich

halt nicht nach C kompilieren, das

Carl Friedrich

bringt nicht viel, aber

Carl Friedrich

deswegen beschränken wir uns auf eine Teilmenge von

Carl Friedrich

Python

Carl Friedrich

in dem Code, den wir in der Implementierung

Carl Friedrich

des Interpreters verwenden.

Carl Friedrich

Also der Interpreter ist quasi in einer Teilmenge geschrieben

Carl Friedrich

und die ist so gewählt, dass man

Carl Friedrich

diese Teilmenge gut nach C übersetzen kann.

Carl Friedrich

Und dann wird man quasi dieses

Carl Friedrich

Interpreter-Turm

Carl Friedrich

problemlos. Also dann kann man quasi

Carl Friedrich

den Python-Interpreter nehmen,

Carl Friedrich

der ist nicht mehr in Python geschrieben, sondern in

Carl Friedrich

ich sag jetzt gleich den Namen, in

Carl Friedrich

R-Python. Das ist eine

Carl Friedrich

Teilmenge der Sprache und die ist so

Carl Friedrich

gewählt, dass man sie nach C übersetzen kann.

Carl Friedrich

Und R-Python heißt es halt, weil es

Carl Friedrich

Restricted Python ist, weil man halt

Carl Friedrich

einfach so ein bisschen die ganz

Carl Friedrich

dynamischen Sachen, die man in Python machen

Carl Friedrich

kann, die macht man halt einfach nicht.

Carl Friedrich

Um eben das

Carl Friedrich

übersetzen, nach C zu ermöglichen. Also man

Dominik

ändert keinen Typ einer Variable irgendwie on the fly.

Dominik

Ganz genau. Also das ist, glaube ich,

Carl Friedrich

sogar noch nicht mal ganz so schlimm. Also man

Carl Friedrich

macht halt so Sachen, man fügt einer Klasse

Carl Friedrich

keine neuen Methoden zur Laufzeit hinzu.

Carl Friedrich

Oder

Carl Friedrich

in Python gilt ja alle möglichen komischen Sachen. Man kann halt ja auch

Carl Friedrich

bei einer Instanz

Carl Friedrich

dann der Class zuweisen und so.

Carl Friedrich

So dieses ganze ganz dynamische

Carl Friedrich

Metaprogrammierungszeug, das ist halt einfach verboten,

Carl Friedrich

weil da ist halt

Carl Friedrich

nicht so klar, wie der C-Code dann aussähe,

Carl Friedrich

den man da generieren würde. Also das ist der

Carl Friedrich

erster Schritt. Der erste Schritt ist,

Carl Friedrich

das ist nicht mehr Python

Carl Friedrich

in beliebigem Python-Code, sondern das ist

Carl Friedrich

eine Implementierung für die

Carl Friedrich

Sprache Python in einer Teilmenge von Python

Carl Friedrich

und wir haben dazu noch ein anderes Tool,

Carl Friedrich

was jetzt diese Teilmenge nimmt und daraus C-Code erzeugt.

Carl Friedrich

Und so wird man C-Python erstmal

Carl Friedrich

los. Also danach,

Carl Friedrich

du drückst dann auf den Knopf und dann

Carl Friedrich

nimmt der halt den Interpreter, der in der Teilmenge

Carl Friedrich

geschrieben ist, erzeugt C-Code daraus,

Carl Friedrich

dann startest du den C-Compiler

Carl Friedrich

und der nimmt den C-Code und macht daraus halt eben

Carl Friedrich

wieder ein Binary, über das wir ja vorhin

Carl Friedrich

schon gesprochen haben, dass das runtergeladen

Carl Friedrich

werden kann. Und das ist

Carl Friedrich

halt dann quasi einfach ein etwas

Carl Friedrich

merkwürdiges, also

Carl Friedrich

geschriebenes, aber das

Carl Friedrich

verhält sich jetzt, also es ist quasi

Carl Friedrich

noch näher dran an dem, was man von Python.org

Carl Friedrich

runterladen kann. Es ist halt

Carl Friedrich

ein nicht in Hand geschriebener C-Code,

Carl Friedrich

sondern generierter C-Code, aber

Carl Friedrich

es ist halt einfach dann ein Interpreter für Python

Carl Friedrich

in C, letztlich.

Carl Friedrich

Und

Carl Friedrich

das bringt halt schon

Carl Friedrich

dann mal die ersten

Carl Friedrich

also vorher

Carl Friedrich

so, um mal so eine Größenordnung zu nennen,

Carl Friedrich

wenn man das, wenn man

Carl Friedrich

dann PiPi auf C-Python ausführt, dann hat man halt

Carl Friedrich

irgendwie so einen Interpreter, der vielleicht 2000 Mal

Carl Friedrich

langsamer ist als C-Python.

Carl Friedrich

Also dann ist das halt wirklich, das ist nur

Carl Friedrich

ein Spielzeug. Und wenn man dann

Carl Friedrich

diesen Bootstrapping-Trick macht,

Carl Friedrich

dass man eben wieder C-Code erzeugt, dann gewinnt

Carl Friedrich

man halt von diesen

Carl Friedrich

2000 Mal langsamer, gewinnt man halt

Carl Friedrich

1000 Mal zurück.

Carl Friedrich

Dann hat man quasi einen Interpreter, der ist

Carl Friedrich

Nur 1000 Mal langsamer.

Carl Friedrich

Nee, nee, nur zweimal langsamer.

Carl Friedrich

Also Faktor 1000 kriegt man wieder.

Carl Friedrich

Aber Faktor 2 hat man halt immer noch.

Carl Friedrich

Und das ist natürlich immer noch nicht gut.

Carl Friedrich

Also warum sollte man das machen?

Carl Friedrich

Weil es halt in Python geschrieben ist

Carl Friedrich

und wir alle Python so toll finden.

Carl Friedrich

Das reicht halt irgendwie als Motivation nicht.

Carl Friedrich

Und jetzt ist so ein bisschen die Frage,

Carl Friedrich

wo kommt eigentlich wirklich die Speed her?

Carl Friedrich

Und da wird es halt dann so ein bisschen akademisch.

Carl Friedrich

das ist quasi

Carl Friedrich

der Forschungsanteil,

Carl Friedrich

also ich habe da meine Doktorarbeit drüber geschrieben,

Carl Friedrich

das ist quasi wirklich

Carl Friedrich

so ein bisschen

Carl Friedrich

ein, ja, also war wirklich so

Carl Friedrich

ein ganz klassisches akademisches Forschungsprojekt,

Carl Friedrich

da war ja währenddessen auch gar nicht so klar,

Carl Friedrich

ob das wirklich klappen kann, so von der Idee her

Carl Friedrich

und hat auch, sag ich mal,

Carl Friedrich

vielleicht

Carl Friedrich

fünf, sechs Jahre gedauert, bis es dann

Carl Friedrich

klarer wurde, dass es halt wirklich geht

Carl Friedrich

Und die Idee daran ist, dass du, also sagt man ja auch immer so ein bisschen so, wenn man halt irgendwie das schnell kriegen will, dann braucht man halt irgendwie einen JIT-Compiler.

Carl Friedrich

Also wenn man halt irgendwie eine dynamische Programmiersprache schnell ausführen will, dann braucht man einen Just-in-Time-Compiler.

Carl Friedrich

Und was ist das? Ein Just-in-Time-Compiler, also so ein normaler Compiler, der funktioniert halt für Python nicht, weil man ja gar keine Typen hat.

Carl Friedrich

Also das ist jetzt mit Typ-Annotationen heutzutage so ein bisschen anders, aber die Typ-Annotationen, die sind ja auch so ein bisschen so eine Fiktion.

Carl Friedrich

Also die dürfen ja auch falsch sein.

Carl Friedrich

Also vergessen wir die erst mal.

Carl Friedrich

Also das Problem ist, wenn man einfach Python-Code anschaut,

Carl Friedrich

dann kann man den halt nicht unbedingt jetzt kompilieren.

Carl Friedrich

Wenn man halt eine Funktion hat, die A und B als Argumente nimmt

Carl Friedrich

und die Funktion macht irgendwie Return A mal 2 plus B,

Carl Friedrich

dann kann man diese Funktion nicht nach Maschinen-Code übersetzen,

Carl Friedrich

weil man weiß halt gar nicht, was das mal macht.

Carl Friedrich

Also man kann die Funktion halt mit ins

Carl Friedrich

aufrufen, man kann die mit floats aufrufen,

Carl Friedrich

man kann die mit strings aufrufen oder

Carl Friedrich

man kann die halt mit einer

Carl Friedrich

Klasse aufrufen, die halt

Carl Friedrich

ein unterstrich unterstrich add Methode hat und

Carl Friedrich

eine unterstrich unterstrich mul Methode und

Carl Friedrich

die halt irgendwas super weirdes macht.

Dominik

Das muss quasi die Anwendungsfälle

Dominik

kennen, in denen das aufgerufen wird

Dominik

irgendwann in diesem Programmablauf und dann

Dominik

daraus jeweils unterschiedliche Implementierungen

Dominik

im Machine Code zu schreiben, die man dann

Dominik

verabschiedet. Ja, ganz genau. Und das kann man aber

Carl Friedrich

halt quasi nicht ohne weiteres statisch machen.

Carl Friedrich

Also, man kann jetzt, es ist nicht leicht, sich quasi nur den Quellcode anzuschauen und zu sagen, aha, A und B sind hier immer ins, weil es kann ja sein, dass es halt an sieben verschiedenen Stellen wird die Funktion jetzt aufgerufen und an zwei davon sieht es so aus, als könnten es ins sein, aber an den anderen drei weiß ich nicht so genau und das ist überhaupt in der Bibliothek drin und ich weiß halt überhaupt nicht so genau, wie die Bibliothek jetzt verwendet wird konkret von irgendeiner Anwendung.

Carl Friedrich

Das heißt, so einfach, wenn ich mir nur den Quellcode anschaue, kann ich für diese Funktion f keinen guten Maschinencode erzeugen. Und deswegen braucht man halt quasi, also ein normaler Compiler geht halt nicht. Und deswegen braucht man halt eben den Just-In-Time-Compiler und das ist ein Compiler, der erzeugt zwar schon Maschinencode, aber der macht das nicht so einmal vor der Ausführung, sondern der macht das quasi während das Programm schon läuft.

Carl Friedrich

Und der Grund, warum ein Just-In-Time-Compiler eben funktioniert, ist, weil er einen ganz krassen Informationsvorteil hat. Der Just-In-Time-Compiler, der kann halt einfach gucken, mit was für Typen von Argumenten die Funktion aufgerufen wird.

Carl Friedrich

Also der ist halt einfach quasi, der Compiler ist maximal faul und sagt, ich kompiliere erstmal gar nichts. Ich führe einfach alles ganz normal mit dem Interpreter aus. Und wenn sich dann herausstellen sollte, dass F jetzt in dem Programm eine wichtige Funktion ist, macht man so ein bisschen Profiling, dann schaue ich halt mal, was für Typen werden jetzt hier konkret verwendet.

Carl Friedrich

Und dann irgendwann sehe ich halt, na gut, das sind immer zwei Floats. Und dann kann ich halt auch guten Maschinencode erzeugen, weil wenn ich weiß, dass es Floats sind, dann kann ich halt das mal, also ich hatte A mal 2 plus B gesagt, dann kann ich halt das mal 2 durch eine Maschineninstruktion darstellen, die halt Doubles auf der CPU direkt multipliziert.

Carl Friedrich

Und das Plus kann ich eben auch dann durch eine Maschineninstruktion abbilden, die halt Doubles addiert. Und dieser Maschinencode, der funktioniert halt genau nur für den Spezialfall, dass A und B halt wirklich auch float sind. Und wenn dann irgendwann später im Verlauf des Programms halt diese Funktion jemand mit zwei Ins aufruft, dann ist das kein Problem, weil der Code wurde ja sowieso zur Laufzeit erzeugt. Und dann kann ich halt quasi auch neuen Code für diese sich ändernde Situation erzeugen.

Carl Friedrich

Und diese Flexibilität, die mir die Tatsache, dass ich den Maschinencode eben erst zur Laufzeit erzeuge, dadurch kriege ich halt sehr viel Flexibilität und kann halt die extra Informationen, die ich zur Laufzeit habe, auch benutzen, um quasi die ganze Dynamizität, die man in Python halt theoretisch verwenden kann, aber in der Praxis nicht unbedingt verwendet, die kann ich dann halt auch quasi wieder weg optimieren.

Carl Friedrich

Aber das kann ich eben nur, weil ich eben das zur Laufzeit mache und mir die Typen anschauen kann und halt auch reagieren kann, wenn sich dann die Umstände ändern. Das ist halt auch so ein bisschen die andere Eigenschaft des Dustin-Time-Copilers, der kann halt dann auch darauf reagieren, dass du nach einer halben Stunde Programmlaufzeit plötzlich den Debugger anmachen willst.

Carl Friedrich

Also, dann muss man nämlich anfangen, quasi wieder alles zurückzupacken und das nennt man wirklich Deoptimierung, dann muss man wirklich quasi wieder die Frame-Objekte erzeugen, die man halt braucht, um dann, dass der Debugger auch funktioniert, also der Debugger, der introspeziert ja diese Frame-Objekte, die es in Python gibt und die würde der JIT-Compiler natürlich gar nicht benutzen, weil die braucht er nicht.

Carl Friedrich

Aber wenn man die Bagger anschaltet,

Carl Friedrich

dann muss man die halt jederzeit wieder herzaubern können.

Carl Friedrich

Okay, das ist die Idee des Jits.

Carl Friedrich

Das ist quasi in gewisser Weise heutzutage relativ akzeptiert,

Carl Friedrich

weil jeder Browser das halt macht.

Carl Friedrich

Also Java macht das.

Carl Friedrich

Und insbesondere machen das halt die Browser für JavaScript.

Carl Friedrich

Und die Browser Wars haben halt dazu geführt,

Carl Friedrich

dass quasi alle großen Browser

Carl Friedrich

sehr, sehr, sehr, sehr, sehr viel Geld da reingesteckt haben.

Carl Friedrich

halt Just-in-Time-Compiler für JavaScript zu schreiben,

Carl Friedrich

die halt wirklich extrem aggressiv zur Laufzeit

Carl Friedrich

den JavaScript-Code optimieren

Carl Friedrich

und zur Laufzeit nach Machine-Code übersetzen können.

Carl Friedrich

Und deswegen ist JavaScript halt inzwischen,

Carl Friedrich

jetzt sage ich mal nicht ganz so schnell wie C,

Carl Friedrich

aber halt irgendwie vielleicht nur zwei oder dreimal langsamer als C.

Carl Friedrich

Und einfach weil da halt einfach viele Millionen Dollar

Carl Friedrich

in jeder von diesen Implementierungen reingesteckt wurde.

Carl Friedrich

so, deswegen inzwischen weiß halt jeder

Carl Friedrich

so ein bisschen, was ein JIT ist.

Carl Friedrich

Das war aber halt, als das Projekt

Carl Friedrich

anfing, nicht ganz so

Carl Friedrich

sehr so. Es gab halt damals,

Carl Friedrich

ich weiß nicht, sagt euch Psycho

Carl Friedrich

was? Ja, klar.

Carl Friedrich

Und das ist

Carl Friedrich

so ein bisschen, jetzt sind wir stark in der

Carl Friedrich

Ancient Python History drin.

Carl Friedrich

Also das war so ein Extension-Module

Carl Friedrich

für Python 2.2.

Carl Friedrich

Jetzt kommt raus,

Carl Friedrich

dass ich alt bin.

Carl Friedrich

Und das war

Carl Friedrich

quasi ein sehr, sehr schlauer

Carl Friedrich

promovierter Mathematiker, der hat

Carl Friedrich

dieses Extension-Modul geschrieben

Carl Friedrich

und das war quasi ein JIT für

Carl Friedrich

CPython.

Carl Friedrich

Wenn man das Extension-Modul

Carl Friedrich

geladen hat, dann hat halt

Carl Friedrich

Zyko angefangen, zur Laufzeit aus

Carl Friedrich

den Python-Funktionen halt irgendwie Maschinencode zu erzeugen.

Carl Friedrich

Und das hat halt auch gut

Carl Friedrich

funktioniert an vielen Stellen.

Carl Friedrich

Und das große Problem von Zyko war jetzt aber,

Carl Friedrich

dass jede neue Python-Version, die rauskam,

Carl Friedrich

hat das komplett kaputt gemacht.

Carl Friedrich

Also weil, sobald ein neues Sprachfeature dazukam,

Carl Friedrich

musste der Armin, Armin Rigo heißt das,

Carl Friedrich

musste dieses Extension-Modul halt wieder im Wesentlichen

Carl Friedrich

jetzt nicht von Null schreiben,

Carl Friedrich

aber halt quasi jede Zeile nochmal neu überdenken.

Carl Friedrich

Weil es halt quasi immer so Interaktionen

Carl Friedrich

zwischen den neuen Sprachfeaturen und den alten Sprachfeaturen gibt.

Carl Friedrich

Und die waren halt nicht zu übersehen.

Carl Friedrich

Also da, ich weiß nicht, was kam in 2.3

Carl Friedrich

dazu? Vielleicht Generatoren

Carl Friedrich

oder so?

Carl Friedrich

Gab es da nicht auch irgendwelche Scoping-Änderungen?

Jochen

Weiß es nicht, ja kann sein, ich weiß es

Jochen

nicht mehr genau, ja, aber...

Jochen

Ja, krass, ne, also krass.

Jochen

Auf jeden Fall, die haben

Jochen

halt dann immer nicht funktioniert in Psycho

Carl Friedrich

und Armin hat halt irgendwann dann auch aufgegeben.

Carl Friedrich

Also Psycho ist, glaube ich, seit 2.4

Carl Friedrich

oder 2.5 einfach auch tot.

Carl Friedrich

Und

Carl Friedrich

er hat halt aus

Carl Friedrich

dieser Frustration raus dann angefangen

Carl Friedrich

sich in PyPy, also

Carl Friedrich

war einer der Projektgründer von PyPy

Carl Friedrich

und hat halt

Carl Friedrich

aus dieser Frustration

Carl Friedrich

raus, dass man den JIT

Carl Friedrich

aus Psycho für jede Version von Hand

Carl Friedrich

dann anpassen muss,

Carl Friedrich

sich so eine, sag ich mal,

Carl Friedrich

relativ gewagte akademische Idee

Carl Friedrich

ausgesucht,

Carl Friedrich

die er gerne auf PyPy anwenden wollte.

Carl Friedrich

Und das ist eben die Idee, dass man den JIT

Carl Friedrich

über, also JIT heißt,

Carl Friedrich

das ist die Abkürzung Justin Timecubiler,

Carl Friedrich

dass man den überhaupt nicht von Hand schreibt.

Carl Friedrich

Und eben weil Python eine Sprache ist, die sich ständig ändert. Also einmal im Jahr oder vielleicht damals war es alle anderthalb Jahre, kommt eine neue Python-Version raus, da gibt es neue Sprachfeature und das Anpassen des JIT-Compilers an die neuen Sprachfeatures, das ist zu nervig.

Carl Friedrich

Insbesondere, wenn man halt nicht irgendwie

Carl Friedrich

Google-Geld hat. Wenn man Google-Geld hat,

Carl Friedrich

dann kann man halt einfach 20 Ingenieure

Carl Friedrich

auf das Problem reißen und

Carl Friedrich

die haben dann halt keinen Spaß, die schreiben ganz, ganz

Carl Friedrich

viel komplizierten C++-Code und sind halt

Carl Friedrich

jede Woche

Carl Friedrich

sehr traurig.

Carl Friedrich

Aber wenn man dieses Budget halt nicht hat,

Carl Friedrich

dann ist es einfach zu anstrengend,

Carl Friedrich

mit C-Python mitzuhalten, also mit der

Carl Friedrich

Sprachentwicklung mitzuhalten. Und deswegen hatte

Carl Friedrich

er eben die Idee, dass es

Carl Friedrich

doch irgendwie möglich sein sollte,

Carl Friedrich

den JIT-Compiler automatisch

Carl Friedrich

zu generieren.

Carl Friedrich

Und das ist

Carl Friedrich

so ein bisschen so eine alte,

Carl Friedrich

sehr akademische

Carl Friedrich

Idee, also

Carl Friedrich

da gibt es halt irgendwie

Carl Friedrich

in den, ich glaube in den Ende der 70er

Carl Friedrich

gab es so einen Aufsatz von Futamura,

Carl Friedrich

irgendwie, weiß nicht

Carl Friedrich

genau wie der Titel ist, Compiler, Compiler,

Carl Friedrich

da gab es eben schon mal die Idee,

Carl Friedrich

dass es theoretisch eben sein sollte, möglich sein

Carl Friedrich

sollte, einen Compiler für eine Sprache

Carl Friedrich

automatisch zu erzeugen, aus

Carl Friedrich

einem Interpreter für die Sprache.

Carl Friedrich

Und das war aber halt ein sehr akademischer Ansatz.

Jochen

Ich meine, ein Compiler-Compiler und so, das ist ja Jack und so.

Carl Friedrich

Ja, aber da ist der Input halt kein Interpreter.

Carl Friedrich

Nee, nee, das ist Grammatik, ja.

Carl Friedrich

Aber die Idee von der Mura-Projektion ist eben wirklich,

Carl Friedrich

man hat einen Interpreter für eine Sprache

Carl Friedrich

und erzeugt mit einem komplizierten Prozess

Carl Friedrich

aus dem Interpreter automatisch einen Compiler.

Carl Friedrich

Und das gab es quasi als akademische Idee,

Carl Friedrich

da gab es auch ein ganzes Forschungsfeld

Carl Friedrich

und ganz unglaublich viele Aufsätze zu.

Carl Friedrich

Aber das hat sich halt in der Praxis

Carl Friedrich

nicht so richtig umgesetzt. Und Armin

Carl Friedrich

hat halt die Idee gehabt, wir machen das jetzt

Carl Friedrich

wir machen das jetzt einmal

Carl Friedrich

richtig. Also wir machen das jetzt

Carl Friedrich

halt, also

Carl Friedrich

das war, der hat sich in gewisser Weise auch sehr viel

Carl Friedrich

getraut. Er hat gesagt, ich hab jetzt diese Vision,

Carl Friedrich

das müsste doch irgendwie gehen und wir

Carl Friedrich

wollen das jetzt für eine echte Sprache halt auch

Carl Friedrich

wirklich dann mal anwenden. Und

Carl Friedrich

in gewisser Weise ist das Problem natürlich auch noch

Carl Friedrich

erstmal schwieriger, weil er nicht nur einen Compiler

Carl Friedrich

wollte, er wollte halt einen JIT-Compiler.

Carl Friedrich

Und

Carl Friedrich

Und er hatte da so ein paar Ideen, wie man diese alte Idee der Futamora-Projektion, wie man die halt wirklich dann mal so ganz konkret, nicht für irgendeine akademische Minisprache, sondern für so eine richtige Programmiersprache wie Python halt dann auch anwenden kann.

Carl Friedrich

Und das haben wir dann halt in den verschiedenen PyPi-Research-Projekten auch dann gemacht. Das ging auch ganz schön lange nicht. Also es hat halt wirklich dann auch ein paar Jahre gedauert, bis es dann wirklich auch funktioniert hat.

Dominik

Also PyPy ist ein Compiler-Compiler.

Carl Friedrich

Also PyPy hat so ein paar Komponenten,

Carl Friedrich

aber eine der Komponenten ist wirklich quasi ein JIT-Compiler-Generator.

Carl Friedrich

Und du steckst quasi einen Interpreter in diesen JIT-Compiler-Generator raus

Carl Friedrich

und der Output davon ist ein JIT-Compiler für die Sprache,

Carl Friedrich

die von deinem Interpreter spezifiziert wird.

Carl Friedrich

Und das hat riesen Vorteile, weil nämlich,

Carl Friedrich

Wenn, also nehmen wir mal sowas Konkretes wie Pattern Matching.

Carl Friedrich

Pattern Matching kommt jetzt raus in 3.10.

Carl Friedrich

Dann implementieren wir das in unserem Interpreter.

Carl Friedrich

Also PyPy ist ein Interpreter für Python.

Carl Friedrich

Und wir müssen das Feature halt implementieren,

Carl Friedrich

weil unser Interpreter, der kann das erstmal nicht.

Carl Friedrich

Also ihr implementiert das aber in C?

Carl Friedrich

Nee.

Carl Friedrich

In R-Python.

Carl Friedrich

In R-Python, genau.

Carl Friedrich

Das ist alles in R-Python.

Carl Friedrich

Aber wir interpretieren das quasi in dem in R-Python geschriebenen Interpreter.

Carl Friedrich

Und dann drücken wir auf den Knopf und dann kommt der JIT-Compiler-Generator und der nimmt den Interpreter mit dem neuen Feature und dann haben wir plötzlich einen JIT-Compiler, der quasi Pattern-Matching versteht und richtig guten Maschinen-Code für Pattern-Matching erzeugt.

Carl Friedrich

Und der JIT-Compiler-Generator, der kennt Pattern-Matching halt gar nicht, sondern der lernt die Semantik von Pattern-Matching halt wirklich, indem er sich anschaut, was der Interpreter macht, um die Patterns auszuführen.

Carl Friedrich

Aber das heißt eben, wir müssen nicht, wenn so eine neue Version rauskommt, müssen wir nicht jedes Mal den JIT-Compiler anfassen, weil der JIT-Compiler, der kann halt überhaupt kein Python, sondern der kriegt halt die Semantik von Python ab, indem er sich diesen Interpreter für Python anschaut.

Carl Friedrich

Und wenn man in den Interpreter für Python neue Features einbaut, dann hat man immer automatisch auch noch, kann man eben für diese neuen Features dann auch den JIT generieren.

Jochen

Aber ein weiterer Vorteil, den man damit dann eventuell

Jochen

hätte, ist, man kann dann damit ja

Jochen

einen JIT-Compiler für jede Sprache

Jochen

erzeugen, für die man

Jochen

in R-Prize einen Interpreter schreiben kann.

Jochen

Das geht ja dann wahrscheinlich für viele Sprachen.

Carl Friedrich

Ja, zum Beispiel, wir hatten da schon ein Beispiel vorhin,

Carl Friedrich

für reguläre Ausdrücke.

Carl Friedrich

Also wir hatten ja vorhin gesagt, dass wir halt

Carl Friedrich

relativ gut darin sind, reguläre Ausdrücke auszuführen

Carl Friedrich

und das liegt halt einfach daran, dass

Carl Friedrich

in Python ist das auch schon so,

Carl Friedrich

reguläre Ausdrücke, die werden in so

Carl Friedrich

einen kleinen Bytecode erzeugt,

Carl Friedrich

übersetzt. Das ist ein anderer Bytecode

Carl Friedrich

als der Python-Bytecode. Und dafür

Carl Friedrich

gibt es dann einen Interpreter, der Teil von

Carl Friedrich

C-Python ist. Also C-Python hat halt

Carl Friedrich

den Interpreter für Python,

Carl Friedrich

aber eben auch noch einen anderen Interpreter für

Carl Friedrich

die regulären Ausdrücke Bytecodes.

Carl Friedrich

Und den haben wir halt auch in R-Python geschrieben.

Carl Friedrich

Und das heißt, wir können halt auch zur Laufzeit

Carl Friedrich

dann die regulären Ausdrücke nach Machine Code

Carl Friedrich

übersetzen. Weil

Carl Friedrich

wir halt quasi für diesen

Carl Friedrich

anderen Interpreter, der auch in R-Python

Carl Friedrich

geschrieben ist, auch ein JIT erzeugen.

Carl Friedrich

Und tatsächlich gibt es halt so einen ganzen Haufen an Research-Quality-Sprachimplementierung, die halt diese ganze Maschinerie auch benutzen, um alle möglichen Experimente zu machen. Also wir haben halt auch mal eine Ruby-Implementierung geschrieben und eine PHP-Implementierung geschrieben und eine Prolog geschrieben, das war meine Bachelorarbeit.

Carl Friedrich

Und die sind jetzt alle nicht so cool, ja, also da wurde halt einfach nicht der Aufwand reingesteckt, den man betreiben müsste, um da jetzt wirklich, sag ich mal, eine Production-Ruby-Implementierung dann rauszukriegen, ja, aber also das war halt eher so dann der Versuch zu gucken, ob das mit Ruby auch geht oder mit Prolog auch geht.

Carl Friedrich

Ich habe zum Beispiel auch mal, also auch nur Research Quality, ich habe zum Beispiel auch mal eine Datenbank darin implementiert. Also ich habe halt eine SQLite-kompatible, also SQLite kompiliert halt den SQL-Code auch in so ein Bytecode. Dafür habe ich halt auch einen Interpreter in Erpreisen geschrieben. Und damit kann man halt dann auch ganz interessante Performance-Gewinne sich dann irgendwie abholen.

Jochen

Ja, die Datenbank muss das ja auch

Jochen

interpretieren, was da an Queries so kommt.

Jochen

Und das ist ja auch, ich meine,

Carl Friedrich

das weiß man ja auch immer so ein bisschen, dass

Carl Friedrich

das SQLite mit den

Carl Friedrich

Typen der

Carl Friedrich

Spalten auch nicht so ernst nimmt.

Jochen

Ja, da kann man ja, oder

Jochen

String beides. Das heißt, es ist auch noch eine dynamische

Carl Friedrich

Sprache, eine dynamisch zivilisierte Programmiersprache.

Carl Friedrich

Also da gibt es halt dann schon ganz schön viele Ähnlichkeiten

Carl Friedrich

zur Ausführung

Carl Friedrich

von Python, in gewisser Weise.

Carl Friedrich

Naja, auf jeden Fall

Carl Friedrich

diese Idee, dass wir halt quasi ein

Carl Friedrich

JIT-Generator haben

Carl Friedrich

und diese

Carl Friedrich

Architektur sorgt dafür, dass wir halt

Carl Friedrich

mit einem relativ kleinen

Carl Friedrich

Team halt

Carl Friedrich

mit CPython trotzdem ganz gut mithalten

Carl Friedrich

können, weil wir die Features halt

Carl Friedrich

eben nicht in den JIT-Compiler

Carl Friedrich

reinschreiben, reinprogrammieren

Carl Friedrich

müssen, sondern halt quasi

Carl Friedrich

nur in einen Interpreter

Carl Friedrich

und der JIT-Compiler, der kriegt

Carl Friedrich

die Features dann automatisch.

Carl Friedrich

Das war jetzt, so ein paar Verallgemeinerungen

Carl Friedrich

waren jetzt, also so ein paar Ungenauigkeiten

Carl Friedrich

waren in meiner Story jetzt noch drin.

Carl Friedrich

Es gibt dann noch so extra

Carl Friedrich

Annotationen, die nennen wir ja irgendwie

Carl Friedrich

Hints. Man kann halt quasi dem

Carl Friedrich

JIT-Compiler dann noch so ein paar Tipps geben.

Jochen

Ja, weil wahrscheinlich manchmal wird das halt dann

Jochen

überraschend nicht gut funktionieren.

Jochen

Ganz genau. Und man

Carl Friedrich

kriegt halt dann einen Maschinencode und der ist

Carl Friedrich

vielleicht noch nicht so gut, wie man den gerne hätte.

Carl Friedrich

Und dann fügt man halt noch so ein paar Annotationen ein und kann

Carl Friedrich

dann dem JIT-Compiler-Generator

Carl Friedrich

helfen, doch noch

Carl Friedrich

einen besseren JIT zu generieren.

Carl Friedrich

Und das muss man dann

Carl Friedrich

an verschiedenen Stellen auch immer mal machen. Also zum Beispiel

Carl Friedrich

ich würde jetzt meine Hand nicht ins Feuer legen,

Carl Friedrich

dass Pattern Matching halt jetzt

Carl Friedrich

schon ultra schnell ist. Also wir haben halt

Carl Friedrich

ein JIT für Pattern Matching, aber ich weiß noch

Carl Friedrich

nicht, ich habe es noch nicht gemessen, ob es wirklich ein ganz

Carl Friedrich

toller JIT ist. Ja, das ist eh ziemlich

Carl Friedrich

langsam, ne?

Carl Friedrich

In Zebraten ist es nicht so toll, oder?

Carl Friedrich

Ich weiß nicht, was... Ich glaube, also habe ich gehört, dass es nicht so

Carl Friedrich

schnell ist. Ich weiß es nicht, ja.

Carl Friedrich

Also ob das jetzt bei uns...

Carl Friedrich

Wir würden halt dann wirklich aus

Carl Friedrich

dem Pattern Matching Maschinencode erzeugen

Carl Friedrich

und ich weiß halt noch nicht so richtig, ob das

Carl Friedrich

richtig guter Maschinencode ist oder ob das halt einfach nur

Carl Friedrich

irgendwie so ein bisschen leicht schrottiger

Carl Friedrich

Maschinencode ist. Und wenn man das

Carl Friedrich

verbessern will, dann würde man halt

Carl Friedrich

hergehen und sagen, na gut, was für extra

Carl Friedrich

Hilfen können wir dem Jit noch geben?

Carl Friedrich

Das habe ich jetzt halt noch nicht gemacht, weil

Carl Friedrich

ich meine, das ist

Carl Friedrich

halt immer so ein bisschen, das kommt halt als

Dominik

letztes. Du musst ja quasi aber immer den

Dominik

Generator anlehnen, du kannst halt quasi nie richtig in der Hand

Dominik

was wirklich da liegt an C-Code, der hinterher

Dominik

ausgeführt wird.

Dominik

Also indirekt.

Dominik

Moment, warum C-Code?

Dominik

Ja, weil du doch dem Generator

Dominik

sagst, was er tun soll, der den C-Code

Dominik

generiert, der dann hinterher ausgeführt wird.

Carl Friedrich

Ja, der C-Code ist dir eigentlich so ein bisschen egal.

Carl Friedrich

Also wichtig ist halt, du generierst einmal

Carl Friedrich

C-Code, aber du generierst halt auch

Carl Friedrich

noch einen

Carl Friedrich

JIT. Und der JIT,

Carl Friedrich

der übersetzt den Python-Code nicht

Carl Friedrich

nach C-Code, sondern wirklich direkt nach Machine-Code.

Carl Friedrich

Also wir erzeugen dann

Carl Friedrich

wirklich, wir nehmen den Python-Code, führen den aus

Carl Friedrich

und nach einer Weile sagen wir halt, oh, okay,

Carl Friedrich

diese Schleife hier, die scheint irgendwie wichtig

Carl Friedrich

zu sein. Und dann nehmen wir wirklich diese Schleife

Carl Friedrich

und erzeugen daraus halt

Carl Friedrich

wirklich direkt ins RAM

Carl Friedrich

Maschinen-Code-Instruktionen. Und das geht

Carl Friedrich

halt nicht mehr den Umweg über C.

Carl Friedrich

Den Umweg über C brauchen wir nur, um einmal

Carl Friedrich

das Binary zu erzeugen. Das machen

Carl Friedrich

halt wir einmal auf unserem Server.

Carl Friedrich

Und das passiert aber dann quasi

Carl Friedrich

nach dem Deployment auf

Carl Friedrich

die Produktivumgebung nicht mehr.

Carl Friedrich

Sondern da wird halt wirklich direkt

Carl Friedrich

ins RAM werden halt

Carl Friedrich

die Maschinen-Instruktionen für

Carl Friedrich

die aktuelle CPU-Architektur

Carl Friedrich

emittet

Carl Friedrich

und dann führen wir das halt direkt raus.

Carl Friedrich

Also sprich, wenn du das halt

Carl Friedrich

auf irgendwie so einem

Carl Friedrich

x86-Server laufen lässt,

Carl Friedrich

dann schnappen wir uns halt einfach

Carl Friedrich

vom Betriebssystem so einen großen Buffer

Carl Friedrich

an RAM

Carl Friedrich

und da

Carl Friedrich

kommen halt dann irgendwelche Instruktionen rein

Carl Friedrich

und dann wird der Buffer

Carl Friedrich

als ausführbar markiert und dann

Carl Friedrich

springen wir einfach hin.

Carl Friedrich

Und dann von da an läuft halt wirklich der Machine Code und der, also wenn man Glück hat, ist der halt einfach dann auch sehr, sehr schnell, weil der das ganze teure Zeug, was in Python halt normalerweise die ganze Zeit passieren muss, halt nicht mehr macht.

Carl Friedrich

Und den ganzen Overhead von den ganzen Sachen.

Carl Friedrich

Ja, also man hat halt dann die Frame-Objekte nicht mehr, man hat die ganzen Typ-Überprüfungen nicht mehr, idealerweise. Also Python alloziert ja auch die ganze Zeit Speicher. Also jeder Integer ist ja so ein bisschen Heap-Memory. Also jede Addition macht halt einen Merlock-Aufruf. Und das ist ja eigentlich absurd teuer.

Carl Friedrich

also ein malloc-Aufruf und

Carl Friedrich

es wird eben

Carl Friedrich

der Reference-Count auch noch immer manipuliert

Carl Friedrich

also

Dominik

vielleicht auch nochmal ganz kurz für die Leute, die ja nicht ganz so tief sind

Dominik

ein malloc-Aufruf, also eine Memory-Location ist

Dominik

ein C, eine Funktion, die auf dem

Dominik

Heap was macht, vielleicht nochmal ganz kurz

Dominik

ganz tief rein erklären wir was Heap steckt

Dominik

vielleicht kann man

Carl Friedrich

das einfach nochmal so ein bisschen den Kontrast herstellen

Carl Friedrich

wir schreiben jetzt wirklich ein Programm in C

Carl Friedrich

und wenn du da halt irgendwie

Carl Friedrich

eine Integer-Variable, also

Carl Friedrich

Long A und Long B hast

Carl Friedrich

und dann machst du A plus B,

Carl Friedrich

dann sind A und B halt nicht

Carl Friedrich

auf dem Heap, sondern

Carl Friedrich

irgendwie direkt in CPU-Registern

Carl Friedrich

und die werden dann

Carl Friedrich

direkt von CPU-Instruktionen

Carl Friedrich

addiert und mit dem Ergebnis

Carl Friedrich

wird halt irgendwas gemacht.

Carl Friedrich

Wenn du den gleichen, wenn du irgendwie

Carl Friedrich

so ein Ausdruck wie A und B in Python

Carl Friedrich

hinschreibst und das in C-Python

Carl Friedrich

ausführst, dann ist das halt nicht,

Carl Friedrich

also die Integer-Werte, die sind dann

Carl Friedrich

nicht in CPU-Registern, sondern die sind

Carl Friedrich

quasi im RAM.

Carl Friedrich

Und um dann wirklich das Ergebnis berechnen zu können,

Carl Friedrich

musst du die Werte erstmal aus

Carl Friedrich

dem RAM, also erstmal musst du gucken,

Carl Friedrich

sind das überhaupt Integers,

Carl Friedrich

die ich da addiere. Und dann musst

Carl Friedrich

du gucken,

Carl Friedrich

dann musst du quasi die Werte

Carl Friedrich

der Integer aus dem Integer-Objekt

Carl Friedrich

vom RAM ins CPU-Register laden.

Carl Friedrich

Dann machst du wirklich die

Carl Friedrich

Addition. Dann musst du gucken,

Carl Friedrich

ob das Ergebnis immer noch

Carl Friedrich

klein genug ist, um in einen

Carl Friedrich

Maschinenwert reinzupassen. Das könnte ja auch

Carl Friedrich

irgendwie ein Overflow geben und dann brauchst du irgendwie

Carl Friedrich

ein komplizierteres Objekt.

Carl Friedrich

Und dann brauchst du Speicher

Carl Friedrich

für das Ergebnisobjekt, weil das Ergebnis ist

Carl Friedrich

ja auch wieder ein Integerobjekt. Das heißt, du rufst einmal

Carl Friedrich

Malog auf. Dann kriegst du ein neues

Carl Friedrich

Stück RAM zugewiesen

Carl Friedrich

von dem in C geschriebenen

Carl Friedrich

Allokator. Und

Carl Friedrich

dann packst du den Ergebnis

Carl Friedrich

Zahlenwert in dieses neue Stück

Carl Friedrich

RAM rein, erhöhst den

Carl Friedrich

Reference Count von diesem Stück RAM

Carl Friedrich

und das ist dann dein

Carl Friedrich

Ergebnisobjekt. Und das passiert

Carl Friedrich

aber halt bei jeder arithmetischen Operation

Carl Friedrich

und deswegen ist halt Arithmetik

Carl Friedrich

und wir haben auch noch so ein paar Schritte

Carl Friedrich

weggelassen, also deswegen ist Arithmetik

Carl Friedrich

halt in Python klassischerweise

Carl Friedrich

wirklich sehr, sehr ineffizient.

Carl Friedrich

Weil du halt wirklich

Carl Friedrich

ständig malloc aufrufst

Carl Friedrich

und auch ständig wieder free aufrufst. Zum Beispiel, wenn du

Carl Friedrich

jetzt so einen komplizierteren Ausdruck hast, wenn du

Carl Friedrich

halt sowas wie a mal 2 plus b

Carl Friedrich

das war ja unser Standard

Carl Friedrich

unser Standard

Carl Friedrich

arithmetischer Ausdruck schon die ganze Zeit,

Carl Friedrich

dann hast du halt das Zwischenergebnis

Carl Friedrich

A mal 2.

Carl Friedrich

Das brauchst du ja gar nicht lang.

Carl Friedrich

Das brauchst du ja quasi nur

Carl Friedrich

Das verfällt ja beim nächsten Aufruf.

Carl Friedrich

Das heißt, beim nächsten Aufruf, wenn du

Carl Friedrich

dann das Plus rechnest,

Carl Friedrich

dann verringerst du den

Carl Friedrich

Reference Count von dem Zwischenergebnis

Carl Friedrich

und dann sagst du, oh, das ist

Carl Friedrich

ja jetzt 0. Das brauche ich ja gar nicht mehr.

Carl Friedrich

Und dann rufst du Free auf.

Carl Friedrich

Das ist wieder quasi so ein teurer

Carl Friedrich

Aufruf zu dem

Carl Friedrich

Memory-Subsystem.

Dominik

Wie genau schreibt der Null den Speicher oder löscht der einfach

Dominik

die Speicheradresse aus, dem wir

Dominik

benutzen das? Genau, und dann kannst du

Carl Friedrich

quasi den Speicher wiederverwenden, das nächste Mal,

Dominik

wenn jemand mehr drauf hat. Aber der schreibt dann nicht vorher irgendwie

Dominik

was rein? Doch,

Dominik

der muss das dann schon halt,

Carl Friedrich

der muss sich schon irgendwie merken, dass der Speicher jetzt verwendet

Carl Friedrich

werden kann. Also es gibt halt so ein bisschen,

Carl Friedrich

es gibt quasi so ein bisschen

Carl Friedrich

Overhead-Datenstrukturen, die

Carl Friedrich

verwendet werden, um

Carl Friedrich

ja, um sich zu merken, dass

Carl Friedrich

dass das jetzt ein Stück freier Speicher ist.

Dominik

Am Anfang von einem Speicherblock schreibt der irgendwie

Dominik

so ein... Das ist

Carl Friedrich

glaube ich gar nicht so wichtig. Das funktioniert

Carl Friedrich

auch sehr unterschiedlich, je nach Betriebsstil und

Carl Friedrich

je nach

Carl Friedrich

verwendetem

Carl Friedrich

Allokator. Also da gibt es halt auch

Carl Friedrich

verschiedene C-Bibliotheken, die man da verwenden kann.

Carl Friedrich

C-Python

Carl Friedrich

hat da auch so ein bisschen seine eigenen Algorithmen,

Carl Friedrich

die

Carl Friedrich

für den typischen Use Case, der

Carl Friedrich

halt in Python besonders oft auftritt,

Carl Friedrich

dann optimiert ist.

Carl Friedrich

Also da ist quasi dann ganz, ganz viel

Carl Friedrich

Engineering und

Carl Friedrich

das ist kompliziert und wir müssen

Carl Friedrich

das hoffentlich nicht verstehen.

Carl Friedrich

Also das ist quasi,

Carl Friedrich

da kenne ich mich dann irgendwann

Carl Friedrich

ziemlich schnell halt auch nicht aus.

Jochen

Ja, aber letztlich,

Jochen

das Problem ist halt, dass es halt,

Jochen

Speicheralluzien

Jochen

ist halt eine relativ komplexe,

Jochen

weil man halt auch das Betriebssystem, den Kernel,

Jochen

fragen muss letztlich.

Jochen

Nicht jedes Mal, aber irgendwann schon.

Jochen

Letztlich. Und dann, das ist natürlich alles sauteuer.

Jochen

Ja. Und dieser ganze

Carl Friedrich

Overhead fällt halt weg, wenn du A plus B

Carl Friedrich

mal C mit ins ausführst

Carl Friedrich

und der JIT ging da drüber,

Carl Friedrich

dann hast du halt wirklich auch,

Carl Friedrich

dann allozierst du dieses Zwischenergebnis auch nicht.

Carl Friedrich

Sondern dann sagst du halt einfach

Carl Friedrich

na gut, A

Carl Friedrich

kommt in den Maschinenregister,

Carl Friedrich

das mal zwei, zwei ist halt irgendwie

Carl Friedrich

so ein Intermediate in deiner

Carl Friedrich

Maschineninstruction

Carl Friedrich

und dann hast du noch eine zweite Maschineninstruction,

Carl Friedrich

um die Addition zu machen

Carl Friedrich

und das Ergebnis ist auch in dem Register, je nachdem

Carl Friedrich

was mit dem Ergebnis passiert,

Carl Friedrich

kann es da auch bleiben.

Carl Friedrich

Wenn du dann

Carl Friedrich

einen Return hast, dann kann das quasi

Carl Friedrich

im

Carl Friedrich

Return-Register der CPU halt auch dann

Carl Friedrich

einfach weiterverwendet werden

Carl Friedrich

vom Aufrufer, so ein bisschen,

Carl Friedrich

wenn alles genau richtig ist,

Carl Friedrich

wenn alles genau richtig läuft. Und dann

Carl Friedrich

fällt halt einfach ganz, ganz, ganz viel overhead,

Carl Friedrich

die normale

Carl Friedrich

Python-Implementierung halt immer machen

Carl Friedrich

muss, fällt halt weg.

Carl Friedrich

Ja.

Carl Friedrich

Und ich meine, so ein bisschen die

Carl Friedrich

Einsicht, also warum man halt Python

Carl Friedrich

überhaupt optimieren kann, ist,

Carl Friedrich

es ist theoretisch

Carl Friedrich

alles sehr dynamisch, aber in der

Carl Friedrich

Praxis nicht. Also die

Carl Friedrich

dynamischen Möglichkeiten, die werden

Carl Friedrich

halt... Sehr, sehr eng genutzt, tatsächlich.

Carl Friedrich

Ja, jetzt nicht selten,

Carl Friedrich

aber halt nicht immer.

Carl Friedrich

Also ich glaube halt,

Carl Friedrich

jedes Programm ist schon an irgendeiner Stelle dynamisch,

Carl Friedrich

aber nicht die ganze Zeit.

Carl Friedrich

Es ist zum Beispiel relativ oft

Carl Friedrich

so, dass man beim Importen halt ganz

Carl Friedrich

viel Zeug macht, aber danach nicht mehr.

Carl Friedrich

Das ist so ein

Carl Friedrich

Muster an Dynamischkeit.

Carl Friedrich

Also du importierst halt

Carl Friedrich

eine Bibliothek, beim Importieren machst du die ganz

Carl Friedrich

merkwürdige Sachen und machst halt so ein bisschen

Carl Friedrich

Metaprogrammierung und schreibst irgendwelche Sachen

Carl Friedrich

in das Globals-Dictionary

Carl Friedrich

mit einem Globals-Aufruf

Carl Friedrich

oder sowas, schreibst es da rein, aber dann

Carl Friedrich

ist fertig. Und danach ist alles

Carl Friedrich

quasi

Carl Friedrich

harmloser Python-Code,

Carl Friedrich

wo die Typen relativ fix sind.

Carl Friedrich

Also das ist so ein

Carl Friedrich

Eine Sache, die wir immer wieder sehen, da gibt es auch

Carl Friedrich

Aussätze zu, die das studieren.

Carl Friedrich

Das findet sich halt

Carl Friedrich

recht häufig wieder, dass man komische, dynamische Sachen

Carl Friedrich

am Anfang des Programms macht,

Carl Friedrich

aber dann irgendwann nicht mehr.

Carl Friedrich

Also so ein ORM ist

Carl Friedrich

halt auch so ein Beispiel. Man generiert

Carl Friedrich

halt dann so ein bisschen Klassen,

Carl Friedrich

aber das macht man halt nicht die ganze Zeit,

Carl Friedrich

sondern halt...

Carl Friedrich

Ja, oder halt so ein Debugger

Carl Friedrich

ist halt auch ein... Also ein Debugger braucht

Carl Friedrich

quasi ganz, ganz viele dynamische Features.

Carl Friedrich

Aber der ist halt meistens nicht an.

Carl Friedrich

Und du musst

Carl Friedrich

quasi die Möglichkeit haben, dass du den

Carl Friedrich

zu einem beliebigen Zeitpunkt

Carl Friedrich

anschalten kannst. Aber

Carl Friedrich

du solltest nicht die ganze Zeit den Preis dafür

Carl Friedrich

bezahlen müssen. Aber du willst dich halt

Carl Friedrich

auch nicht vorher entscheiden müssen.

Carl Friedrich

Ja, also du willst halt quasi

Carl Friedrich

trotzdem immer die Möglichkeit haben zu sagen,

Carl Friedrich

jetzt brauche ich den aber.

Jochen

Wenn es zu unterschiedlich ist, dann

Jochen

kann man nicht mehr debuggen.

Jochen

Du möchtest es ja dann machen können,

Jochen

wenn es eigentlich normal läuft.

Carl Friedrich

Und selbst wenn es jetzt halt nicht um den Debugger geht,

Carl Friedrich

also selbst halt sowas wie schöne

Carl Friedrich

Tracebacks, die dir halt auch noch die Locals rausschreiben

Carl Friedrich

oder so. Wenn halt

Carl Friedrich

dein Web-Server dann wirklich crasht, dann

Carl Friedrich

willst du diese Information halt haben.

Carl Friedrich

Und dann zu sagen, ja,

Carl Friedrich

ups, jetzt haben wir das aber so doll

Carl Friedrich

optimiert, dass wir, wir wissen halt gar

Carl Friedrich

nicht mehr, was die Locals sind.

Carl Friedrich

Also das kann dir halt passieren in so einem Compiler.

Carl Friedrich

Also in C gibt es

Carl Friedrich

das ja immer mal. Da musst du ja wirklich sagen, will ich

Carl Friedrich

jetzt Debugge-Informationen haben oder nicht.

Carl Friedrich

Und wenn du die nicht hast, dann kriegst du,

Carl Friedrich

dann sagt dir halt keiner mehr,

Carl Friedrich

was jetzt gerade in deiner Variable drinsteht.

Carl Friedrich

Und

Carl Friedrich

das, also

Carl Friedrich

meiner Ansicht nach gehört das halt zur

Carl Friedrich

Philosophie von Python auch dazu, dass man

Carl Friedrich

halt zu jedem Zeitpunkt

Carl Friedrich

das auch dann machen kann, wenn man

Carl Friedrich

halt in einer Situation landet, wo man

Carl Friedrich

die Informationen braucht.

Carl Friedrich

Ja.

Carl Friedrich

Genau.

Carl Friedrich

So, jetzt haben wir glaube ich so ein bisschen alle Ideen. Also historisch gesehen, Python in Python, also historisch gab es diese Verständigkeitsidee, die verschwindet ein bisschen. Also es gibt jetzt schon ganz viele Stellen, wo wir Sachen halt quasi komplizierter machen, um Performance zu kriegen.

Carl Friedrich

Also es ist jetzt nicht mehr nur so ein architektonisch reines Ding, womit man halt irgendwie die Sprache ganz toll verstehen kann, sondern halt wirklich viel pragmatischer und wir wollen halt auch wirklich schnell einen Code machen.

Carl Friedrich

Aber stattdessen kam halt diese andere Idee dazu.

Carl Friedrich

Wir wollen einen Just-in-Time-Copiler für die Sprache haben.

Carl Friedrich

Und weil sich die Sprache eben einmal im Jahr ändert,

Carl Friedrich

können wir den nicht von Hand schreiben,

Carl Friedrich

weil wir halt nicht Google-Geld haben,

Carl Friedrich

sondern irgendwie ein Open-Source-Projekt sind.

Carl Friedrich

Und stattdessen wurde halt dann dieser Forschungsansatz gewählt.

Carl Friedrich

Wir erzeugen den Just-in-Time-Copiler.

Carl Friedrich

Und das hat geklappt.

Carl Friedrich

Also das hätte auch schiefgehen können,

Carl Friedrich

aber die Kernidee funktioniert ganz gut.

Carl Friedrich

Und jetzt sind wir quasi so ein bisschen auf dem Plateau der Produktivität,

Carl Friedrich

dass die ganze Kerntechnologie, den DIT-Compiler zu erzeugen,

Carl Friedrich

die ist halt relativ stabil.

Carl Friedrich

Es gibt jetzt schon irgendwie da noch so ein paar Features,

Carl Friedrich

die wir gerne irgendwie mal machen würden,

Carl Friedrich

wenn wir mal ganz motiviert sind oder ganz viel Zeit haben.

Carl Friedrich

Aber so die ganzen Kernideen sind halt einfach jetzt inzwischen auch drin

Carl Friedrich

und stabil und halt über viele Jahre

Carl Friedrich

halt auch wirklich

Carl Friedrich

so ganz gut

Carl Friedrich

stabilisiert.

Carl Friedrich

Und jetzt sind wir halt an dem Punkt,

Carl Friedrich

dass wir,

Carl Friedrich

dass die Hauptarbeit, die wir

Carl Friedrich

wirklich machen, ist halt zu versuchen,

Carl Friedrich

von C-Python nicht komplett abgehängt zu werden.

Carl Friedrich

Ist A-Python,

Carl Friedrich

hat das Type Annotations zum Beispiel auch?

Carl Friedrich

Ja, jetzt kommen wir so,

Carl Friedrich

jetzt kommen wir zu ein paar der dunklen Geheimnisse.

Carl Friedrich

Also,

Carl Friedrich

PyPy ist so alt, dass es gegründet wurde, als Python 2.2, glaube ich, gerade aktuell war oder 2.3.

Carl Friedrich

Das heißt, R-Python ist leider tatsächlich noch komplett Python 2 basiert.

Carl Friedrich

Und wir haben halt leider auch sehr, sehr wenig Motivation, das zu ändern, weil wir haben halt leider sowas wie, sage ich mal, eine halbe Million Zeilen Code in diesem blöden Python 2 Dialekt.

Carl Friedrich

Und wir könnten uns jetzt hinsetzen und

Carl Friedrich

einfach so, um jetzt mal eine Schätzung

Carl Friedrich

abzugeben, zwei

Carl Friedrich

Person-Years reinstecken, das nach

Carl Friedrich

Python 3 zu portieren.

Carl Friedrich

Aber das wäre halt wirklich, ich denke,

Carl Friedrich

wirklich zwei Jahre Arbeit. Und danach

Carl Friedrich

hätten wir einfach kein einziges neues Feature.

Carl Friedrich

Das heißt, da hat

Carl Friedrich

halt einfach niemand so wirklich Lust drauf.

Carl Friedrich

Und das ist natürlich,

Carl Friedrich

wir sind da natürlich so ein bisschen in so einer,

Carl Friedrich

also Falle wäre jetzt viel gesagt, aber

Carl Friedrich

ein bisschen

Carl Friedrich

in so einer blöden Situation.

Carl Friedrich

Weil das ist halt nix,

Carl Friedrich

wofür momentan

Carl Friedrich

sind das halt wirklich eher so Open-Source

Carl Friedrich

Modell. Da ist jetzt keiner,

Carl Friedrich

der dafür wirklich

Carl Friedrich

jetzt bezahlt wird, sag ich mal.

Carl Friedrich

Und jetzt so eine Portierungs

Carl Friedrich

Aktion zu starten,

Carl Friedrich

ist halt

Carl Friedrich

einfach nur so,

Carl Friedrich

also mir würde das halt nicht so viel Spaß machen.

Carl Friedrich

Ja, klar.

Carl Friedrich

Aber das ist natürlich trotzdem in gewisser Weise auch kein Zustand.

Carl Friedrich

Also weil irgendwie,

Carl Friedrich

also

Carl Friedrich

man will halt auch

Carl Friedrich

letztlich dann irgendwie auch nicht komplett abgehängt

Carl Friedrich

werden. Also ich meine,

Jochen

das wird dann wahrscheinlich irgendwann auch ein Problem,

Jochen

da neue Leute

Jochen

ranzuführen, weil man denen dann ja irgendwie

Jochen

ein 2 beibringen muss.

Jochen

Das hattest du jetzt schon vergessen.

Jochen

Aber das Print hat keine Klappern.

Jochen

So genau.

Jochen

Ich meine, das andere, so ein bisschen

Jochen

doofe Problem ist halt, dass

Carl Friedrich

so ein Interpreter,

Carl Friedrich

der benutzt halt an keiner Stelle Unicode.

Carl Friedrich

das heißt so halt eines der Hauptargumente

Carl Friedrich

warum, wo Python 3 halt ein paar Sachen

Carl Friedrich

so richtig schön gemacht hat, die fallen

Carl Friedrich

weg, weil wir halt einfach immer nur Byte-Strings

Carl Friedrich

benutzen und

Carl Friedrich

deswegen

Carl Friedrich

das wäre halt, das ist halt quasi auch nochmal

Carl Friedrich

so ein Grund, warum

Carl Friedrich

Python 3 jetzt halt

Carl Friedrich

auch letztlich jetzt

Carl Friedrich

nicht so wirklich so eine Verbesserung ist, sondern halt

Carl Friedrich

wir würden das wirklich machen

Carl Friedrich

um halt nicht abgehängt zu werden, aber nicht weil wir

Carl Friedrich

weil wir jetzt

Carl Friedrich

wirklich von den Python 3 Features

Carl Friedrich

so mega motiviert werden.

Carl Friedrich

Und das ist halt so ein bisschen doof.

Carl Friedrich

Würde denn irgendwie diese

Dominik

keine Ahnung, TypePins oder andere Features

Dominik

von Python 3

Dominik

jetzt für die

Dominik

Annotation von dem Compiler irgendwas bringen?

Dominik

Nicht so richtig.

Carl Friedrich

Also man könnte ja sich, klar, man kann dann so ein paar

Carl Friedrich

der APIs vielleicht ein bisschen schöner machen.

Carl Friedrich

Aber wir haben jetzt halt Dekoratoren und die sind jetzt

Carl Friedrich

auch nicht so schrecklich. Ich meine,

Carl Friedrich

ob du jetzt halt

Carl Friedrich

das dann mit Doppelpunkt

Carl Friedrich

direkt hinter die Argumente schreiben kannst

Carl Friedrich

oder in der Zeile drüber mit dem Dekorator,

Carl Friedrich

den wir uns selber ausgedacht haben.

Carl Friedrich

Ja, das wäre schon ein bisschen

Carl Friedrich

netter, aber das wäre jetzt nicht

Carl Friedrich

also das wäre jetzt halt für mich

Carl Friedrich

nicht so eine ganz ausreichende Motivation,

Carl Friedrich

um halt irgendwie so ein riesen

Carl Friedrich

Refactoring-Projekt zu starten.

Carl Friedrich

Ich denke halt so ein

Carl Friedrich

also

Carl Friedrich

das wird halt stattfinden,

Carl Friedrich

wenn wir irgendjemand

Carl Friedrich

finden, der da mega Bock drauf hat oder

Carl Friedrich

wenn wir halt Geld finden.

Carl Friedrich

Und ich glaube, wenn beides nicht stattfindet,

Carl Friedrich

dann

Carl Friedrich

vielleicht bin ich

Carl Friedrich

da zu pessimistisch, aber dann sehe ich das

Carl Friedrich

im Moment halt nicht.

Carl Friedrich

Ja gut, klar.

Carl Friedrich

Also ich persönlich,

Carl Friedrich

ich kann nur über mich sprechen, ich persönlich

Carl Friedrich

hätte da halt keinen Spaß dran.

Carl Friedrich

Ja, aber ich meine,

Jochen

ist es dann, wenn man tatsächlich keinen Unicode hat,

Jochen

sondern nur ByteStrings?

Jochen

Ich meine, es gibt ja da so automatische

Jochen

Geschichten. Könnte man das nicht eventuell auch automatisch

Jochen

irgendwie?

Jochen

Und man da halt einfach

Carl Friedrich

einmal so zwei, two to three

Carl Friedrich

draufschmeißt.

Carl Friedrich

Irgendwann müssen wir

Carl Friedrich

das mal gucken und wir haben noch nicht so ganz

Carl Friedrich

wir haben noch nicht so ganz den

Carl Friedrich

pragmatischen Weg gefunden,

Carl Friedrich

den man halt gehen kann.

Carl Friedrich

Weil es ist halt auch so die Frage, macht man dann einmal

Carl Friedrich

einen Cut und sagt, Leute,

Carl Friedrich

halt, niemand macht mir

Carl Friedrich

neue Features für sechs Monate.

Carl Friedrich

Das ist halt auch doof.

Carl Friedrich

Also,

Carl Friedrich

ja, aber wir sind ja auch nicht

Carl Friedrich

die einzigen. Also es gibt ja auch wirklich

Carl Friedrich

leider noch ganz viele Firmen, die

Carl Friedrich

große Mengen

Carl Friedrich

an Python 2 gut haben.

Carl Friedrich

Aber ja, es ist halt,

Carl Friedrich

also man will das jetzt halt keine 10 Jahre so

Carl Friedrich

weitermachen.

Carl Friedrich

Aber so den idealen Weg,

Carl Friedrich

wie wir da jetzt wieder rauskommen aus der Geschichte,

Carl Friedrich

den wissen wir halt

Carl Friedrich

im Moment halt auch nicht. Außer wir finden jetzt jemanden, der

Carl Friedrich

sagt, hier habt

Carl Friedrich

ihr eine Million Dollar und

Carl Friedrich

macht doch bitte mal. Dann

Carl Friedrich

ist sowas halt auch wieder. Also ihr könnt hier schreien.

Jochen

Ja, also das ist,

Jochen

bei Django-Projekten gibt es sowas ähnliches

Jochen

mit dem Admin,

Jochen

mit dem Django-Admin,

Jochen

das ist halt auch so ein Ding,

Jochen

das ist über Django-Projekte auch halt 15 Jahre,

Jochen

das ist halt über die Zeit gewachsen.

Jochen

Teilweise ist da halt auch Geld reingesteckt worden,

Jochen

das zu entwickeln und inzwischen ist es halt auch so,

Jochen

die Schätzung ist ähnlich,

Jochen

etwa Leute, die sich damit auskennen,

Jochen

sagen halt so, ja, das jetzt mal so richtig neu zu schreiben

Jochen

und natürlich, wir wissen inzwischen, was wir alles gerne

Jochen

lieber machen würden, würde wahrscheinlich so eine Million

Jochen

kosten und tja, die haben wir halt nicht.

Carl Friedrich

Naja, so ist es halt ein bisschen auch.

Carl Friedrich

Und ich meine, das sieht man ja auch wirklich

Carl Friedrich

ganz konkret bei C-Python. Also C-Python

Carl Friedrich

3.11 und 3.10 sind

Carl Friedrich

halt einfach auch

Carl Friedrich

wirklich viel schneller geworden und

Carl Friedrich

das ist halt einfach eine Geldfrage.

Carl Friedrich

Also wenn du halt plötzlich fünf Leute hast, die einfach

Carl Friedrich

fulltime

Carl Friedrich

bezahlt werden und das sind ja auch jetzt nicht

Carl Friedrich

irgendwelche Leute, sondern halt auch gute Leute,

Carl Friedrich

dann passiert halt auch was.

Carl Friedrich

Und wir können halt quasi so ein bisschen durch schlaue Architektur, die wir vor zehn Jahren halt quasi geschrieben haben, dadurch können wir halt irgendwie ziemlich gut mithalten, weil der DIT-Generator halt da ist und gut funktioniert.

Carl Friedrich

Aber halt alles, was

Carl Friedrich

jetzt mal so irgendwie so

Carl Friedrich

in Anführungszeichen, also Bonus-Values ist schon

Carl Friedrich

zu negativ, aber alles, was jetzt halt irgendwie

Carl Friedrich

so eine ganz tiefgreifende Veränderung

Carl Friedrich

bräuchte,

Carl Friedrich

das kriegen wir halt

Carl Friedrich

mit dem jetzigen Funding-Stand

Carl Friedrich

nicht hin.

Carl Friedrich

Weil das kriegst du halt nicht durch,

Carl Friedrich

also wir haben halt auch schon so ein

Carl Friedrich

Open Collective-Dings und wir kriegen auch

Carl Friedrich

Donations und da, wir sind da auch

Carl Friedrich

super dankbar dafür, da kommt auf jeden Fall auch

Carl Friedrich

irgendwie immer wieder

Carl Friedrich

gut was

Carl Friedrich

zusammen, aber es ist halt was anderes, wenn du

Carl Friedrich

plötzlich fünf Leute anstellen kannst.

Carl Friedrich

Und da sind wir halt nicht.

Carl Friedrich

Und da haben wir halt auch gerade nicht so

Carl Friedrich

richtig die Person, die da

Carl Friedrich

hinterher wäre,

Carl Friedrich

diese Gelder dann auch zu suchen.

Carl Friedrich

Also

Carl Friedrich

hatten wir ja vorhin schon kurz drüber geredet,

Carl Friedrich

wir hatten halt irgendwie zweimal so

Carl Friedrich

wirklich große Forschungsförderungsprojekte,

Carl Friedrich

also beides mal EU-finanziert.

Carl Friedrich

Das eine war von 2004

Carl Friedrich

bis 2006.

Carl Friedrich

das andere von 2008

Carl Friedrich

bis 2010 so ungefähr

Carl Friedrich

und da hatten wir halt dann

Carl Friedrich

wirklich einige Vollzeitleute, die da

Carl Friedrich

einfach wirklich dann über diese Zeiträume halt auch

Carl Friedrich

wirklich immer nur an diesem ganzen Zeug

Carl Friedrich

gearbeitet haben und da

Carl Friedrich

kam halt dann auch wirklich was raus

Carl Friedrich

so

Carl Friedrich

und dann danach hatten wir halt viel so

Carl Friedrich

immer wieder Funding auch von Firmen, die halt

Carl Friedrich

dann bestimmte Features gerne haben wollten

Carl Friedrich

aber

Carl Friedrich

seit

Carl Friedrich

einer Weile gibt es halt niemand,

Carl Friedrich

der jetzt Bock auf, es ist halt

Carl Friedrich

nochmal so ein ganz eigener Task,

Carl Friedrich

für Open-Source Geld zu finden.

Carl Friedrich

Und man braucht halt da so ein bisschen

Carl Friedrich

ganz

Carl Friedrich

eigene Skills auch.

Carl Friedrich

Und so eine Person haben wir jetzt nicht mehr.

Carl Friedrich

Und das ist in gewisser

Carl Friedrich

Weise nicht so ein

Carl Friedrich

perfekter Zustand.

Carl Friedrich

Ja, und ich meine, selbst für

Jochen

Projekte, die halt sehr viel

Jochen

genutzt werden, also sowas wie Pandas, mich wundert das immer,

Jochen

es gibt ja diverse, es gibt ja ganz viele,

Jochen

wo die Basis für

Jochen

die Menge...

Jochen

Genau, das ist die Basis

Jochen

für Milliardenumsätze irgendwie

Jochen

in der Industrie, aber trotzdem

Jochen

gibt es da eigentlich für die

Jochen

Entwicklung nicht so richtig viel Geld.

Jochen

Also der andere

Carl Friedrich

momentan sehr aktive PiPi-Entwickler

Carl Friedrich

der Matipikus, der ist

Carl Friedrich

tatsächlich bei

Carl Friedrich

einer Firma angestellt, die darauf spezialisiert

Carl Friedrich

ist, halt

Carl Friedrich

NumPy voranzubringen

Carl Friedrich

und halt dann da

Carl Friedrich

einer der Leute, die halt wirklich auch

Carl Friedrich

quasi finanziert

Carl Friedrich

NumPy-Bugs fix,

Carl Friedrich

das ist auch Teil, heißt das auch Steering Council

Carl Friedrich

bei NumPy, weißt du das zufällig?

Carl Friedrich

Nee, keine Ahnung. Also der ist auch quasi Teil

Carl Friedrich

des Komitees, das halt NumPy

Carl Friedrich

verwaltet und ist da

Carl Friedrich

sehr aktiv. Deswegen geht NumPy auch

Carl Friedrich

gut auf PyPy, weil er sich halt da drauf auch kümmert.

Carl Friedrich

Achso.

Carl Friedrich

Ja, also

Carl Friedrich

Also bei NumPy passiert es langsam eben schon. Also sowas wie Jupiter hat halt auch Funding und da gibt es halt inzwischen in den USA schon auch halt Firmen und Foundations, die halt erkannt haben, dass es einfach so ein wichtiges Stück Infrastruktur ist, dass es halt vielleicht doch auch eine gute Idee ist.

Dominik

Wenn du das ganze Internet an so einem kleinen Faden aufhängst.

Jochen

Ja, ich habe gehört, also die Idee fand ich auch ganz charmant, dass man sagt, ja, also eigentlich müsste man das Firmen so verkaufen, dass es halt eine Versicherung ist, wenn sie da nichts, also sie zahlen sozusagen eine Art Versicherungspolizei dafür, dass es das halt auch in Zukunft gibt, weil wenn es das nicht mehr geben sollte, haben sie ein großes Problem.

Carl Friedrich

Ich weiß nicht, was da die Antwort ist. Ich finde halt auch letztlich, in gewisser Weise ist das wirklich auch was, was man über Steuern machen könnte. Und passiert ja ein Stück weit auch. Also halt sowas wie, ich glaube es ist ja.

Carl Friedrich

Man muss halt Projektanträge schreiben, ne?

Carl Friedrich

Müsste man halt Projektanträge schreiben, ja.

Carl Friedrich

Und da ist es halt dann so ein bisschen so,

Carl Friedrich

da ist halt PyPy dann letztlich

Carl Friedrich

auch vielleicht nicht wichtig genug, ne?

Carl Friedrich

Also bei PyPy kann man halt nicht sagen,

Carl Friedrich

das ist jetzt eine absolut die

Carl Friedrich

grundlegende Technologie wie

Carl Friedrich

NumPy, weil

Carl Friedrich

so viele Leute

Carl Friedrich

benutzen es halt dann irgendwie doch nicht.

Carl Friedrich

Und klar, wir finden halt auch

Carl Friedrich

immer ganz tolle Bugs in CPython und ich glaube

Carl Friedrich

schon, dass jetzt unser Wert

Carl Friedrich

halt jetzt auch, selbst wenn man das nicht

Carl Friedrich

einsetze, es ist halt nicht null, da haben wir

Carl Friedrich

vorhin über ein paar Beispiele geredet,

Carl Friedrich

aber es ist halt auch nicht klar,

Carl Friedrich

ob wir jetzt das Projekt sind,

Carl Friedrich

für das irgendjemand

Carl Friedrich

ein paar Vollzeitentwickler dann bezahlen sollte.

Carl Friedrich

Also ich meine, klar, wir könnten die,

Carl Friedrich

wenn wir die hätten, dann könnten wir ganz, ganz tolle Sachen

Carl Friedrich

machen. Auf jeden Fall, ich habe

Carl Friedrich

eine ganz lange Liste, also

Carl Friedrich

schickt das

Carl Friedrich

Geld gerne zu mir, aber

Carl Friedrich

wenn man dann so einen Antrag schreibt,

Carl Friedrich

ist mir halt nicht so klar, ob man sagen kann, wir sind so

Carl Friedrich

wichtig wie, was weiß ich,

Carl Friedrich

OpenSSL sind wir halt nicht. Offensichtlich

Carl Friedrich

nicht. Und ja.

Carl Friedrich

Aber das viel grundlegende Problem ist halt,

Carl Friedrich

wir haben im Moment keinen, der da Lust drauf hat.

Carl Friedrich

Oder in dessen

Carl Friedrich

Expertise das halt liegt. Und das

Carl Friedrich

ist nicht so gut.

Carl Friedrich

Und es kann schon sein, dass ich da auch vielleicht

Carl Friedrich

irgendwann dann auch nochmal drin besser werden muss.

Dominik

Aber wenn ihr Lust drauf habt, dann

Dominik

sagt Bescheid.

Dominik

Wir nehmen gerne

Carl Friedrich

Freiwillige an. Also ich finde es zum Beispiel

Carl Friedrich

Read the Rocks finde ich auch einen sehr interessanten Fall.

Carl Friedrich

Weil

Carl Friedrich

das ja auch letztlich

Carl Friedrich

halt

Carl Friedrich

einen sehr guten

Carl Friedrich

Weg gefunden hat für ein

Carl Friedrich

für die Community ultra

Carl Friedrich

wichtiges Problem, nämlich wo wird

Carl Friedrich

eigentlich die Dokumentation gehostet

Carl Friedrich

und wer bezahlt dafür, halt eine Lösung zu finden.

Carl Friedrich

Und die Lösung ist halt,

Carl Friedrich

wir finanzieren das einmal durch

Carl Friedrich

akzeptable Werbung und eben durch

Carl Friedrich

Firmen, die dann damit selber ihre Dokumentation

Carl Friedrich

hosten. Und da gibt es auch coole

Carl Friedrich

Podcasts, ich muss mal gucken, ob mir die

Carl Friedrich

Folge einfällt, wo der

Carl Friedrich

Read-the-Docs-Gründer halt auch

Carl Friedrich

so ein bisschen über seine Philosophie von

Carl Friedrich

Open-Software-Funding redet.

Carl Friedrich

Und ja, ich finde das

Carl Friedrich

auch einen ganz

Carl Friedrich

coolen Weg eigentlich. Also weil

Carl Friedrich

die haben ja wirklich jetzt auch

Carl Friedrich

einige Entwickler, die halt da

Carl Friedrich

an der Infrastruktur arbeiten,

Carl Friedrich

die Sphinx voranbringen,

Carl Friedrich

die Docutales-Patches

Carl Friedrich

schicken und

Carl Friedrich

da ist ja wirklich, also

Carl Friedrich

da sind wir ja, da ist die Python-Community ja auch

Carl Friedrich

wirklich ziemlich gut aufgestellt.

Carl Friedrich

Ich finde es auch sehr interessant,

Carl Friedrich

es gibt wirklich auch an einigen Stellen

Carl Friedrich

halt dann Projekte in ganz

Carl Friedrich

anderen Sprachen, die halt dann trotzdem

Carl Friedrich

Read the Docs nehmen, weil es halt einfach wirklich

Carl Friedrich

auch cool ist.

Jochen

Wie heißt das, ist das Eric Holscher?

Jochen

Ja. Genau, ich glaube,

Jochen

da gab es ein Django-Chat-Episode, die gar nicht so

Jochen

sagen, er ist vor ein paar Monaten zu Gast war

Jochen

und da hat er da einiges. Ich packe die auch mal

Jochen

in die Schotter und zwar nichts, wenn ich mich daran erinnere.

Jochen

Ja.

Jochen

Und ja, das ist ein großartiges Beispiel.

Jochen

Naja und

Jochen

ansonsten ist es halt so,

Jochen

ich habe jetzt halt, also

Carl Friedrich

wir haben halt in gewisser Weise einen ganz guten Vorteil,

Carl Friedrich

weil ich kann das halt als Teil

Carl Friedrich

meiner Arbeit machen. Ich bin an der Uni

Carl Friedrich

angestellt, ich bin

Carl Friedrich

für die Lehre bezahlt, aber wenn die Lehre

Carl Friedrich

zu Ende ist, dann darf ich quasi

Carl Friedrich

forschen, was ich will.

Carl Friedrich

Ich bin in eine Forschungsgruppe eingebettet, die zumindest irgendwie was mit Compilern zu tun auch hat. Insofern bin ich da jetzt auch nicht, bin da so ein bisschen der Einzige, der ganz konkret was mit Compilern macht im Moment, aber ich bin da jetzt quasi thematisch auch nicht fehl am Platz und mein Chef freut sich da auch, wenn ich da dann was dann mache.

Carl Friedrich

Insofern passieren halt durch das Level, was durch meine halbe Stelle, das ist jetzt nicht, sind jetzt nicht ultra viele Stunden, aber halt zumindest schon so ein paar Stunden, die sind halt da und die werden halt auch, solange aus meiner Ansicht nach da halt es interessante Forschungsfragen gibt, werden die halt auch für das Projekt auch weiter verwendet werden.

Carl Friedrich

Und das ist halt so ein Basislevel, naja, das muss man halt auch erstmal haben.

Carl Friedrich

Ja, aber das reicht halt nicht, um jetzt irgendwie so eine ganz krasse neue Idee für eine neue DIT-Optimierung sich auszudenken.

Carl Friedrich

Also manchmal läuft es dann über Abschlussarbeiten ganz gut.

Carl Friedrich

Also ich hatte gerade eine unglaublich coole Bachelorarbeit betreut, das ist jetzt noch nicht gemerged,

Carl Friedrich

Aber der hat echt eine sehr interessante neue Optimierung

Carl Friedrich

für den JIT-Compiler auch geschrieben,

Carl Friedrich

die auch gerade bei Programmen, die viel mit Integern machen,

Carl Friedrich

wirklich nochmal ganz anders Sachen optimieren kann.

Carl Friedrich

Also echt ein super Student.

Carl Friedrich

Nico Rittinghaus heißt der.

Carl Friedrich

Der hat dann auch so die Originalliteratur aus den 70ern gelesen

Carl Friedrich

und meinte so, hier in diesem Paper,

Carl Friedrich

was mit Schreibmaschine geschrieben wurde, steht das hier drin.

Carl Friedrich

In eurem Code ist das doch ganz anders,

Carl Friedrich

sag doch mal.

Carl Friedrich

Genau so, ja.

Carl Friedrich

Und

Carl Friedrich

er hat dann dabei halt

Carl Friedrich

auch immer recht, also das war

Carl Friedrich

sehr, sehr cool mit dem.

Carl Friedrich

Ich hoffe auch, dass er quasi weitermacht

Carl Friedrich

und vielleicht irgendwie auch noch

Carl Friedrich

eine Masterarbeit schreibt, aber

Carl Friedrich

manchmal passieren halt dann so Sachen, aber

Carl Friedrich

bei so Abschlussarbeiten

Carl Friedrich

ist das halt schon so, dass die Leute halt dann

Carl Friedrich

tendenziell auch wieder weg sind. Ja, und dann muss man das

Carl Friedrich

mal entdecken. Nee, das ist eigentlich okay.

Jochen

Ja stimmt, wir schreiben ja dann auch

Carl Friedrich

Wir schreiben halt Tests

Carl Friedrich

und ich bin halt dann schon

Carl Friedrich

ich gehe dann schon auf die Nerven, dass sie jetzt halt auch keinen Scheiß schreiben

Carl Friedrich

also so qualitätsmäßig

Carl Friedrich

Ja, also wir stecken schon auch

Carl Friedrich

ich meine

Carl Friedrich

Wir machen ein bisschen Review und Kultur

Carl Friedrich

Review und Kultur und wir wollen halt schon

Carl Friedrich

wir sind halt jetzt nicht so ein normales

Carl Friedrich

Forschungsprojekt, was halt eigentlich

Carl Friedrich

Code zum Weg, also viele Forschungsprojekte sind halt so

Carl Friedrich

Code zum Wegschmeißen. Man schreibt Code

Carl Friedrich

man schreibt ein Paper und dann ist man

Carl Friedrich

mit dem Thema durch, sondern wir sind

Carl Friedrich

halt so ein bisschen, in gewisser Weise

Carl Friedrich

so ein bisschen ein schlechtes Forschungsprojekt in dem Sinne,

Carl Friedrich

dass wir halt versuchen, halt auch

Carl Friedrich

Code zu schreiben, den Leute benutzen können und

Carl Friedrich

deswegen haben wir halt Aufwand, der sich aus

Carl Friedrich

Forschungssicht halt irgendwie auch nicht lohnt.

Carl Friedrich

Deswegen bin ich halt

Carl Friedrich

vielleicht auch kein Professor, sondern

Carl Friedrich

weil mein Forschungsoutput halt auch

Carl Friedrich

nicht, also

Carl Friedrich

weil ich diesen Job auch gar nicht haben wollte,

Carl Friedrich

also das, aber weil

Carl Friedrich

halt so der Output an Pippen aufsetzen

Carl Friedrich

bei mir vielleicht halt nicht so ganz

Carl Friedrich

stimmt. Also

Carl Friedrich

ich schreibe schon Aufsätze und die sind halt zum Teil

Carl Friedrich

dann auch ganz gut

Carl Friedrich

rezipiert und werden zitiert und so, aber

Carl Friedrich

vielleicht jetzt nicht mit dem

Carl Friedrich

Nachdruck, den man bräuchte, wenn man jetzt halt

Carl Friedrich

so ein

Carl Friedrich

reiner Akademiker sein wollte.

Carl Friedrich

Naja.

Carl Friedrich

Ja, das ist auch

Jochen

eine faszinierende Geschichte. Ich meine, tatsächlich ist es

Jochen

ja dann doch oft so, dass dann Sachen wiederverwendet werden.

Jochen

Also wenn man

Jochen

und dann, also in der Physik

Jochen

manche Leute kommen, sieht man das dann häufig,

Jochen

dass dann doch irgendwie so

Jochen

sich Sachen aufeinandertürmen, die halt

Jochen

irgendwie man vielleicht dann doch mal, wenn man gewusst hätte,

Jochen

wo man hinterher rauskommt,

Jochen

hätte man das auch mal,

Jochen

hätte man das vielleicht anders bauen können.

Jochen

Das ist meine absolute Lieblingsgeschichte,

Jochen

die werde ich jetzt hier noch anbringen.

Carl Friedrich

Oh ja, sehr gerne. Ich habe tatsächlich,

Carl Friedrich

also ursprünglich habe ich mal

Carl Friedrich

Mathe und Physik studiert und dann habe ich das abgebrochen,

Carl Friedrich

um an, um bei einem

Carl Friedrich

der PiPi-Firmen, die halt von

Carl Friedrich

der EU Geld gekriegt haben,

Carl Friedrich

mitzuarbeiten für eine Weile.

Carl Friedrich

Aber vorher habe ich quasi

Carl Friedrich

bei den Teilchenphysikern halt immer so

Carl Friedrich

Semesterferien,

Carl Friedrich

Hiwi-Jobs gehabt.

Carl Friedrich

Und die Teilchenphysiker, die haben

Carl Friedrich

so CERN und so, die haben halt

Carl Friedrich

ein ganz interessantes Stück Technologie,

Carl Friedrich

nämlich die haben einen C++-Interpreter.

Carl Friedrich

Ach,

Carl Friedrich

weil,

Carl Friedrich

dann muss man ja nur eine Sprache lernen.

Carl Friedrich

Also,

Carl Friedrich

wir müssen ja, die Physiker, die müssen ja

Carl Friedrich

eh zu C++ zu lernen, um halt schnell

Carl Friedrich

einen Code zu schreiben, aber die wollen ja auch Skripting

Carl Friedrich

machen. Und wenn wir jetzt halt so

Carl Friedrich

einen C++-Interpreter haben,

Carl Friedrich

dann können die ja mit der Sprache, die die eh

Carl Friedrich

schon können, halt auch ihre Skripte

Carl Friedrich

schreiben.

Carl Friedrich

Und das war halt so

Carl Friedrich

2003 rum, war das halt echt

Carl Friedrich

noch irgendwie so ein Stück Technologie,

Carl Friedrich

was die halt einfach wirklich benutzt haben

Carl Friedrich

in der Teilchenphysik.

Carl Friedrich

Und so nach und nach

Carl Friedrich

kam halt dann die Erkenntnis, dass das doch

Carl Friedrich

irgendwie vielleicht

Carl Friedrich

halt so ein bisschen

Carl Friedrich

so eine merkwürdige Idee ist.

Carl Friedrich

Und inzwischen nehmen die halt auch

Carl Friedrich

einfach Python für Skipping, ja.

Carl Friedrich

Aber das ist halt für mich immer so

Carl Friedrich

ein Beispiel, wenn man, also

Carl Friedrich

einer, so ein Lieblingsaufreger

Carl Friedrich

von mir ist, wenn Leute halt von

Carl Friedrich

interpretierten Sprachen reden. Man sagt halt gerne,

Carl Friedrich

Python ist eine interpretierte Sprache.

Carl Friedrich

Und das ist halt eigentlich eine Aussage, die meiner Ansicht nach

Carl Friedrich

semantisch keinen Sinn macht, also

Carl Friedrich

sinnleer, weil

Carl Friedrich

es ist halt eine Eigenschaft einer Implementierung,

Carl Friedrich

ob sie interpretiert ist oder nicht.

Carl Friedrich

Also C-Python ist ein Interpreter, das stimmt, und PyPy ist halt ein Dit-Compiler, das stimmt. Aber man kann jetzt eben nicht sagen, dass C++ eine kompilierte Sprache ist, weil es gibt ja Cint und das ist halt eine Implementierung von C++, die das interpretiert.

Carl Friedrich

Und deswegen kann man halt nur sagen, na gut, wenn man halt GCC benutzt, dann hat man eine kompilierte Implementierung von C++. Das ist quasi so ein Randfall, den ich dann gerne anbringe, um zu demonstrieren, dass es halt ein Konzept ist, das keinen Sinn macht, von einer kompilierten Sprache zu sprechen.

Carl Friedrich

Naja, also zum Glück ist das Ding inzwischen, glaube ich, tot.

Carl Friedrich

Ja, ne, interessant.

Carl Friedrich

Ja.

Carl Friedrich

Ja, ich weiß nicht,

Carl Friedrich

spielt eigentlich diese,

Jochen

da gab es ja auch so Geschichten mit

Jochen

Software Transactional Memory und so,

Jochen

spielt das noch eine Rolle?

Carl Friedrich

Also da gab es halt ein relativ langjähriges

Carl Friedrich

Forschungsprojekt, auch von dem Armin Rigo und

Carl Friedrich

einem Doktoranden, der

Carl Friedrich

in der ETH Zürich, glaube ich, promoviert hat.

Carl Friedrich

Und die hatten halt diese Idee,

Carl Friedrich

dass man halt irgendwie

Carl Friedrich

Software Transactional Memory benutzen

Carl Friedrich

können sollte, um

Carl Friedrich

den Overhead

Carl Friedrich

von einem

Carl Friedrich

Jill, also Global Interpreter

Carl Friedrich

Log-Free Multithreading

Carl Friedrich

für Python sehr klein zu halten.

Carl Friedrich

Und

Carl Friedrich

dieses Forschungsprojekt hat halt,

Carl Friedrich

also die haben da auch wirklich

Carl Friedrich

viele Jahre dran

Carl Friedrich

geforscht und rein

Carl Friedrich

Zeit investiert. Das hat halt

Carl Friedrich

am Schluss nicht so gut geklappt, wie sie sich

Carl Friedrich

erhofft hatten. Was ist das überhaupt?

Carl Friedrich

Vielleicht nochmal. Also ich bin

Carl Friedrich

da sehr schnell raus.

Carl Friedrich

Ich habe das halt immer so interessiert verfolgt

Carl Friedrich

und die hatten halt dann so einen Branch und haben da auch

Carl Friedrich

jahrelang auch wirklich

Carl Friedrich

sehr viel Aufwand reingesteckt.

Carl Friedrich

Aber am Schluss waren sie halt

Carl Friedrich

irgendwie mit den Ergebnissen nicht so

Carl Friedrich

zufrieden und halt auch

Carl Friedrich

also technische

Carl Friedrich

Details, wie gesagt, ist nicht so mein Ding.

Carl Friedrich

Was soll das denn theoretisch

Carl Friedrich

sein? Also ich habe gar nicht verstanden,

Carl Friedrich

gehen soll? Also die Idee

Carl Friedrich

von Source Transaction Memory ist, dass

Carl Friedrich

du quasi

Carl Friedrich

also du kannst

Carl Friedrich

halt dann mehrere Threads starten, die

Carl Friedrich

alle Python-Code ausführen

Carl Friedrich

und du machst so einen optimistischen

Carl Friedrich

Ansatz, so einen Datenbank-Ansatz.

Carl Friedrich

Jeder Thread hat eine

Carl Friedrich

eigene Transaktion und

Carl Friedrich

der Thread, der läuft

Carl Friedrich

so ein bisschen und dann versucht er zu committen.

Carl Friedrich

Committen heißt, dass seine

Carl Friedrich

Sicht der Welt, also seine Sicht

Carl Friedrich

des Zustands des Programms,

Carl Friedrich

mit der Sicht der Welt der anderen Threads

Carl Friedrich

irgendwie gemerged werden muss.

Carl Friedrich

Das ist die Transaction.

Carl Friedrich

Und das macht man aber nicht auf der Datenbank-Ebene,

Carl Friedrich

sondern wirklich auf der Sprachebene.

Carl Friedrich

Also das ist die Idee von Software Transaction Memory.

Carl Friedrich

Und da gibt es halt dann Techniken,

Carl Friedrich

um das effizient hinzukriegen.

Carl Friedrich

Und wenn das alles gut geht,

Carl Friedrich

also wenn die verschiedenen Threads

Carl Friedrich

sich nicht gegenseitig auf die Füße rumtrampeln,

Carl Friedrich

Dann führt das halt dazu, dass du wirklich sehr gut skalierenden Python-Code schreiben kannst.

Carl Friedrich

Also skalierend heißt, wenn du 16 Cores hast, dann kannst du halt dann auch 16 Mal schneller einen Code schreiben.

Carl Friedrich

Das Problem ist jetzt, was machst du, wenn das nicht so gut klappt mit den Transaktionen?

Carl Friedrich

Und du hast halt einen Thread, der versucht, seine Transaktion zu committen und einen anderen Thread und da gibt es einen Konflikt.

Carl Friedrich

Dann bedeutet das immer, der eine Thread, der wirft die ganze Arbeit, die er gemacht hat, weg und fängt halt nochmal ein bisschen weiter hinten an.

Carl Friedrich

Wer ist denn der eine? Wer wirft den weg?

Carl Friedrich

Es gewinnt halt einer von denen.

Carl Friedrich

Zufällig.

Carl Friedrich

Nee, nicht so richtig zufällig.

Carl Friedrich

Du musst natürlich schon dann nach außen hin

Carl Friedrich

die Python-Semantik dann bewahren.

Carl Friedrich

Das darf quasi nicht beobachtbar sein.

Carl Friedrich

Und da wird es halt dann auch technisch sehr kompliziert.

Carl Friedrich

Da weiß ich auch nichts zu.

Carl Friedrich

Aber von außen ist halt die Idee,

Carl Friedrich

es gewinnt einer und die Semantik ist erhalten.

Carl Friedrich

Das Problem ist jetzt nicht,

Carl Friedrich

dass sich das merkwürdig verhält.

Carl Friedrich

Das Problem ist halt, wenn du Pech hast,

Carl Friedrich

dann sind alle deine 16 Cores irgendwie busy,

Carl Friedrich

aber dein Programm ist nur zweimal so schnell.

Carl Friedrich

Und das ist quasi so ein Performance-Bug.

Carl Friedrich

Und ich glaube, letztlich war das Problem,

Carl Friedrich

dass sie nicht so richtig die Werkzeuge gefunden haben,

Carl Friedrich

um an dieser Stelle dann weiterzukommen.

Carl Friedrich

Du hast halt diesen Performance-Bug.

Carl Friedrich

Irgendwo gibt es einen Konflikt zwischen den Threads.

Carl Friedrich

Aber was machst du jetzt als Programmierer?

Carl Friedrich

wenn du halt Performance-Probleme

Carl Friedrich

in Python-Code hast, dann gibt es halt Tools, so Profiler

Carl Friedrich

und so. Und dann kannst du die

Carl Friedrich

benutzen, um rauszufinden, wo du vielleicht was optimieren könntest.

Carl Friedrich

Aber für dieses,

Carl Friedrich

wir haben jetzt zu viele Konflikte-Probleme,

Carl Friedrich

da gibt es halt keine Tools.

Carl Friedrich

Und da wussten die halt zum Teil dann auch

Carl Friedrich

selber nicht, wo jetzt die Zeit bleibt.

Carl Friedrich

Und die sind halt dann,

Carl Friedrich

ich habe so ein bisschen

Carl Friedrich

das Gefühl, irgendwann ist ihnen so dann

Carl Friedrich

die Prüste ausgegangen,

Carl Friedrich

vielleicht, also nach

Carl Friedrich

sechs, sieben Jahren.

Carl Friedrich

Ja.

Carl Friedrich

Und es ist ja jetzt auch ganz interessant, ich finde es halt interessant, dass es jetzt diesen Prototypen von Facebook gibt, wo halt in gewisser Weise so ein ganz klassischer Ansatz, also das ist halt immer Amins Idee.

Carl Friedrich

Amins Ansatz war ja mit dem Budgetgenerator auch schon so, der hat eine Vision, die ist technisch irgendwie elegant und dann versucht er das umzusetzen und bei Budgetgenerator hat es geklappt und bei Software Transactional Memory hat es halt leider nicht geklappt.

Carl Friedrich

Und vielleicht, wenn er noch ein paar Jahre weitergemacht hätte,

Carl Friedrich

hätte es auch irgendwann geklappt, aber

Carl Friedrich

momentan arbeitet er da halt nicht mehr

Carl Friedrich

daran weiter.

Carl Friedrich

Aber jetzt, der Facebook-Code, der ist ja quasi

Carl Friedrich

in gewisser Weise ganz klassisches

Carl Friedrich

Engineering. Also die haben halt quasi

Carl Friedrich

wirklich

Carl Friedrich

ganz klassisch, so wie man halt

Carl Friedrich

irgendwie Shared-Memory-Multiprocessing

Carl Friedrich

macht, das

Carl Friedrich

implementiert mit einer

Carl Friedrich

sehr coolen neuen Einsicht.

Carl Friedrich

Da haben wir vorhin auch schon ganz kurz drüber gesprochen.

Carl Friedrich

Nämlich,

Carl Friedrich

also wie gesagt, das ist überhaupt nicht mein

Carl Friedrich

Gebiet, ich kenne mich da nur sehr schlecht aus,

Carl Friedrich

aber die Idee ist, glaube ich, dieses Biased Locking, oder?

Carl Friedrich

Genau,

Jochen

Biased Reference Counting.

Jochen

Genau, also die Idee ist quasi, dass

Carl Friedrich

ein Objekt meistens

Carl Friedrich

in dem Thread benutzt wird,

Carl Friedrich

in dem es auch erzeugt wurde.

Carl Friedrich

Und es gibt halt dann so ein Fast Path,

Carl Friedrich

solange das Objekt nur in diesem

Carl Friedrich

Thread benutzt wird, sind die Zugriffe

Carl Friedrich

auf dieses Objekt

Carl Friedrich

sehr schnell. Also da ist die

Carl Friedrich

Synchronisierung zwischen den Threads

Carl Friedrich

quasi umsonst.

Carl Friedrich

Und erst wenn man das wirklich dann

Carl Friedrich

in einem anderen Thread auch benutzen will,

Carl Friedrich

wird es halt dann

Carl Friedrich

performance-mäßig teurer.

Carl Friedrich

Und das ist quasi

Carl Friedrich

eine neue Einsicht. Die kommt jetzt in

Carl Friedrich

diesen klassischen Ansatz,

Carl Friedrich

Shared-Memory-Multiprocessing mit Logs und so zu machen,

Carl Friedrich

kommt das dazu. Und es hat sich halt herausgestellt,

Carl Friedrich

dass das quasi der richtige ist,

Carl Friedrich

um den Overhead für

Carl Friedrich

Single-Threaded-Code

Carl Friedrich

klein zu kriegen.

Carl Friedrich

Es gibt

Jochen

Es gibt auch so ein paar Tricks, also ein interessanter Trick ist, weil es gibt dann ja deutlich mehr so viele Sachen, die halt schon in allen Threads verwendet werden, also alles was irgendwie globale Ports und so Zeug.

Jochen

Also None zum Beispiel.

Jochen

Ja, None, True, False, sowas, genau. Und die erklärt man dann einfach zu unsterblichen Objekten, sozusagen macht kein Reference Counting, weil man sagt, das wird sowieso nie differenziert.

Carl Friedrich

Ja, aber was mir zum Beispiel noch nicht so ganz klar ist,

Carl Friedrich

man hat ja dann eigentlich

Carl Friedrich

oft auch an irgendeiner Stelle

Carl Friedrich

doch eine gesharete Datenstruktur. Also wenn du halt zum Beispiel

Carl Friedrich

irgendwie so ein Workstealing implementieren

Carl Friedrich

willst und du nimmst halt einfach eine Liste,

Carl Friedrich

geht

Carl Friedrich

das dann noch? Oder ist halt diese, ist

Carl Friedrich

dann zu viel Contention auf dieser Liste? Oder

Carl Friedrich

das, also diese Feinheiten,

Carl Friedrich

also wie da dann wirklich die Performance

Carl Friedrich

sich dann in der Praxis wirklich verhält.

Carl Friedrich

Was ist ein Workstealing? Ich glaube, das weiß halt keiner.

Carl Friedrich

Was ist ein Workstealing?

Carl Friedrich

Also bei Workstealing ist halt quasi, du hast

Carl Friedrich

verschiedene Arbeitspakete

Carl Friedrich

und verschiedene Threads, die die abarbeiten

Carl Friedrich

und

Carl Friedrich

du koordinierst

Carl Friedrich

diese Threads halt über irgendeinen

Carl Friedrich

Q. Und die Frage ist

Carl Friedrich

jetzt, welche Datenstruktur benutzt du, um

Carl Friedrich

diese Q

Carl Friedrich

zu

Carl Friedrich

repräsentieren?

Carl Friedrich

Und Workstealing ist einerseits, da hat

Carl Friedrich

jeder Thread seinen eigenen Q,

Carl Friedrich

glaube ich, und wenn ein Thread

Carl Friedrich

nichts mehr in seiner eigenen Q hat, dann klaut er was

Carl Friedrich

aus den Queues. Also ich stelle mir das immer so ein bisschen vor

Dominik

wie so eine Bank, wo irgendwelche Leute am Schalter stehen

Dominik

und warten, bis sie dran können. Und dann sind bestimmte

Dominik

Schalter halt auf, bestimmte Schalter halt nicht.

Dominik

Und da kann halt irgendwie sich Leute anstellen

Dominik

an verschiedenen Schaltern und wenn irgendwie

Dominik

eine gerade keine

Dominik

Kundin mehr vor sich hat, dann geht halt jemand drüber.

Dominik

Aber ich glaube, also wie da

Carl Friedrich

so, ich habe da kein gutes Modell.

Carl Friedrich

Also ich bin wirklich ein sehr

Carl Friedrich

single-threaded Mensch.

Carl Friedrich

Ich kann das auch nicht, aber

Carl Friedrich

ich habe mein mentales Modell,

Carl Friedrich

das existiert

Carl Friedrich

einfach noch nicht. Ich weiß halt nicht, was

Carl Friedrich

passiert mit der Performance, wenn man halt

Carl Friedrich

irgendwie 17 Threads hat, die auf

Carl Friedrich

17 Kurs laufen und die wollen alle auf eine

Jochen

Liste zugreifen. Also das ist auch etwas, was irgendwie

Jochen

sehr schlecht, also immer wenn ich mit

Jochen

sowas zu tun hatte, musste ich

Jochen

feststellen, wenn ich vorher nicht schon auch das

Jochen

Gefühl hatte, ich kann das gar nicht, dass ich es dann

Jochen

wenn, dachte ich, ich kann es theoretisch

Jochen

und dann praktisch aber feststellen muss ich ganz nicht, weil

Jochen

es ist wirklich

Jochen

und es mefft halt nicht auf die Art, wie Menschen denken

Jochen

gut. Und es ist auch ganz interessant, also

Carl Friedrich

es gibt ja zwei, mindestens

Carl Friedrich

zwei Implementierungen von Python, die halt auch

Carl Friedrich

keinen Dill haben, nämlich Jython.

Carl Friedrich

Jython ist, soweit ich

Carl Friedrich

das sehen kann, relativ tot, aber

Carl Friedrich

so in der 2.7 ist es ein sehr guter

Carl Friedrich

2.7 Interpreter, der halt

Carl Friedrich

Implementierung, der halt

Carl Friedrich

keinen Dill hat, der halt wirklich Multithreading kann.

Carl Friedrich

Das ist auch eine ganz, ganz

Jochen

fast, das war etwas, was ich jetzt bei dem

Jochen

Durchhören der Folgen, eine der Neuigkeiten,

Jochen

die ich da mitgenommen habe, die ich vorher echt gar nicht wusste

Jochen

und mich fragen, wie mir das entgegen konnte, aber

Jochen

dass halt, wohl wenn man einen JIT-Compiler

Jochen

hat, dass es viel besser geht mit dem

Jochen

Fine-Grain-Blocking, sozusagen, dass man

Jochen

gar nicht unbedingt ein JIT braucht, dass es

Jochen

halt mit einem

Jochen

Interpreter, der in C geschrieben ist und der statisch

Jochen

kompiliert ist, geht das gar nicht richtig.

Jochen

Aber Java, wenn er

Jochen

das von einem JIT-Compiler

Jochen

verwandelt, ist das kein Problem

Jochen

sozusagen und da kann man das dann ohne

Jochen

JIT mit Fine-Grain-Blocking machen und es wird halt nicht langsam

Jochen

dadurch. Ja, also

Carl Friedrich

das ist nicht so

Carl Friedrich

leicht, aber der JIT kann halt dann quasi

Carl Friedrich

der JIT macht dann

Carl Friedrich

so Reasoning über

Carl Friedrich

darüber, ob man gerade von einem

Carl Friedrich

Objekt den Log schon hat und dann

Carl Friedrich

muss man halt nicht bei jeder Operation

Carl Friedrich

versuchen, sich das Log zu holen, sondern macht das nur

Carl Friedrich

einmal in der Funktion

Carl Friedrich

oder nur an bestimmten Punkten oder also

Carl Friedrich

und man macht halt dann nicht bei jedem

Carl Friedrich

Field Read muss man sich das Log holen,

Carl Friedrich

sondern kann sagen, wir lesen hier 17

Carl Friedrich

verschiedene Felder und wir holen uns das nur einmal.

Carl Friedrich

Und das kann der JIT halt machen, das kann der Interpreter

Carl Friedrich

nicht machen.

Carl Friedrich

aber ja, also da sind wir noch nicht

Carl Friedrich

in Python, ja, genau, aber

Carl Friedrich

Jython konnte das halt und da hat sich aber

Carl Friedrich

interessanterweise halt dann rausgestellt, dass

Carl Friedrich

es halt unglaublich viele Bibliotheken

Carl Friedrich

gibt in Python, die

Carl Friedrich

halt einfach natürlich überhaupt nicht Threadsafe

Carl Friedrich

sind, natürlich nicht, weil

Carl Friedrich

wie soll denn die

Carl Friedrich

Bugs gefunden werden, wenn halt die Standard-Immunisierung

Carl Friedrich

halt einfach immer

Carl Friedrich

Single-Threaded ist und

Carl Friedrich

selbst in der Standard-Bibliothek hat halt

Carl Friedrich

Jython damals quasi

Carl Friedrich

einiges an Wachs gefunden,

Carl Friedrich

wo es halt Deadlocks und alles mögliche gab,

Carl Friedrich

weil der Code

Carl Friedrich

in der Standardbibliothek von

Carl Friedrich

Jython halt einfach

Carl Friedrich

den Gil präsent

Carl Friedrich

poniert. Und ich denke,

Carl Friedrich

das wird halt schon dann auch nochmal

Carl Friedrich

für die Community auch ein ganz schön

Carl Friedrich

langwieriger Prozess, bis man

Carl Friedrich

halt wirklich an dem Punkt ist, dass alle Bibliotheken dann auch

Carl Friedrich

gehen.

Carl Friedrich

Ich wollte

Carl Friedrich

noch eine Sache

Carl Friedrich

erwähnen, das kam noch gar nicht vor

Carl Friedrich

in unserer Geschichte. Es gibt

Carl Friedrich

tatsächlich noch einen Bereich, wo

Carl Friedrich

sehr, sehr viel Aktivität gerade noch stattfindet

Carl Friedrich

im so weiteren PyPy-Umfeld

Carl Friedrich

und da bin ich

Carl Friedrich

auch nicht ganz direkt beteiligt, aber der ist meiner Ansicht nach

Carl Friedrich

auch schon sehr interessant und das ist nämlich genau

Carl Friedrich

die Frage nach NC-geschriebenen

Carl Friedrich

Bibliotheken

Carl Friedrich

und das Projekt heißt

Carl Friedrich

H-Py und das ist

Carl Friedrich

ein relativ gut

Carl Friedrich

finanziertes

Carl Friedrich

eigenes

Carl Friedrich

Open-Source-Projekt, was quasi als

Carl Friedrich

Idee hat, dass sie eine

Carl Friedrich

Next-Generation-C-API

Carl Friedrich

für Python

Carl Friedrich

entwickeln.

Carl Friedrich

Und die C-API,

Carl Friedrich

die es eben jetzt bisher gibt,

Carl Friedrich

die ist halt

Carl Friedrich

in gewisser Weise so organisch gewachsen

Carl Friedrich

aus C-Python heraus.

Carl Friedrich

Weil das ist ja einfach,

Carl Friedrich

wenn man die C-API benutzt,

Carl Friedrich

dann

Carl Friedrich

greift man einfach direkt auf die Datenstrukturen

Carl Friedrich

zu, die C-Python halt einfach zufällig

Carl Friedrich

hat. Und wenn man eine andere Implementierung

Carl Friedrich

schreiben will und die ist anders,

Carl Friedrich

dann hat man ein Problem, weil dann passt das halt nicht zusammen.

Carl Friedrich

Und HPAI ist halt die Idee,

Carl Friedrich

wir fangen einfach so

Carl Friedrich

nicht ganz auf dem Reißpfeil, aber wir machen

Carl Friedrich

einfach nochmal drei Schritte zurück und wir überlegen uns,

Carl Friedrich

wie würde denn eine API

Carl Friedrich

in C aussehen,

Carl Friedrich

wenn man sie jetzt nochmal neu machen würde.

Carl Friedrich

Und da gibt es schon auch dann,

Carl Friedrich

also das ist jetzt,

Carl Friedrich

das ist quasi noch

Carl Friedrich

in der Mache, es ist irgendwie

Carl Friedrich

Version 0,04 raus oder so

Carl Friedrich

oder die wollen jetzt irgendwann bald mal

Carl Friedrich

zu einem 1.0 kommen. Aber

Carl Friedrich

da ist halt wirklich die Idee, wie würde man

Carl Friedrich

eine API designen, die für alle

Carl Friedrich

Implementierungen für Python gleichermaßen

Carl Friedrich

funktioniert. Und die hat

Carl Friedrich

ein paar sehr interessante Eigenschaften. Zum Beispiel

Carl Friedrich

die ist halt

Carl Friedrich

absolut ABI-kompatibel.

Carl Friedrich

Du musst, vorwärtskompatibel,

Carl Friedrich

du musst niemals neue

Carl Friedrich

Shared Libraries kompilieren.

Carl Friedrich

Du kannst die,

Carl Friedrich

die Idee ist, dass man quasi

Carl Friedrich

so ein bisschen Windows-mäßig

Carl Friedrich

unendlich lange in die Zukunft

Carl Friedrich

alle alten Share-Libraries

Carl Friedrich

weiter benutzen kann. Das ist

Carl Friedrich

eines der Designziele. Ein anderes

Carl Friedrich

Designziel ist, dass man

Carl Friedrich

den Debugging-Mode anschalten

Carl Friedrich

kann für den C-Code,

Carl Friedrich

ohne dass man

Carl Friedrich

neu kopieren muss. Sondern quasi

Carl Friedrich

zur Importzeit kannst du sagen,

Carl Friedrich

hier ist irgendein komischer Crash,

Carl Friedrich

mach mal bitte den Debugging-Mode an

Carl Friedrich

und dann findet er zum Beispiel

Carl Friedrich

Reference-Counting-Probleme

Carl Friedrich

in der CPU-Bibliothek,

Carl Friedrich

ohne dass man die neu kompilieren muss.

Carl Friedrich

Das ist ein anderes, finde ich, sehr interessanter Eigenschaft.

Carl Friedrich

Und also das Coole ist,

Carl Friedrich

dass Oracle

Carl Friedrich

hat auch eine Python-Implementierung, die heißt

Carl Friedrich

GraalPy. Und die haben jetzt

Carl Friedrich

quasi zwei ihrer Entwickler oder

Carl Friedrich

zweieinhalb ihrer Entwickler dafür angestellt,

Carl Friedrich

sich eben zu überlegen, wie man

Carl Friedrich

dieses H-Py-Ding designt. Und da

Carl Friedrich

passiert also quasi so richtig was.

Carl Friedrich

Und ich habe halt die Hoffnung, dass jetzt irgendwann

Carl Friedrich

in diesem 2023

Carl Friedrich

es da die ersten Releases gibt.

Carl Friedrich

Und das ist schon auch so, dass es quasi jetzt das Portieren von der existierenden API auf HBi nicht ganz automatisiert werden kann, aber vielleicht so ein bisschen. Also das ist jetzt auch an allen Stellen, wo man quasi an der alten API dranbleiben kann, haben sie versucht, sich an der existierenden API zu orientieren, um das Portieren eben möglich zu machen.

Carl Friedrich

Und nur an den Stellen, wo das eben nicht

Carl Friedrich

ging,

Carl Friedrich

ohne die Ziele

Carl Friedrich

zu gefährden, haben sie dann

Carl Friedrich

eben sich entschieden, davon abzuweichen.

Carl Friedrich

Naja, also auf jeden Fall,

Carl Friedrich

wie gesagt, ich bin da nicht mit involviert.

Carl Friedrich

Ich rede manchmal mit denen.

Carl Friedrich

Das ist einer der GraalPi.

Carl Friedrich

Der GraalPi-Tag-Lead ist ein guter Freund von mir.

Carl Friedrich

Wir telefonieren dann ab und zu.

Carl Friedrich

Aber ich bin halt sehr hoffnungsvoll, dass das

Carl Friedrich

bald mal ein Release gibt

Carl Friedrich

und vielleicht auch

Carl Friedrich

in Zeiten Supporter für eingebaut wird.

Carl Friedrich

Das wäre sehr, sehr cool.

Carl Friedrich

Und das würde eben dazu führen, dass in Zukunft Extensions, die H-Pi benutzen, halt auch wirklich schnell auf Pi-Pi sind.

Carl Friedrich

Und dann hätten wir unser, also es gibt dann ganz, ganz viele Fliegen, die mit einer Klappe geschlagen würden, unter anderem eben möglicherweise, dass es effizient in Pi-Pi ist, dass es effizient in Graal-Pi ist, trotzdem nicht langsamer ist auf C-Python.

Carl Friedrich

Und der Übergang zum vorigen Thema ist jetzt, dass sie gerade auch, soweit ich das verstehen kann, so ein bisschen anfangen darüber nachzudenken, ob man denn da auch die Jill-Änderungen, die nötig würden für die C-Extensions, auch noch mit unterbringen könnte. Und das wäre halt sehr, sehr cool.

Jochen

Weil das würde dann direkt funktionieren,

Jochen

ohne dass man da nochmal was ändern müsste.

Jochen

Ganz genau.

Carl Friedrich

Und wenn dann eine Extension quasi in der Situation kommt,

Carl Friedrich

dass sie jetzt ganz viel anpassen müsste,

Carl Friedrich

um mit dem Jail zu funktionieren,

Carl Friedrich

dann könnte die halt sagen,

Carl Friedrich

na gut, dann gehen wir halt vielleicht gleich zu dieser neuen API,

Carl Friedrich

nehmen noch einen ganzen Haufen andere Benefits mit

Carl Friedrich

und sind aber trotzdem auch kompatibel zu den neuen Jail-Features.

Carl Friedrich

Also ich bin mir nicht sicher, ob die das schaffen.

Carl Friedrich

Und ich weiß auch nicht,

Carl Friedrich

Also bei so

Carl Friedrich

Funding durch Firmen, da kann halt auch mal

Carl Friedrich

passieren, dass ein Manager sagt,

Carl Friedrich

brauchen wir nicht mehr.

Carl Friedrich

Aber das wäre halt cool.

Carl Friedrich

Also das ist ein Projekt, was ich

Carl Friedrich

sehr exciting finde und wo ich hoffe, dass

Carl Friedrich

da in diesem Jahr halt noch

Carl Friedrich

viel passieren wird. Wir haben leider

Carl Friedrich

also wir haben kein

Carl Friedrich

wir haben kein offizielles

Carl Friedrich

Buy-in von CPython.

Carl Friedrich

Also es gibt einige CPython-Entwickler, die

Carl Friedrich

quasi sehr

Carl Friedrich

wohlwollend sind, aber

Carl Friedrich

wir haben quasi kein offizielles

Carl Friedrich

Endorsement.

Carl Friedrich

Wir sind immer mal

Carl Friedrich

ein bisschen am überlegen, ob es

Carl Friedrich

ein sinnvolles PEP, also ich habe jetzt

Carl Friedrich

wie gesagt, ich bin dann

Carl Friedrich

ich als interessierter Beobachter bin nicht

Carl Friedrich

wirklich, also ich schreibe keinen Code dafür, aber

Carl Friedrich

die HP-Leute denken auch immer mal darüber

Carl Friedrich

nach, was man für ein PEP

Carl Friedrich

schreiben könnte und was da

Carl Friedrich

ist halt gar nicht so ganz klar, was man von C-Python

Carl Friedrich

wollen würde, weil

Carl Friedrich

es ist jetzt, die wollen halt

Carl Friedrich

nicht sagen, die wollen nicht, die

Carl Friedrich

Designverantwortung wieder an C-Python zurückgeben.

Carl Friedrich

Also eines der

Carl Friedrich

Vorteile ist eben gerade, dass es

Carl Friedrich

ein externes Team ist, was das komplett

Carl Friedrich

unabhängig von C-Python macht und

Carl Friedrich

deswegen, das soll jetzt nicht irgendwie

Carl Friedrich

wieder C-Python untergeordnet werden, so

Carl Friedrich

als Projekt, aber deswegen ist halt auch

Carl Friedrich

gar nicht so klar, was ist das

Carl Friedrich

Ergebnis dieses Peps, ist das irgendwie

Carl Friedrich

ein reines, also dieses hypothetische

Carl Friedrich

noch nicht geschriebene Peps, ist das ein reines

Carl Friedrich

Informationspapier, wir arbeiten daran,

Carl Friedrich

nehmt uns wahr und

Carl Friedrich

also ja, da denken wir halt

Carl Friedrich

bis zur Tour nach. Also es gibt den

Carl Friedrich

Lukasz Langer, der

Carl Friedrich

auch von

Carl Friedrich

Vollzeit an über die PSF

Carl Friedrich

an den Teamweizen arbeitet.

Carl Friedrich

Der war auch bei dem

Carl Friedrich

8-Pile-Sprint im

Carl Friedrich

September hier in Düsseldorf.

Carl Friedrich

Also der ist auch ein Core-Dev, der

Carl Friedrich

informiert

Carl Friedrich

und involviert und

Carl Friedrich

wohlwollend ist.

Carl Friedrich

Aber so von den

Carl Friedrich

Hardcore-Performance-Leuten

Carl Friedrich

gibt es jetzt quasi keine offizielle Aussage,

Carl Friedrich

dass sie das irgendwie toll finden.

Carl Friedrich

Aber ich hoffe halt, dass da

Carl Friedrich

in diesem Jahr noch ein paar interessante Sachen

Carl Friedrich

passieren.

Carl Friedrich

Interessant, ja.

Carl Friedrich

Ja, ich meine,

Jochen

mir sagt das gar nicht so viel.

Jochen

Ich glaube, ich habe es nicht mal

Jochen

gehört, dass es da noch einen Interpreter

Jochen

für Python gibt.

Jochen

So viele sind ja auch nicht mehr übrig.

Jochen

Jyton, Iron Python,

Jochen

das ist alles nicht mehr so

Jochen

richtig da. Unladen Swallow

Jochen

gab es auch. Ja, das ist lange tot.

Jochen

Ja, PyPy

Jochen

ist so eine der ganz

Jochen

wenigen, die

Carl Friedrich

überlebend sind. Ja, genau. Also GraalPy

Carl Friedrich

halt auch. Also GraalPy hat halt wirklich ein Team,

Carl Friedrich

die sind auch bezahlt und haben da

Carl Friedrich

von der Funding-Situation sind die ziemlich gut.

Carl Friedrich

Die haben so ein paar,

Carl Friedrich

deren JIT ist auch ziemlich gut, die können

Carl Friedrich

wirklich schnell einen Python-Code ausführen.

Carl Friedrich

Die haben so ein bisschen das Problem,

Carl Friedrich

dass ihre Warm-up-Zeit sehr lange dauert.

Carl Friedrich

Also der Code wird halt erst nach vielen Minuten schnell.

Carl Friedrich

Und das heißt, du brauchst halt die richtige Art von Anwendung.

Carl Friedrich

Also so Long-Running-Server-Processes funktionieren super.

Carl Friedrich

Aber wenn du alle fünf Minuten deployst,

Carl Friedrich

dann halt nicht mehr.

Carl Friedrich

Aber da kommen die auch noch hin.

Carl Friedrich

Also die haben halt Geld im Moment.

Carl Friedrich

Das ist halt für eine Implementierung

Carl Friedrich

eine sehr angenehme Situation.

Carl Friedrich

Und der Tim weiß auch, was er tut.

Carl Friedrich

Ist sehr, sehr gut.

Carl Friedrich

Also Tim Felgenkopf

Carl Friedrich

heißt der Taglet.

Carl Friedrich

Und

Carl Friedrich

die sind glaube ich auch 3.10

Carl Friedrich

kompatibel und

Carl Friedrich

supporten C-Extensions

Carl Friedrich

und also das ist schon eine sehr ernstzunehmende

Carl Friedrich

Infektion.

Carl Friedrich

Ja, cool.

Dominik

Warum schreibt man sich sowas dann direkt

Dominik

in Rust, wenn man das eh statt in C neu zu schreiben?

Dominik

Die schreiben das in Java neu.

Dominik

Also Graal,

Carl Friedrich

wir wollen da, ich glaube da steigen wir jetzt nicht ein, aber

Carl Friedrich

gerade ist so ein bisschen die Piper-Idee

Carl Friedrich

nochmal

Carl Friedrich

in mit Geld.

Carl Friedrich

Also halt von Oracle,

Carl Friedrich

deswegen haben die, die haben einen R-Java,

Carl Friedrich

also die können quasi ihren Java-Code nach C

Carl Friedrich

übersetzen und

Carl Friedrich

haben den JIT-Compiler in C geschrieben und die haben auch

Carl Friedrich

diesen selben, technisch funktioniert

Carl Friedrich

das ein bisschen anders, aber die haben auch so eine ähnliche Motivation,

Carl Friedrich

die haben so einen Meta-JIT-Ansatz,

Carl Friedrich

dass sie quasi keinen JIT schreiben, sondern

Carl Friedrich

den JIT auch generieren

Carl Friedrich

aus einem Interpreter

Carl Friedrich

mit einer anderen Technik, aber

Carl Friedrich

aber halt so von der Motivation her ist das

Carl Friedrich

recht ähnlich und

Carl Friedrich

die benutzen das, also die haben halt irgendwie

Carl Friedrich

einen schnellen JavaScript-Implementierung

Carl Friedrich

und ein schnelles Python und

Carl Friedrich

natürlich irgendwie auch ein schnelles Java

Carl Friedrich

und

Carl Friedrich

ja, und das ist, und ein riesen

Carl Friedrich

Team, das muss man halt auch, also die haben halt

Carl Friedrich

eine

Carl Friedrich

zweistellige Anzahl an Leuten, die halt an diesem

Carl Friedrich

Zeug arbeiten und

Carl Friedrich

ist in gewisser Weise auch

Carl Friedrich

irgendwie

Carl Friedrich

sehr forschungslastig, das Projekt, also auch eine große,

Carl Friedrich

also ich würde sagen, es ist von Oracle eine große Wette.

Carl Friedrich

Also mir ist

Carl Friedrich

nicht so, also ich glaube im Moment

Carl Friedrich

verdient das Team halt kein Geld.

Carl Friedrich

Also es ist halt die Hoffnung, dass es irgendwann mal

Carl Friedrich

dann

Carl Friedrich

vielleicht doch Geld verdient, aber ich glaube im Moment

Carl Friedrich

ist es halt wirklich eine Wette.

Carl Friedrich

Und die läuft auch schon lang, also das Projekt ist

Carl Friedrich

irgendwie zehn Jahre alt oder so.

Carl Friedrich

So irgendwie 30 Leute über zehn Jahre

Carl Friedrich

anzustellen, das ist halt

Carl Friedrich

richtig teuer.

Carl Friedrich

Naja,

Carl Friedrich

aber also da

Carl Friedrich

weiß ich, also

Carl Friedrich

was da die

Carl Friedrich

Motivationen von so einer Firma sind, das weiß man halt

Carl Friedrich

immer nicht. Kann man halt

Carl Friedrich

dann munter spekulieren, das mach ich

Carl Friedrich

natürlich auch immer gern, aber ja.

Carl Friedrich

Also das ist quasi so ein bisschen Friendly-Competition,

Carl Friedrich

aber mit Betonung auf Friendly.

Dominik

Aber nochmal die Frage, warum sowas nicht in Rust

Dominik

irgendwie geschrieben wird jetzt, so ein neuer Link?

Dominik

Mir ist noch nicht so ganz klar,

Dominik

also es ist

Carl Friedrich

so ein bisschen so eine grundsätzliche Frage, in welcher

Carl Friedrich

Sprache implementiert man

Carl Friedrich

sein JIT?

Carl Friedrich

Und die

Carl Friedrich

klassische Antwort ist halt C oder C++.

Carl Friedrich

Und

Carl Friedrich

es gibt jetzt

Carl Friedrich

verschiedene so

Carl Friedrich

forschungsaffine Projekte wie

Carl Friedrich

Squeak, ganz klassischerweise,

Carl Friedrich

oder eben PyPy oder

Carl Friedrich

GraalPy, die halt sagen,

Carl Friedrich

es ist doch eigentlich viel cooler,

Carl Friedrich

wenn man eine Implementierungssprache nimmt, die

Carl Friedrich

halt irgendwie ein höheres

Carl Friedrich

Abstraktionslevel hat als C. Weil C ist halt

Carl Friedrich

doof und nicht memory safe und stürzt die ganze Zeit ab

Carl Friedrich

und man kann auch nicht schön abstrahieren

Carl Friedrich

und deswegen ist C halt keine schöne Sprache.

Carl Friedrich

Und

Carl Friedrich

genau, das sind dann die genannten

Carl Friedrich

Projekte. Und jetzt ist so ein bisschen die Frage, ob

Carl Friedrich

Rust eine

Carl Friedrich

gut geeignete Sprache

Carl Friedrich

ist, um JIT-Compiler zu schreiben.

Carl Friedrich

Und ich glaube, das weiß einfach noch keiner.

Carl Friedrich

Also es gibt genau

Carl Friedrich

ein

Carl Friedrich

großes JIT-Projekt, was Rust

Carl Friedrich

benutzt. Das habt ihr auch, glaube ich,

Carl Friedrich

in einer Folge darüber geredet, das ist dieses,

Carl Friedrich

der neue JIT für Ruby, der von Shopify

Carl Friedrich

finanziert ist.

Carl Friedrich

Es gibt übrigens auch ein großes

Carl Friedrich

Graal

Carl Friedrich

Ruby-Projekt, also

Carl Friedrich

das heißt TruffleRuby, das auch

Carl Friedrich

von Shopify zum Teil finanziert wird.

Carl Friedrich

Also die leisten sich mehrere

Carl Friedrich

eigene Ruby-Impositionen.

Carl Friedrich

Und

Carl Friedrich

das eben, heißt das

Carl Friedrich

YJIT? YJIT heißt es, ne?

Carl Friedrich

Ja. Genau. Und der ist

Carl Friedrich

eben in Rust geschrieben. Und ich glaube,

Carl Friedrich

die Jury ist halt noch so ein bisschen

Carl Friedrich

out, ob das

Carl Friedrich

wirklich die richtige Sprache

Carl Friedrich

für den JIT ist. Und mit der

Carl Friedrich

Maxime Chevalier-Boisvert,

Carl Friedrich

die das gestartet hat,

Carl Friedrich

YJIT bei Shopify,

Carl Friedrich

mit der zoome ich auch auf und zu.

Carl Friedrich

Die ist auch extrem gut.

Carl Friedrich

Aber was da

Carl Friedrich

ihre Conclusion wäre, ist

Carl Friedrich

Rust die richtige Sprache, um so einen JIT-Compiler zu

Carl Friedrich

schreiben. Das weiß

Carl Friedrich

ich jetzt. Also, das weiß ich noch nicht.

Carl Friedrich

Ich glaube, das weiß man dann,

Carl Friedrich

das kann man erst so ein bisschen abschließen,

Carl Friedrich

beurteilen nach dem dritten Jet vielleicht.

Carl Friedrich

Also, wenn man halt

Carl Friedrich

dann Rust nimmt, dann muss man sich halt klar machen,

Carl Friedrich

dass man

Carl Friedrich

sich da auf

Carl Friedrich

noch nicht ganz verstandenes Terrain

Carl Friedrich

bewegt.

Carl Friedrich

Ich meine,

Carl Friedrich

C++ ist halt so die akzeptierteste

Carl Friedrich

Sprache, um

Carl Friedrich

virtuelle Maschinen zu schreiben. Und das

Carl Friedrich

muss man jetzt nicht gut finden. Also ich persönlich

Carl Friedrich

finde es halt vielleicht nicht so gut.

Carl Friedrich

Aber das ist halt die Sprache, ich meine, das ist auch die

Carl Friedrich

Sprache, in der man halt in der Regel

Carl Friedrich

einen Compiler schreibt.

Carl Friedrich

Und

Carl Friedrich

wenn man

Carl Friedrich

irgendwas anderes nimmt, dann muss man sich halt klar machen,

Carl Friedrich

dass man

Carl Friedrich

dann ist man plötzlich für sich selbst verantwortlich.

Carl Friedrich

Also da muss man

Carl Friedrich

mit seinen eigenen Konsequenzen leben.

Carl Friedrich

Also ja, ich weiß es nicht.

Carl Friedrich

Es ist halt so ein bisschen die Frage,

Carl Friedrich

an welcher Stelle würde die Extra-Safety von Rust

Carl Friedrich

die gewinnbringend im Compiler?

Carl Friedrich

Weil das, was an einem Diff-Compiler dangerous und scary ist,

Carl Friedrich

ist halt nicht, dass der selber in der unsafe Sprache geschrieben ist.

Carl Friedrich

Das ist natürlich auch ein Problem.

Carl Friedrich

Und das ist nicht das primäre Problem.

Carl Friedrich

Das primäre Problem ist, dass man selber Maschinencode

Jochen

erzeugt. Und der darf halt nicht falsch sein.

Jochen

Aber bei diesem Problem

Carl Friedrich

bringt einmal Rust auch nichts.

Jochen

Weil Rust, dann ist der Compiler,

Jochen

dann ist der

Jochen

das Ding, in dem man den JIT-Compiler

Jochen

schreibt, das geht halt nicht kaputt.

Jochen

Beim Interpretieren deines Interpreters,

Jochen

der was anderes geschrieben ist. Aber wenn

Jochen

der falschen Code erzeugt, dann ist er immer noch schlecht.

Carl Friedrich

Das ist halt gewisserweise

Carl Friedrich

ein Logik-Bug und kein

Carl Friedrich

Memory-Safety-Bug.

Carl Friedrich

Ja, testen.

Carl Friedrich

Genau, es gibt, also

Carl Friedrich

irgendwann werde ich den Teil 2

Carl Friedrich

Blogpost zu How is Pinefly Tested schreiben.

Carl Friedrich

Der ist auch deutlich länger.

Carl Friedrich

How is Digit Tested? Das ist

Carl Friedrich

nämlich wirklich auch nochmal

Carl Friedrich

so ein bisschen so ein, das ist ein richtig eigenes

Carl Friedrich

Forschungsfeld. Und ich lerne auch immer mal

Carl Friedrich

wieder was dazu. Also gerade

Carl Friedrich

so im LFM-Bereich, da wird ja auch dann

Carl Friedrich

unglaublich viel Fuzzing gemacht und

Carl Friedrich

da werden auf interessante Art und Weise

Carl Friedrich

Theorienbeweise eingesetzt.

Carl Friedrich

Und da gibt es halt wirklich dann Forschungsgruppen, die

Carl Friedrich

nichts anderes machen, als sich darüber Gedanken zu machen,

Carl Friedrich

wie man so einen Compiler testet.

Carl Friedrich

Und im Herbst habe ich halt dann wirklich so eine neue Technik

Carl Friedrich

dann mal ausprobiert, wie man mit

Carl Friedrich

so einem Theorienbeweiser halt Bugs findet und

Carl Friedrich

ja, da haben wir halt auch dann drei

Carl Friedrich

JIT-Bugs gefunden. Also das war echt ganz

Carl Friedrich

interessant. Und da gibt es halt so

Carl Friedrich

einen Prof in Utah, John Regge heißt der, der schreibt

Carl Friedrich

da Paper drüber und

Carl Friedrich

nachdem ich genügend Paper von dem gelesen und

Carl Friedrich

mit ihm lang genug auf Twitter geschrieben hatte,

Carl Friedrich

habe ich dann halt

Carl Friedrich

mal das auch selber ausprobiert

Carl Friedrich

und das hat halt wirklich dann Bugs gefunden.

Carl Friedrich

Ja, cool.

Carl Friedrich

Interessant.

Carl Friedrich

Ja, Pai Pai.

Carl Friedrich

Ja, sorry, da texte ich euch zu.

Jochen

Nee, das ist genau,

Jochen

deswegen sind wir ja da.

Jochen

Können wir jetzt bitte endlich

Jochen

schlafen gehen?

Jochen

Nein, ist auch nicht der Messer.

Carl Friedrich

Naja, Reden ist halt auch Teil

Carl Friedrich

meines Jobs und das...

Jochen

Ja, ich finde das total interessant.

Jochen

Ja, ich auch.

Jochen

Ja, ich überlege nur gerade, ob wir noch

Jochen

irgendwo ein großes Thema vergessen haben,

Jochen

aber ich glaube, wir haben tatsächlich das meiste

Jochen

so durch. Ich habe auch das Gefühl,

Jochen

wir haben einen guten Rundumschlag gemacht.

Dominik

Ja, vielen Dank, Karl, dass du da warst.

Dominik

Es macht mir natürlich auch wirklich

Dominik

Spaß.

Jochen

Merkt man auch. Merkt man sofort,

Jochen

dass das da ganz viel

Dominik

Also, falls ihr mitmachen wollt,

Dominik

wie gesagt.

Carl Friedrich

Ich mache jetzt hier mal so einen allgemeinen

Carl Friedrich

Aufruf. Es ist

Carl Friedrich

Also, es gibt natürlich schon so

Carl Friedrich

ein paar, ich will es jetzt nicht zu schlecht

Carl Friedrich

reden, es gibt schon ein paar Hürden. Wir haben Python 2,

Carl Friedrich

wir sind in Mercurial, wir sind nicht auf GitHub,

Carl Friedrich

wir sind am Fork von GitLab,

Carl Friedrich

der auch mit Mercurial geht.

Carl Friedrich

Also es gibt so ein paar Nervigkeiten

Carl Friedrich

beim Einstieg, aber

Carl Friedrich

es ist in gewisser Weise

Carl Friedrich

halt so ein bisschen auch

Carl Friedrich

die netteste Python-Implementierung, bei der man

Carl Friedrich

einsteigen kann, weil man halt Python schreibt.

Carl Friedrich

Und man nimmt halt PyTest

Carl Friedrich

und man schreibt PyTest und man kann halt

Carl Friedrich

irgendwie seinen Debugger nehmen

Carl Friedrich

und man kann halt die ganzen Tools, die man

Carl Friedrich

kennt, Python 2 ist da so ein bisschen

Carl Friedrich

doof, aber also die ganze

Carl Friedrich

Arbeitsweise, die man halt kennt, wenn man sowieso schon Python kann,

Carl Friedrich

die kann man benutzen, um

Carl Friedrich

da drin rumzuhacken.

Carl Friedrich

Und das macht halt auch ein Stück weit einfach

Carl Friedrich

Spaß. Also man ist halt nicht

Carl Friedrich

in GDB

Carl Friedrich

und man hat halt kein SecFault, sondern man kriegt halt

Carl Friedrich

erstmal einfach einen ganz normalen Python

Carl Friedrich

Stacktrace, der einem sagt, in deinem Interpreter

Carl Friedrich

hast du jetzt hier einen Fehler gemacht.

Carl Friedrich

Und man schreibt halt einen Unit-Test einfach in Python,

Carl Friedrich

der die Datenstrukturen des Interpreters halt auch

Carl Friedrich

einfach testen kann. Und das ist halt

Carl Friedrich

auch, also ich finde das

Carl Friedrich

immer noch auch sehr, sehr cool.

Carl Friedrich

Und deswegen, ich glaube so, wenn man sich halt

Carl Friedrich

für das Gebiet überhaupt

Carl Friedrich

so ein bisschen grob interessiert, wie

Carl Friedrich

funktioniert eine Programmiersprache oder

Carl Friedrich

wie funktioniert so ein Bytecode-Interpreter oder

Carl Friedrich

irgendwann dann auch, wie

Carl Friedrich

funktioniert so ein JIT, ist das schon auch

Carl Friedrich

ein Projekt, wo man halt

Carl Friedrich

im Vergleich zu, ich lerne jetzt erstmal

Carl Friedrich

C++ für ein Jahr und

Carl Friedrich

es ist ja dann auch vielleicht in so einer

Carl Friedrich

virtuellen Maschine auch komisches C++,

Carl Friedrich

wo man dann doch auch recht leicht irgendwie

Carl Friedrich

reinkommen kann und

Carl Friedrich

ich

Carl Friedrich

also ich sage das auch

Carl Friedrich

immer mal wieder, wenn sich da halt jemand für interessiert

Carl Friedrich

und dann da gerne was

Carl Friedrich

machen möchte, ich mache da auch gerne

Carl Friedrich

immer Mentoring, das ist halt auch

Carl Friedrich

Teil meines Jobs, ich betreue halt irgendwie

Carl Friedrich

Studenten, die da dann auch

Carl Friedrich

drin arbeiten, als Teil ihrer Arbeiten, also

Carl Friedrich

insofern weiß ich halt dann

Carl Friedrich

also habe ich quasi viel Übung in Onboarding

Carl Friedrich

und das ist auch was,

Carl Friedrich

was mir Spaß macht, also wenn sich jemand jetzt für irgendwas

Carl Friedrich

konkret interessiert, also es gibt

Carl Friedrich

Themen verschiedenster Art,

Carl Friedrich

dann

Carl Friedrich

kann man sich immer gerne

Carl Friedrich

bei uns melden und ich

Carl Friedrich

zoome dann immer gerne auch mit Leuten

Carl Friedrich

und mache so ein bisschen Pair-Programming

Carl Friedrich

beim Einstieg, damit man halt einfach so ein bisschen

Carl Friedrich

also

Carl Friedrich

die erste Stunde in einem neuen Projekt

Carl Friedrich

ist ja immer die schlimmste. Also man weiß halt nicht,

Carl Friedrich

man findet halt nichts.

Carl Friedrich

Wo ist man da jetzt gelandet? Ja genau, was ist denn das

Carl Friedrich

hier für ein Ordner und wie startet das

Carl Friedrich

eigentlich? Wo kriege ich eigentlich das Python 2 her,

Carl Friedrich

was ich brauche. Und wo geht es mit deinem Essen?

Carl Friedrich

Genau, ja. Und das ist halt, also da

Carl Friedrich

versuche ich halt dann immer auf jeden Fall

Carl Friedrich

deutlich den Leuten halt auch zu helfen.

Carl Friedrich

Und das ist auch was, was mir wirklich

Carl Friedrich

Spaß macht. Also meldet euch

Carl Friedrich

und

Carl Friedrich

ja.

Carl Friedrich

Ja, klingt auf jeden Fall sehr gut. Ja, vielen Dank.

Carl Friedrich

Ja, wollen wir vielleicht noch

Jochen

Pics machen? Möchtest du Pics machen? Ich hatte

Jochen

jetzt nur einen kleinen,

Jochen

der gar nichts mit sonst wie

Jochen

Dingen zu tun hat, über die wir gerade geredet haben.

Jochen

Dann lassen wir es weiter. Dann lassen wir es weg.

Jochen

Okay, alles klar. Gut. Ja, dann vielen Dank,

Jochen

dass ihr eingeschaltet habt. Ja.

Dominik

Schaltet wieder ein. Sehr interessant diesmal.

Dominik

Danke, dass ihr dabei wart. Vielen Dank für die Einladung.

Dominik

Ja, danke. Bye. Okay.

Dominik

Bis zum nächsten Mal. Tschüss, bis dann.