WEBVTT

00:00:00.001 --> 00:00:04.600
dominik: Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Pysen-Podcast, heute Episode 59.

00:00:00.001 --> 00:00:05.000
jochen: Ja, hallo, willkommen in einem Podcast. Heute mit 59.

00:00:00.001 --> 00:00:11.800
johannes: Hallo zusammen.

00:00:04.600 --> 00:00:05.600
dominik: Hi Jochen.

00:00:05.000 --> 00:00:09.000
jochen: Boah, herzlich willkommen Dominik, 59, meine Güte.

00:00:05.600 --> 00:00:08.600
dominik: Herzlich willkommen Dominik, 59, meine Güte.

00:00:08.600 --> 00:00:09.600
dominik: Ja, hi Johannes.

00:00:09.000 --> 00:00:11.000
jochen: Ja, hi Johannes.

00:00:09.600 --> 00:00:10.600
dominik: Und hallo Johannes.

00:00:10.600 --> 00:00:15.600
dominik: Wir machen heute weiter mit dem Flun, Pysen-Buch, haben wir uns gedacht.

00:00:11.000 --> 00:00:13.000
jochen: Und hallo, Johannes.

00:00:11.800 --> 00:00:28.200
johannes: Dann haben wir es schon vergessen, dann müssen wir es von vorne direkt wieder vorlesen.

00:00:13.000 --> 00:00:15.000
jochen: Wir machen heute mal einen guten Feistenbuch, waren wir es vor?

00:00:15.000 --> 00:00:18.000
jochen: Ja, genau, so, hat sich bewährt.

00:00:15.600 --> 00:00:16.600
dominik: Ja, genau.

00:00:16.600 --> 00:00:17.600
dominik: Hat sich bewährt.

00:00:17.600 --> 00:00:18.600
dominik: Ja, wir fanden das ganz gut.

00:00:18.000 --> 00:00:20.000
jochen: Da bleiben wir jetzt.

00:00:18.600 --> 00:00:19.600
dominik: Es ist ja auch lang.

00:00:19.600 --> 00:00:25.600
dominik: Wenn wir hinten angekommen sind, dann machen wir das immer rückwärts.

00:00:20.000 --> 00:00:22.000
jochen: Machen nur noch das.

00:00:22.000 --> 00:00:25.000
jochen: Wenn wir hinten angekommen sind, dann machen wir es immer rückwärts.

00:00:25.000 --> 00:00:27.000
jochen: Ja.

00:00:25.600 --> 00:00:26.600
dominik: Ja.

00:00:26.600 --> 00:00:32.100
dominik: Ja, wir hatten, also der Kapitel 2 hat was mit Sequenzen und Listen und sowas zu tun,

00:00:27.000 --> 00:00:32.000
jochen: Wir hatten, also der ist so beklemmt, der hat was mit Sequenzen und Wissen und sowas zu tun.

00:00:28.200 --> 00:00:37.320
johannes: Ja, aber da gibt es einfach immer noch mehr zu sagen.

00:00:32.000 --> 00:00:34.000
jochen: Da hatten wir ja schon mal eine Vornehmung.

00:00:32.100 --> 00:00:33.100
dominik: da hatten wir jetzt schon mal eine Folge, ne?

00:00:33.100 --> 00:00:34.100
dominik: Erinnert ihr euch?

00:00:34.000 --> 00:00:36.000
jochen: Ja.

00:00:34.100 --> 00:00:35.100
dominik: Ja.

00:00:35.100 --> 00:00:41.100
dominik: Genau, ich hätte da auch nochmal kurz, und wir haben da, also das ist ein bisschen ordinal,

00:00:36.000 --> 00:00:43.000
jochen: Genau, ich hatte da auch noch mal reingeguckt kurz und wir haben da, also das ist ein bisschen orthogonal, das ist gut.

00:00:37.320 --> 00:00:39.320
johannes: Ja, aber da gibt es einfach noch mehr zu sagen.

00:00:41.100 --> 00:00:47.100
dominik: das ist gut, also es ist halt von der anderen Seite nochmal angegangen und da das Thema

00:00:43.000 --> 00:00:49.000
jochen: Also es ist halt von der anderen Seite nochmal angegangen und da das Thema sowieso irgendwie wichtig ist,

00:00:47.100 --> 00:00:51.100
dominik: sowieso wichtig ist, dann kann man das auch von mehreren Seiten mal irgendwie angehen.

00:00:49.000 --> 00:00:52.000
jochen: dann kann man das auch von mehreren Seiten mal irgendwie angehen und das ist eigentlich ganz gut.

00:00:51.100 --> 00:00:52.100
dominik: Ok.

00:00:52.000 --> 00:00:53.000
jochen: Okay.

00:00:52.100 --> 00:00:55.100
dominik: Haben wir denn News?

00:00:53.000 --> 00:00:54.000
jochen: Ja.

00:00:54.000 --> 00:00:56.000
jochen: Haben wir denn News?

00:00:55.100 --> 00:00:57.100
dominik: Ja, so ein bisschen.

00:00:56.000 --> 00:01:04.000
jochen: Ja, so ein bisschen, ich habe jetzt, ja, es ist halt die Frage, was da alles so drunter fällt.

00:00:57.100 --> 00:01:01.100
dominik: Ich habe jetzt, ja, jetzt halte ich mal, was da alles so drunter fällt.

00:01:01.100 --> 00:01:09.100
dominik: Halten 3.13, das machen wir jetzt nicht, aber das kommt jetzt ganz bald.

00:01:04.000 --> 00:01:09.000
jochen: Python 3.13, das machen wir jetzt nicht, aber das kommt jetzt ganz bald.

00:01:09.000 --> 00:01:12.000
jochen: Ja, also ich finde ja den Refresh so schön.

00:01:09.100 --> 00:01:12.100
dominik: Ja, also ich finde ja den Rappel so schön.

00:01:12.000 --> 00:01:13.000
jochen: Ja.

00:01:12.100 --> 00:01:13.100
dominik: Ja?

00:01:13.000 --> 00:01:16.000
jochen: Genau, habt ihr euch alle schon so ein bisschen damit beschäftigt oder noch gar nicht?

00:01:13.100 --> 00:01:14.100
dominik: Ja.

00:01:14.100 --> 00:01:17.100
dominik: Genau, habt ihr euch alle schon so ein bisschen damit beschäftigt, oder noch gar nicht?

00:01:16.000 --> 00:01:17.000
jochen: Noch gar nicht.

00:01:17.000 --> 00:01:19.000
jochen: Ganz kleines bisschen.

00:01:17.100 --> 00:01:18.100
dominik: Noch gar nicht?

00:01:18.100 --> 00:01:19.100
dominik: So ein ganz kleines bisschen.

00:01:19.000 --> 00:01:22.000
jochen: Ja, also genau, also ja, ist jetzt der zweite Release-Kandidat.

00:01:19.100 --> 00:01:21.100
dominik: Ja, also genau, also.

00:01:21.100 --> 00:01:25.100
dominik: Also der Rappel ist total toll, du kannst einfach defaults jetzt eintragen, den er automatisch

00:01:22.000 --> 00:01:26.000
jochen: Du kannst einfach die Calls jetzt eintragen, denen er automatisch lädt, Pakete in deinem Ripple.

00:01:25.100 --> 00:01:28.100
dominik: lädt, Pakete in deinem Rappel, das heißt, wenn du den Interpreter aufmachst, dann hat

00:01:26.000 --> 00:01:29.000
jochen: Das heißt, wenn du den Interpreter aufmachst, dann hat der Pakete schon geladen.

00:01:28.100 --> 00:01:31.100
dominik: der Pakete schon geladen, oder damit kannst du halt auch Sachen dann überschreiben, weil

00:01:29.000 --> 00:01:33.000
jochen: Oder damit kannst du halt auch Sachen dann überschreiben, weil er die Pakete lädt, die er laden sollte.

00:01:31.100 --> 00:01:35.100
dominik: er dann die Pakete lädt, die er laden soll und du hast einen Befehlssatz drin direkt,

00:01:33.000 --> 00:01:34.000
jochen: Ja.

00:01:34.000 --> 00:01:38.000
jochen: Und dann hast du einen Befehlsatz drin direkt, den du möchtest, also eine eigene Konfiguration für deinen Ripple.

00:01:35.100 --> 00:01:39.100
dominik: den du möchtest, also eigene Konfiguration für deinen Rappel direkt haben und so.

00:01:38.000 --> 00:01:44.000
jochen: Exit funktioniert, man kann einfach Exit eingeben und ist draußen und Multiline Editing und die History ist ordentlich und so.

00:01:39.100 --> 00:01:42.100
dominik: Exit funktioniert, man kann einfach Exit eingeben, ist draußen und Multiline Editing.

00:01:42.100 --> 00:01:43.100
dominik: Multiline Editing.

00:01:43.100 --> 00:01:44.100
dominik: Ist ordentlich und so.

00:01:44.000 --> 00:01:48.000
jochen: Ja.

00:01:44.100 --> 00:01:45.100
dominik: Und genau.

00:01:45.100 --> 00:01:52.100
dominik: Ja, aber ratet mal, wer das nicht hat.

00:01:48.000 --> 00:01:54.000
jochen: Ja, aber rate mal, wer das nicht hat.

00:01:52.100 --> 00:01:57.100
dominik: Ne, die Python Core Entwickler.

00:01:54.000 --> 00:01:57.000
jochen: Ne, die Python Core Entwickler.

00:01:57.000 --> 00:02:05.000
jochen: Deswegen alle, wenn du an einer neuen, dann, ja, so, ich könnte jetzt iPython, das ist so cool, aber es geht nicht.

00:01:57.100 --> 00:02:00.100
dominik: Deswegen alle, alle neuen.

00:02:00.100 --> 00:02:05.100
dominik: Auf IPython oder auf, oder BPython?

00:02:05.000 --> 00:02:12.000
jochen: Ja, genau, und das geht alles nicht, weil das läuft ja mit einer neuen und in der Entwicklung befindlichen Python Version, das ist halt nicht,

00:02:05.100 --> 00:02:11.100
dominik: Genau, das geht alles, was auf der neuen und in der Entwicklung der neuen Python Version

00:02:11.100 --> 00:02:16.100
dominik: ist, so funktioniert das halt nicht, das heißt, die müssen aber die Python dafür verwenden

00:02:12.000 --> 00:02:19.000
jochen: das heißt, die müssen immer die Python Ripple verwenden und die sagen alle, ach, das ist so viel besser jetzt, ach, das ist so cool.

00:02:16.100 --> 00:02:21.100
dominik: und die sagen alle, ach, das ist so viel leichter jetzt, ach, das ist so cool.

00:02:19.000 --> 00:02:27.000
jochen: Ja.

00:02:21.100 --> 00:02:22.100
dominik: Ja.

00:02:23.100 --> 00:02:32.100
dominik: Ja, erstmal bitte ein bisschen Redingbogenfarben irgendwie in der Konsole, dann macht das Spaß.

00:02:27.000 --> 00:02:33.000
jochen: Ja.

00:02:32.100 --> 00:02:37.100
dominik: Ja, und ein großer Teil davon kommt halt auch, oder kam, also Anregungen dafür kamen aus

00:02:33.000 --> 00:02:39.000
jochen: Und ein großer Teil davon kommt halt auch, oder kam, also Anregungen dafür kamen aus PyPy.

00:02:37.100 --> 00:02:42.100
dominik: PyPy und dann haben sie das jetzt nochmal durch die Mangel gedreht und dann haben sie Sachen

00:02:39.000 --> 00:02:44.000
jochen: Und dann haben sie es jetzt aber nochmal durch die Mangel gedreht und alle möglichen Sachen gefunden, die man irgendwie besser machen kann als soll.

00:02:42.100 --> 00:02:45.100
dominik: gefunden, die man irgendwas machen soll, zum Glück haben sie auch der Kram gesehen, die

00:02:44.000 --> 00:02:49.000
jochen: Jetzt überlegen sie, ob der Kram, den sie in Cpython jetzt gemacht haben, nicht zurückgeht nach PyPy wieder.

00:02:45.100 --> 00:02:48.100
dominik: Python jetzt gemacht haben, die zurückgeht nach PyPy wieder.

00:02:48.100 --> 00:02:49.100
dominik: Ja.

00:02:49.000 --> 00:02:57.000
jochen: Ja, aber das ist cool, also das ist auf jeden Fall, das sind einige Sachen, die jetzt auch da immer wieder zwischen den Leuten diskutiert werden und so.

00:02:49.100 --> 00:02:54.100
dominik: Aber das ist cool, also das ist auf jeden Fall, das sind einige Sachen, die jetzt auch da

00:02:54.100 --> 00:02:58.100
dominik: immer wieder zwischen den Leuten diskutiert werden und so, da gibt es auch immer eine

00:02:57.000 --> 00:03:05.000
jochen: Und da ist auf jeden Fall eine fruchtbare Diskussion immer so im Stande, immer, ich höre ja diesen Copyright Podcast und da ist eigentlich PyPy immer mit dabei.

00:02:58.100 --> 00:03:01.100
dominik: fruchtbare Diskussion, immer so ein "Standard Magic" gehört bei diesem Coffee-Boy-Podcast

00:03:01.100 --> 00:03:11.100
dominik: und da ist PyPy immer mit dabei oder, ja, Karl Friedrich, bei Band, als A oder B, oder

00:03:05.000 --> 00:03:13.000
jochen: Und Karl Friedrich wird immer erbändt, als, ah, da wäre irgendwas Interessantes dazu gesagt.

00:03:11.100 --> 00:03:13.100
dominik: was auch immer, hat es gesagt.

00:03:13.000 --> 00:03:16.000
jochen: Ja, also das ist auf jeden Fall cool.

00:03:13.100 --> 00:03:16.100
dominik: Ja, also das ist auf jeden Fall cool.

00:03:16.000 --> 00:03:30.000
jochen: Genau, Python 3.13, die Ripple-Geschichten, ja, es gibt halt, also das größte, das dickste Feature, was immer alle nennen, ist halt Free Threading, also man kann den GIL abschalten.

00:03:16.100 --> 00:03:21.100
dominik: Genau, Python hat seine Grapple-Geschichten, ja, es gibt halt, also das größte, das dickste

00:03:21.100 --> 00:03:29.100
dominik: Feature, was man alle nennen muss, ist halt "pre-threading", also man kann Heal abschalten,

00:03:29.100 --> 00:03:41.100
dominik: ja, also, ja, ja, schon, klar, in gewissen Fällen bringt das sicherlich auch viel, aber

00:03:30.000 --> 00:03:46.000
jochen: Ja, also, ja, schon, klar, in gewissen Fällen bringt das sicherlich auch viel, aber, ja, genau, da müsste man auch mal, genau.

00:03:41.100 --> 00:03:43.100
dominik: ja, genau, das ist nun auch mal...

00:03:43.100 --> 00:03:44.100
dominik: Noggle.

00:03:44.100 --> 00:03:45.100
dominik: Genau.

00:03:45.100 --> 00:03:57.100
dominik: Ja, das ist halt auch mit drin, ja, überhaupt dieser ganze, der, es gibt einen Justin-Tang-Compiler,

00:03:46.000 --> 00:04:01.000
jochen: Ja, das ist halt auch mit drin, ja, überhaupt dieser ganze, der, es gibt einen Just-in-Time-Compiler, der jetzt mit dabei ist, der macht zwar noch nicht viel, aber er ist auf jeden Fall jetzt drin.

00:03:57.100 --> 00:04:00.100
dominik: der jetzt mit dabei ist, der macht zwar noch nicht viel, aber er ist auf jeden Fall jetzt

00:04:00.100 --> 00:04:06.100
dominik: drin, das heißt, da könnte man in Zukunft auch irgendwie eine coole Performance-Verlesserung

00:04:01.000 --> 00:04:15.000
jochen: Das heißt, da könnte man in Zukunft auch irgendwie einige coole Performance-Verbesserungen erwarten, so ein Copy-and-Patch-Jit ist jetzt tatsächlich in Python, in Python Interpreter mit drin.

00:04:06.100 --> 00:04:13.100
dominik: erwarten, so ein bisschen Coffee-Patch-Jit ist jetzt tatsächlich in Python-Interpretern

00:04:13.100 --> 00:04:14.100
dominik: mit drin.

00:04:14.100 --> 00:04:18.100
dominik: Ja, was haben wir noch alles?

00:04:15.000 --> 00:04:20.000
jochen: Ja, was haben wir noch alles?

00:04:18.100 --> 00:04:27.100
dominik: Genau, es gibt jetzt Farbige-Tracebacks, auch wieder so ein...

00:04:20.000 --> 00:04:30.000
jochen: Genau, es gibt jetzt farbige Tracebacks, auch wieder so ein, ja, macht den Alltag irgendwie ein bisschen besser.

00:04:27.100 --> 00:04:28.100
dominik: Sehr wichtig.

00:04:28.100 --> 00:04:29.100
dominik: ...ein bisschen besser.

00:04:29.100 --> 00:04:33.100
dominik: Nein, aber auch die Messages und so, also er hat auch immer einen guten Hint, er eracetet

00:04:30.000 --> 00:04:40.000
jochen: Ja, aber auch die Messages, also er hat auch schon immer einen guten Hint, er tracest nicht einfach irgendwas und denkt sich so, oh ja, komisches Traceback, weiß nicht wo, sondern er hat auch schon eine gute Intuition, was das sein könnte.

00:04:33.100 --> 00:04:37.100
dominik: jetzt nicht einfach irgendwas und denkt sich so, oh ja, komisches Traceback, so weiß ich

00:04:37.100 --> 00:04:40.100
dominik: nicht wo, sondern er hat oft schon eine gute Intuition, was das sein könnte.

00:04:40.000 --> 00:05:03.000
jochen: Ja, genau, da ist jetzt auch eine, ja, aber tatsächlich für Anfänger, also was die oft irgendwie ein Problem, das sie hatten, ist, du machst, du nennst dein Python-Modul oder Skript, das du gerade schreibst, nennst du halt genauso wie ein Standard-Lib-Modul.

00:04:40.100 --> 00:04:48.100
dominik: Ja, genau, da ist jetzt auch eine...

00:04:48.100 --> 00:04:53.100
dominik: Ja, aber tatsächlich für Anfänger, also was wir auch irgendwie, ein Problem, das wir

00:04:53.100 --> 00:05:00.100
dominik: hatten, ist, du nennst dein Python-Modul oder Skript, das du gerade schreibst, nennst du

00:05:00.100 --> 00:05:07.100
dominik: halt genauso wie ein Standard-Lib-Modul und wenn das dann versuchst auszuführen, passiert,

00:05:03.000 --> 00:05:11.000
jochen: Und wenn du das dann versuchst auszuführen und es passiert, kriegst du eine total kryptische Fehlermeldung, die dir echt gar nicht weiterhilft.

00:05:07.100 --> 00:05:11.100
dominik: kriegst du total kryptische Fehlermeldungen, die wir gar nicht melden.

00:05:11.000 --> 00:05:19.000
jochen: Und da gibt es jetzt eine Fehlermeldung, die sagt so, also kann es sein, dass du das so genannt hast wie ein Standard-Lib-Modul, das ist aber nicht gut, mach das mal anders.

00:05:11.100 --> 00:05:15.100
dominik: Und da gibt es jetzt eine Fehlermeldungs-Azuleise und kann sein, dass du das so gemacht hast

00:05:15.100 --> 00:05:18.100
dominik: wie ein Standard-Lib-Modul, das ist aber nicht gut, mach das mal anders.

00:05:18.100 --> 00:05:20.100
dominik: Und das ist natürlich hilfreicher irgendwie.

00:05:19.000 --> 00:05:23.000
jochen: Und das ist natürlich hilfreicher irgendwie.

00:05:20.100 --> 00:05:21.100
dominik: Ja.

00:05:23.000 --> 00:05:46.000
jochen: Ja.

00:05:23.100 --> 00:05:50.100
dominik: Ja, klar, das ist richtig, da hast du ein ganzes Bericht und ich bin auch verdrunken

00:05:46.000 --> 00:05:52.000
jochen: Ja, das ist richtig, da ist eine ganze Menge jetzt für die Anfänger auf der Hand dran gewesen, glaube ich.

00:05:50.100 --> 00:05:52.100
dominik: gewesen, glaube ich.

00:05:52.000 --> 00:06:03.000
jochen: Ja, ansonsten, genau, ich weiß gerade nicht, ob noch irgendwas zu lesen ist, wir machen dazu, wir machen zu 3.13 auf jeden Fall auch noch eine Episode, denke ich, dann können wir das mal alles zusammentragen.

00:05:52.100 --> 00:05:57.100
dominik: Ja, ansonsten, genau, ich weiß gar nicht, ich habe noch irgendwas zu lesen, wir machen

00:05:57.100 --> 00:06:02.100
dominik: dazu, wir machen zum 3.13 auf jeden Fall auch ein Netto-Summer, dann kann man da was zusammen

00:06:02.100 --> 00:06:03.100
dominik: tragen.

00:06:03.000 --> 00:06:07.000
jochen: Ja, ansonsten, was war noch?

00:06:03.100 --> 00:06:06.100
dominik: Ja, ansonsten, was war noch?

00:06:06.100 --> 00:06:10.100
dominik: Django 5.1 gibt es auch irgendwie jetzt.

00:06:07.000 --> 00:06:10.000
jochen: Django 5.1 gibt es auch, irgendwie jetzt.

00:06:10.000 --> 00:06:20.000
jochen: Das war, mäh, was, da war auch, also nichts, was ich mir jetzt so spontan in Erinnerung geblieben wäre, daher.

00:06:10.100 --> 00:06:17.100
dominik: Das war, nee, das, da war auch, also nichts, was ich mir jetzt so spontan gedrungen wäre

00:06:17.100 --> 00:06:18.100
dominik: daher.

00:06:18.100 --> 00:06:19.100
dominik: Ja.

00:06:19.100 --> 00:06:39.100
dominik: Oh, wir haben da schon drüber gesprochen, glaube ich, wir haben schon drüber gesprochen,

00:06:20.000 --> 00:06:35.000
jochen: Ja.

00:06:35.000 --> 00:06:48.000
jochen: Oh, wir haben da schon drüber gesprochen, glaube ich, wir haben schon drüber gesprochen, diese Query-String-Geschichten und so, brauchen wir nicht nochmal, ja, ich habe mir die News nicht aufgeschrieben, aber ich ...

00:06:39.100 --> 00:06:46.100
dominik: diese Korrektionsgeschichte, brauchen wir nicht nochmal, ja, ich habe mir die News nicht

00:06:46.100 --> 00:06:53.100
dominik: mehr vorgestellt, aber ich glaube, wir haben ja schon drüber gesprochen, dass es ja auch

00:06:48.000 --> 00:06:54.000
jochen: Ja, ja, das ist ja auch was Gutes, genau, würde ich auch sagen.

00:06:53.100 --> 00:07:00.100
dominik: was Gutes gibt, wenn man sich darauf verlassen kann, dass man jetzt weiß, wie es funktioniert,

00:06:54.000 --> 00:06:59.000
jochen: Dass man sich darauf verlassen kann, dass das halt, was man jetzt weiß, wie es funktioniert, dass es auch so bleibt.

00:06:59.000 --> 00:07:20.000
jochen: Ja, aber ich hätte noch eine Überleitung zu einer ganz interessanten Frage vielleicht, wenn wir jetzt hier schon eigentlich mit den News mehr oder weniger am Ende sind, also ich weiß nicht, ob ihr noch was habt, ich hätte jetzt nur noch irgendwie, es gibt neue LLM-Modelle, sowas wie ONE oder, genau, es gibt neue, probiert es mal wieder aus, es ist mal wieder ...

00:07:00.100 --> 00:07:02.100
dominik: dass es auch so bleibt.

00:07:02.100 --> 00:07:08.100
dominik: Ja, aber ich hätte noch eine Überleitung zu einer ganz interessanten Frage vielleicht,

00:07:08.100 --> 00:07:14.100
dominik: wenn wir jetzt hier schon eigentlich mit den News-Meldungen am Ende sind, also ich weiß

00:07:14.100 --> 00:07:18.100
dominik: nicht, ich probiere es mal wieder aus, mal wieder.

00:07:18.100 --> 00:07:31.100
dominik: Also O1 Preview ist ja aber trotzdem auch noch new und das ist, also ich höre, das ist

00:07:20.000 --> 00:07:23.000
jochen: Ja.

00:07:23.000 --> 00:07:32.000
jochen: Das, ja, das ...

00:07:31.100 --> 00:07:32.100
dominik: besser als Cloud wieder.

00:07:32.000 --> 00:07:54.000
jochen: Ja, also bisher, also genau, ich würde sagen, also diese ganze Artifaktsnummer, ich habe jetzt in letzter Zeit häufig, Claude, also das Chat-Interface von Anthropic verwendet, weil das halt einfach für Code-Geschichten oft ein bisschen besser war als GPT-4.

00:07:32.100 --> 00:07:38.100
dominik: Ja, also bisher, also genau, ich würde sagen, also diese ganze Artifakts-Nummer, ich habe

00:07:38.100 --> 00:07:46.100
dominik: jetzt in letzter Zeit häufig Cloud, also das Chat-Interface von Anthropic verwendet, weil

00:07:46.100 --> 00:07:53.100
dominik: das halt einfach für Code-Geschichten auch ein bisschen besser war als DeepStream Pro.

00:07:53.100 --> 00:08:00.100
dominik: Und ja, aber jetzt inzwischen, also ich weiß nicht genau, ich habe es noch nicht wirklich

00:07:54.000 --> 00:08:09.000
jochen: Und, ja, aber jetzt inzwischen, also ich weiß nicht genau, ich habe es noch nicht wirklich ausprobiert, ehrlich gesagt, weil es ja auch gerade erst rausgekommen ist, aber das soll halt sich dann auch nochmal wieder ein bisschen besser drüber sein.

00:08:00.100 --> 00:08:04.100
dominik: ausprobiert, ehrlich gesagt, weil es ja auch gerade erst rausgekommen ist, aber das soll

00:08:04.100 --> 00:08:09.100
dominik: vielleicht auch mal wieder ein bisschen besser drüber sein.

00:08:09.000 --> 00:08:19.000
jochen: Also, ich finde es jetzt schon super alles, also das ist auch, das ganz normale GPT-4-O und so, das war auch schon super und die Anthropic-Dinger fand ich auch total klasse, also ich bin eigentlich sehr zufrieden.

00:08:09.100 --> 00:08:15.100
dominik: Also ich finde es jetzt schon super alles, also das ganz normale GTV-O, das war auch

00:08:15.100 --> 00:08:18.100
dominik: schon super und Anthropic-Dinger waren ja auch total klasse.

00:08:18.100 --> 00:08:24.100
dominik: Ja, apropos Anthropic, ist das ein gutes Zeichen, wenn ein Chief Machine Learning Engineer im

00:08:19.000 --> 00:08:26.000
jochen: Ist das ein gutes Zeichen, wenn ein Maschinen-Learning-Engineer/Mensch Anthropic nicht kennt?

00:08:24.100 --> 00:08:25.100
dominik: Mensch Anthropic nicht kennt?

00:08:25.100 --> 00:08:30.100
dominik: Das ist ein schlechtes Zeichen, würde ich sagen, ja, wie kann das denn sein?

00:08:26.000 --> 00:08:42.000
jochen: Das wäre ein schlechtes Zeichen, würde ich meinen, ja, wie kann das denn sein? Also gut, ich meine, Maschinen-Learning ist halt ein großes Feld, also du kannst dich ja auch in irgendwas spezialisieren oder in einem ganz anderen Feld irgendwas machen, mit LLMs nie irgendwas zu tun haben, aber ja gut.

00:08:30.100 --> 00:08:33.100
dominik: Also gut, weil Machine Learning ist halt ein großes Feld.

00:08:33.100 --> 00:08:38.100
dominik: Ja, du kannst dich auch in irgendwas spezialisieren oder in einem ganz anderen Feld irgendwas

00:08:38.100 --> 00:08:42.100
dominik: machen, mit LLMs nie irgendwas zu tun haben, aber ja.

00:08:42.000 --> 00:08:45.000
jochen: Ja, das war schon, ging schon um LLMs und so.

00:08:42.100 --> 00:08:44.100
dominik: Ja, also es ging schon um LLMs und so.

00:08:44.100 --> 00:08:45.100
dominik: Ja.

00:08:45.000 --> 00:08:47.000
jochen: Ja.

00:08:45.100 --> 00:08:48.100
dominik: Tja, ja gut.

00:08:47.000 --> 00:08:49.000
jochen: Ja gut.

00:08:48.100 --> 00:08:57.100
dominik: War eigentlich eine gute Idee, ich bin gespannt, also O1, ich finde es echt very nice.

00:08:49.000 --> 00:08:51.000
jochen: Ja.

00:08:51.000 --> 00:08:58.000
jochen: War eigentlich ein guter Anspruch, ich bin gespannt, also O1, ich finde es echt very nice.

00:08:57.100 --> 00:09:05.100
dominik: Hilft, also es ist so ein bisschen fehlerfreier bei Coding-Ding und so ein bisschen deeperes

00:08:58.000 --> 00:09:09.000
jochen: Es ist so ein bisschen fehlerfreier bei Coding-Dingen und so ein bisschen deeperes Knowledge und es macht echt viel Spaß, diesen Gedankengang zuzugucken.

00:09:05.100 --> 00:09:09.100
dominik: Knowledge und es macht sehr viel Spaß, diesem Gedankengang zuzugucken.

00:09:09.000 --> 00:09:16.000
jochen: Und das, was ja auch noch, das ist aber schon bei 4.0 drin, ist halt, dass du ein Gedächtnis hast, dir braucht.

00:09:09.100 --> 00:09:15.100
dominik: Und das, was ja auch neu, das ist aber schon bei 4.0 drin, ist halt, dass du ein Gedächtnis

00:09:15.100 --> 00:09:16.100
dominik: hast jetzt auch.

00:09:16.000 --> 00:09:20.000
jochen: Ja, was sie da so nennen, ich meine, ich.

00:09:16.100 --> 00:09:19.100
dominik: Ja, oder was sie das so nennen, ich weiß nicht.

00:09:19.100 --> 00:09:23.100
dominik: Doch, doch, das ist schon, das funktioniert auch und man muss sich halt überlegen, ob

00:09:20.000 --> 00:09:28.000
jochen: Das ist schon, das funktioniert auch unter der, man muss sich ja überlegen, ob man möchte, dass das gespeichert wird, was da so drüber spricht.

00:09:23.100 --> 00:09:27.100
dominik: man möchte, dass das gespeichert wird, was man da bespricht.

00:09:27.100 --> 00:09:28.100
dominik: Ja.

00:09:28.000 --> 00:09:30.000
jochen: Ja.

00:09:28.100 --> 00:09:34.100
dominik: Aber vor allen Dingen ist das gar nicht so schlecht, weil, ja, interesting.

00:09:30.000 --> 00:09:33.000
jochen: Aber vor allem ist das gar nicht so schlecht bei dir, also ja.

00:09:33.000 --> 00:09:34.000
jochen: Ja.

00:09:34.000 --> 00:09:35.000
jochen: Interesting.

00:09:34.100 --> 00:09:41.100
dominik: Ja, also wenn man jetzt, wenn man jetzt eine LLM-Tool zum Beispiel benutzt, aber das ist

00:09:35.000 --> 00:09:44.000
jochen: Ja, ich meine, also wenn man jetzt LLMs über die Kommandosahle mit dem LLM-Tool zum Beispiel benutzt, dann hat man das ja auch irgendwie, das ist ja lokal, der SQLite, ich weiß nicht.

00:09:41.100 --> 00:09:44.100
dominik: ja auch irgendwie, das ist ja lokal, der SQLite, ich weiß nicht.

00:09:44.000 --> 00:09:48.000
jochen: Ja, ist auch immer die Frage, wie möchte man dir das hier eigentlich zeigen, oder?

00:09:44.100 --> 00:09:47.100
dominik: Da ist auch immer die Frage, man kann ja auch mal einen Bericht zeigen.

00:09:47.100 --> 00:09:51.100
dominik: Ja, also ich frage tatsächlich so nach so Morgenroutinen oder sowas und sage dann halt

00:09:48.000 --> 00:09:59.000
jochen: Ja, ich mache das nicht so nach so einer Morgenroutine oder so, sondern sage halt so, hey, was ich denn so mache und dann steckt das Ding mir halt so Dinge vor, das macht mir so Rituale und so, ich finde es sehr lustig, das funktioniert toll.

00:09:51.100 --> 00:09:55.100
dominik: so, hey, was ich denn so mache und dann steckt das Ding mir halt so Dinge vor, es macht mit

00:09:55.100 --> 00:09:58.100
dominik: mir so Rituale und so, ich finde das sehr lustig und das funktioniert toll.

00:09:58.100 --> 00:10:04.100
dominik: Und das ist, glaube ich, gar nicht so blöd, weil es einen so dabei hält, sich so selber

00:09:59.000 --> 00:10:06.000
jochen: Und das ist glaube ich gar nicht so blöd, weil es einen so dabei hält, sich so selber zu bedenken.

00:10:04.100 --> 00:10:05.100
dominik: zu entwickeln.

00:10:05.100 --> 00:10:06.100
dominik: Ja, cool.

00:10:06.000 --> 00:10:07.000
jochen: Ja, cool, okay.

00:10:06.100 --> 00:10:09.100
dominik: Das kann man natürlich auch mit anderen Quellen machen, das ist nicht, dass man jetzt irgendwie

00:10:07.000 --> 00:10:13.000
jochen: Mit anderen Cranes macht man sich das ja irgendwie so ein Eiferbrötchen, aber es geht damit sogar relativ gut.

00:10:09.100 --> 00:10:13.100
dominik: so einen AI verbrüchte, aber es geht damit sogar relativ cool.

00:10:13.000 --> 00:10:20.000
jochen: Ja, genau, ansonsten würde ich nämlich Django irgendwie mal kurz zu einer Überleitung nutzen, da wir jetzt sowieso nicht so viel News haben.

00:10:13.100 --> 00:10:18.100
dominik: Ja, genau, ansonsten würde ich den Django irgendwie mal kurz zur Überleitung benutzen,

00:10:18.100 --> 00:10:21.100
dominik: da wir jetzt sowieso nicht so viel Lust haben.

00:10:20.000 --> 00:10:29.000
jochen: Ich mache gerade ein neues Projekt, weil irgendwie ich prokrastiniere so gerade die Dinge, die ich eigentlich machen sollte und naja, wer kann das nicht.

00:10:21.100 --> 00:10:25.100
dominik: Ich mache gerade ein neues Projekt, weil ich fasziniert bin, wie viele Dinge ich eigentlich

00:10:25.100 --> 00:10:28.100
dominik: machen sollte und naja, wer kann das nicht.

00:10:28.100 --> 00:10:36.100
dominik: Und da dachte ich, ah, plötzlich, genau, der New Repository Button.

00:10:29.000 --> 00:10:42.000
jochen: Und da dachte ich, ah, plötzlich, genau, der New Repository Button bei GitHub, der wird irgendwie immer so shiny und fängt an zu leuchten und dann denkt man sich, ah, es geht nicht anders, ich muss draufdrücken.

00:10:36.100 --> 00:10:38.100
dominik: Ich brauche jetzt meine NeoWeapon-Config.

00:10:38.100 --> 00:10:41.100
dominik: Ja, und dann fängt er zu leuchten und dann denkt man sich, ah, es geht nicht anders,

00:10:41.100 --> 00:10:44.100
dominik: ich muss draufdrücken und dann ist es halt man wie immer.

00:10:42.000 --> 00:10:45.000
jochen: Und dann habe ich das auch mal wieder gemacht.

00:10:44.100 --> 00:10:54.100
dominik: Und genau, ich bin nämlich gerade dabei, irgendwie mal meine Werbungsunterlagen, bzw.

00:10:45.000 --> 00:10:59.000
jochen: Und genau, ich bin nämlich gerade dabei, irgendwie mal meine Bewerbungsunterlagen beziehungsweise so CV und so Zeugs irgendwie auf einer Webseite zu, weil ich hätte das immer so in Textfiles,

00:10:54.100 --> 00:10:58.100
dominik: so CD und so Zeugs irgendwie auf der Webseite zu, weil ich hätte das immer so in einem

00:10:58.100 --> 00:11:02.100
dominik: Text file, da habe ich fünf unterschiedliche Varianten, die alle nicht aktuell sind und

00:10:59.000 --> 00:11:05.000
jochen: aber dann habe ich fünf unterschiedliche Varianten, die alle nicht aktuell sind und irgendwie für unterschiedliche Zwecke gebraucht wurden.

00:11:02.100 --> 00:11:05.100
dominik: irgendwie für unterschiedliche Zwecke gebraucht wurden.

00:11:05.000 --> 00:11:12.000
jochen: Und dann denke ich mir so, naja, welches nehme ich denn jetzt, dann weiß ich es nicht und dann denke ich mir, ach, ich müsste mal, und, ah, alles schrecklich und warum packe ich das nicht einfach auf eine Webseite, das ist doch eigentlich ganz gut.

00:11:05.100 --> 00:11:07.100
dominik: Da denke ich mir so, naja, gut, welches nehme ich denn jetzt, dann eine weitere Flicke und

00:11:07.100 --> 00:11:10.100
dominik: dann denke ich mir, ah, die müssen wir, und ah, alles schrecklich und einen Baum packe

00:11:10.100 --> 00:11:12.100
dominik: ich jetzt nicht einfach auf der Webseite.

00:11:12.000 --> 00:11:17.000
jochen: Ja, ich habe auch mal ein paar gute Dinge gesehen, wo ich mir noch eine To-Do-Liste habe, wo draufsteht, dass ich mir ein Vorbild dran nehmen wollte.

00:11:12.100 --> 00:11:15.100
dominik: Ja, ich habe auch mal ein paar gute gesehen, wo ich mir noch eine To-Do-Liste habe, wo

00:11:15.100 --> 00:11:17.100
dominik: draufsteht, dass ich mir ein Vorbild daran nehmen wollte.

00:11:17.000 --> 00:11:19.000
jochen: Vielleicht ist das dein Zeug und vielleicht hast du es auch davon.

00:11:17.100 --> 00:11:19.100
dominik: Vielleicht ist das ja jetzt deins, Jochen, vielleicht hast du so hervorragend.

00:11:19.000 --> 00:11:25.000
jochen: Ja, das hört sich gut an. Das bestätigt mir natürlich, dass ich auf dem richtigen Weg bin.

00:11:19.100 --> 00:11:23.100
dominik: Ja, das hört sich gut an.

00:11:23.100 --> 00:11:26.100
dominik: Ja, also ich habe meine Sachen immerhin schon mal in Markdown stehen, das ist schon mal

00:11:25.000 --> 00:11:29.000
jochen: Ja, Markdown ist schon mal nicht so schlecht.

00:11:26.100 --> 00:11:27.100
dominik: ein Fortschritt.

00:11:27.100 --> 00:11:37.100
dominik: Ja, Markdown ist schon mal nicht so schlecht, ja.

00:11:29.000 --> 00:11:39.000
jochen: Ja, vielleicht sollten wir das auch nochmal erwähnen.

00:11:37.100 --> 00:11:46.100
dominik: Ja, oder mich, also das ist ja genau der Punkt, wir wollten halt so ein bisschen, vielleicht

00:11:39.000 --> 00:11:41.000
jochen: Ja.

00:11:41.000 --> 00:11:50.000
jochen: Können wir ja gerne auch mal machen.

00:11:46.100 --> 00:11:50.100
dominik: auch heute mal Werbung in eigener Sache machen, oder, können wir ja auch irgendwann mal, ja.

00:11:50.000 --> 00:11:52.000
jochen: Ja.

00:11:50.100 --> 00:11:53.100
dominik: Also ihr könnt uns mieten, buchen oder sowas, wenn ihr wollt.

00:11:52.000 --> 00:11:56.000
jochen: Wir sind prinzipiell käuflich, ja.

00:11:53.100 --> 00:11:55.100
dominik: Wir sind prinzipiell keuflich, ja.

00:11:55.100 --> 00:11:59.100
dominik: Ja, also für Projekte und ich glaube, wir machen, glaube ich, peißen.

00:11:56.000 --> 00:11:58.000
jochen: Um es mal.

00:11:58.000 --> 00:12:02.000
jochen: Ja.

00:11:59.100 --> 00:12:03.100
dominik: Ja.

00:12:03.100 --> 00:12:08.100
dominik: Genau, von ein bis drei Leuten könnt ihr da relativ viel Kappa bekommen, die auch gute

00:12:07.000 --> 00:12:09.000
jochen: Ja.

00:12:08.100 --> 00:12:09.100
dominik: Sachen machen, glaube ich.

00:12:09.000 --> 00:12:13.000
jochen: Oh ja, genau, wir könnten eigentlich mal mit dem Thema anfangen.

00:12:09.100 --> 00:12:13.100
dominik: Ja, ja, und uns kippen wir auch mal her.

00:12:13.000 --> 00:12:23.000
jochen: Ja.

00:12:13.100 --> 00:12:17.100
dominik: Oh ja, genau, wir können eigentlich mal mit dem Thema anfangen.

00:12:17.100 --> 00:12:24.100
dominik: Ja, listen, haben wir gesagt, Sequenzen, ja.

00:12:23.000 --> 00:12:29.000
jochen: Ja.

00:12:24.100 --> 00:12:29.100
dominik: Ja.

00:12:29.000 --> 00:12:33.000
jochen: Wie weit hast du denn gelesen, oder?

00:12:29.100 --> 00:12:40.100
dominik: Wie weit hast du denn gelesen, oder, Seite 39?

00:12:33.000 --> 00:12:36.000
jochen: Seite 39.

00:12:36.000 --> 00:12:43.000
jochen: Weil so wahnsinnig viel fand ich das.

00:12:40.100 --> 00:12:49.100
dominik: Weil so wahnsinnig viel von dir das, dann hast du wesentlich weitergelesen.

00:12:43.000 --> 00:12:45.000
jochen: Dann hast du wesentlich weiter gelesen.

00:12:45.000 --> 00:12:52.000
jochen: Ja, okay.

00:12:49.100 --> 00:12:57.100
dominik: Also das mit 59 geht auch weiter, wenn "list is not the answer" und dann geht es so ein

00:12:52.000 --> 00:12:58.000
jochen: Ja, okay.

00:12:57.100 --> 00:12:59.100
dominik: bisschen in die Diskussion darüber, wann man was machen möchte.

00:12:58.000 --> 00:13:00.000
jochen: Ja, okay.

00:12:59.100 --> 00:13:12.100
dominik: Also ich glaube, dass, ja, also wir müssen auf jeden Fall diese Trade-offs, finde ich,

00:13:00.000 --> 00:13:04.000
jochen: Ja, okay.

00:13:04.000 --> 00:13:06.000
jochen: Oh mein Gott.

00:13:06.000 --> 00:13:10.000
jochen: Ich bin so schlecht.

00:13:10.000 --> 00:13:12.000
jochen: Ja.

00:13:12.000 --> 00:13:26.000
jochen: Ja, also ich finde auch genau der grundsätzliche Blickwinkel drauf, den finde ich ganz interessant.

00:13:12.100 --> 00:13:17.100
dominik: glaube ich, ganz gut, wenn man was für eine Art und Weise von Sequenz haben möchte, vielleicht

00:13:17.100 --> 00:13:19.100
dominik: gar nicht so uninteressant.

00:13:19.100 --> 00:13:25.100
dominik: Ja, also ich finde auch genau, wenn der, also der grundsätzliche Blickwinkel darauf, weil

00:13:25.100 --> 00:13:29.100
dominik: wir hatten ja schon darüber geredet, da hatten wir eher den so, ja, wie implementiert man

00:13:26.000 --> 00:13:30.000
jochen: Wir hatten ja schon mal darüber geredet, da hatten wir eher den so, ja, wie implementiert man das eigentlich,

00:13:29.100 --> 00:13:33.100
dominik: das eigentlich, oder was sind so die algorithmischen Geschichten, die man damit machen kann, und

00:13:30.000 --> 00:13:33.000
jochen: oder was sind so die algorithmischen Geschichten, die man damit machen kann.

00:13:33.000 --> 00:13:38.000
jochen: Und hier sind so die grundsätzlichen Unterschiede zwischen den Dingen halt eher sowas wie,

00:13:33.100 --> 00:13:38.100
dominik: hier sind so die grundsätzlichen Unterschiede zwischen den Dingen halt eher sowas wie, ist

00:13:38.000 --> 00:13:48.000
jochen: ist es ein Container, oder ist es irgendwie flach, oder ist es irgendwie mutable oder immutable, sozusagen.

00:13:38.100 --> 00:13:47.100
dominik: es ein Container, oder ist es irgendwie flach, oder ist es irgendwie mutable oder immutable,

00:13:47.100 --> 00:13:51.100
dominik: sozusagen, an den Achsen orientiert sich das Ganze irgendwie, und das ist einfach ein anderer

00:13:48.000 --> 00:13:52.000
jochen: An den Achsen orientiert sich das Ganze irgendwie, und das ist einfach ein anderer Blickwinkel,

00:13:51.100 --> 00:13:54.100
dominik: Blickwinkel, und das fand ich eigentlich auch ganz interessant.

00:13:52.000 --> 00:13:54.000
jochen: und das fand ich eigentlich auch ganz interessant.

00:13:54.000 --> 00:13:56.000
jochen: Ja.

00:13:54.100 --> 00:14:07.100
dominik: Ja, jedenfalls, genau, also das ist halt irgendwie eine ganz fundamentale Geschichte, und der

00:13:56.000 --> 00:14:04.000
jochen: Jedenfalls, genau, also, das ist halt irgendwie eine ganz fundamentale Geschichte.

00:14:04.000 --> 00:14:09.000
jochen: Und der Unterschied zwischen zum Beispiel Container und Flat ist halt einfach,

00:14:07.100 --> 00:14:11.100
dominik: Unterschied zwischen Container und Flat ist halt einfach, dass in einem Container sind

00:14:09.000 --> 00:14:14.000
jochen: dass in einem Container sind halt Referenzen auf Objekte drin, und da kann halt alles mögliche drin sein.

00:14:11.100 --> 00:14:14.100
dominik: halt Referenzen auf Objekte drin, und da kann halt alles mögliche drin sein, da kann ja

00:14:14.000 --> 00:14:20.000
jochen: Da kann ganzer Zoo, Baum, sonst was, Dings von irgendwie anderen Sachen, die da noch drin liegen, sein.

00:14:14.100 --> 00:14:20.100
dominik: bei Zoo, Raum, sonst was, Dings von irgendwie anderen Sachen, die da noch drin liegen, sein,

00:14:20.000 --> 00:14:25.000
jochen: Während, also, und das geht natürlich mit Liste, also mit Python List geht das,

00:14:20.100 --> 00:14:25.100
dominik: während, also das geht natürlich mit Liste, also mit Heighten List geht das, während

00:14:25.000 --> 00:14:35.000
jochen: während jetzt sowas wie, was halt auch eine Sequence ist, Array, enthält halt flach einfach nur die entsprechenden Werte.

00:14:25.100 --> 00:14:32.100
dominik: jetzt sowas wie, was halt auch eine Sequence ist, Array, enthält halt flach einfach nur

00:14:32.100 --> 00:14:39.100
dominik: die entsprechenden Werte. Heighten Header sind irgendwie die Daten, die da jetzt zukunftriert

00:14:35.000 --> 00:14:41.000
jochen: Halt ein Header mit irgendwie, wie sind die Daten dahinter jetzt strukturiert, und dann kommen halt einfach nur die Daten.

00:14:39.100 --> 00:14:45.100
dominik: sind, und dann kommen halt einfach nur die Daten. Und genau, das ist halt, das fand ich

00:14:41.000 --> 00:14:45.000
jochen: Und genau, das ist halt schon mal ein großer Unterschied.

00:14:45.000 --> 00:14:54.000
jochen: Das fand ich übrigens auch interessant, das habe ich nicht gewusst, dass Tuppel halt auch weniger Hauptsprecher belegen als die,

00:14:45.100 --> 00:14:53.100
dominik: übrigens auch interessant, dass ich nicht gewusst, dass Tuple halt auch weniger Hauptsprecher

00:14:53.100 --> 00:15:00.100
dominik: belegen als die, also Tuple sind noch ein bisschen schneller als Listen, weil das ist bei Listen

00:14:54.000 --> 00:15:01.000
jochen: also Tuppel sind immer ein bisschen schneller als Listen, weil das ist bei Listen halt so doppelt indirekt,

00:15:00.100 --> 00:15:05.100
dominik: halt so doppelt indirekt, weil es sich ja auch ändern kann, und bei Tuple nur einmal indirekt,

00:15:01.000 --> 00:15:05.000
jochen: weil es sich ja auch ändern kann, und bei Tuppel nur einmal indirekt.

00:15:05.000 --> 00:15:08.000
jochen: Jetzt habe ich die Stelle nicht mehr, wo das...

00:15:05.100 --> 00:15:17.100
dominik: weil sonst ist die Stelle nicht mehr.

00:15:08.000 --> 00:15:17.000
jochen: [Stille]

00:15:17.000 --> 00:15:19.000
jochen: Ja.

00:15:17.100 --> 00:15:33.100
dominik: Ja.

00:15:19.000 --> 00:15:33.000
jochen: [Stille]

00:15:33.000 --> 00:15:35.000
jochen: Ja.

00:15:33.100 --> 00:15:47.100
dominik: Ja.

00:15:35.000 --> 00:15:47.000
jochen: [Stille]

00:15:47.000 --> 00:15:49.000
jochen: Ja.

00:15:47.100 --> 00:15:57.100
dominik: Ja.

00:15:49.000 --> 00:15:57.000
jochen: [Stille]

00:15:57.000 --> 00:15:59.000
jochen: Ja, also normalerweise...

00:15:57.100 --> 00:16:05.100
dominik: Ja, also, mal sagen.

00:15:59.000 --> 00:16:00.000
jochen: [Stille]

00:16:00.000 --> 00:16:02.000
jochen: Genau, 8 byte, ja.

00:16:02.000 --> 00:16:05.000
jochen: [Stille]

00:16:05.000 --> 00:16:12.000
jochen: Achso, wenn du das Python-Objekt, da hast du normalerweise, du hast einmal einen RefCount,

00:16:05.100 --> 00:16:11.100
dominik: Achso, wenn du das Heighten Objekt, ja, da hast du normalerweise, du hast einmal den

00:16:11.100 --> 00:16:21.100
dominik: Red Count, der Typ und die Sprecheradresse oder sowas, genau, also den Sprecher.

00:16:11.320 --> 00:16:14.320
johannes: Du hast so einen Tag drin und so einen Typ und noch ...

00:16:12.000 --> 00:16:19.000
jochen: den Typ und die Speicheradresse oder sowas, also den Pointer.

00:16:14.320 --> 00:16:18.320
johannes: und dann den Pointer.

00:16:18.320 --> 00:16:20.320
johannes: Und hast du nicht auch noch einen Reference Count drin?

00:16:19.000 --> 00:16:21.000
jochen: [Stille]

00:16:20.320 --> 00:16:22.320
johannes: Auch noch ...

00:16:21.000 --> 00:16:29.000
jochen: Ja, genau, also ich meine, das minimale Python-Objekt ist ein Float, oder Int, ich weiß nicht, ob es genau gleich ist.

00:16:21.100 --> 00:16:28.100
dominik: Ja, genau, also ich meine, das minimale Heighten Objekt ist ein Float, oder Interface, ich

00:16:22.320 --> 00:16:25.320
johannes: Also es sind irgendwie 20 oder 24 Byte, habe ich im Kopf.

00:16:25.320 --> 00:16:37.320
johannes: Ja, genau so was habe ich im Kopf.

00:16:28.100 --> 00:16:31.100
dominik: weiß nicht, ob es genau gleich ist, Float, aber ich bin mir ziemlich sicher, dass das

00:16:29.000 --> 00:16:34.000
jochen: Float, da bin ich mir aber ziemlich sicher, dass das das kleinste mögliche Python-Objekt ist,

00:16:31.100 --> 00:16:36.100
dominik: das kleinste mögliche Heighten Objekt ist, und das hat glaube ich 24 Byte, weil das ist

00:16:34.000 --> 00:16:43.000
jochen: und das hat, glaube ich, 24 byte, weil das ist halt genau irgendwie der Wert, RefCount.

00:16:36.100 --> 00:16:42.100
dominik: halt genau irgendwie der Wert, Red Count.

00:16:39.320 --> 00:16:41.320
johannes: Das ist sogar inline, oder?

00:16:41.320 --> 00:16:49.320
johannes: Bei Float ist es sogar inline, oder?

00:16:42.100 --> 00:16:52.100
dominik: Ja, du meinst bei kleinen Werten, oder?

00:16:43.000 --> 00:16:49.000
jochen: Ja, du meinst bei kleinen Werten, oder?

00:16:49.000 --> 00:16:52.000
jochen: [Stille]

00:16:49.320 --> 00:16:51.320
johannes: Da hast du keine Referenz auf irgendeine andere Speicherzelle,

00:16:51.320 --> 00:16:53.320
johannes: sondern da ist der Float einfach direkt drin.

00:16:52.000 --> 00:16:58.000
jochen: Ne, ne, genau, das ist einfach direkt, genau, das ist nur der Wert direkt, der RefCount und der Typ.

00:16:52.100 --> 00:16:57.100
dominik: Ne, ne, genau, das ist einfach direkt, genau, das ist nur der Wert direkt, der Red Count

00:16:53.320 --> 00:17:03.320
johannes: Ja, klar. Für im Grunde nur 8-Byte-Speicher.

00:16:57.100 --> 00:17:03.100
dominik: und der Typ, aber auch das sind schon halt 24 Byte, also.

00:16:58.000 --> 00:17:02.000
jochen: Aber auch das sind schon halt 24 byte, also...

00:17:02.000 --> 00:17:04.000
jochen: [Stille]

00:17:03.100 --> 00:17:06.100
dominik: Ja, genau.

00:17:03.320 --> 00:17:05.320
johannes: Hast du schon 24-Byte-Speicher überhaupt.

00:17:04.000 --> 00:17:07.000
jochen: Ja, genau, also das...

00:17:06.100 --> 00:17:24.100
dominik: Also das, ja, das ist richtig, ja, ok.

00:17:06.320 --> 00:17:09.320
johannes: Aber die Größe ist ja gleich, egal ob du einen Tuple oder eine Liste hast.

00:17:07.000 --> 00:17:11.000
jochen: [Stille]

00:17:09.320 --> 00:17:17.320
johannes: Aber die freien Elemente, das hast du beim Tuple natürlich nicht.

00:17:11.000 --> 00:17:13.000
jochen: Ja, das ist richtig.

00:17:13.000 --> 00:17:14.000
jochen: [Stille]

00:17:14.000 --> 00:17:15.000
jochen: Ja, okay.

00:17:15.000 --> 00:17:24.000
jochen: [Stille]

00:17:17.320 --> 00:17:20.320
johannes: Beim Tuple sagst du, hier, ich brauche 7 Stück

00:17:20.320 --> 00:17:22.320
johannes: und dann kriegst du 7 Stück und nicht 8 und nicht 16

00:17:22.320 --> 00:17:24.320
johannes: und auch nicht eine andere Anzahl.

00:17:24.000 --> 00:17:25.000
jochen: Ja.

00:17:24.100 --> 00:17:27.100
dominik: Ja, und du kannst halt, also, vielleicht besser Optimierung machen, weil du immer genau weißt,

00:17:25.000 --> 00:17:53.000
jochen: [Stille]

00:17:25.320 --> 00:17:28.320
johannes: Ja, okay. Aber du hast natürlich einen Virtual Table, hast du immer noch ...

00:17:27.100 --> 00:17:30.100
dominik: wie lang es ist, weil du ja schon weißt, was los ist, weil du das nicht mehr verändern

00:17:28.320 --> 00:17:47.320
johannes: Ja, weiß nicht, ob das der große Unterschied ist.

00:17:30.100 --> 00:17:34.100
dominik: kannst, und du kannst diese ganzen Methoden-Dinger weg, und den Overhead weglassen für, ich muss

00:17:34.100 --> 00:17:36.100
dominik: da was reinbasteln oder rausnehmen.

00:17:36.100 --> 00:17:50.100
dominik: Ja, so dürft ihr nicht so viel ausmachen, ja.

00:17:48.320 --> 00:17:50.320
johannes: Aber, ja.

00:17:50.100 --> 00:17:55.100
dominik: Ja, ok, dann bitte.

00:17:50.320 --> 00:17:58.320
johannes: So, jetzt Jochen, jetzt erleuchte uns.

00:17:53.000 --> 00:17:55.000
jochen: Ha! Okay, ich hab's doch gefunden.

00:17:55.000 --> 00:17:58.000
jochen: Das war komplizierter und schwieriger, als ich gedacht hätte.

00:17:55.100 --> 00:17:58.100
dominik: Einmal zurück spulen, ja.

00:17:58.000 --> 00:18:06.000
jochen: Ich dachte gerade schon, ich hab schon irgendwie, dachte schon, wahrscheinlich hab ich einfach irgendwie Dinge herbeihalutioniert und...

00:17:58.100 --> 00:18:04.100
dominik: Ich dachte gerade schon, ich hab schon irgendwie, ich dachte schon, wahrscheinlich haben die

00:17:58.320 --> 00:18:03.320
johannes: Was ist denn dir gezweifelt?

00:18:03.320 --> 00:18:07.320
johannes: Oh, Jochen.

00:18:04.100 --> 00:18:14.100
dominik: einfach irgendwie, wie gesagt, halluziniert, aber nein, also genau, ja, manchmal weiß

00:18:06.000 --> 00:18:09.000
jochen: Aber nein!

00:18:07.320 --> 00:18:11.320
johannes: Bist du auch ein LLM, Jochen?

00:18:09.000 --> 00:18:16.000
jochen: Also, genau, ja, manchmal, man weiß es nicht so genau.

00:18:12.320 --> 00:18:14.320
johannes: * lacht *

00:18:14.100 --> 00:18:17.100
dominik: man es nicht so genau.

00:18:14.320 --> 00:18:28.320
johannes: Ah.

00:18:16.000 --> 00:18:25.000
jochen: Genau, die Referenzen zu den Items in einem Tuppel sind halt in einem Array, die sind halt in einem Array in dem Tuppelsdruck drin.

00:18:17.100 --> 00:18:23.100
dominik: Genau, die Referenzen zu den Items in einem Tuple sind halt in einem Array, die sind halt

00:18:23.100 --> 00:18:32.100
dominik: in einem Array in dem Tuples-Tuple drin, aber in der Liste sind quasi, also die Liste hält

00:18:25.000 --> 00:18:37.000
jochen: Aber in der Liste sind quasi, also die Liste hält einen Pointer zu einem Array von Referenzen, die irgendwo anders sind.

00:18:28.320 --> 00:18:30.320
johannes: * lacht *

00:18:30.320 --> 00:18:46.320
johannes: Ja, okay.

00:18:32.100 --> 00:18:38.100
dominik: einen Pointer zu einem Array von Referenzen, die irgendwo anders sind, weil das Problem

00:18:37.000 --> 00:18:45.000
jochen: Weil das Problem ist halt, wenn die Liste größer wird, als sie eigentlich quasi als momentan alloziert ist an den Hauptspeicher,

00:18:38.100 --> 00:18:44.100
dominik: ist halt, wenn die Liste größer wird, als sie eigentlich quasi als momentan alloziert

00:18:44.100 --> 00:18:48.100
dominik: ist, an den Aufschweiter, dann muss man die ganzen Kram reallozieren können, und das

00:18:45.000 --> 00:18:51.000
jochen: dann muss man den ganzen Kram reallozieren können und das geht halt nur, wenn du das...

00:18:46.320 --> 00:18:51.320
johannes: Ja, das ist dieses Resizing.

00:18:48.100 --> 00:18:54.100
dominik: macht halt nur, wenn du, genau, genau, das macht halt nochmal einen Interaktionsschritt

00:18:51.000 --> 00:18:55.000
jochen: Genau, genau, und das macht halt nochmal einen Interaktionsschritt erforderlich.

00:18:51.320 --> 00:18:55.320
johannes: Okay, okay, okay.

00:18:54.100 --> 00:18:58.100
dominik: erforderlich, und bei dem Tuple weißt du halt, ja, das passiert halt nie, ich kann einfach

00:18:55.000 --> 00:18:57.000
jochen: Und bei einem Tuppel weißt du halt, ja, das passiert halt nie.

00:18:55.320 --> 00:18:57.320
johannes: Okay, das ist quasi so ein bisschen wie das,

00:18:57.000 --> 00:19:00.000
jochen: Ich kann einfach ein Array von den Werten nehmen.

00:18:57.320 --> 00:19:00.320
johannes: was wir eben auch schon beim Float angesprochen haben, oder?

00:18:58.100 --> 00:19:02.100
dominik: ein Array von den Werten legen, also von den Referenzen.

00:19:00.000 --> 00:19:02.000
jochen: Also von den Referenzen, aber...

00:19:00.320 --> 00:19:03.320
johannes: Bei einem Pi-Object kann ein Float direkt drin sein

00:19:02.000 --> 00:19:03.000
jochen: Ja.

00:19:02.100 --> 00:19:05.100
dominik: Ja.

00:19:03.000 --> 00:19:06.000
jochen: Ja.

00:19:03.320 --> 00:19:05.320
johannes: und dann hast du keine Referenz auf irgendwas.

00:19:05.320 --> 00:19:07.320
johannes: Bei einem String zum Beispiel geht es nicht.

00:19:07.320 --> 00:19:10.320
johannes: Bei einem String, das Pi-Object ist halt der Tag und der Typ

00:19:10.320 --> 00:19:14.320
johannes: und der RefCount und die Referenz auf die tatsächlichen Daten.

00:19:11.100 --> 00:19:12.500
dominik: Bitte.

00:19:12.000 --> 00:19:21.000
jochen: Ja.

00:19:12.500 --> 00:19:21.940
dominik: Ja.

00:19:14.320 --> 00:19:16.320
johannes: Und hier ist es genauso, oder?

00:19:16.320 --> 00:19:18.320
johannes: In einem Tuple kannst du es direkt drin haben

00:19:18.320 --> 00:19:21.320
johannes: und in einem Float kannst du es direkt anpassen.

00:19:21.000 --> 00:19:24.000
jochen: Ja.

00:19:21.320 --> 00:19:22.320
johannes: Das ist genauso, oder?

00:19:21.940 --> 00:19:24.780
dominik: Ja.

00:19:22.320 --> 00:19:24.320
johannes: In einem Tuple kannst du es direkt drin haben

00:19:24.000 --> 00:19:29.000
jochen: Ja.

00:19:24.320 --> 00:19:27.320
johannes: und in einer Liste brauchst du erst noch eine Referenz

00:19:24.780 --> 00:19:30.500
dominik: Ja.

00:19:27.320 --> 00:19:29.320
johannes: auf die tatsächlichen Daten,

00:19:29.000 --> 00:19:40.000
jochen: Genau.

00:19:29.320 --> 00:19:33.320
johannes: die dann wiederum halt in dem Fall eine Sequenz von Sachen sind.

00:19:33.320 --> 00:19:36.320
johannes: Im Tuple-Fall direkt die Sequenz der Sachen

00:19:36.320 --> 00:19:40.320
johannes: und im Listen-Fall eine Referenz auf eine Sequenz von Sachen.

00:19:40.000 --> 00:19:45.000
jochen: Ja.

00:19:40.180 --> 00:19:41.300
dominik: Ja.

00:19:40.320 --> 00:19:41.320
johannes: Okay.

00:19:41.300 --> 00:19:46.180
dominik: (lacht)

00:19:41.320 --> 00:19:43.320
johannes: Ja, okay, gut, das verstehe ich natürlich.

00:19:43.320 --> 00:19:46.320
johannes: Das ist ein Pointer-Aufruf mehr und Pointer-Aufrufe sind ja

00:19:45.000 --> 00:19:50.000
jochen: Das ist der Tod.

00:19:46.180 --> 00:19:48.180
dominik: Das ist der Tod.

00:19:46.320 --> 00:19:48.320
johannes: bei modernen Prozessoren so das Schlimmste,

00:19:48.180 --> 00:19:50.180
dominik: (lacht)

00:19:48.320 --> 00:19:50.320
johannes: was du machen kannst.

00:19:50.000 --> 00:19:54.000
jochen: Ja, es ist alles kein großer Unterschied wahrscheinlich praktisch.

00:19:50.180 --> 00:19:53.380
dominik: Ja, das ist alles kein großer Unterschied wahrscheinlich.

00:19:50.320 --> 00:19:51.320
johannes: Ja.

00:19:51.320 --> 00:19:59.320
johannes: Ja, müsste man mal einen Test machen.

00:19:53.380 --> 00:19:55.380
dominik: Aber ja.

00:19:54.000 --> 00:19:59.000
jochen: Aber ja.

00:19:55.380 --> 00:20:00.380
dominik: Ja.

00:19:59.000 --> 00:20:07.000
jochen: Ja.

00:19:59.320 --> 00:20:04.320
johannes: Es gibt ja durchaus Menschen, die sagen,

00:20:00.380 --> 00:20:08.580
dominik: Aha, okay.

00:20:04.320 --> 00:20:08.320
johannes: nur High-Performance-Computing ist sinnvolles Computing.

00:20:07.000 --> 00:20:12.000
jochen: Aha, okay.

00:20:08.320 --> 00:20:15.320
johannes: Ja, also ...

00:20:08.580 --> 00:20:11.980
dominik: Also, ist ja generell so, oder? Nur High Performances sind voll.

00:20:11.980 --> 00:20:15.980
dominik: Dieses casual irgendwie Slow Food irgendwie.

00:20:12.000 --> 00:20:31.000
jochen: Dieses casual irgendwie Slow Food irgendwie, ich schreibe meinen eigenen Sortieralgorithmus, das ist nicht gut.

00:20:15.320 --> 00:20:19.320
johannes: Ja, das geht gar nicht.

00:20:15.980 --> 00:20:18.980
dominik: Ich schreibe meinen eigenen Sortieralgorithmus.

00:20:18.980 --> 00:20:20.980
dominik: Das ist nicht gut.

00:20:19.320 --> 00:20:23.320
johannes: Es ist nur richtig sinnvoll, wenn du es richtig machst.

00:20:20.980 --> 00:20:21.980
dominik: Oh.

00:20:21.980 --> 00:20:31.980
dominik: Ja.

00:20:23.320 --> 00:20:26.320
johannes: Nee, aber es ist, also ich meine,

00:20:26.320 --> 00:20:31.320
johannes: es gibt ja so Leute, es gibt diesen Casey Muratori,

00:20:31.000 --> 00:20:32.000
jochen: Ja.

00:20:31.320 --> 00:20:33.320
johannes: der ist relativ bekannt,

00:20:31.980 --> 00:20:32.980
dominik: Ja.

00:20:32.000 --> 00:20:39.000
jochen: Ja, ja.

00:20:33.320 --> 00:20:35.320
johannes: der schlägt immer wieder auf mit solchen,

00:20:33.980 --> 00:20:39.980
dominik: Ja.

00:20:35.320 --> 00:20:39.320
johannes: der ist halt, der vertritt quasi diese extreme Position.

00:20:39.000 --> 00:20:52.000
jochen: Ja.

00:20:39.320 --> 00:20:43.320
johannes: Wenn du es nicht richtig machst und dann auch hier

00:20:39.980 --> 00:20:52.980
dominik: Ja.

00:20:43.320 --> 00:20:46.320
johannes: die SIMD-Inlines von den verschiedenen Prozessoren benutzt,

00:20:46.320 --> 00:20:48.320
johannes: dann hast du es eigentlich gar nicht richtig gemacht.

00:20:48.320 --> 00:20:50.320
johannes: Und das ist die Ursache allen Übels.

00:20:50.320 --> 00:20:52.320
johannes: Deshalb ist ein Computer heute so scheiße.

00:20:52.000 --> 00:20:59.000
jochen: Ja.

00:20:52.320 --> 00:20:54.320
johannes: Und das ist natürlich das eine Extrem.

00:20:52.980 --> 00:21:00.980
dominik: (lacht)

00:20:54.320 --> 00:20:57.320
johannes: Und das andere Extrem sind halt,

00:20:57.320 --> 00:21:00.320
johannes: na ja, so Menschen wie wir, die Python und TypeScript

00:21:00.320 --> 00:21:02.320
johannes: und JavaScript benutzen und sagen, komm,

00:21:00.980 --> 00:21:01.980
dominik: (lacht)

00:21:01.980 --> 00:21:03.980
dominik: Ja.

00:21:02.320 --> 00:21:06.320
johannes: Skriptsprache, Hauptsache das Entwickeln ist angenehm.

00:21:03.980 --> 00:21:06.980
dominik: Ne, warte.

00:21:06.000 --> 00:21:13.000
jochen: Das ist eigentlich ein Nehmer, ja.

00:21:06.320 --> 00:21:09.320
johannes: Und irgendwo dazwischen, ich meine,

00:21:06.980 --> 00:21:09.980
dominik: Ja.

00:21:09.320 --> 00:21:13.320
johannes: gelegentlich machen wir ja auch High-Performance-Sachen

00:21:09.980 --> 00:21:13.980
dominik: Ja, ja.

00:21:13.000 --> 00:21:16.000
jochen: Ja, ja.

00:21:13.320 --> 00:21:16.320
johannes: und da muss man dann halt zu Techniken greifen, ja.

00:21:13.980 --> 00:21:17.980
dominik: Die Frage ist, was High Performance eigentlich ist.

00:21:16.000 --> 00:21:40.000
jochen: Also ich weiß, was High Performance eigentlich hier ist, da gibt es ja vielleicht verschiedene Blickwinkel drauf.

00:21:16.320 --> 00:21:21.320
johannes: Nur, ja, gibt es auch verschiedene Blickwinkel,

00:21:17.980 --> 00:21:19.980
dominik: Da gibt es ja vielleicht verschiedene Blickwinkel drauf.

00:21:19.980 --> 00:21:20.980
dominik: Ja.

00:21:20.980 --> 00:21:48.980
dominik: Ja.

00:21:21.320 --> 00:21:24.320
johannes: wobei, sobald du halt in so Data-Bereiche reingehst,

00:21:24.320 --> 00:21:26.320
johannes: ja, und sobald es mehr als ein Megabyte ist,

00:21:26.320 --> 00:21:29.320
johannes: musst du schon dir zumindest Gedanken darüber machen,

00:21:29.320 --> 00:21:33.320
johannes: ob das sinnvoll ist, das einzel-elementweise zu verarbeiten

00:21:33.320 --> 00:21:35.320
johannes: oder ob du da nicht zumindest ein bisschen

00:21:35.320 --> 00:21:36.320
johannes: Batch-Verarbeitung machen kannst.

00:21:36.320 --> 00:21:39.320
johannes: Und je mehr es wird, umso mehr musst du darüber nachdenken.

00:21:39.320 --> 00:21:42.320
johannes: Aber in so einem Fall würde natürlich auch keiner von uns

00:21:40.000 --> 00:21:47.000
jochen: Ja.

00:21:42.320 --> 00:21:44.320
johannes: eine Python-Liste verwenden, oder?

00:21:44.320 --> 00:21:47.320
johannes: Also, ich meine, für numerische Daten

00:21:47.000 --> 00:21:50.000
jochen: Ja.

00:21:47.320 --> 00:21:49.320
johannes: oder für High-Performance-Daten würde ich nicht

00:21:49.320 --> 00:21:51.320
johannes: eine Python-Liste verwenden.

00:21:49.980 --> 00:21:51.980
dominik: Was denn dann?

00:21:50.000 --> 00:21:53.000
jochen: Was denn dann?

00:21:51.320 --> 00:21:55.320
johannes: Das ist ja eine sehr gute Frage zum Beispiel,

00:21:51.980 --> 00:21:57.980
dominik: Aha.

00:21:53.000 --> 00:21:56.000
jochen: Ja.

00:21:55.320 --> 00:21:56.320
johannes: die hat auch schon angesprochen.

00:21:56.000 --> 00:22:02.000
jochen: Aha.

00:21:56.320 --> 00:22:00.320
johannes: Array, das ist der erste Schritt auf dem Weg zur Effizienz

00:21:57.980 --> 00:22:04.980
dominik: Also, Import Array, Array.Array.

00:22:00.320 --> 00:22:03.320
johannes: und ist sogar in Python und pures Python und so weiter und so fort.

00:22:02.000 --> 00:22:05.000
jochen: Also, what array, array dot array?

00:22:03.320 --> 00:22:07.320
johannes: Genau, richtig.

00:22:04.980 --> 00:22:05.980
dominik: Ja, genau.

00:22:05.000 --> 00:22:18.000
jochen: Ja, genau.

00:22:05.980 --> 00:22:06.980
dominik: Genau.

00:22:07.320 --> 00:22:12.320
johannes: Das, die generelle Eigenschaft von so High-Performance-Sachen

00:22:07.980 --> 00:22:08.980
dominik: Aha.

00:22:09.980 --> 00:22:10.980
dominik: Ja.

00:22:12.320 --> 00:22:17.320
johannes: ist ja immer, dass man Komfort aufgibt für Geschwindigkeit.

00:22:16.980 --> 00:22:18.980
dominik: Ja.

00:22:17.320 --> 00:22:20.320
johannes: Und das ist generell so, ja.

00:22:18.000 --> 00:22:43.000
jochen: Ja.

00:22:20.320 --> 00:22:22.320
johannes: Und man kann das in beide Richtungen beliebig weit treiben.

00:22:22.320 --> 00:22:25.320
johannes: Man kann den Komfort komplett aufdrehen

00:22:25.320 --> 00:22:28.320
johannes: und dann halt sagen, hier, Typen sind egal

00:22:28.320 --> 00:22:31.320
johannes: und alle, ein Container kann alles enthalten

00:22:31.320 --> 00:22:35.320
johannes: und auch nichts und verschiedene Dinge und so weiter und so fort,

00:22:35.320 --> 00:22:36.320
johannes: so wie wir es in Python bei Listen haben.

00:22:36.320 --> 00:22:39.320
johannes: Und du kannst aber auch ganz ans andere Ende gehen und sagen,

00:22:39.320 --> 00:22:42.320
johannes: okay, SIMD und das muss im Speicher in der richtigen Stelle liegen

00:22:42.320 --> 00:22:46.320
johannes: und es muss byte-aligned sein und es muss so aufgebaut sein,

00:22:43.000 --> 00:22:58.000
jochen: Ja.

00:22:43.980 --> 00:22:44.980
dominik: Ja.

00:22:44.980 --> 00:22:46.980
dominik: Ja.

00:22:46.320 --> 00:22:48.320
johannes: dass die Cache-Lines zusammenpassen.

00:22:48.320 --> 00:22:51.320
johannes: Und das ist aber eine Skala dazwischen,

00:22:51.320 --> 00:22:53.320
johannes: so eine Sliding-Scale dazwischen.

00:22:53.320 --> 00:22:56.320
johannes: Du kannst das ein bisschen mal weiter in die eine Richtung drehen

00:22:56.320 --> 00:22:58.320
johannes: und ein bisschen weiter in die andere Richtung drehen.

00:22:58.000 --> 00:23:27.000
jochen: Ja.

00:22:58.320 --> 00:23:03.320
johannes: Und der erste Schritt, den du von Python-Listen wegmachen kannst,

00:23:03.320 --> 00:23:05.320
johannes: ist halt Array, Array.Array.

00:23:07.320 --> 00:23:10.320
johannes: Weil, das ist dann nicht mehr diese Indirektion,

00:23:10.320 --> 00:23:15.320
johannes: sondern es ist direkt eine Auflistung von Dingen,

00:23:12.980 --> 00:23:13.980
dominik: Ja.

00:23:13.980 --> 00:23:15.980
dominik: Ja.

00:23:15.320 --> 00:23:17.320
johannes: also eine Abfolge von Dingen,

00:23:17.320 --> 00:23:19.320
johannes: die auch direkt da drin gespeichert werden.

00:23:19.320 --> 00:23:23.320
johannes: Das bedeutet aber halt, dass die alle gleich sein müssen.

00:23:23.320 --> 00:23:25.320
johannes: Und da fällt schon der erste Komfortteil weg.

00:23:25.320 --> 00:23:27.320
johannes: Du musst vorher wissen, was du da rein tust.

00:23:27.000 --> 00:23:32.000
jochen: Ja.

00:23:32.000 --> 00:23:35.000
jochen: Okay.

00:23:35.000 --> 00:23:39.000
jochen: The cash line.

00:23:35.320 --> 00:23:38.320
johannes: Das braucht, glaube ich, auch eine eigene Episode,

00:23:38.320 --> 00:23:40.320
johannes: aber das ist eine Eigenschaft von Prozessoren.

00:23:39.000 --> 00:23:42.000
jochen: Ja.

00:23:40.320 --> 00:23:44.320
johannes: Wir haben ja eben schon gesagt, wenn du irgendwie einen Pointer aufrufst,

00:23:41.980 --> 00:23:42.980
dominik: Ja.

00:23:42.980 --> 00:23:44.980
dominik: Ja.

00:23:43.000 --> 00:23:48.000
jochen: Ja.

00:23:44.320 --> 00:23:46.320
johannes: dann ist das das Schlimmste, was du machen kannst,

00:23:46.320 --> 00:23:50.320
johannes: weil der Hauptspeicher eines Computers wesentlich langsamer ist

00:23:48.000 --> 00:23:51.000
jochen: Ja.

00:23:50.320 --> 00:23:52.320
johannes: als der Prozessor eines Computers.

00:23:52.320 --> 00:23:54.320
johannes: Das hat sich so entwickelt.

00:23:54.320 --> 00:23:56.320
johannes: In den 80ern und 90ern war es noch nicht so,

00:23:56.320 --> 00:23:58.320
johannes: da waren die irgendwie gleich schnell.

00:23:57.000 --> 00:24:12.000
jochen: Ja.

00:23:58.320 --> 00:24:01.320
johannes: Und dann sind die Prozessoren exponentiell schneller geworden

00:24:01.320 --> 00:24:04.320
johannes: und der Speicher ist halt nur quadratisch schneller geworden.

00:24:04.320 --> 00:24:08.320
johannes: Und dann waren die Prozessoren auf einmal eine Million Mal schneller

00:24:08.320 --> 00:24:11.320
johannes: als der Speicher und deshalb ist das das Problem, in dem wir leben.

00:24:10.980 --> 00:24:11.980
dominik: Ja.

00:24:11.320 --> 00:24:15.320
johannes: Da kommen jetzt Worte, die hat sicherlich jeder schon mal gehört.

00:24:11.980 --> 00:24:13.980
dominik: Ja.

00:24:12.000 --> 00:24:30.000
jochen: Ja.

00:24:15.320 --> 00:24:18.320
johannes: Jeder Prozessor hat irgendwie so einen L1-Cache.

00:24:18.320 --> 00:24:22.320
johannes: Das ist der Hauptspeicher, der ganz nah am Prozessor ist.

00:24:22.320 --> 00:24:24.320
johannes: Der ist noch fast genauso schnell wie der Prozessor selbst.

00:24:24.320 --> 00:24:27.320
johannes: Und dann gibt es den L2-Cache, der ist auf dem gleichen Prozessor

00:24:27.320 --> 00:24:32.320
johannes: da drauf, aber daneben und ist deshalb nicht mehr ganz so schnell.

00:24:30.000 --> 00:24:59.000
jochen: Ja.

00:24:32.320 --> 00:24:36.320
johannes: Also nur noch nur ein Zehntel so schnell wie der Prozessor.

00:24:36.320 --> 00:24:40.320
johannes: Und dann gibt es den L3-Cache bei den neuen Prozessoren.

00:24:39.980 --> 00:24:40.980
dominik: Ja.

00:24:40.320 --> 00:24:42.320
johannes: Der ist vielleicht auf dem gleichen Chip,

00:24:40.980 --> 00:24:42.980
dominik: Ja.

00:24:42.320 --> 00:24:46.320
johannes: aber nicht mehr auf dem gleichen Dial und ist noch mal zehn Mal langsamer.

00:24:46.320 --> 00:24:50.320
johannes: Und dann gibt es den Hauptspeicher und der ist noch mal tausend Mal langsamer.

00:24:50.320 --> 00:24:54.320
johannes: Und das ist eben so ein Trick, weil man weiß,

00:24:54.320 --> 00:24:56.320
johannes: es gibt was, das heißt Data Locality.

00:24:56.320 --> 00:25:01.320
johannes: Wenn ich mit einem Datum, mit einem Datenpunkt gearbeitet habe,

00:24:59.000 --> 00:25:04.000
jochen: Ja.

00:25:01.320 --> 00:25:03.320
johannes: dann werde ich vielleicht mit Datenpunkten,

00:25:03.320 --> 00:25:06.320
johannes: die in der Nähe gespeichert sind, arbeiten.

00:25:06.320 --> 00:25:08.320
johannes: So funktionieren diese Caches.

00:25:08.320 --> 00:25:13.320
johannes: Das heißt, die speichern eine kleine Speichermenge

00:25:08.980 --> 00:25:09.980
dominik: Ja.

00:25:09.980 --> 00:25:11.980
dominik: Ja.

00:25:13.320 --> 00:25:16.320
johannes: aus dem Hauptspeicher in den Prozessor rein.

00:25:16.320 --> 00:25:20.320
johannes: Und wenn ich dann tatsächlich mit dem danebenliegenden Datenpunkt

00:25:20.320 --> 00:25:23.320
johannes: arbeiten möchte, dann habe ich da den schnelleren Zugriff,

00:25:23.320 --> 00:25:26.320
johannes: weil der schon gecached ist.

00:25:26.320 --> 00:25:29.320
johannes: Und prinzipiell, wenn man alle Leistungen aus einem Prozessor

00:25:29.320 --> 00:25:32.320
johannes: rausholen möchte, dann muss man dafür sorgen,

00:25:32.320 --> 00:25:34.320
johannes: dass der Prozessor immer nur solche Sachen bearbeitet,

00:25:34.000 --> 00:25:37.000
jochen: Ja.

00:25:34.320 --> 00:25:38.320
johannes: die schon im Cache sind.

00:25:37.000 --> 00:25:57.000
jochen: Ja.

00:25:37.980 --> 00:25:38.980
dominik: Ja.

00:25:38.320 --> 00:25:40.320
johannes: Da muss man, genau, da gibt es Techniken,

00:25:38.980 --> 00:25:40.980
dominik: Ja.

00:25:40.320 --> 00:25:43.320
johannes: wie du dafür sorgen kannst, dass bestimmte von diesen Cache Lines,

00:25:43.320 --> 00:25:46.320
johannes: diese Caches sind in sogenannte Lines aufgeteilt.

00:25:46.320 --> 00:25:52.320
johannes: Das heißt, da sind immer 16 Byte drin oder 64 Byte.

00:25:52.320 --> 00:25:58.320
johannes: Also die werden natürlich größer, je weiter du nach draußen gehst.

00:25:57.000 --> 00:26:15.000
jochen: Ja.

00:25:58.320 --> 00:26:03.320
johannes: Ja, wenn du das versehentlich in den Cache lädst, ist auch schlecht.

00:26:03.320 --> 00:26:07.320
johannes: Wenn du diese Cache Lines immer wieder überschreibst, ist schlecht,

00:26:06.980 --> 00:26:07.980
dominik: Ja.

00:26:07.320 --> 00:26:09.320
johannes: wenn du immer wieder die gleiche Cache Lines, aber da sind wir jetzt

00:26:07.980 --> 00:26:09.980
dominik: Ja.

00:26:09.320 --> 00:26:14.320
johannes: natürlich wesentlich näher am Prozessor, als wir mit Python je hinkommen.

00:26:14.320 --> 00:26:18.320
johannes: Das Wichtige an der Stelle zu wissen ist,

00:26:15.000 --> 00:26:38.000
jochen: Ja.

00:26:18.320 --> 00:26:22.320
johannes: dass wenn wir im Hauptspeicher hin und her sprechen,

00:26:22.320 --> 00:26:24.320
johannes: dann ist das Potenzial was sehr Langsames,

00:26:24.320 --> 00:26:28.320
johannes: weil dieser Hauptspeicher erst in den Prozessor reingeholt werden muss,

00:26:28.320 --> 00:26:30.320
johannes: damit er da verarbeitet werden kann.

00:26:30.320 --> 00:26:38.320
johannes: Und das ist in Prozessorzeiten eine Ewigkeit.

00:26:35.980 --> 00:26:36.980
dominik: Ja.

00:26:36.980 --> 00:26:38.980
dominik: Ja.

00:26:38.000 --> 00:27:07.000
jochen: Ja.

00:26:38.320 --> 00:26:40.320
johannes: Genau, wenn du es in Register reinlädst,

00:26:40.320 --> 00:26:43.320
johannes: das ist quasi das, was im Prozessor ganz innen drin ist,

00:26:43.320 --> 00:26:46.320
johannes: das Register-File, das ist das Schnellste.

00:26:46.320 --> 00:26:47.320
johannes: Das ist in den Prozessor eingebaut.

00:26:47.320 --> 00:26:50.320
johannes: Und danach werden die Hierarchien, wird es in der Hierarchie immer

00:26:50.320 --> 00:26:53.320
johannes: um Faktor 10 oder 100 oder 1000 langsamer.

00:26:53.320 --> 00:26:55.320
johannes: Wenn du es jetzt also schaffst, dafür zu sorgen,

00:26:55.320 --> 00:26:59.320
johannes: dass deine Daten möglichst nah beieinander liegen,

00:26:59.320 --> 00:27:03.320
johannes: dann bedeutet das, dass wenn du die sequentiell verarbeitest,

00:27:03.320 --> 00:27:05.320
johannes: dass die dann schon näher am Prozessor dran sind

00:27:04.980 --> 00:27:05.980
dominik: Ja.

00:27:05.320 --> 00:27:08.320
johannes: und entsprechend schneller verarbeitet werden können,

00:27:05.980 --> 00:27:07.980
dominik: Ja.

00:27:07.000 --> 00:27:12.000
jochen: Ja.

00:27:08.320 --> 00:27:11.320
johannes: als wenn du für jeden Eintrag einmal in den Hauptspeicher springen musst

00:27:11.320 --> 00:27:13.320
johannes: und das komplett mal reinholen musst.

00:27:13.320 --> 00:27:15.320
johannes: Und das ist ja üblicherweise die Situation, die du hast,

00:27:15.320 --> 00:27:17.320
johannes: wenn du eine Python-Liste hast.

00:27:17.320 --> 00:27:20.320
johannes: Das ist das, weshalb diese doppelte Indirektion so langsam ist,

00:27:20.320 --> 00:27:23.320
johannes: weil du einmal zuerst die Liste der Referenzen abholen musst

00:27:23.320 --> 00:27:26.320
johannes: und dann nochmal die Referenz selbst.

00:27:26.320 --> 00:27:28.320
johannes: Und selbst wenn du da sequentiell durchgehst,

00:27:27.000 --> 00:27:30.000
jochen: Ja.

00:27:28.320 --> 00:27:31.320
johannes: können diese, sag ich mal, Second-Level-Referenzen,

00:27:30.000 --> 00:27:32.000
jochen: Ja.

00:27:31.320 --> 00:27:32.320
johannes: die können ja irgendwo liegen,

00:27:32.320 --> 00:27:35.320
johannes: wo halt gerade der Speicher hin alloziert wurde.

00:27:33.980 --> 00:27:34.980
dominik: Ja.

00:27:34.000 --> 00:27:45.000
jochen: Ja.

00:27:34.980 --> 00:27:36.980
dominik: Ja.

00:27:35.320 --> 00:27:37.320
johannes: Bei einem Array ist das aber anders.

00:27:37.320 --> 00:27:43.320
johannes: Bei einem Array liegen die Werte alle hintereinander direkt aneinandergereiht

00:27:43.320 --> 00:27:44.320
johannes: im Speicher.

00:27:44.320 --> 00:27:46.320
johannes: Das heißt, wenn du durch einen Array,

00:27:45.000 --> 00:27:53.000
jochen: Ja.

00:27:46.320 --> 00:27:48.320
johannes: durch einen Array.Array durchgehst, das sind,

00:27:48.320 --> 00:27:50.320
johannes: man muss hier auch ein bisschen vorsichtig sein.

00:27:50.320 --> 00:27:53.320
johannes: Dieses Wort Array hat ja in jeder Sprache eine andere Bedeutung

00:27:53.000 --> 00:27:57.000
jochen: Ja.

00:27:53.320 --> 00:27:55.320
johannes: als in jeder Programmiersprache.

00:27:55.320 --> 00:27:57.320
johannes: Wir sprechen hier jetzt von Python-Arrays.

00:27:57.000 --> 00:28:26.000
jochen: Ja.

00:27:57.320 --> 00:28:03.320
johannes: Also in Python, das Modul Array.Array

00:28:02.980 --> 00:28:03.980
dominik: Ja.

00:28:03.320 --> 00:28:08.320
johannes: enthält so eine Implementierung von einem Container,

00:28:03.980 --> 00:28:05.980
dominik: Ja.

00:28:08.320 --> 00:28:15.320
johannes: der Daten des gleichen Typs im Speicher sequentiell gepackt speichern kann.

00:28:15.320 --> 00:28:20.320
johannes: Also zum Beispiel Floats oder Integers oder andere Dinge,

00:28:20.320 --> 00:28:22.320
johannes: die man da reintun möchte.

00:28:22.320 --> 00:28:25.320
johannes: Und das hat den Vorteil, dass wenn ich da sequentiell durchgehe,

00:28:25.320 --> 00:28:30.320
johannes: dass die dann prinzipiell mehr der Prozessorarchitektur entsprechen,

00:28:26.000 --> 00:28:28.000
jochen: Ja.

00:28:28.000 --> 00:28:45.000
jochen: Ja.

00:28:30.320 --> 00:28:32.320
johannes: dass ich nichts in Direktionslevel habe,

00:28:31.980 --> 00:28:32.980
dominik: Ja.

00:28:32.320 --> 00:28:35.320
johannes: dass ich die eventuell schon im Cache bereit liegen habe,

00:28:32.980 --> 00:28:34.980
dominik: Ja.

00:28:35.320 --> 00:28:36.320
johannes: wenn ich sie verarbeite.

00:28:36.320 --> 00:28:42.320
johannes: Und so, wenn ich eben numerische Datenverarbeitung machen möchte,

00:28:42.320 --> 00:28:45.320
johannes: kann das sein, dass das ein extremer Speedup ist.

00:28:45.000 --> 00:28:48.000
jochen: Aber das gilt nur für numerische Daten?

00:28:45.320 --> 00:28:55.320
johannes: Im Prinzip, es muss eine feste Größe haben.

00:28:48.000 --> 00:28:52.000
jochen: Nö, aber was letztendlich da drin ist, weißt du ja nicht.

00:28:52.000 --> 00:28:54.000
jochen: Also was heißt numerische Daten?

00:28:54.000 --> 00:28:56.000
jochen: Also Zahlen oder sowas.

00:28:55.320 --> 00:29:16.320
johannes: Ja, aber Strings in Python sind sowieso immutable.

00:28:56.000 --> 00:28:59.000
jochen: Ja, aber also auch wenn wir jetzt da, gut, kommt halt drüber an was,

00:28:59.000 --> 00:29:01.000
jochen: aber das kann ja auch was, irgendwas anderes bedeuten.

00:29:00.980 --> 00:29:01.980
dominik: Ja.

00:29:01.000 --> 00:29:08.000
jochen: Das kann ja Text sein oder, also.

00:29:01.980 --> 00:29:03.980
dominik: Ja.

00:29:08.000 --> 00:29:12.000
jochen: Okay, aber bei Text bedeutet das dann halt immutability?

00:29:12.000 --> 00:29:16.000
jochen: Also weil die Repräsentation des Textes als Zahlen ja immer derselbe Text ist.

00:29:16.000 --> 00:29:19.000
jochen: Sie sind auch genau, immutable, aber ich, also ich würde mal,

00:29:16.320 --> 00:29:17.320
johannes: Ja.

00:29:19.000 --> 00:29:31.000
jochen: zum Beispiel ich habe mal eine Array-Geschichte benutzt in Scikit-Learn bei dem Tokenizer,

00:29:30.980 --> 00:29:31.980
dominik: Ja.

00:29:31.000 --> 00:29:37.000
jochen: also bei dem TF-IdF-Factorizer und da waren das dann halt IDs von,

00:29:31.980 --> 00:29:33.980
dominik: Ja.

00:29:37.000 --> 00:29:45.000
jochen: also die Nummer von einem Token, das ist ja dann nur eine Nummer

00:29:45.000 --> 00:29:52.000
jochen: und die kann man ja auch in Arrays packen und ja, das geht ja auch.

00:29:48.320 --> 00:29:56.320
johannes: Ja, oder Booleans, Arrays von Booleans, kann ja auch sein.

00:29:52.000 --> 00:29:54.000
jochen: Also die Frage ist, sind das jetzt numerische Daten?

00:29:54.000 --> 00:29:57.000
jochen: Ich weiß nicht, also naja, was die Daten bedeuten.

00:29:56.320 --> 00:29:57.320
johannes: Nicht so richtig.

00:29:57.000 --> 00:30:00.000
jochen: Also klar, es muss natürlich irgendwie was Fixes sein, aber,

00:29:58.320 --> 00:29:59.320
johannes: Ja.

00:29:58.980 --> 00:29:59.980
dominik: Ja.

00:29:59.980 --> 00:30:01.980
dominik: Ja.

00:30:00.000 --> 00:30:03.000
jochen: und ach so, das kann auch anders strukturiert sein.

00:30:03.000 --> 00:30:07.000
jochen: Das ist jetzt, weiß ich gar nicht, ob das mit Array-Array geht,

00:30:07.000 --> 00:30:11.000
jochen: ob das sehr viele kompliziertere Struktur haben kann,

00:30:08.320 --> 00:30:24.200
johannes: das nächste Mal.

00:30:11.000 --> 00:30:15.000
jochen: aber es gibt allgemein Memory Views und die sind halt dafür da,

00:30:15.000 --> 00:30:19.000
jochen: dass du halt diese Daten irgendwie durch den Rumpf rumschieben kannst

00:30:19.000 --> 00:30:22.000
jochen: und du kannst da halt einen anderen Header davor setzen,

00:30:22.000 --> 00:30:26.000
jochen: zum Beispiel mit NumPy oder so und dann ist das plötzlich ein mehrdimensionales Array

00:30:24.200 --> 00:30:52.200
johannes: Wobei Transposition noch drin ist ja auch sowas gefährliches.

00:30:26.000 --> 00:30:30.000
jochen: oder halt irgendwie eine Matrix oder sowas oder du kannst halt,

00:30:27.980 --> 00:30:28.980
dominik: Ja.

00:30:28.980 --> 00:30:30.980
dominik: Ja.

00:30:30.000 --> 00:30:36.000
jochen: und Transformationen, wenn du jetzt sagst, okay, ich möchte das jetzt einmal kippen

00:30:36.000 --> 00:30:41.000
jochen: oder irgendwie transposen oder was auch immer,

00:30:41.000 --> 00:30:45.000
jochen: dann sind das Operationen, die nur den Header betreffen, aber nicht die Daten selber.

00:30:45.000 --> 00:30:49.000
jochen: Die Daten bleiben halt so liegen, wie sie da so sind, halt im Hauptsprecher.

00:30:49.000 --> 00:31:02.000
jochen: Ja, ja, gut, okay, also, ja, ja, das kann natürlich dann blöde Konsequenzen haben,

00:30:52.200 --> 00:30:56.160
johannes: Wenn du den Speicher dann nicht auch transponierst,

00:30:56.160 --> 00:30:58.840
johannes: dann hast du wieder schlechte Speicherzugriffs-Pattern.

00:30:56.980 --> 00:30:57.980
dominik: Ja.

00:30:57.980 --> 00:30:59.980
dominik: Ja.

00:30:58.840 --> 00:31:02.920
johannes: Ist auch gefährlich.

00:31:02.000 --> 00:31:06.000
jochen: wenn man dann halt irgendwas Blödes damit macht, dann, ja.

00:31:02.920 --> 00:31:07.640
johannes: Ja gut, ich kann mit jeder Programmiersprache schlechte Programme schreiben,

00:31:06.000 --> 00:31:27.000
jochen: Ja, genau, ja.

00:31:07.640 --> 00:31:08.440
johannes: das ist gar kein Problem.

00:31:08.440 --> 00:31:13.800
johannes: Nee, ich meine, okay, aber da bist du jetzt schon einen Schritt weiter.

00:31:13.800 --> 00:31:19.320
johannes: Also Array ist ja noch, da übernimmt Python noch so ein bisschen das Management für dich,

00:31:19.320 --> 00:31:22.440
johannes: aber bei MemoryView ist ja hier eine Sequenz von Bytes,

00:31:22.440 --> 00:31:23.880
johannes: die im Hauptspeicher liegen.

00:31:23.880 --> 00:31:26.040
johannes: Mach damit, was du willst.

00:31:25.980 --> 00:31:26.980
dominik: Ja.

00:31:26.040 --> 00:31:30.840
johannes: Und da bist du wieder direkt einen Schritt weiter in Richtung Performance,

00:31:26.980 --> 00:31:42.980
dominik: Ja.

00:31:27.000 --> 00:31:31.000
jochen: Ja.

00:31:30.840 --> 00:31:34.280
johannes: potenziell ja, also du kannst alle Werkzeuge wenden,

00:31:31.000 --> 00:31:46.000
jochen: Ja.

00:31:34.280 --> 00:31:35.560
johannes: um langsame Programme zu schreiben.

00:31:35.560 --> 00:31:39.360
johannes: Bist du einen Schritt weiter in Richtung Performance

00:31:39.360 --> 00:31:41.520
johannes: und einen Schritt weiter weg von Komfort,

00:31:41.520 --> 00:31:44.200
johannes: weil du dich halt selber drum kümmern musst.

00:31:42.980 --> 00:31:45.980
dominik: Ja.

00:31:44.200 --> 00:31:47.800
johannes: Aber dafür kannst du prinzipiell so Tricks machen,

00:31:45.980 --> 00:31:46.980
dominik: Ja.

00:31:46.980 --> 00:31:48.980
dominik: Ja.

00:31:47.800 --> 00:31:52.280
johannes: dass du den Header veränderst oder dass du nur irgendwelche Sachen innen drin veränderst

00:31:52.280 --> 00:31:57.080
johannes: oder dass du, keine Ahnung, je nachdem, was das Problem halt erfordert, machst.

00:31:56.000 --> 00:32:00.000
jochen: Ja.

00:31:57.080 --> 00:32:02.640
johannes: Ja, jetzt sind wir wirklich schon ganz tief drin hier in dem Abschluss des Kapitels,

00:32:00.000 --> 00:32:04.000
jochen: Jetzt aber schon wieder ein bisschen, hey.

00:32:02.640 --> 00:32:07.720
johannes: nämlich der Abschluss des Kapitels heißt "When a list is not the answer".

00:32:04.000 --> 00:32:12.000
jochen: Ah, okay.

00:32:07.720 --> 00:32:13.640
johannes: Ich meine, der Hauptteil des Kapitels beschäftigt sich ja schon mit Listen.

00:32:12.000 --> 00:32:23.000
jochen: Oh, ja, ja, das ist cool, ja.

00:32:13.640 --> 00:32:15.960
johannes: Ja, und da gibt es, also es sind wirklich schöne Sachen drin.

00:32:15.960 --> 00:32:19.400
johannes: Wusstet ihr, dass man auf Slices assignen kann?

00:32:15.980 --> 00:32:16.980
dominik: Ja.

00:32:16.980 --> 00:32:18.980
dominik: Ja.

00:32:19.400 --> 00:32:25.880
johannes: Das ist ein Trick, den ich nicht so, also, den ich nicht kannte,

00:32:23.000 --> 00:32:27.000
jochen: Ja.

00:32:25.880 --> 00:32:27.200
johannes: den ich nicht wusste, dass das geht.

00:32:27.000 --> 00:32:31.000
jochen: Was meinst du, jetzt heißt es das, hey?

00:32:27.200 --> 00:32:32.400
johannes: Ich kann auf, ja, also wenn ich eine Liste habe,

00:32:31.000 --> 00:32:35.000
jochen: Ja.

00:32:32.400 --> 00:32:35.200
johannes: dann kann ich mir da ja einen Slice rausholen.

00:32:35.000 --> 00:32:57.000
jochen: Ja.

00:32:35.200 --> 00:32:36.520
johannes: Also wenn ich eine Liste mit zehn Elementen habe,

00:32:36.520 --> 00:32:38.800
johannes: kann ich sagen, ich möchte Element drei bis vier.

00:32:38.800 --> 00:32:42.280
johannes: Das ist dann diese Doppelpunktnotation

00:32:42.280 --> 00:32:44.080
johannes: und dann kriege ich da eben so eine Subliste raus.

00:32:43.980 --> 00:32:44.980
dominik: Ja.

00:32:44.080 --> 00:32:52.480
johannes: Und diese Subliste ist aber nicht, die ist mutable

00:32:44.980 --> 00:32:46.980
dominik: Ja.

00:32:52.480 --> 00:32:56.560
johannes: und die bezieht sich auf die Elemente,

00:32:56.560 --> 00:32:58.720
johannes: die in dieser ursprünglichen Liste drin waren.

00:32:58.000 --> 00:33:02.000
jochen: Also, wie ein View auf diese Stelle.

00:32:58.720 --> 00:33:07.080
johannes: Ja, so ein bisschen, aber noch mehr,

00:33:02.000 --> 00:33:06.000
jochen: Ja.

00:33:06.000 --> 00:33:22.000
jochen: Ja.

00:33:07.080 --> 00:33:13.320
johannes: weil, also wenn ich jetzt hier so einen Slice raushole aus dieser Liste,

00:33:12.980 --> 00:33:13.980
dominik: Ja.

00:33:13.320 --> 00:33:14.760
johannes: also nehmen wir mal, ich habe eine Liste, die,

00:33:13.980 --> 00:33:15.980
dominik: Ja.

00:33:14.760 --> 00:33:17.520
johannes: ja, das ist jetzt hier ein Beispiel drin, Seite 50,

00:33:17.520 --> 00:33:18.880
johannes: falls jemand mitlesen möchte.

00:33:18.880 --> 00:33:23.880
johannes: Da ist eine Liste, das ist eine Liste von Range von zehn.

00:33:22.000 --> 00:33:26.000
jochen: Ja.

00:33:23.880 --> 00:33:26.520
johannes: Also es sind Elemente 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 drin.

00:33:26.000 --> 00:33:38.000
jochen: Ja.

00:33:26.520 --> 00:33:30.440
johannes: Und da hole ich mir jetzt einen Slice raus,

00:33:30.440 --> 00:33:32.840
johannes: Index zwei, Doppelpunkt fünf.

00:33:32.840 --> 00:33:36.680
johannes: Das sind drei Elemente, die ich hier raushole,

00:33:36.680 --> 00:33:37.480
johannes: zwei, drei und vier.

00:33:37.480 --> 00:33:42.040
johannes: Und da mache ich jetzt eine Zuweisung auf diesen Slice.

00:33:38.000 --> 00:33:42.000
jochen: Ja.

00:33:41.980 --> 00:33:42.980
dominik: Ja.

00:33:42.000 --> 00:33:56.000
jochen: Ja.

00:33:42.040 --> 00:33:46.680
johannes: Ich sage, L Slice 2 bis 5 ist gleich,

00:33:42.980 --> 00:33:44.980
dominik: Ja.

00:33:46.680 --> 00:33:50.760
johannes: und hier in dem Beispiel ist es jetzt 20, 30,

00:33:50.760 --> 00:33:52.440
johannes: also eine Liste mit nur zwei Elementen.

00:33:52.440 --> 00:34:01.600
johannes: Dann habe ich aus dieser Liste was rausgeschnitten

00:34:01.600 --> 00:34:03.720
johannes: und dann die Stelle, an der das vorher drin stand,

00:34:03.720 --> 00:34:04.720
johannes: was anderes reingeschrieben.

00:34:04.000 --> 00:34:08.000
jochen: Ja.

00:34:04.720 --> 00:34:08.240
johannes: Und das wusste ich nicht, dass es geht.

00:34:08.000 --> 00:34:28.000
jochen: Ja, Dell, ja, ja, ja.

00:34:08.240 --> 00:34:13.680
johannes: Das wusste ich nicht, dass man da so Operationen drauf machen kann,

00:34:11.980 --> 00:34:12.980
dominik: Ja.

00:34:12.980 --> 00:34:14.980
dominik: Ja.

00:34:13.680 --> 00:34:19.680
johannes: dass man Slices quasi, also ganze Slices ersetzen kann.

00:34:19.680 --> 00:34:24.240
johannes: Man kann auch einen Slice löschen.

00:34:24.240 --> 00:34:26.600
johannes: Das nächste Beispiel ist Dell L von da,

00:34:26.600 --> 00:34:27.920
johannes: und dann hast du in der Mitte was rausgelöscht.

00:34:27.920 --> 00:34:30.440
johannes: Super interessant.

00:34:28.000 --> 00:34:34.000
jochen: Also, tatsächlich, da wäre ich auch nie auf die Idee gekommen, dass du das so machen würdest.

00:34:30.440 --> 00:34:36.080
johannes: Aber es wird noch schlimmer, Jochen, es wird noch schlimmer.

00:34:34.000 --> 00:34:38.000
jochen: Ja.

00:34:36.080 --> 00:34:39.240
johannes: Das nächste Beispiel ist ein Slice, der einen Step hat.

00:34:38.000 --> 00:34:44.000
jochen: Oh, oh, oh, Gott, oh, Gott, oh, Gott, ja, okay, oh, he, he, he.

00:34:39.240 --> 00:34:43.560
johannes: Und wenn du auf den zuweist,

00:34:39.980 --> 00:34:40.980
dominik: Ja.

00:34:40.980 --> 00:34:42.980
dominik: Ja.

00:34:43.560 --> 00:34:45.640
johannes: dann werden halt die Elemente ersetzt,

00:34:44.000 --> 00:34:51.000
jochen: Aha.

00:34:45.640 --> 00:34:48.720
johannes: die diesen Step abbilden.

00:34:48.720 --> 00:34:53.760
johannes: Also kannst du jedes gerade Element kannst du ersetzen,

00:34:51.000 --> 00:34:55.000
jochen: Alle drei Elemente sind das Standbein.

00:34:53.760 --> 00:34:55.160
johannes: mit einer Zuweisung.

00:34:55.000 --> 00:34:58.000
jochen: Ja.

00:34:55.160 --> 00:34:57.840
johannes: Wusste ich nicht.

00:34:57.840 --> 00:35:04.840
johannes: Das nächste Beispiel ist, das ist ein Slice, das eine Zulassung hat.

00:34:58.000 --> 00:35:06.000
jochen: Okay, nee, das war mir jetzt auch nicht, dass das, da kann man auch, also, da, also, ja.

00:35:05.840 --> 00:35:10.840
johannes: Das nächste Beispiel ist ein Slice, das eine Zulassung hat.

00:35:06.000 --> 00:35:19.000
jochen: Ja.

00:35:08.980 --> 00:35:09.980
dominik: Ja.

00:35:09.980 --> 00:35:11.980
dominik: Ja.

00:35:10.840 --> 00:35:15.840
johannes: Okay. Das mache ich immer mit Index 0.

00:35:24.000 --> 00:35:29.000
jochen: Ja, man, genau, man macht vorher R-Klammer auf, irgendwie das Element, gibt dem Namen R-Klammer wieder zu.

00:35:29.000 --> 00:35:38.000
jochen: Ich habe das oft in Tests oder so, wenn ich weiß, also, da kann halt nicht mehr drin sein als dieses eine Ding, dann mache ich das halt so.

00:35:30.840 --> 00:35:52.840
johannes: Ja, okay.

00:35:37.980 --> 00:35:38.980
dominik: Ja.

00:35:38.000 --> 00:35:52.000
jochen: Weil ich finde das irgendwie, ja, in der, man kann auch, das ist natürlich jetzt, aber das Problem ist, sag mal so, wenn das jetzt unerwarteterweise aber was anderes zurückgeben sollte, was nicht nur dieses eine Ding hat, sondern halt vielleicht fünf,

00:35:38.980 --> 00:35:40.980
dominik: Ja.

00:35:42.980 --> 00:35:44.980
dominik: Voll nützlich ist das.

00:35:44.980 --> 00:35:57.980
dominik: Du kriegst eine Indexerror, aber ich kriege eine Valueerror.

00:35:52.000 --> 00:35:56.000
jochen: dann fällt das bei dir halt nicht auf der, ja, genau.

00:35:52.840 --> 00:35:57.840
johannes: Wenn es mehrere sind, dann kriegst du da, ich kriege keine Fehlermeldung.

00:35:56.000 --> 00:36:08.000
jochen: Es kann halt sein, dass das weiter funktioniert, das ist halt, genau, du kriegst nur einen Fehler, wenn es den Null nicht gibt und den Null gibt es ja eigentlich immer, aber, ja.

00:35:57.840 --> 00:35:58.840
johannes: Ne, ich kriege keinen Index Error.

00:35:57.980 --> 00:36:03.980
dominik: Ja, nur wenn es die Null nicht gibt. Okay, ja.

00:35:58.840 --> 00:36:04.840
johannes: Ich kriege nur ein, es geht.

00:36:04.840 --> 00:36:08.840
johannes: Genau.

00:36:06.980 --> 00:36:09.980
dominik: Ja, aber bei uns wäre es halt Valueerror, weil das Element irgendwie nicht,

00:36:08.000 --> 00:36:18.000
jochen: Ja.

00:36:08.840 --> 00:36:15.840
johannes: Ja, genau.

00:36:09.980 --> 00:36:13.980
dominik: die Liste nicht das eine Element nimmt, sondern irgendwas anderes.

00:36:13.980 --> 00:36:18.980
dominik: Ja.

00:36:15.840 --> 00:36:19.840
johannes: Ein Unpacking Error, das ist doch schön, oder?

00:36:18.000 --> 00:36:22.000
jochen: Ja.

00:36:18.980 --> 00:36:29.980
dominik: Ja.

00:36:19.840 --> 00:36:23.840
johannes: Ja, also dieses Kapitel, wie gesagt, das ganze Buch ist ja tatsächlich so,

00:36:22.000 --> 00:36:33.000
jochen: Ja.

00:36:23.840 --> 00:36:29.840
johannes: dass es sich nicht direkt an, sag ich mal, blutige Einsteiger richtet,

00:36:29.840 --> 00:36:31.840
johannes: sondern es ist schon so, du hast die Basics drauf,

00:36:29.980 --> 00:36:35.980
dominik: Ja.

00:36:31.840 --> 00:36:34.840
johannes: hier sind so ein paar Kniffe jetzt, hier so geht es auch.

00:36:33.000 --> 00:36:39.000
jochen: Ja.

00:36:34.840 --> 00:36:38.840
johannes: Und das ist doch schön, dass man auch hier so Veteranen wie uns

00:36:35.980 --> 00:36:36.980
dominik: Ja.

00:36:36.980 --> 00:36:39.980
dominik: Ja.

00:36:38.840 --> 00:36:43.840
johannes: noch damit überraschen kann, mit Sachen, die in der,

00:36:39.000 --> 00:36:45.000
jochen: Ja, ich finde, das ist auch, ja.

00:36:39.980 --> 00:36:41.980
dominik: Ja.

00:36:43.840 --> 00:36:47.840
johannes: mit Sachen aus dem puren Standard, ja, aus dem puren Python Standard.

00:36:45.000 --> 00:36:49.000
jochen: Ja.

00:36:45.980 --> 00:36:48.980
dominik: Ja.

00:36:47.840 --> 00:37:05.840
johannes: Hier übrigens, Assigning to Slices, was?

00:36:48.980 --> 00:36:50.980
dominik: Ja.

00:36:49.000 --> 00:37:03.000
jochen: Ne, das, gut, vielleicht ist das auch der Grund, warum ich das Buch echt gerne lese, weil ich, man kann kaum irgendwie eine Seite oder zwei lesen, ohne dass man sich denkt, ach, echt interessant, das wusste ich jetzt gar nicht.

00:37:03.000 --> 00:37:07.000
jochen: Und, ja, das ist halt, das macht es irgendwie.

00:37:04.980 --> 00:37:05.980
dominik: Ja.

00:37:05.840 --> 00:37:34.840
johannes: Ja, dann guckt er sich den Bytecode an und sagt, ja.

00:37:05.980 --> 00:37:07.980
dominik: Ja.

00:37:11.000 --> 00:37:37.000
jochen: Auch, was ich auch gut, das ist jetzt noch mal ganz am Anfang von dem Kapitel, was ich auch super fand, ist, dass er halt, das ist auch so etwas, wo ich denke, ja, das ist so, aber ich traue mich manchmal nicht so richtig, das laut zu sagen, weil irgendwie, irgendwie der, die Prophezeiung irgendwie vorsieht, dass irgendwie Vorschleifen lesbarer sind als List-Comprehensions, aber ich denke gerade bei einfachen Fällen sind List-Comprehensions tatsächlich besser lesbar.

00:37:34.980 --> 00:37:35.980
dominik: Ja.

00:37:35.840 --> 00:37:37.840
johannes: Ja.

00:37:35.980 --> 00:37:37.980
dominik: Ja.

00:37:37.000 --> 00:37:48.000
jochen: Und hier hat er halt ein schönes Beispiel, wo er halt quasi den, ja, den Zahlenwert von einem ASCII-Zeichen aus einem String halt rausnimmt.

00:37:37.840 --> 00:38:06.840
johannes: Ja.

00:37:37.980 --> 00:37:40.980
dominik: Ja.

00:37:46.980 --> 00:37:48.980
dominik: Ja.

00:37:48.000 --> 00:38:04.000
jochen: Und wenn du das halt in einer Vorschleife machst, also einmal sind halt doppelt so viele Zeilen und dann ist es halt so, dass irgendwie der entscheidende Aufruf, der dir sagt, was passiert, der ist halt irgendwie relativ weit irgendwie reingenestet und der fällt dir stichartig nicht sofort ins Auge, während die List-Comprehension, da siehst du halt sofort, was passiert.

00:37:48.980 --> 00:37:51.980
dominik: Ja.

00:38:02.980 --> 00:38:05.980
dominik: Ja, also ich bin auch ein großer Fan von schönen Comprehensions.

00:38:04.000 --> 00:38:10.000
jochen: Und, ja, ich meine, klar, man kann damit natürlich böse Sachen machen, ja, aber so.

00:38:05.980 --> 00:38:10.980
dominik: Wir hatten schon mal eine Unterhaltung, Jochen, wenn du dich erinnerst,

00:38:06.840 --> 00:38:08.840
johannes: Ja, finde ich auch.

00:38:08.840 --> 00:38:16.840
johannes: Wenn man die einmal drauf hat.

00:38:10.000 --> 00:38:13.000
jochen: [Unverständlich]

00:38:10.980 --> 00:38:13.980
dominik: wo du der anderen Meinung warst, aber es kommt halt drauf an.

00:38:13.000 --> 00:38:16.000
jochen: Ja, es kommt drauf an, genau, es ist halt nicht so.

00:38:13.980 --> 00:38:24.980
dominik: Es ist aber doch wirklich so, also ich finde, also Comprehensions sind

00:38:16.000 --> 00:38:21.000
jochen: [Unverständlich]

00:38:16.840 --> 00:38:22.840
johannes: Oh, sind wir hier unter die Juristen gegangen, es kommt drauf an.

00:38:21.000 --> 00:38:23.000
jochen: Ja, damit kann man natürlich auch irgendwie.

00:38:22.840 --> 00:38:27.840
johannes: Wir wollen definitive Antworten, kein Gesch…

00:38:23.000 --> 00:38:36.000
jochen: Also Comprehensions sind schön, heiß von Nick, in vielen Fällen sind sie einfach das Syntax, sogar schönere als in einem Vorschleifen zu machen, es sei denn, man möchte bestimmte Regeln tun, wo dann vorhin explizit eingebracht ist.

00:38:24.980 --> 00:38:28.980
dominik: schön Pythonic, in vielen Fällen sind sie einfach das Syntax sogar

00:38:27.840 --> 00:38:37.840
johannes: Ja, finde ich auch.

00:38:29.980 --> 00:38:32.980
dominik: besser als eine Vorsteifel zu machen, es sei denn, man möchte bestimmte

00:38:32.980 --> 00:38:35.980
dominik: Dinge tun, wo dann Vorloop explizit angebracht ist.

00:38:35.980 --> 00:38:38.980
dominik: Das einzige, was mir ein bisschen komisch ist,

00:38:36.000 --> 00:39:03.000
jochen: Das einzige, was mir ein bisschen komisch ist, ja, also manchmal ist es so ein bisschen so, manchmal, gerade dann, wenn man gucken will, wie langsam irgendwas werden kann, wenn man, ich weiß nicht, ein Nest hat oder sowas, dann könnte es sein, dass das so ein bisschen Sachen versteckt, weil dann nicht explizit 5 mal vorsteht und man 5 mal vorzählt oder die Neste levelt und dann könnte irgendwas kaputt sein.

00:38:37.840 --> 00:38:40.840
johannes: Und nicht nur, nicht nur List Comprehensions,

00:38:38.980 --> 00:38:44.980
dominik: ja, ja, aber auch da, also manchmal ist es so ein bisschen so,

00:38:40.840 --> 00:38:43.840
johannes: auch Dict Comprehensions und Set Comprehensions,

00:38:43.840 --> 00:39:03.840
johannes: sind alle großartig.

00:38:44.980 --> 00:38:49.980
dominik: manchmal, gerade dann, wenn man gucken will, wie langsam irgendwas werden

00:38:49.980 --> 00:38:52.980
dominik: kann, wenn man solche Sachen nestet hat oder sowas, dann könnte es sein,

00:38:52.980 --> 00:38:55.980
dominik: dass das so ein bisschen Sachen versteckt, weil er nicht explizit fünfmal

00:38:56.980 --> 00:39:00.980
dominik: vorzählt oder die nestet Levels und dann sieht man, da könnte irgendwas

00:39:00.980 --> 00:39:03.980
dominik: kaputt sein oder so.

00:39:03.000 --> 00:39:11.000
jochen: Ja.

00:39:03.840 --> 00:39:06.840
johannes: Ja, wobei, ich versuche ja, so Nested Comprehensions versuche ich eigentlich

00:39:03.980 --> 00:39:13.980
dominik: Ja, wobei, hier auch ein schönes Beispiel für ein Ding, wo man das

00:39:06.840 --> 00:39:10.840
johannes: zu vermeiden, die mache ich dann lieber untereinander, wenn es geht.

00:39:10.840 --> 00:39:26.840
johannes: Kommt nur drauf an, aber…

00:39:11.000 --> 00:39:26.000
jochen: Ja, wobei, er hat hier auch ein schönes Beispiel für ein Ding, wo man das nesten will und wo es Sinn macht, das so hinzuschreiben, weil bei der List-Comprehension hast du ja immer, also naja, das ist Fluch und Segen zugleich, es baut dir halt eine Liste zusammen.

00:39:13.980 --> 00:39:17.980
dominik: nesten will und wo es Sinn macht, das so hinzuschreiben, weil bei der

00:39:17.980 --> 00:39:22.980
dominik: List-Comprehension hast du ja immer, naja, das ist Fluch und Segen zugleich,

00:39:23.980 --> 00:39:27.980
dominik: aber es baut ja eine Liste zusammen und der Nachteil bei einer Liste ist,

00:39:26.000 --> 00:39:33.000
jochen: Und der Nachteil bei einer List ist, sie muss halt irgendwie da sein, sie muss halt irgendwie materialisiert sein.

00:39:26.840 --> 00:39:52.840
johannes: Ja.

00:39:27.980 --> 00:39:31.980
dominik: dass sie irgendwie da sein muss, sie muss halt irgendwie materialisiert

00:39:31.980 --> 00:39:35.980
dominik: sein und jetzt hat er hier zum Beispiel diese, was heißt das?

00:39:33.000 --> 00:39:37.000
jochen: Und jetzt hat er hier zum Beispiel diese, was ist eigentlich immer das, hm?

00:39:35.980 --> 00:39:51.980
dominik: Ne, das ist auch so ein Quirk, also normalerweise haben die ihren eigenen

00:39:37.000 --> 00:39:49.000
jochen: Den Trick, den du gerade überprobst, den fand ich auch sehr, sehr schön, wo er innerhalb von der List-Comprehension noch eine Assignment-Expression baut, der tatsächlich genau dem letzten Element, sprich, wenn du da irgendwas verrichtest.

00:39:49.000 --> 00:40:02.000
jochen: Ja, das ist auch so ein Quirk, also normalerweise haben die ihren eigenen Scope, das heißt, wenn du halt da irgendwie so einen lokalen Namen für irgendwas hast, dann, nee, da passiert einem normalerweise gar nichts.

00:39:52.840 --> 00:40:06.840
johannes: Da gab es doch auch einen Bug, oder, in einer Python-Version?

00:39:52.980 --> 00:39:55.980
dominik: Scope, das heißt, wenn du halt da irgendwie so einen lokalen Namen für

00:39:55.980 --> 00:39:59.980
dominik: irgendwas hast, ne, dann passiert einem normalerweise gar nichts, ja, das ist

00:39:59.980 --> 00:40:02.980
dominik: nicht, ich weiß, es ist nicht die Frage, ob es ein Wackel ist, sondern

00:40:02.000 --> 00:40:19.000
jochen: Ja, das ist nicht, ich weiß, es ist nicht die Frage, ob das ein Bug ist oder nicht, aber, also sag mal so, normalerweise ist alles so, wie man das erwarten würde, aber wenn man jetzt nicht irgendwie gleich sagt oder nicht einfach nur die Variablen verwendet, sondern man sagt halt Doppelpunktgleich irgendwas,

00:40:02.980 --> 00:40:06.980
dominik: ein Fieter, also sagen wir mal so, normalerweise ist alles so, wie man

00:40:06.840 --> 00:40:20.840
johannes: Surprise Feature.

00:40:06.980 --> 00:40:10.980
dominik: das erwarten würde, aber wenn man jetzt nicht irgendwie gleich sagt oder

00:40:10.980 --> 00:40:14.980
dominik: nicht einfach nur die Variablen verwendet, sondern man sagt halt

00:40:14.980 --> 00:40:19.980
dominik: doppelt gleich irgendwas, dann ist man aus dem Scope raus und dann ist man

00:40:19.000 --> 00:40:32.000
jochen: dann ist man aus dem Scope raus und dann ist man in dem Scope von dem Ding drumrum und dann passieren unerwartete Sachen, weil dann überschreibt das halt eventuell Sachen, die halt im Scope außenrum sind und, ja, öh.

00:40:20.840 --> 00:40:33.840
johannes: Walross.

00:40:20.980 --> 00:40:23.980
dominik: in dem Scope von dem Ding drumherum und dann passieren unerwartete Sachen,

00:40:23.980 --> 00:40:27.980
dominik: weil dann überschreitet es halt eventuelle Sachen, die halt im Scope

00:40:27.980 --> 00:40:30.980
dominik: außen rum sind und ja.

00:40:30.980 --> 00:40:34.980
dominik: Ne, aber vielleicht will man das ja machen und also das, ja, aber das

00:40:32.000 --> 00:40:34.000
jochen: Ja, aber vielleicht will man das ja machen.

00:40:33.840 --> 00:40:37.840
johannes: Vielleicht.

00:40:34.000 --> 00:40:37.000
jochen: Ja, vielleicht will man das aber, das ist halt irgendwie.

00:40:34.980 --> 00:40:38.980
dominik: Beispiel da ist zum Beispiel super, weil halt die, nein, aber das Letzte,

00:40:37.000 --> 00:40:56.000
jochen: Ja, aber das Beispiel da ist zum Beispiel super, weil halt die, nein, aber das letzte, was da steht, das ist halt zum Beispiel ein total tolles Beispiel, weil du hast irgendwie so das von Fashion bis zu diesem, weil die letzte Addition, die letzte Auffassung, und dann kannst du halt einfach von Simon expression und dann hast du den einfach direkt und kannst den Scope schreiben oder so.

00:40:37.840 --> 00:40:56.840
johannes: Der Dominik schreibt keinen Python, sondern Obfuscated Python.

00:40:38.980 --> 00:40:42.980
dominik: was da steht, das ist halt zum Beispiel ein total tolles Beispiel, weil

00:40:42.980 --> 00:40:46.980
dominik: du hast doch irgendwie so eine Nes Conferential und willst wissen, war

00:40:47.980 --> 00:40:50.980
dominik: es eine der Traditionen davon, war der letzte Aufbau der Funktion und

00:40:50.980 --> 00:40:53.980
dominik: dann kannst du halt einfach dann Assignment Expression und dann hast

00:40:53.980 --> 00:40:56.980
dominik: du den einfach direkt und kannst den ins Log schreiben oder so oder was

00:40:56.000 --> 00:41:10.000
jochen: Ja, okay, das ist, ja, ja, genau, genau. Ja, klar, das kannst du natürlich schon so machen, aber du hast dann hoffentlich keine Variable im Code vorher verwendet, die irgendwie Last heißt, ansonsten hast du ja den Fuß geschossen.

00:40:56.840 --> 00:41:24.840
johannes: Assignment Expression ist Walross-Operator, oder?

00:40:56.980 --> 00:40:59.980
dominik: du auch immer damit machen willst.

00:40:59.980 --> 00:41:02.980
dominik: Ja, okay, das ist, ja klar, das kannst du natürlich schon so machen,

00:41:02.980 --> 00:41:06.980
dominik: also du hast dann hoffentlich keine Variablen im Code vorher verwendet,

00:41:06.980 --> 00:41:09.980
dominik: ja, hoffentlich nicht, nein, das ist, ja, das sollte man da tatsächlich

00:41:09.980 --> 00:41:13.980
dominik: eh nicht tun, oder? Also, dass man davon ausgeht, dass dann irgendeine

00:41:10.000 --> 00:41:19.000
jochen: Ja, das sollte man ja tatsächlich eben nicht tun, ne? Also, dass man rausgeht, dass dann in der Variable in der Distance of Action gesagt wird, wir vergessen den, ja.

00:41:14.980 --> 00:41:17.980
dominik: Variable in der List Comprehension, die Sachen alle wieder vergessen werden,

00:41:17.980 --> 00:41:21.980
dominik: ja, naja. Ja, aber gut, aber das steht halt auch dann gleich drin,

00:41:19.000 --> 00:41:22.000
jochen: Ja, normalerweise ist das so, aber ja, ja, dann erstelle ich.

00:41:21.980 --> 00:41:24.980
dominik: das ist vielleicht, ja.

00:41:22.000 --> 00:41:26.000
jochen: Ja, ja, ja, aber es ist.

00:41:24.840 --> 00:41:27.840
johannes: Da geht es aber auch relativ lange drum in dem Kapitel,

00:41:24.980 --> 00:41:34.980
dominik: Also, ja, genau, ich mag auch dann so Bedingungen, die kann man auch

00:41:26.000 --> 00:41:42.000
jochen: [Stille]

00:41:27.840 --> 00:41:30.840
johannes: dass man da hier diese Reihenfolge, dass das manchmal überraschend ist

00:41:30.840 --> 00:41:59.840
johannes: und manchmal andere Dinge erzeugt.

00:41:34.980 --> 00:41:39.980
dominik: untereinander schreiben, wie fest ist das, aber ja, schönes, schönes

00:41:40.980 --> 00:41:42.980
dominik: Peißen, würde ich sagen.

00:41:42.000 --> 00:41:56.000
jochen: Genau, ich wollte nochmal kurz zurück zu dem, also wo braucht man eventuell so eine Nested, also ein Doppelt-For-Loop-Geschichte und wo kann es Sinn machen, da eben das halt so hinzuschreiben und nicht eine For-Loop?

00:41:42.980 --> 00:41:59.980
dominik: Wenn die Dimensionalität der Daten das übersteigt, was man in einer einzigen

00:41:56.000 --> 00:42:04.000
jochen: [Stille]

00:41:59.840 --> 00:42:28.840
johannes: Ja.

00:41:59.980 --> 00:42:02.980
dominik: Spalte darstellen kann, also wenn man Relations hat.

00:42:03.980 --> 00:42:06.980
dominik: Ja, oder er nimmt dir als Beispiel ein kathesisches Produkt von irgendwie

00:42:04.000 --> 00:42:18.000
jochen: Ja, oder er nimmt hier als Beispiel ein kathesisches Produkt von irgendwie zwei Iterables oder Sequences vielleicht und wenn du das halt in der Vorschleife machen willst, dann brauchst du ja was, über das du iterieren kannst und dann musst du das halt in eine Liste packen.

00:42:06.980 --> 00:42:11.980
dominik: zwei Iterables oder Sequences vielleicht, und wenn du das halt in der

00:42:11.980 --> 00:42:14.980
dominik: Vorschleife machen willst, dann brauchst du ja was, was du iterieren kannst,

00:42:14.980 --> 00:42:17.980
dominik: und dann musst du das halt in eine Liste packen, und wenn das halt

00:42:17.980 --> 00:42:21.980
dominik: fünf Zeilen, fünf Spalten sind, dann ist das halt wenig, aber wenn du jetzt

00:42:18.000 --> 00:42:31.000
jochen: Und wenn das halt fünf Zeilen und fünf Spalten sind, dann ist das halt wenig, aber wenn du jetzt tausend Zeilen und tausend Spalten hast, dann ist das plötzlich wahnsinnig viel und dann willst du das halt nicht irgendwo hinspeichern.

00:42:21.980 --> 00:42:25.980
dominik: tausend Zeilen und tausend Spalten hast, dann ist das plötzlich wahnsinnig

00:42:25.980 --> 00:42:29.980
dominik: viel, und dann willst du das halt nicht irgendwo hinspeichern, also

00:42:28.840 --> 00:42:56.840
johannes: Ja.

00:42:30.980 --> 00:42:32.980
dominik: gerade wenn du dich eigentlich für diese, du hast ja tausend von der Sorte

00:42:31.000 --> 00:42:40.000
jochen: Also gerade wenn du dich eigentlich nur diese, du hast jetzt tausend von der Sorte und tausend von der Sorte, das ist das, was dich eigentlich interessiert, das musst du auch irgendwo speichern, aber das kathesische Produkt davon eigentlich nicht.

00:42:32.980 --> 00:42:35.980
dominik: und tausend von der Sorte, das ist das, was dich eigentlich interessiert,

00:42:35.980 --> 00:42:38.980
dominik: das musst du auch irgendwo speichern, aber das kathesische Produkt davon

00:42:38.980 --> 00:42:41.980
dominik: eigentlich nicht, dann geht das mit einer Vorschleife eigentlich gar nicht

00:42:40.000 --> 00:42:47.000
jochen: Dann geht das mit einer Vorschleife eigentlich gar nicht so gut, wenn du nicht dieses Produkt materialisiert irgendwie rumliegen haben willst.

00:42:41.980 --> 00:42:44.980
dominik: so gut, wenn du nicht dieses Produkt materialisiert irgendwo umliegen

00:42:44.980 --> 00:42:49.980
dominik: haben willst, und was man dann macht, ist eine Generator Expression,

00:42:47.000 --> 00:42:53.000
jochen: Und was er dann macht, ist eine Generator-Expression, die halt so eine doppelte Vorschleife drin hat.

00:42:49.980 --> 00:42:54.980
dominik: die halt so eine doppelte Vorschleife drin hat, und das ist natürlich cool,

00:42:53.000 --> 00:43:01.000
jochen: Und das ist natürlich cool, weil die erzeugt nämlich, das verbraucht gar keinen Hauptspeicher, sondern das generiert ja einfach nur das kathesische Produkt.

00:42:54.980 --> 00:42:57.980
dominik: weil die erzeugt nämlich, das braucht ja keinen Hauptspeicher, sondern

00:42:56.840 --> 00:43:09.840
johannes: Ja.

00:42:58.980 --> 00:43:03.980
dominik: das generiert ja einfach, weil du einen Generator halt hast, und den kannst

00:43:01.000 --> 00:43:08.000
jochen: Genau, genau. Und den kannst du ja als Generator-Expression schreiben und dann...

00:43:03.980 --> 00:43:13.980
dominik: du ja als Generator Expression schreiben, und dann, ja, das ist,

00:43:08.000 --> 00:43:18.000
jochen: Ja, nee, es ist halt genau das Gleiche, es ist halt bloß eine runde Klammer, genau.

00:43:09.840 --> 00:43:10.840
johannes: Was ist denn der Unterschied, Jochen?

00:43:10.840 --> 00:43:13.840
johannes: Wie schreibt man denn eine Generator Expression im Vergleich zu einer List Comprehension?

00:43:13.840 --> 00:43:18.840
johannes: Das muss doch was ganz anderes sein, oder?

00:43:14.980 --> 00:43:26.980
dominik: runde Klammern.

00:43:18.000 --> 00:43:20.000
jochen: Ja.

00:43:18.840 --> 00:43:21.840
johannes: Das ist auch eine Falle, in die man leicht tappen kann,

00:43:20.000 --> 00:43:30.000
jochen: Ja.

00:43:21.840 --> 00:43:25.840
johannes: dass man runde Klammer macht und das sieht erst mal so aus

00:43:25.840 --> 00:43:27.840
johannes: und das funktioniert auch in vielen Fällen so ähnlich.

00:43:26.980 --> 00:43:33.980
dominik: Ja, genau, das ist, ja, das ist ein überraschender Anlass, also ich meine,

00:43:27.840 --> 00:43:38.840
johannes: Nur wenn man es dann nochmal verwenden möchte, ist es leider weg.

00:43:30.000 --> 00:43:41.000
jochen: Genau, das ist ein überraschender Anlass. Also ich meine meistens ist wahrscheinlich List-Completion auch tatsächlich das, was man haben möchte, aber ja, es gibt Situationen...

00:43:33.980 --> 00:43:35.980
dominik: meistens ist wahrscheinlich die List-Computer auch tatsächlich das,

00:43:35.980 --> 00:43:38.980
dominik: was man haben möchte, aber ja.

00:43:38.840 --> 00:44:00.840
johannes: Ja. Es kommt darauf an, Jochen, wie du sagst.

00:43:38.980 --> 00:43:41.980
dominik: Genau, also ich würde gerne noch da ein paar Fragen zu stellen und so ein

00:43:41.000 --> 00:43:53.000
jochen: Ich wollte nur noch ein paar Fragen zu stellen und so ein bisschen wissen, wann man welche Dinge in der Lösung würde sagen für Generator-Expression, im Vergleich zu List-Completion, wann ich ein List nehme, wann nehme ich ein Array, wann nehme ich ein Connection-CQ,

00:43:42.980 --> 00:43:44.980
dominik: bisschen wissen, wann man welche Dinge denn benutzt, und ich würde sagen,

00:43:44.980 --> 00:43:47.980
dominik: Generator Expression im Vergleich zu List-Comprehension, wann ich eine

00:43:47.980 --> 00:43:51.980
dominik: Liste nehme, wann nehme ich ein Array, wann nehme ich ein Collections-DQ,

00:43:51.980 --> 00:43:54.980
dominik: diese ganzen Dinge so ein bisschen auseinanderzuhalten mit ihren

00:43:53.000 --> 00:44:00.000
jochen: diese ganzen Dinge so ein bisschen auseinander zu halten, die ein Trade-Offs wären vielleicht, nicht ganz uninteressant in dieser Folge.

00:43:54.980 --> 00:43:58.980
dominik: Trade-Offs wäre vielleicht nicht ganz uninteressant in dieser Folge heute.

00:43:59.980 --> 00:44:04.980
dominik: Ja, okay, also, weil, da ist, ja.

00:44:00.000 --> 00:44:02.000
jochen: Oh, ja, okay, also...

00:44:00.840 --> 00:44:06.840
johannes: Ja, weiß nicht, Dominik. Das sind viele tiefgehende Fragen, die du da gestellt hast.

00:44:02.000 --> 00:44:07.000
jochen: Ja.

00:44:04.980 --> 00:44:07.980
dominik: Ja.

00:44:06.840 --> 00:44:09.840
johannes: Also die eine Frage kann man leicht beantworten.

00:44:07.000 --> 00:44:19.000
jochen: Okay, und kostet einfach viel Speicher.

00:44:07.980 --> 00:44:18.980
dominik: Okay, und kostet aber viel Speicher, so Trade-Off.

00:44:09.840 --> 00:44:13.840
johannes: Du brauchst eine List Comprehension, wenn du die Daten materialisiert brauchst,

00:44:13.840 --> 00:44:16.840
johannes: also wenn du darauf zugreifen willst und mehrmals darauf zugreifen willst

00:44:16.840 --> 00:44:20.840
johannes: und auch Out-of-Sequence und Indexzugriff kostet halt Speicher.

00:44:18.980 --> 00:44:21.980
dominik: Ja.

00:44:19.000 --> 00:44:21.000
jochen: Ja.

00:44:20.840 --> 00:44:23.840
johannes: Du brauchst eine Generator Expression, wenn du sie nur einmal brauchst

00:44:21.000 --> 00:44:29.000
jochen: Wenn es vielleicht zu viel ist, um es im Hauptspeicher zu halten.

00:44:23.840 --> 00:44:29.840
johannes: und nur in Reihenfolge und nicht nochmal darauf zugreifen.

00:44:26.980 --> 00:44:28.980
dominik: Ja, vielleicht zu viel ist, um es im Hauptspeicher zu halten.

00:44:28.980 --> 00:44:31.980
dominik: Ja.

00:44:29.000 --> 00:44:31.000
jochen: Ja.

00:44:29.840 --> 00:44:31.840
johannes: Und genau, wenn es zu viel ist, um es zu speichern.

00:44:31.000 --> 00:44:37.000
jochen: Ja, zum Beispiel mache ich so etwas wie das spätesische Produkt, dadurch die Kombination von einem Faktor und zwei Vektoren miteinander.

00:44:31.840 --> 00:44:37.840
johannes: Das ist leicht.

00:44:31.980 --> 00:44:34.980
dominik: Und dann zum Beispiel mache ich so etwas wie das kritisische Produkt,

00:44:34.980 --> 00:44:37.980
dominik: dass ich die Kombination von allen Faktoren von zwei Vektoren miteinander

00:44:37.000 --> 00:44:39.000
jochen: Ja.

00:44:37.840 --> 00:44:42.840
johannes: Genau. Also wenn es quasi eine Prozedur ist, die du da machst.

00:44:37.980 --> 00:44:40.980
dominik: in Beziehung setzen kann.

00:44:40.980 --> 00:44:43.980
dominik: Ja.

00:44:42.840 --> 00:44:44.840
johannes: Ja, das ist relativ leicht zu verwenden.

00:44:43.000 --> 00:44:51.000
jochen: Ja, das kann man so allgemein...

00:44:43.980 --> 00:44:50.980
dominik: Ja, das kann man so irgendwann,

00:44:44.840 --> 00:44:49.840
johannes: Aber jetzt die Frage, wo benutzt du List versus Array versus Memoryview?

00:44:49.840 --> 00:44:52.840
johannes: Ja, da müssen wir länger drüber sprechen.

00:44:52.840 --> 00:44:56.840
johannes: Und wenn du dann noch andere Sachen reintust wie ein Deck oder eine Deck Queue

00:44:54.980 --> 00:44:56.980
dominik: oder Deck, oder so, ja, also, ich meine, die Q, also der Vordergrund

00:44:55.000 --> 00:45:02.000
jochen: Oder DEC, oder so, ja, also ich meine, die Q, also der Vorteil bei diesen Datenstrukturen ist halt...

00:44:56.840 --> 00:45:00.840
johannes: oder eine Queue oder wie auch immer du sie nennen möchtest.

00:44:56.980 --> 00:44:59.980
dominik: bei diesen Datenstrukturen ist halt.

00:44:59.980 --> 00:45:02.980
dominik: Deck-Q, Deck-Q-Q-Tick.

00:45:00.840 --> 00:45:06.840
johannes: Wie spricht man denn Deck aus?

00:45:02.000 --> 00:45:08.000
jochen: DEC, ich habe es immer DEC genannt, aber ich weiß nicht genau, ob es richtig ist.

00:45:02.980 --> 00:45:05.980
dominik: Deck.

00:45:05.980 --> 00:45:08.980
dominik: Schwierig.

00:45:06.840 --> 00:45:10.840
johannes: Ich nenne es auch immer Deck, aber keine Ahnung.

00:45:08.000 --> 00:45:12.000
jochen: Hm.

00:45:08.980 --> 00:45:11.980
dominik: DQ.

00:45:10.840 --> 00:45:14.840
johannes: Warte mal hier. Hier gibt es Aussprache. Warte mal.

00:45:11.980 --> 00:45:14.980
dominik: Bitte lesen Sie diesen Begriff vor.

00:45:12.000 --> 00:45:21.000
jochen: Ja, huh, okay.

00:45:14.840 --> 00:45:21.840
johannes: Der Deck, sagt Leo. Ich benutze immer Leo für sowas.

00:45:14.980 --> 00:45:17.980
dominik: Ja.

00:45:17.980 --> 00:45:20.980
dominik: Okay.

00:45:20.980 --> 00:45:23.980
dominik: Ja.

00:45:21.000 --> 00:45:23.000
jochen: Okay.

00:45:21.840 --> 00:45:24.840
johannes: Dick.leo.org, wichtigstes Werkzeug.

00:45:23.000 --> 00:45:30.000
jochen: Aha.

00:45:23.980 --> 00:45:25.980
dominik: Deck.

00:45:24.840 --> 00:45:36.840
johannes: Der sagt Deck in schönem, feinen britischen Englisch.

00:45:25.980 --> 00:45:28.980
dominik: Aha.

00:45:28.980 --> 00:45:31.980
dominik: Ja, also, so etwas hat man halt vor allen Dingen dann,

00:45:30.000 --> 00:45:37.000
jochen: Ja, also so etwas hat man halt vor allen Dingen dann, wenn du möchtest, dass die Sortiereihenfolge halt irgendwie gleich bleibt.

00:45:31.980 --> 00:45:34.980
dominik: wenn du möchtest, dass die Sortiereihenfolge halt irgendwie

00:45:34.980 --> 00:45:37.980
dominik: bleibt bleibt.

00:45:36.840 --> 00:45:40.840
johannes: Ne, halt. Warte mal. Erstmal musst du erklären, was ein Deck ist.

00:45:37.000 --> 00:45:41.000
jochen: Oh Gott.

00:45:37.980 --> 00:45:40.980
dominik: Oh, mein Gott.

00:45:40.840 --> 00:45:43.840
johannes: Eine Deck.

00:45:40.980 --> 00:45:43.980
dominik: Ja, also, ich weiß jetzt auch gar nicht, wie die,

00:45:41.000 --> 00:45:45.000
jochen: Ja, also, ich weiß jetzt auch gar nicht, wie die...

00:45:43.840 --> 00:45:45.840
johannes: Das ist eine Abkürzung.

00:45:43.980 --> 00:45:46.980
dominik: so, Double-Ended-Q, ja.

00:45:45.000 --> 00:45:48.000
jochen: So, Double-Ended-Q, ja.

00:45:45.840 --> 00:45:52.840
johannes: Double-ended Queue.

00:45:46.980 --> 00:45:49.980
dominik: Ich weiß jetzt auch gar nicht, wie genau die

00:45:48.000 --> 00:45:52.000
jochen: Ich weiß jetzt auch gar nicht, wie genau die Implementation in Python da aussieht.

00:45:49.980 --> 00:45:52.980
dominik: Implementation in Python da aussieht.

00:45:52.000 --> 00:45:54.000
jochen: Spielt keine Rolle.

00:45:52.840 --> 00:45:57.840
johannes: Ach, spielt keine Rolle.

00:45:52.980 --> 00:45:54.980
dominik: Ja.

00:45:54.000 --> 00:46:04.000
jochen: Ja, also, der Witz an dem Ding ist halt, dass du sozusagen Sachen rausnehmen kannst, reinnehmen kannst, und trotzdem ist es halt immer sortiert und du kannst halt...

00:45:54.980 --> 00:45:57.980
dominik: Ja, also, der Witz an dem Ding ist halt,

00:45:57.840 --> 00:46:09.840
johannes: Was ist eine Deck?

00:45:57.980 --> 00:46:00.980
dominik: ist halt, dass du sozusagen Sachen ausnehmen kannst,

00:46:00.980 --> 00:46:03.980
dominik: reinnehmen kannst, und trotzdem ist es halt immer sortiert.

00:46:03.980 --> 00:46:06.980
dominik: Also, weil du einen Follower und einen Precessor hast.

00:46:04.000 --> 00:46:14.000
jochen: Ja.

00:46:06.980 --> 00:46:13.980
dominik: Ja.

00:46:09.840 --> 00:46:14.840
johannes: Also eine Queue ist eine Warteschlange.

00:46:14.000 --> 00:46:16.000
jochen: Ja.

00:46:14.840 --> 00:46:19.840
johannes: Und eine Double-ended Queue heißt, du kannst auf der einen Seite was reinschieben

00:46:16.000 --> 00:46:24.000
jochen: Ja.

00:46:19.840 --> 00:46:22.840
johannes: und auf der anderen Seite kannst du was rausnehmen.

00:46:21.980 --> 00:46:23.980
dominik: Ja.

00:46:22.840 --> 00:46:25.840
johannes: Und die bleiben in der Reihenfolge.

00:46:23.980 --> 00:46:26.980
dominik: Also, das heißt, ich habe beide Enden, also einen

00:46:24.000 --> 00:46:30.000
jochen: Ja, ja, ja, genau.

00:46:25.840 --> 00:46:30.840
johannes: Das ist doch das, was eine Deck ist, oder Jochen?

00:46:26.980 --> 00:46:29.980
dominik: Vorgänger und einen Folker.

00:46:29.980 --> 00:46:32.980
dominik: Ja.

00:46:30.000 --> 00:46:42.000
jochen: Ja.

00:46:30.840 --> 00:46:35.840
johannes: Genau. Und da gibt es so ein Pattern, das Producer-Consumer-Pattern,

00:46:32.980 --> 00:46:48.980
dominik: Beiden.

00:46:35.840 --> 00:46:38.840
johannes: wo du sagst, du hast halt eine Prozedur, die erzeugt Datenpunkte

00:46:38.840 --> 00:46:42.840
johannes: und du hast eine Prozedur, die verbraucht Datenpunkte

00:46:42.000 --> 00:46:44.000
jochen: Ja.

00:46:42.840 --> 00:46:45.840
johannes: und dann ist die Deck genau das, was da dazwischen ist.

00:46:44.000 --> 00:46:50.000
jochen: Ja.

00:46:45.840 --> 00:46:49.840
johannes: Also der eine tut sie eben auf der einen Seite in das Deck rein

00:46:48.980 --> 00:46:50.980
dominik: Ja.

00:46:49.840 --> 00:46:53.840
johannes: oder in die Deck und der andere, der sie verbraucht,

00:46:50.000 --> 00:46:58.000
jochen: Ja.

00:46:50.980 --> 00:46:56.980
dominik: Ja.

00:46:53.840 --> 00:46:55.840
johannes: der nimmt sie auf der anderen Seite raus.

00:46:55.840 --> 00:46:58.840
johannes: Und das kannst du prinzipiell mit einer Liste machen.

00:46:56.980 --> 00:47:15.980
dominik: Ja.

00:46:58.000 --> 00:47:00.000
jochen: Ja.

00:46:58.840 --> 00:47:01.840
johannes: Du kannst eine Python-List als Deck verwenden,

00:47:00.000 --> 00:47:16.000
jochen: Ja.

00:47:01.840 --> 00:47:05.840
johannes: indem du halt .append machst, das ist das Einfügen,

00:47:05.840 --> 00:47:07.840
johannes: und indem du halt .pop0 machst.

00:47:07.840 --> 00:47:13.840
johannes: Das Problem da drin ist, dass pop0 teuer ist,

00:47:13.840 --> 00:47:16.840
johannes: weil das bedeutet, das erste Element der Liste wird entfernt.

00:47:15.980 --> 00:47:17.980
dominik: Ja.

00:47:16.000 --> 00:47:18.000
jochen: Ja.

00:47:16.840 --> 00:47:18.840
johannes: Das heißt, alle Elemente, die in der Liste drin sind,

00:47:17.980 --> 00:47:36.980
dominik: Ja.

00:47:18.000 --> 00:47:37.000
jochen: Ja.

00:47:18.840 --> 00:47:21.840
johannes: müssen um eins verschoben werden.

00:47:21.840 --> 00:47:24.840
johannes: Und das hört man jetzt schon, ja,

00:47:24.840 --> 00:47:26.840
johannes: wenn du das erste Element rausnehmen willst,

00:47:26.840 --> 00:47:29.840
johannes: musst du sie alle einmal anfassen.

00:47:29.840 --> 00:47:31.840
johannes: Und das ist natürlich für eine Operation,

00:47:31.840 --> 00:47:38.840
johannes: die sich so anhört wie, ja, das erste wegnehmen, einfach teuer.

00:47:36.980 --> 00:47:39.980
dominik: Ja, sollte es geben, eigentlich.

00:47:37.000 --> 00:47:39.000
jochen: Ja, sollte ja jetzt gehen eigentlich.

00:47:38.840 --> 00:47:41.840
johannes: Genau. Und deshalb gibt es diese Spezialimplementierung,

00:47:39.000 --> 00:47:41.000
jochen: Ja, unerwarteteuer, ja.

00:47:39.980 --> 00:47:42.980
dominik: Ja, unerwartet, unerwartet teuer, ja.

00:47:41.000 --> 00:47:43.000
jochen: Ja.

00:47:41.840 --> 00:47:44.840
johannes: der Deck, der Double-Ended-Queue,

00:47:42.980 --> 00:47:44.980
dominik: Ja.

00:47:43.000 --> 00:48:07.000
jochen: Ja.

00:47:44.840 --> 00:47:46.840
johannes: wo das beides nicht viel kostet.

00:47:44.980 --> 00:48:06.980
dominik: Ja.

00:47:46.840 --> 00:47:48.840
johannes: Das Einfügen am Ende kostet nicht viel

00:47:48.840 --> 00:47:51.840
johannes: und das vorne wegnehmen kostet nicht viel.

00:47:51.840 --> 00:47:54.840
johannes: Dafür gibt es halt andere Operationen, die dann viel kosten.

00:47:54.840 --> 00:47:57.840
johannes: Dafür kannst du in der Mitte, wenn du in der Mitte was einfügen willst,

00:47:57.840 --> 00:48:00.840
johannes: entweder geht es gar nicht oder es ist extrem langsam

00:48:00.840 --> 00:48:04.840
johannes: oder irgendwie solche Eigenschaften hast du dann da halt verloren.

00:48:04.840 --> 00:48:07.840
johannes: Die Sache an diesen Datenstrukturen ist halt,

00:48:06.980 --> 00:48:08.980
dominik: Ja.

00:48:07.000 --> 00:48:09.000
jochen: Ja.

00:48:07.840 --> 00:48:10.840
johannes: du kannst erst mal eine Liste verwenden

00:48:08.980 --> 00:48:24.980
dominik: Ja, also, wann merke ich denn überhaupt,

00:48:09.000 --> 00:48:27.000
jochen: Ja, also, wann merke ich denn überhaupt, dass die Liste nicht gut genug ist?

00:48:10.840 --> 00:48:13.840
johannes: und wenn das zu langsam wird oder wenn das Eigenschaften hat,

00:48:13.840 --> 00:48:16.840
johannes: wenn die Python-Liste Eigenschaften hat, die nicht gut genug sind,

00:48:16.840 --> 00:48:20.840
johannes: dann musst du dir was anderes suchen.

00:48:20.840 --> 00:48:23.840
johannes: Und das ist eigentlich dann die Antwort auf deine Frage, Dominik,

00:48:23.840 --> 00:48:28.840
johannes: die aber nur so im Allgemeinen.

00:48:24.980 --> 00:48:27.980
dominik: dass die Liste nicht gut genug ist? Also, weil es zu langsam

00:48:27.000 --> 00:48:31.000
jochen: Also, weil es zu langsam wird, weil es "Ohm" gibt, oder...

00:48:27.980 --> 00:48:30.980
dominik: wird, weil es "Om" gibt, oder?

00:48:28.840 --> 00:48:31.840
johannes: Dann merkst du, dass dein Programm zu langsam ist.

00:48:31.840 --> 00:48:36.840
johannes: Wenn dein Programm zu langsam ist und nicht mehr in den Speicher passt.

00:48:35.980 --> 00:48:37.980
dominik: Ja, okay, also genau die Punkte, ja.

00:48:36.000 --> 00:48:38.000
jochen: Ja, ok, also genau, die Punkte, ja.

00:48:36.840 --> 00:48:40.840
johannes: Wenn dein Swap-Laufwerk anfängt zu arbeiten.

00:48:37.980 --> 00:48:42.980
dominik: Ja, oder die Anwendung "crash" weil "Om"

00:48:38.000 --> 00:48:45.000
jochen: Ja, oder die Anwendung Crashball "Ohm" gibt.

00:48:40.840 --> 00:48:47.840
johannes: Ja, genau.

00:48:42.980 --> 00:48:45.980
dominik: klingt.

00:48:45.000 --> 00:49:02.000
jochen: Oh ja, Klassiker, ja.

00:48:45.980 --> 00:48:47.980
dominik: Ja.

00:48:47.840 --> 00:48:49.840
johannes: Ja, oder wenn es halt zu langsam ist.

00:48:47.980 --> 00:49:02.980
dominik: Oh ja, passiert, ja.

00:48:49.840 --> 00:48:55.840
johannes: Also es gibt Fälle, ich habe mit Leuten Sachen optimiert,

00:48:55.840 --> 00:48:57.840
johannes: die halt eine Liste wie ein Set verwendet haben

00:48:57.840 --> 00:49:00.840
johannes: und dann halt geguckt haben, ist dieses Objekt in dieser Liste drin,

00:49:00.840 --> 00:49:03.840
johannes: kannst du machen, die Operation gibt es, die heißt in

00:49:02.000 --> 00:49:04.000
jochen: Ja.

00:49:03.840 --> 00:49:06.840
johannes: und ist aber linear, ist O(n), das heißt, du musst gucken,

00:49:03.980 --> 00:49:05.980
dominik: Ja.

00:49:05.980 --> 00:49:09.980
dominik: Ja.

00:49:06.840 --> 00:49:09.840
johannes: ist das erste Objekt mein gesuchtes Objekt oder das zweite

00:49:07.000 --> 00:49:13.000
jochen: Ja.

00:49:09.840 --> 00:49:11.840
johannes: oder das dritte oder das vierte, das heißt, jede dieser Abfragen

00:49:09.980 --> 00:49:16.980
dominik: Ja.

00:49:11.840 --> 00:49:15.840
johannes: muss einmal alle, potenziell alle Elemente anfassen.

00:49:13.000 --> 00:49:23.000
jochen: Ja.

00:49:15.840 --> 00:49:18.840
johannes: Und da gibt es eine Datenstruktur, das Set, da ist es halt O(1),

00:49:16.980 --> 00:49:22.980
dominik: Ja.

00:49:18.840 --> 00:49:21.840
johannes: da kostet es immer gleich viel, egal wie groß es ist,

00:49:21.840 --> 00:49:23.840
johannes: egal was du suchst, egal ob es drin ist oder nicht,

00:49:22.980 --> 00:49:26.980
dominik: Ja.

00:49:23.840 --> 00:49:26.840
johannes: kostet immer amortisiert gleich viel.

00:49:26.840 --> 00:49:29.840
johannes: Und wenn du so einen Algorithmus hast,

00:49:26.980 --> 00:49:28.980
dominik: Ja.

00:49:28.980 --> 00:49:42.980
dominik: Ja.

00:49:29.840 --> 00:49:32.840
johannes: der viele von diesen Operationen macht,

00:49:32.840 --> 00:49:35.840
johannes: dann hast du da eine Möglichkeit, den deutlich schneller zu machen

00:49:33.000 --> 00:49:35.000
jochen: Ja.

00:49:35.000 --> 00:49:44.000
jochen: Ja.

00:49:35.840 --> 00:49:37.840
johannes: und zwar richtig um Klassen schneller.

00:49:37.840 --> 00:49:44.840
johannes: Also wenn du von O(n²) in dem spezifischen Fall genau,

00:49:42.980 --> 00:49:45.980
dominik: Ja.

00:49:44.000 --> 00:49:46.000
jochen: Ne, äh, ja.

00:49:44.840 --> 00:49:47.840
johannes: hat es ausgereicht, aus einer Liste ein Set zu machen

00:49:46.000 --> 00:49:59.000
jochen: Ja.

00:49:47.840 --> 00:49:51.840
johannes: und das hat schon, wenn du von O(n²) auf O(n) runtergehst,

00:49:51.840 --> 00:49:54.840
johannes: das macht Problemklassen bearbeitbar,

00:49:54.840 --> 00:49:56.840
johannes: die vorher nicht bearbeitbar waren.

00:49:54.980 --> 00:49:56.980
dominik: Ja.

00:49:56.840 --> 00:50:02.840
johannes: Vorher konnte man irgendwie 15 Elemente da drin haben

00:49:56.980 --> 00:49:59.980
dominik: Ja.

00:49:59.000 --> 00:50:01.000
jochen: Ja.

00:50:01.000 --> 00:50:19.000
jochen: Ja.

00:50:02.840 --> 00:50:05.840
johannes: und hinterher konntest du 15.000 Elemente drin haben.

00:50:05.840 --> 00:50:08.840
johannes: Also das ist einfach ein massiver Unterschied in der Performance.

00:50:08.840 --> 00:50:11.840
johannes: Aber vorher zu sagen, was du brauchst

00:50:11.840 --> 00:50:15.840
johannes: und an welchen Stellen das Richtige ist, fällt mir sehr schwer.

00:50:15.840 --> 00:50:23.840
johannes: Ist immer eine Abwägungssache.

00:50:19.000 --> 00:50:27.000
jochen: Ok, das heißt, man muss immer tatsächlich bei dem Problem gucken, was das ist.

00:50:20.980 --> 00:50:22.980
dominik: Okay.

00:50:22.980 --> 00:50:24.980
dominik: Ich muss immer tatsächlich bei dem Problem gucken,

00:50:24.980 --> 00:50:26.980
dominik: was das ist.

00:50:25.840 --> 00:50:26.840
johannes: Genau.

00:50:26.840 --> 00:50:28.840
johannes: Du musst bei den Problemen diese Abwägung machen

00:50:26.980 --> 00:50:40.980
dominik: Komfortcheck, ja.

00:50:28.000 --> 00:50:30.000
jochen: Ja.

00:50:28.840 --> 00:50:30.840
johannes: zwischen Komfort und Geschwindigkeit.

00:50:30.000 --> 00:50:43.000
jochen: Ja.

00:50:30.840 --> 00:50:33.840
johannes: Und im ersten Schritt, das ist ja auch das,

00:50:33.840 --> 00:50:34.840
johannes: was wir vorhin angesprochen haben,

00:50:34.840 --> 00:50:38.840
johannes: wir machen ja in erster Linie erstmal so einen Rapid Prototype,

00:50:38.840 --> 00:50:40.840
johannes: einfach um zu sehen, ob es überhaupt geht.

00:50:40.840 --> 00:50:42.840
johannes: Und da wähle ich immer,

00:50:40.980 --> 00:50:46.980
dominik: Ja.

00:50:42.840 --> 00:50:45.840
johannes: wählst du immer die komfortabelste Lösung, die erste Lösung,

00:50:43.000 --> 00:50:47.000
jochen: Ja.

00:50:45.840 --> 00:50:48.840
johannes: weil erst musst du wissen, ob du es korrekt hinkriegst

00:50:46.980 --> 00:50:48.980
dominik: Ja.

00:50:48.840 --> 00:50:50.840
johannes: und dann kannst du gucken, ob du es schnell hinkriegst.

00:50:50.840 --> 00:50:52.840
johannes: Ich kann sehr, sehr, sehr schnelle Programme schreiben,

00:50:52.840 --> 00:50:54.840
johannes: die nicht die richtige Antwort liefern.

00:50:54.840 --> 00:50:56.840
johannes: Das ist überhaupt gar kein Problem.

00:50:56.000 --> 00:50:58.000
jochen: Ja.

00:50:56.840 --> 00:50:57.840
johannes: Ja.

00:50:57.840 --> 00:51:04.840
johannes: Ja.

00:51:01.980 --> 00:51:05.980
dominik: Ja.

00:51:05.980 --> 00:51:08.980
dominik: Ja.

00:51:11.840 --> 00:51:23.840
johannes: Ja.

00:51:24.840 --> 00:51:25.840
johannes: Ja.

00:51:25.840 --> 00:51:29.840
johannes: Und das ist richtig.

00:51:27.000 --> 00:51:31.000
jochen: Ja, das sollte ich jetzt noch optimieren, damit er sagt, ha, siehste, das geht so nicht.

00:51:27.980 --> 00:51:29.980
dominik: Ja.

00:51:29.840 --> 00:51:36.840
johannes: Aber, das ist richtig, aber Schritt Null im Knuth Optimization Process

00:51:29.980 --> 00:51:32.980
dominik: Ja.

00:51:31.000 --> 00:51:44.000
jochen: Ja.

00:51:36.840 --> 00:51:38.840
johannes: ist die Wahl des richtigen Algorithmus.

00:51:38.840 --> 00:51:42.840
johannes: Das heißt, gucken, ob du den Algorithmus gewählt hast,

00:51:42.840 --> 00:51:44.840
johannes: der die richtigen Eigenschaften hat.

00:51:44.000 --> 00:51:46.000
jochen: Ja, ja, klar.

00:51:44.840 --> 00:51:46.840
johannes: Und das ist natürlich was,

00:51:46.000 --> 00:51:48.000
jochen: Ja.

00:51:46.840 --> 00:51:50.840
johannes: auch das ist schwierig jetzt so konkret zu beantworten.

00:51:48.000 --> 00:51:59.000
jochen: Das ist gerade Knusoptimation-Prozess gesagt.

00:51:50.840 --> 00:51:51.840
johannes: Das ist halt was, was mit Erfahrung kommt,

00:51:51.840 --> 00:51:53.840
johannes: dass du weißt, welche Algorithmen gibt es

00:51:53.840 --> 00:51:56.840
johannes: und welche Sorten Algorithmen gibt es und wie schnell sind die.

00:51:56.840 --> 00:52:05.840
johannes: Und ja, das ist so die witzige Umdrehung dieses Knuth-Zitats.

00:51:56.980 --> 00:51:58.980
dominik: Ja.

00:51:58.980 --> 00:52:01.980
dominik: Ja.

00:51:59.000 --> 00:52:10.000
jochen: So, Pre-Mage-Optimation, so, ja.

00:52:05.840 --> 00:52:08.840
johannes: Sage ich gleich, das ist das, genau,

00:52:08.840 --> 00:52:10.840
johannes: das ist das, was mit der Erfahrung kommt,

00:52:10.840 --> 00:52:12.840
johannes: dass du weißt, welche Algorithmen gibt es,

00:52:11.000 --> 00:52:13.000
jochen: Ok.

00:52:12.840 --> 00:52:15.840
johannes: welche Alternativen gibt es, welche Datenstrukturen gibt es,

00:52:14.000 --> 00:52:16.000
jochen: Ja.

00:52:15.840 --> 00:52:16.840
johannes: was ist wo angebracht.

00:52:16.840 --> 00:52:19.840
johannes: Wenn du jetzt irgendwie was anpassen musst

00:52:19.840 --> 00:52:20.840
johannes: oder wenn du jetzt irgendwas hast,

00:52:20.840 --> 00:52:22.840
johannes: was nicht auf ein Standardproblem passt,

00:52:22.840 --> 00:52:25.840
johannes: dass du es dir trotzdem aus den Bauteilen zusammensuchen kannst.

00:52:25.840 --> 00:52:27.840
johannes: Und der erste Schritt in diesem Prozess

00:52:25.980 --> 00:52:27.980
dominik: Ja.

00:52:27.840 --> 00:52:29.840
johannes: ist, den richtigen Algorithmus auszuwählen.

00:52:27.980 --> 00:52:30.980
dominik: Ja.

00:52:29.840 --> 00:52:31.840
johannes: Und das alles andere ist untergeordnet.

00:52:31.840 --> 00:52:33.840
johannes: Wenn du den falschen Algorithmus auswählst,

00:52:33.840 --> 00:52:35.840
johannes: hast du schon verloren.

00:52:35.840 --> 00:52:39.840
johannes: Genau, das bezieht sich auf dieses Zitat von Knuth,

00:52:39.840 --> 00:52:43.840
johannes: "Premature Optimization is the root of all evil."

00:52:43.840 --> 00:52:47.840
johannes: Wobei, wobei, weißte nicht,

00:52:44.000 --> 00:52:49.000
jochen: Weiß er nicht.

00:52:47.840 --> 00:52:49.840
johannes: wobei man auch dazu sagen muss,

00:52:49.000 --> 00:52:59.000
jochen: Mhm.

00:52:49.840 --> 00:52:51.840
johannes: Knuth sagt ja im nächsten Satz,

00:52:51.840 --> 00:52:56.840
johannes: 10% Geschwindigkeitszuwachs lohnt sich schon zu optimieren.

00:52:54.980 --> 00:52:56.980
dominik: Ja.

00:52:56.840 --> 00:53:01.840
johannes: Und da sind wir natürlich auch hier auf der Python-Ebene schon,

00:52:56.980 --> 00:52:59.980
dominik: Ja.

00:52:59.000 --> 00:53:02.000
jochen: Ja, ja, so, äh.

00:53:01.840 --> 00:53:02.840
johannes: haben wir schon verloren,

00:53:02.840 --> 00:53:05.840
johannes: weil wir akzeptieren, dass unsere Programme langsamer sind

00:53:05.840 --> 00:53:09.840
johannes: als das 10% Optimale.

00:53:09.840 --> 00:53:12.840
johannes: Auch da gibt es natürlich Ebenen.

00:53:10.000 --> 00:53:12.000
jochen: Ja.

00:53:12.840 --> 00:53:14.840
johannes: Knuth kommt ja aus einer ganz anderen Welt,

00:53:14.840 --> 00:53:17.840
johannes: wo die Prozessoren noch in Kilohertz gemessen wurden

00:53:17.840 --> 00:53:19.840
johannes: und nicht in Gigahertz.

00:53:19.840 --> 00:53:22.840
johannes: Und auch die, sage ich mal,

00:53:22.840 --> 00:53:25.840
johannes: die algorithmischen Probleme anders waren.

00:53:23.980 --> 00:53:25.980
dominik: Ja.

00:53:25.840 --> 00:53:28.840
johannes: Du kannst bei einem Sortieralgorithmus beweisen,

00:53:25.980 --> 00:53:28.980
dominik: Ja.

00:53:28.840 --> 00:53:30.840
johannes: was das Maximum ist, und du kannst beweisen,

00:53:30.840 --> 00:53:32.840
johannes: dass dein Algorithmus das Maximum

00:53:32.840 --> 00:53:34.840
johannes: für eine gewisse Datenklasse erreicht.

00:53:34.840 --> 00:53:37.840
johannes: Würde ich sagen, ist bei den meisten Sachen,

00:53:37.840 --> 00:53:39.840
johannes: die wir so bearbeiten heutzutage,

00:53:39.840 --> 00:53:41.840
johannes: hier CV-Erstellung für den Jochen,

00:53:41.840 --> 00:53:42.840
johannes: kannst du nicht beweisen,

00:53:42.840 --> 00:53:45.840
johannes: dass du den optimalen Algorithmus ausgewählt hast.

00:53:43.000 --> 00:53:47.000
jochen: Ja.

00:53:45.840 --> 00:53:48.840
johannes: Du weißt, dass du einen Algorithmus ausgewählt hast,

00:53:47.000 --> 00:54:04.000
jochen: Ja.

00:53:48.840 --> 00:53:50.840
johannes: der passend ist für das Problem,

00:53:50.840 --> 00:53:52.840
johannes: wenn es deinen Anforderungen entspricht,

00:53:52.840 --> 00:53:54.840
johannes: wenn du dein Problem lösen kannst in einer Zeit,

00:53:52.980 --> 00:53:54.980
dominik: Ja.

00:53:54.840 --> 00:53:57.840
johannes: die akzeptabel ist.

00:53:54.980 --> 00:53:57.980
dominik: Ja.

00:53:57.840 --> 00:54:00.840
johannes: Und das ist jetzt natürlich wieder so eine Stelle,

00:54:00.840 --> 00:54:04.840
johannes: wo der interne Casey sagt, ja, aber Moment mal,

00:54:04.840 --> 00:54:06.840
johannes: ich will einfach, dass das hier viel schneller wird,

00:54:06.840 --> 00:54:07.840
johannes: und ich habe ausgerechnet,

00:54:07.840 --> 00:54:09.840
johannes: der Prozessor kann so und so viele Operationen pro Sekunde machen,

00:54:09.000 --> 00:54:11.000
jochen: Ja, und da hat er das so lang, ja.

00:54:09.840 --> 00:54:12.840
johannes: also reicht es aus, um das 30 Mal pro Sekunde zu machen,

00:54:11.000 --> 00:54:15.000
jochen: Ja.

00:54:12.840 --> 00:54:14.840
johannes: also kannst du es in Realtime machen,

00:54:14.840 --> 00:54:16.840
johannes: und dann mach es auch bitte in Realtime.

00:54:15.000 --> 00:54:18.000
jochen: Ja.

00:54:16.840 --> 00:54:19.840
johannes: Und mein interner Nicht-Casey, der sagt dann halt,

00:54:18.000 --> 00:54:28.000
jochen: Ja.

00:54:19.840 --> 00:54:22.840
johannes: ja, aber einmal pro Sekunde reicht ja auch,

00:54:21.980 --> 00:54:23.980
dominik: Ja.

00:54:22.840 --> 00:54:24.840
johannes: oder einmal pro fünf Sekunden reicht auch.

00:54:23.980 --> 00:54:26.980
dominik: Ja.

00:54:24.840 --> 00:54:26.840
johannes: So schnell muss man das gar nicht aktualisieren.

00:54:26.840 --> 00:54:28.840
johannes: Und das ist eine Frage der Anforderungen,

00:54:28.840 --> 00:54:29.840
johannes: welche Anforderungen du hast,

00:54:29.000 --> 00:54:31.000
jochen: Ja.

00:54:29.840 --> 00:54:31.840
johannes: und welche Vorstellungen du hast,

00:54:31.000 --> 00:54:35.000
jochen: Ja.

00:54:31.840 --> 00:54:33.840
johannes: und wie schnell du es haben willst.

00:54:33.840 --> 00:54:34.840
johannes: Und da pauschal zu sagen,

00:54:34.840 --> 00:54:35.840
johannes: was ist der richtige Algorithmus,

00:54:35.000 --> 00:54:38.000
jochen: Ja.

00:54:35.840 --> 00:54:37.840
johannes: oder wie wählst du den aus?

00:54:37.840 --> 00:54:39.840
johannes: Keine Ahnung, ich weiß es nicht.

00:54:39.840 --> 00:54:47.840
johannes: Mit Erfahrung, mit Gefühl, mit, ich weiß nicht,

00:54:47.840 --> 00:54:49.840
johannes: mit dem Benutzer sprechen.

00:54:49.840 --> 00:55:00.840
johannes: Ja, gut, okay, also in Projekten natürlich nicht mit dem Benutzer,

00:54:50.980 --> 00:54:52.980
dominik: Ja.

00:54:52.980 --> 00:54:55.980
dominik: Ja.

00:54:57.000 --> 00:54:59.000
jochen: Ja.

00:54:59.000 --> 00:55:02.000
jochen: Ja.

00:55:00.840 --> 00:55:02.840
johannes: sondern mit dem, der es bezahlt.

00:55:02.000 --> 00:55:06.000
jochen: Ja.

00:55:02.840 --> 00:55:20.840
johannes: Ja, das, oft gibt es ja auch gar nicht den Benutzer,

00:55:06.000 --> 00:55:09.000
jochen: Ja.

00:55:19.980 --> 00:55:21.980
dominik: Ja.

00:55:20.840 --> 00:55:23.840
johannes: oft gibt es ja nur eine Klasse von Benutzern,

00:55:21.980 --> 00:55:24.980
dominik: Ja.

00:55:23.840 --> 00:55:25.840
johannes: oder oft findest du gar nicht den Benutzer,

00:55:25.000 --> 00:55:27.000
jochen: Ja.

00:55:25.840 --> 00:55:31.840
johannes: sondern, ja, oder die Benutzer sind doof und verstehen es nicht,

00:55:27.000 --> 00:55:30.000
jochen: Ja.

00:55:31.840 --> 00:55:33.840
johannes: das ist ja auch so manchmal.

00:55:33.840 --> 00:55:38.840
johannes: Was aber auch, also ich muss das jetzt gleich wieder zurücknehmen,

00:55:38.840 --> 00:55:41.840
johannes: wir arbeiten ja oft in so einem Corporate-Umfeld,

00:55:41.840 --> 00:55:44.840
johannes: und da sind die Benutzer halt,

00:55:44.840 --> 00:55:49.840
johannes: das ist auch so was, was Softwareentwickler oft sagen,

00:55:48.980 --> 00:55:50.980
dominik: Ja.

00:55:49.840 --> 00:55:51.840
johannes: das wäre alles so einfach, wenn die Benutzer nicht wären,

00:55:50.980 --> 00:55:53.980
dominik: Ja.

00:55:51.840 --> 00:55:53.840
johannes: wenn die nicht das falsch benutzen würden,

00:55:53.840 --> 00:55:55.840
johannes: oder wenn die das nicht so benutzen würden,

00:55:54.000 --> 00:55:56.000
jochen: Ja.

00:55:55.840 --> 00:55:57.840
johannes: wie sie es benutzen wollen.

00:55:56.000 --> 00:56:04.000
jochen: Mhm.

00:55:57.840 --> 00:56:01.840
johannes: Das ist aber, das ist lustig, so was im Bekanntenkreis zu sagen,

00:56:01.840 --> 00:56:04.840
johannes: aber wenn wir hier im Podcast sind, müssen wir das klarstellen,

00:56:04.000 --> 00:56:09.000
jochen: Ja.

00:56:04.840 --> 00:56:06.840
johannes: das ist nicht ein Fehler des Benutzers,

00:56:06.840 --> 00:56:08.840
johannes: wenn er die Software falsch benutzt,

00:56:08.840 --> 00:56:10.840
johannes: sondern es ist ein Fehler der Software,

00:56:09.000 --> 00:56:11.000
jochen: Ja.

00:56:10.840 --> 00:56:12.840
johannes: wenn die Software falsch benutzbar ist,

00:56:11.000 --> 00:56:27.000
jochen: Ja.

00:56:12.840 --> 00:56:15.840
johannes: und wenn sie anders eingesetzt wird, als sie gedacht war.

00:56:17.980 --> 00:56:19.980
dominik: Ja.

00:56:19.980 --> 00:56:22.980
dominik: Ja.

00:56:25.840 --> 00:56:28.840
johannes: Also für dich ist das ein Feature, für dich soll das so sein.

00:56:28.000 --> 00:56:30.000
jochen: Ja.

00:56:28.840 --> 00:56:30.840
johannes: Für mich als ...

00:56:30.000 --> 00:56:41.000
jochen: Ja.

00:56:30.840 --> 00:56:40.840
johannes: Ja, oft ist es ja andersrum,

00:56:40.840 --> 00:56:42.840
johannes: oft ist es ja so, dass du ein Feature kompliziert einbaust,

00:56:41.000 --> 00:56:48.000
jochen: Ja, wenn man jetzt zu viel Zeit hat, dann ist das alles, ja.

00:56:42.840 --> 00:56:44.840
johannes: und dann sagen die Leute,

00:56:44.840 --> 00:56:46.840
johannes: das geht aber nicht so, wie ich mir das vorstelle.

00:56:46.840 --> 00:56:48.840
johannes: Und dann liegt es halt nahe zu sagen,

00:56:46.980 --> 00:56:48.980
dominik: Ja.

00:56:48.000 --> 00:56:54.000
jochen: Ja, man sollte halt tatsächlich vorher mal die Leute fragen, die es halt auch benutzen wollen,

00:56:48.840 --> 00:56:50.840
johannes: ach, das liegt an dir, du doofer Benutzer.

00:56:48.980 --> 00:56:51.980
dominik: Ja.

00:56:50.840 --> 00:56:53.840
johannes: Aber es ist nie die Schuld des Benutzers.

00:56:54.000 --> 00:56:57.000
jochen: ob das halt tatsächlich was ist, was sie wollen.

00:56:54.840 --> 00:56:58.840
johannes: Ja, und wenn eine Fehlbenutzung auftritt,

00:56:57.000 --> 00:57:00.000
jochen: Ja.

00:56:58.840 --> 00:57:00.840
johannes: also wenn tatsächlich Fehler auftreten,

00:57:00.000 --> 00:57:22.000
jochen: Ja.

00:57:00.840 --> 00:57:03.840
johannes: dadurch, dass die Benutzer irgendwas damit machen,

00:57:03.840 --> 00:57:05.840
johannes: dann muss die Software das halt entweder abkönnen

00:57:05.840 --> 00:57:07.840
johannes: oder korrigieren können,

00:57:07.840 --> 00:57:09.840
johannes: oder die Software muss die Benutzer so steuern,

00:57:09.840 --> 00:57:11.840
johannes: dass das nicht passiert.

00:57:11.840 --> 00:57:13.840
johannes: Die Benutzer können da nichts dafür, dass sie Anforderungen haben,

00:57:13.840 --> 00:57:15.840
johannes: und dass sie Wünsche haben, und dass sie ...

00:57:15.840 --> 00:57:17.840
johannes: Das ist so eine generelle Einstellung,

00:57:15.980 --> 00:57:17.980
dominik: Ja.

00:57:17.840 --> 00:57:19.840
johannes: die man oft halt sieht in der Softwarewelt,

00:57:17.980 --> 00:57:20.980
dominik: Ja.

00:57:19.840 --> 00:57:21.840
johannes: der Computer hat recht, und der Benutzer hat nicht recht,

00:57:21.840 --> 00:57:23.840
johannes: aber es ist tatsächlich,

00:57:22.000 --> 00:57:24.000
jochen: Ja.

00:57:23.840 --> 00:57:25.840
johannes: dienen wir ja nicht den Computern,

00:57:24.000 --> 00:57:27.000
jochen: Ja.

00:57:25.840 --> 00:57:27.840
johannes: sondern es soll ja eigentlich schon andersrum sein.

00:57:27.840 --> 00:57:33.840
johannes: Deshalb sage ich, es soll andersrum sein.

00:57:30.000 --> 00:57:33.000
jochen: Ja, I for one, genau.

00:57:33.000 --> 00:57:36.000
jochen: Ich will nichts gesagt haben.

00:57:33.840 --> 00:57:37.840
johannes: Aber auch ich freue mich auf unsere Robotic Overlords,

00:57:36.000 --> 00:57:39.000
jochen: Genau.

00:57:37.840 --> 00:57:42.840
johannes: und möchte an der Stelle den Robotic Overlords sagen,

00:57:39.000 --> 00:57:42.000
jochen: Aha, aha.

00:57:42.000 --> 00:57:46.000
jochen: Ja.

00:57:42.840 --> 00:57:44.840
johannes: ich bin ein guter Diener.

00:57:44.840 --> 00:57:49.840
johannes: Ja, natürlich.

00:57:44.980 --> 00:57:46.980
dominik: Ja.

00:57:46.000 --> 00:57:49.000
jochen: Ja.

00:57:46.980 --> 00:57:49.980
dominik: Ja.

00:57:49.840 --> 00:57:51.840
johannes: Ich bedanke euch nicht bei CharityPT,

00:57:50.000 --> 00:57:52.000
jochen: Ja.

00:57:51.840 --> 00:57:53.840
johannes: das ist reiner Selbsterhaltungstrieb,

00:57:52.000 --> 00:57:55.000
jochen: Ja.

00:57:53.840 --> 00:57:55.840
johannes: wenn die Zukunft kommt.

00:57:55.840 --> 00:58:04.840
johannes: Wer war freundlich?

00:58:04.840 --> 00:58:07.840
johannes: Wie viel Freundlichkeit haben die verdient, diese Affen?

00:58:07.840 --> 00:58:14.840
johannes: Ja, okay, aber jetzt haben wir hier schon tatsächlich,

00:58:13.980 --> 00:58:15.980
dominik: Ja.

00:58:14.840 --> 00:58:17.840
johannes: sind wir schon relativ gut am Ende des Kapitels angekommen,

00:58:15.980 --> 00:58:18.980
dominik: Ja.

00:58:17.840 --> 00:58:19.840
johannes: hier Memory Views.

00:58:19.840 --> 00:58:21.840
johannes: NumPy wird hier noch erwähnt.

00:58:20.000 --> 00:58:22.000
jochen: Mhm.

00:58:21.840 --> 00:58:23.840
johannes: NumPy finde ich ganz interessant,

00:58:22.000 --> 00:58:30.000
jochen: Ja.

00:58:23.840 --> 00:58:25.840
johannes: dass das hier in dem Kapitel über Sequences drin ist,

00:58:25.840 --> 00:58:28.840
johannes: weil NumPy selber ist ja keine Sequence.

00:58:28.840 --> 00:58:33.840
johannes: NumPy ist ja eine Riesenbibliothek

00:58:30.000 --> 00:58:37.000
jochen: Ja.

00:58:33.840 --> 00:58:37.840
johannes: mit ganz vielen numerischen Anwendungen drin.

00:58:37.000 --> 00:58:39.000
jochen: Gut.

00:58:37.840 --> 00:58:40.840
johannes: Aber die Datentypen, die da drin sind,

00:58:39.000 --> 00:58:41.000
jochen: Mhm.

00:58:40.840 --> 00:58:45.840
johannes: die sind ja schon auf eine gewisse Art und Weise auch Sequences.

00:58:42.980 --> 00:58:44.980
dominik: Ja.

00:58:44.980 --> 00:58:47.980
dominik: Ja.

00:58:45.840 --> 00:58:47.840
johannes: Also die halten sich auch an das Sequence-Protokoll

00:58:47.840 --> 00:58:48.840
johannes: und da kannst du ganz viele,

00:58:48.000 --> 00:58:50.000
jochen: Ja.

00:58:48.840 --> 00:58:50.840
johannes: kannst du Slicing machen drauf und so weiter und so fort.

00:58:50.000 --> 00:59:03.000
jochen: Klar.

00:58:50.840 --> 00:58:52.840
johannes: Aber schon auch irgendwie mehr.

00:58:52.840 --> 00:58:56.840
johannes: Ja, optimiert direkt auf Speicher, macht...

00:58:56.840 --> 00:59:12.840
johannes: Genau, du bist halt näher am Hauptspeicher dran.

00:59:03.000 --> 00:59:05.000
jochen: Ja.

00:59:05.000 --> 00:59:11.000
jochen: Ja.

00:59:11.000 --> 00:59:14.000
jochen: Ja.

00:59:11.980 --> 00:59:13.980
dominik: Ja.

00:59:12.840 --> 00:59:14.840
johannes: Dafür sind sie auch deutlich schneller.

00:59:13.980 --> 00:59:16.980
dominik: Ja.

00:59:14.840 --> 00:59:16.840
johannes: Also wenn du viele Einträge hast,

00:59:16.840 --> 00:59:18.840
johannes: musst du dich allerdings wieder auf den Datentyp festlegen.

00:59:18.840 --> 00:59:20.840
johannes: Du kannst nicht gemischte Datentypen haben.

00:59:20.840 --> 00:59:22.840
johannes: Dafür kannst du mehrdimensionale haben.

00:59:22.840 --> 00:59:24.840
johannes: Dafür kannst du...

00:59:24.840 --> 00:59:26.840
johannes: Also es ist wieder so eine Abwägung.

00:59:26.840 --> 00:59:29.840
johannes: Aber auch das ist natürlich eine Möglichkeit,

00:59:29.840 --> 00:59:31.840
johannes: dass du sagst, hier, wir haben irgendwelche Daten,

00:59:31.840 --> 00:59:33.840
johannes: die wir verarbeiten müssen.

00:59:32.000 --> 00:59:34.000
jochen: Ja.

00:59:33.840 --> 00:59:35.840
johannes: Dann nehmen wir doch NumPy-Datentypen.

00:59:34.000 --> 00:59:37.000
jochen: Ja.

00:59:35.840 --> 00:59:37.840
johannes: Und ganz viele Bibliotheken integrieren das ja auch.

00:59:37.840 --> 00:59:39.840
johannes: Also zum Beispiel bei Pillow kannst du einfach sagen,

00:59:39.840 --> 00:59:41.840
johannes: hier, er ist irgendwas.

00:59:40.980 --> 00:59:42.980
dominik: Ja.

00:59:41.840 --> 00:59:43.840
johannes: Und dann kriegst du eine NumPy-Array raus,

00:59:42.980 --> 00:59:45.980
dominik: Ja.

00:59:43.840 --> 00:59:45.840
johannes: wenn du irgendwelche Bildfilter selber schreiben willst

00:59:45.840 --> 00:59:47.840
johannes: oder wenn du irgendwelche...

00:59:47.840 --> 00:59:49.840
johannes: Ja, ich habe mal Dithering gemacht

00:59:49.840 --> 00:59:51.840
johannes: für ein Privatprojekt.

00:59:51.840 --> 00:59:53.840
johannes: Und das habe ich halt auf den NumPy-Arrays gemacht,

00:59:53.840 --> 00:59:55.840
johannes: weil das ist das...

00:59:55.840 --> 00:59:59.840
johannes: Das ist das Schönste, was du da machen kannst an der Stelle.

00:59:59.840 --> 01:00:03.840
johannes: Dithering ist, wenn du von einem Bildformat

01:00:01.000 --> 01:00:03.000
jochen: Ja.

01:00:03.000 --> 01:00:06.000
jochen: Ja.

01:00:03.840 --> 01:00:05.840
johannes: mit vielen Farben

01:00:05.840 --> 01:00:09.840
johannes: dich bewegst auf ein Bildformat mit wenigen Farben,

01:00:09.840 --> 01:00:12.840
johannes: dann hast du üblicherweise Fehler in deinem Bild drin,

01:00:09.980 --> 01:00:11.980
dominik: Ja.

01:00:11.980 --> 01:00:14.980
dominik: Ja.

01:00:12.840 --> 01:00:14.840
johannes: weil du eben...

01:00:14.840 --> 01:00:18.840
johannes: Genau, und das heißt Dithering.

01:00:18.840 --> 01:00:21.840
johannes: Das heißt, du hast den Fehler nicht an dieser einen Stelle,

01:00:21.840 --> 01:00:24.840
johannes: sondern du verteilst den und dann wirkt das Bild besser

01:00:24.840 --> 01:00:27.840
johannes: auf Menschen.

01:00:27.840 --> 01:00:29.840
johannes: Das sieht besser aus.

01:00:29.840 --> 01:00:31.840
johannes: Und...

01:00:30.000 --> 01:00:32.000
jochen: Ja.

01:00:31.840 --> 01:00:35.840
johannes: Macht halt, verteilt so ein bisschen die...

01:00:32.000 --> 01:00:35.000
jochen: Ja.

01:00:35.840 --> 01:00:37.840
johannes: Also du hast dann bessere...

01:00:37.840 --> 01:00:39.840
johannes: Das Bild sieht besser aus mit weniger Farb.

01:00:38.980 --> 01:00:40.980
dominik: Ja.

01:00:39.840 --> 01:00:41.840
johannes: Und ich habe das...

01:00:40.980 --> 01:00:43.980
dominik: Ja.

01:00:41.840 --> 01:00:43.840
johannes: Ich mag ja ePaper-Screens sehr gerne

01:00:43.840 --> 01:00:45.840
johannes: und ich habe mir eben so eine Anwendung gemacht,

01:00:45.840 --> 01:00:47.840
johannes: wo ich Bilder auf ePaper-Screens machen kann

01:00:47.840 --> 01:00:49.840
johannes: und da musst du Dithering machen,

01:00:49.840 --> 01:00:51.840
johannes: weil die haben üblicherweise 4 Graustufen

01:00:51.840 --> 01:00:53.840
johannes: oder 8 Graustufen oder 16 Graustufen.

01:00:53.840 --> 01:00:55.840
johannes: Und da kommst du nicht drum rum,

01:00:55.840 --> 01:00:57.840
johannes: da musst du Dithering machen.

01:00:57.840 --> 01:00:59.840
johannes: Sonst hast du so ganz blockige Bilder

01:00:59.000 --> 01:01:01.000
jochen: Ja.

01:00:59.840 --> 01:01:01.840
johannes: mit harten Kanten drin, die bescheuert ausschauen.

01:01:01.000 --> 01:01:04.000
jochen: Ja.

01:01:01.840 --> 01:01:03.840
johannes: Ja, aber wie gesagt, also NumPy

01:01:03.840 --> 01:01:05.840
johannes: integriert sich da ja in ganz viele Sachen rein

01:01:05.840 --> 01:01:07.840
johannes: und ist halt einfach...

01:01:07.840 --> 01:01:09.840
johannes: Man kann ja diese zusätzliche Funktionalität

01:01:07.980 --> 01:01:09.980
dominik: Ja.

01:01:09.840 --> 01:01:11.840
johannes: einfach ignorieren.

01:01:09.980 --> 01:01:12.980
dominik: Ja.

01:01:11.840 --> 01:01:13.840
johannes: Du kannst auch sagen, okay, die gibt es,

01:01:13.840 --> 01:01:15.840
johannes: aber brauche ich jetzt gerade nicht.

01:01:15.840 --> 01:01:19.840
johannes: Ja.

01:01:19.840 --> 01:01:21.840
johannes: Finde ich sehr schön.

01:01:21.840 --> 01:01:25.840
johannes: Ja, dann...

01:01:25.840 --> 01:01:27.840
johannes: haben wir das Kapitel da.

01:01:27.840 --> 01:01:29.840
johannes: Ja.

01:01:28.000 --> 01:01:30.000
jochen: Ja.

01:01:29.840 --> 01:01:39.840
johannes: Ja.

01:01:30.000 --> 01:01:33.000
jochen: Ja.

01:01:37.980 --> 01:01:39.980
dominik: Ja.

01:01:39.840 --> 01:01:41.840
johannes: Dictionaries and Sets

01:01:39.980 --> 01:01:42.980
dominik: Ja.

01:01:41.840 --> 01:01:43.840
johannes: ist das nächste Kapitel.

01:01:43.840 --> 01:01:49.840
johannes: Schreibt in den Kommentaren,

01:01:49.840 --> 01:01:51.840
johannes: was ihr haben wollt.

01:01:51.840 --> 01:01:53.840
johannes: [Lacht]

01:01:53.840 --> 01:02:01.840
johannes: Natürlich haben wir Pics.

01:01:57.000 --> 01:01:59.000
jochen: Ja.

01:01:59.000 --> 01:02:02.000
jochen: Ja.

01:02:01.840 --> 01:02:03.840
johannes: Du hast einen, Jochen, ich habe den gleichen wie du.

01:02:03.840 --> 01:02:07.840
johannes: Ja, sag du mal.

01:02:04.980 --> 01:02:06.980
dominik: Ja.

01:02:06.980 --> 01:02:09.980
dominik: Ja.

01:02:07.840 --> 01:02:17.840
johannes: Ach, du hast doch nicht den gleichen.

01:02:17.840 --> 01:02:19.840
johannes: [Lacht]

01:02:19.840 --> 01:02:21.840
johannes: Ja.

01:02:26.000 --> 01:02:28.000
jochen: Ja.

01:02:28.000 --> 01:02:31.000
jochen: Ja.

01:02:34.980 --> 01:02:36.980
dominik: Ja.

01:02:35.840 --> 01:03:01.840
johannes: [Lacht]

01:02:36.980 --> 01:02:39.980
dominik: Ja.

01:02:55.000 --> 01:02:57.000
jochen: Ja.

01:02:57.000 --> 01:03:00.000
jochen: Ja.

01:03:01.840 --> 01:03:03.840
johannes: [Lacht]

01:03:01.980 --> 01:03:03.980
dominik: Ja.

01:03:03.840 --> 01:03:09.840
johannes: [Lacht]

01:03:03.980 --> 01:03:06.980
dominik: Ja.

01:03:09.840 --> 01:03:11.840
johannes: [Lacht]

01:03:11.840 --> 01:03:23.840
johannes: Okay.

01:03:23.840 --> 01:03:25.840
johannes: Jochen, ich dachte, du pickst UV.

01:03:24.000 --> 01:03:26.000
jochen: Ja.

01:03:25.840 --> 01:03:27.840
johannes: Das ist nämlich mein erster Pick,

01:03:26.000 --> 01:03:29.000
jochen: Ja.

01:03:27.840 --> 01:03:29.840
johannes: diese Episode.

01:03:29.840 --> 01:03:31.840
johannes: UV ist was ganz, ganz Komisches.

01:03:30.980 --> 01:03:32.980
dominik: Ja.

01:03:31.840 --> 01:03:33.840
johannes: UV ist ein Package Manager für Python,

01:03:32.980 --> 01:03:35.980
dominik: Ja.

01:03:33.840 --> 01:03:35.840
johannes: aber geschrieben in Rust.

01:03:35.840 --> 01:03:41.840
johannes: Ich glaube nicht.

01:03:41.840 --> 01:03:43.840
johannes: Ich pick das heute,

01:03:43.840 --> 01:03:45.840
johannes: weil es mir wieder begegnet

01:03:45.840 --> 01:03:47.840
johannes: und ich muss es jetzt endlich mal ausprobieren

01:03:47.840 --> 01:03:49.840
johannes: und das ist sicherlich großartig.

01:03:49.840 --> 01:03:51.840
johannes: Großartig.

01:03:51.840 --> 01:03:57.840
johannes: Hm.

01:03:53.000 --> 01:03:55.000
jochen: Ja.

01:03:55.000 --> 01:03:58.000
jochen: Ja.

01:03:57.840 --> 01:04:03.840
johannes: Und es ist schneller.

01:03:59.980 --> 01:04:01.980
dominik: Ja.

01:04:01.980 --> 01:04:04.980
dominik: Ja.

01:04:03.840 --> 01:04:09.840
johannes: Da freut sich der interne Casey Moratory.

01:04:17.840 --> 01:04:19.840
johannes: [Lacht]

01:04:19.840 --> 01:04:21.840
johannes: Ja, ist doch auch eine Gelegenheit.

01:04:21.840 --> 01:04:23.840
johannes: Ja.

01:04:22.000 --> 01:04:24.000
jochen: Ja.

01:04:23.840 --> 01:04:25.840
johannes: [Lacht]

01:04:24.000 --> 01:04:27.000
jochen: Ja.

01:04:28.980 --> 01:04:30.980
dominik: Ja.

01:04:30.980 --> 01:04:33.980
dominik: Ja.

01:04:35.840 --> 01:05:01.840
johannes: [Lacht]

01:04:51.000 --> 01:04:53.000
jochen: Ja.

01:04:53.000 --> 01:04:56.000
jochen: Ja.

01:04:57.980 --> 01:04:59.980
dominik: Ja.

01:04:59.980 --> 01:05:02.980
dominik: Ja.

01:05:01.840 --> 01:05:03.840
johannes: Jetzt wollen wir auch mal wieder welches.

01:05:03.840 --> 01:05:29.840
johannes: Als Poetry verwenden.

01:05:20.000 --> 01:05:22.000
jochen: Ja.

01:05:22.000 --> 01:05:25.000
jochen: Ja.

01:05:26.980 --> 01:05:28.980
dominik: Ja.

01:05:28.980 --> 01:05:31.980
dominik: Ja.

01:05:29.840 --> 01:05:31.840
johannes: [Lacht]

01:05:31.840 --> 01:05:47.840
johannes: Hat UV Venture Capital genommen?

01:05:47.840 --> 01:05:51.840
johannes: Sind die kapitalfinanziert?

01:05:49.000 --> 01:05:51.000
jochen: Ja.

01:05:51.840 --> 01:05:53.840
johannes: Das ist ja witzig.

01:05:53.000 --> 01:06:00.000
jochen: Ja.

01:05:53.840 --> 01:05:55.840
johannes: In den letzten Jahren gab es so ein paar Projekte,

01:05:55.840 --> 01:05:57.840
johannes: von denen ich dachte, das ist ja weird.

01:05:55.980 --> 01:05:57.980
dominik: Ja.

01:05:57.840 --> 01:05:59.840
johannes: Jetzt UV ist so eins, wo ich mir denke,

01:05:57.980 --> 01:06:00.980
dominik: Ja.

01:05:59.840 --> 01:06:02.840
johannes: ist das wirklich was, womit du Venture Capitalists ansprichst?

01:06:00.000 --> 01:06:04.000
jochen: Ja.

01:06:02.840 --> 01:06:04.840
johannes: Was ist denn da das Pitch Deck?

01:06:04.000 --> 01:06:06.000
jochen: Ja.

01:06:04.840 --> 01:06:06.840
johannes: Was ist denn da das ...

01:06:06.000 --> 01:06:08.000
jochen: Ja, das selbe Format, genau.

01:06:06.840 --> 01:06:11.840
johannes: Ja, es gibt noch so ein Terminal Client.

01:06:08.000 --> 01:06:16.000
jochen: Der arbeitet fest bei Sunfree.

01:06:11.840 --> 01:06:23.840
johannes: Das ist doch Developer Evangelist, oder?

01:06:16.000 --> 01:06:18.000
jochen: Ja.

01:06:18.000 --> 01:06:23.000
jochen: Genau, genau, der ...

01:06:23.000 --> 01:06:26.000
jochen: Ja, kann sein.

01:06:23.840 --> 01:06:25.840
johannes: Der darf doch machen, was er will.

01:06:24.980 --> 01:06:26.980
dominik: Ja.

01:06:25.840 --> 01:06:27.840
johannes: [Lacht]

01:06:26.000 --> 01:06:31.000
jochen: Aber nee, das war auch einer von den Leuten, der hat auch in dem Svet da mitgeschrieben und meinte so, ja, also ...

01:06:26.980 --> 01:06:29.980
dominik: Ja.

01:06:27.840 --> 01:06:39.840
johannes: [Lacht]

01:06:31.000 --> 01:06:37.000
jochen: Rai hat ja vorher geschrieben, nee, die sollen das ruhig mal machen, die machen das schon besser und so, das ist wunderbar alles.

01:06:37.000 --> 01:06:39.000
jochen: Und dachte mir, ja gut, okay, wenn der das sagt.

01:06:39.000 --> 01:06:45.000
jochen: Aber nee, genau, das Textual oder der, wie heißt der, Will?

01:06:39.840 --> 01:06:41.840
johannes: [Lacht]

01:06:41.840 --> 01:07:05.840
johannes: Eine Tui?

01:06:45.000 --> 01:06:52.000
jochen: Der Rich geschrieben hat, der hat auch ein Venture Capital genommen für, ja ...

01:06:52.000 --> 01:07:03.000
jochen: Also das ist tatsächlich ganz schön schlecht, das CLI, so ein Maus-Clickable und also mit UI-Hardware haben, das sieht halt so ein bisschen aus wie so ein rückzügiges Interface in der CLI.

01:06:53.980 --> 01:06:55.980
dominik: Ja.

01:06:55.980 --> 01:06:58.980
dominik: Ja.

01:07:03.000 --> 01:07:05.000
jochen: Ja, Textual, ja, genau.

01:07:05.000 --> 01:07:07.000
jochen: Und, ja ...

01:07:05.840 --> 01:07:07.840
johannes: [Lacht]

01:07:07.000 --> 01:07:11.000
jochen: Und Pydentic hat halt auch jede Menge Venture Capital genommen.

01:07:07.840 --> 01:07:13.840
johannes: Ja gut, da würde ich aber gerne mal sehen,

01:07:11.000 --> 01:07:14.000
jochen: Also ...

01:07:13.840 --> 01:07:15.840
johannes: wie das wieder rauskommt.

01:07:14.000 --> 01:07:17.000
jochen: [unverständlich]

01:07:15.840 --> 01:07:17.840
johannes: Aber gut, das werden wir ja dann alle sehen.

01:07:17.000 --> 01:07:21.000
jochen: Das werden wir alle sehen, das werden wir alle spüren, das werden wir alle an unseren Daumen spüren.

01:07:17.840 --> 01:07:19.840
johannes: Alle zusammen werden wir dann ...

01:07:19.840 --> 01:07:22.840
johannes: Mhm.

01:07:21.000 --> 01:07:26.000
jochen: Hoffentlich werden die Schrauben nicht zu spitz sein, die sie uns da reindrehen, aber das wird ...

01:07:22.840 --> 01:07:26.840
johannes: [Lacht]

01:07:22.980 --> 01:07:24.980
dominik: Ja.

01:07:24.980 --> 01:07:27.980
dominik: Ja.

01:07:26.000 --> 01:07:30.000
jochen: Ich höre, das klingt, also ich, ja, dass es viel Spaß macht.

01:07:26.840 --> 01:07:29.840
johannes: Ja, könnte sein, dass das noch ...

01:07:29.840 --> 01:07:31.840
johannes: Na ja, gut.

01:07:30.000 --> 01:07:37.000
jochen: [unverständlich]

01:07:31.840 --> 01:07:33.840
johannes: [Lacht]

01:07:33.840 --> 01:07:39.840
johannes: Dann ...

01:07:37.000 --> 01:07:39.000
jochen: Ja, sieht ein bisschen danach aus.

01:07:39.000 --> 01:07:43.000
jochen: Auch für mich ist, also das setzt jetzt tatsächlich alles das, was PipTools sonst macht.

01:07:39.840 --> 01:07:48.840
johannes: [Lacht]

01:07:43.000 --> 01:07:47.000
jochen: Und, ja, wenn es das Gleiche macht wie PipTools und es ist schneller, naja gut, dann, ja.

01:07:47.000 --> 01:08:00.000
jochen: [unverständlich]

01:07:48.840 --> 01:07:50.840
johannes: Gekauft, Jochen, gekauft.

01:07:50.840 --> 01:07:52.840
johannes: Und da ist auch schon das Stichwort gefallen.

01:07:51.980 --> 01:07:53.980
dominik: Ja.

01:07:52.840 --> 01:07:55.840
johannes: Genau, dann ist es doch ein guter Pick.

01:07:53.980 --> 01:07:58.980
dominik: Ja.

01:07:55.840 --> 01:07:57.840
johannes: Aber ich habe noch einen zweiten.

01:07:57.840 --> 01:07:59.840
johannes: Ich halte das mal hier in die Kamera.

01:07:58.980 --> 01:08:01.980
dominik: Ja.

01:07:59.840 --> 01:08:01.840
johannes: Ihr könnt das jetzt natürlich nicht sehen,

01:08:00.000 --> 01:08:01.000
jochen: Oh.

01:08:01.000 --> 01:08:02.000
jochen: Nature of Code.

01:08:01.840 --> 01:08:03.840
johannes: aber ich habe hier "The Nature of Code -

01:08:02.000 --> 01:08:04.000
jochen: Nature of Code? Okay.

01:08:03.840 --> 01:08:05.840
johannes: Simulating Natural Systems with JavaScript".

01:08:04.000 --> 01:08:33.000
jochen: [unverständlich]

01:08:05.840 --> 01:08:07.840
johannes: Ich weiß, es ist JavaScript,

01:08:07.840 --> 01:08:09.840
johannes: und es ist schade, dass es JavaScript ist.

01:08:09.840 --> 01:08:12.840
johannes: Aber es gibt eine Python-Adaptierung davon,

01:08:12.840 --> 01:08:14.840
johannes: von Daniel Schiffman.

01:08:14.840 --> 01:08:16.840
johannes: Da ist jetzt am 3. September

01:08:16.840 --> 01:08:18.840
johannes: die zweite Auflage herausgekommen.

01:08:18.840 --> 01:08:20.840
johannes: Und ...

01:08:20.840 --> 01:08:22.840
johannes: da gibt es auch eine Videoserie dazu.

01:08:20.980 --> 01:08:22.980
dominik: Ja.

01:08:22.840 --> 01:08:24.840
johannes: Der Daniel Schiffman, der ist Professor,

01:08:22.980 --> 01:08:25.980
dominik: Ja.

01:08:24.840 --> 01:08:26.840
johannes: ich glaube, in New York,

01:08:26.840 --> 01:08:28.840
johannes: in irgendeiner Universität,

01:08:28.840 --> 01:08:30.840
johannes: hat eine Universität für technische Videostreams.

01:08:30.840 --> 01:08:32.840
johannes: Der benutzt p5.js.

01:08:32.840 --> 01:08:34.840
johannes: Das ist so eine Variante von Processing.

01:08:33.000 --> 01:08:34.000
jochen: Ja.

01:08:34.000 --> 01:09:03.000
jochen: [unverständlich]

01:08:34.840 --> 01:08:37.840
johannes: Also, es ist quasi Processing in JavaScript.

01:08:37.840 --> 01:08:39.840
johannes: Da gibt es auch tatsächlich,

01:08:39.840 --> 01:08:41.840
johannes: es gibt auch Py5, heißt das, glaube ich.

01:08:41.840 --> 01:08:43.840
johannes: Das ist die Python-Variante,

01:08:43.840 --> 01:08:45.840
johannes: die genauso ist.

01:08:45.840 --> 01:08:47.840
johannes: Und er erklärt einfach

01:08:47.840 --> 01:08:49.840
johannes: JavaScript-Programmierung

01:08:49.840 --> 01:08:52.840
johannes: anhand von so Simulationsbeispielen.

01:08:49.980 --> 01:08:51.980
dominik: Ja.

01:08:51.980 --> 01:08:54.980
dominik: Ja.

01:08:52.840 --> 01:08:55.840
johannes: Anhand von, hier ist jetzt mal ein Punkt.

01:08:55.840 --> 01:08:57.840
johannes: Wie können wir dafür sorgen,

01:08:57.840 --> 01:08:59.840
johannes: dass er sich bewegt?

01:08:59.840 --> 01:09:01.840
johannes: Und wie können wir dafür sorgen,

01:09:01.840 --> 01:09:03.840
johannes: dass er sich hübsch bewegt?

01:09:03.000 --> 01:09:20.000
jochen: [unverständlich]

01:09:03.840 --> 01:09:05.840
johannes: Und wie können wir dafür sorgen,

01:09:05.840 --> 01:09:07.840
johannes: dass er irgendwie lustige Bewegungen macht?

01:09:07.840 --> 01:09:09.840
johannes: Und am Ende von jedem Kapitel

01:09:09.840 --> 01:09:11.840
johannes: ist noch eine Aufforderung,

01:09:11.840 --> 01:09:13.840
johannes: hier, probier doch mal folgende Dinge

01:09:13.840 --> 01:09:15.840
johannes: damit zu simulieren.

01:09:15.840 --> 01:09:17.840
johannes: Und probier doch mal was aus,

01:09:17.840 --> 01:09:19.840
johannes: probier, was passiert,

01:09:18.980 --> 01:09:20.980
dominik: Ja.

01:09:19.840 --> 01:09:21.840
johannes: wenn du diesen, das und jenes veränderst.

01:09:20.000 --> 01:09:21.000
jochen: Mhm.

01:09:20.980 --> 01:09:23.980
dominik: Ja.

01:09:21.000 --> 01:09:50.000
jochen: [unverständlich]

01:09:21.840 --> 01:09:23.840
johannes: Das ist in den ersten Kapiteln,

01:09:23.840 --> 01:09:25.840
johannes: also ich habe jetzt hier so ungefähr

01:09:25.840 --> 01:09:27.840
johannes: eine Gabel und das hier ist ein Array

01:09:27.840 --> 01:09:29.840
johannes: und das ist eine, und hier kannst du

01:09:29.840 --> 01:09:31.840
johannes: eine Methode aufrufen. Was ist überhaupt eine Methode?

01:09:31.840 --> 01:09:33.840
johannes: Und nicht vergessen, this bedeutet immer

01:09:33.840 --> 01:09:35.840
johannes: das aktuelle Objekt und so.

01:09:35.840 --> 01:09:37.840
johannes: Das wird, glaube ich,

01:09:37.840 --> 01:09:39.840
johannes: in den späteren Kapiteln noch deutlich

01:09:39.840 --> 01:09:41.840
johannes: interessanter, weil da, ihr habt die Videos gesehen

01:09:41.840 --> 01:09:43.840
johannes: und da kommen noch

01:09:43.840 --> 01:09:45.840
johannes: spannende Dinge zu Tage,

01:09:45.840 --> 01:09:47.840
johannes: die man damit machen kann.

01:09:47.840 --> 01:09:49.840
johannes: Aber es ist eben sehr spielerisch.

01:09:47.980 --> 01:09:49.980
dominik: Ja.

01:09:49.840 --> 01:09:51.840
johannes: Es ist sehr, du siehst immer was.

01:09:49.980 --> 01:09:52.980
dominik: Ja.

01:09:50.000 --> 01:10:00.000
jochen: [unverständlich]

01:09:51.840 --> 01:09:53.840
johannes: Es bewegt sich immer was.

01:09:53.840 --> 01:09:55.840
johannes: Es ist klickbar und es ist immer irgendwie

01:09:55.840 --> 01:09:59.840
johannes: anschaubar.

01:09:59.840 --> 01:10:01.840
johannes: Und das, das gefällt mir

01:10:00.000 --> 01:10:01.000
jochen: Oh.

01:10:01.000 --> 01:10:07.000
jochen: [unverständlich]

01:10:01.840 --> 01:10:03.840
johannes: sehr gut. Das ist eine sehr gute Technik,

01:10:03.840 --> 01:10:05.840
johannes: wie man immer was hat, was

01:10:05.840 --> 01:10:07.840
johannes: interessant ist. Und nicht nur,

01:10:07.000 --> 01:10:12.000
jochen: Ja, ich erinnere mich an die Steuerroboter, hat das von den Dingen, die den Weltraum steuern sollen oder sowas.

01:10:07.840 --> 01:10:09.840
johannes: hier ist eine Datei, lies die mal,

01:10:09.840 --> 01:10:11.840
johannes: wie viele,

01:10:11.840 --> 01:10:15.840
johannes: ja, genau. Deshalb ist das

01:10:12.000 --> 01:10:14.000
jochen: [unverständlich]

01:10:14.000 --> 01:10:15.000
jochen: Oh.

01:10:15.000 --> 01:10:21.000
jochen: [unverständlich]

01:10:15.840 --> 01:10:17.840
johannes: mein zweiter Pick, The Nature of Code von Daniel Schiffman.

01:10:17.840 --> 01:10:19.840
johannes: Gerade neu rausgekommen,

01:10:17.980 --> 01:10:19.980
dominik: Ja.

01:10:19.840 --> 01:10:21.840
johannes: auch wundervolles Cover mit

01:10:19.980 --> 01:10:22.980
dominik: Ja.

01:10:21.000 --> 01:10:22.000
jochen: Ja.

01:10:21.840 --> 01:10:23.840
johannes: einer brillanten,

01:10:22.000 --> 01:10:29.000
jochen: [unverständlich]

01:10:23.840 --> 01:10:25.840
johannes: rosafarbenen

01:10:25.840 --> 01:10:27.840
johannes: Simulation

01:10:27.840 --> 01:10:29.840
johannes: außen drauf.

01:10:29.000 --> 01:10:30.000
jochen: Ja, klingt gut.

01:10:29.840 --> 01:10:31.840
johannes: Und auch innen drin, das ist sehr schön hier,

01:10:30.000 --> 01:10:35.000
jochen: [unverständlich]

01:10:31.840 --> 01:10:33.840
johannes: die Innenseite des Einbands führt

01:10:33.840 --> 01:10:35.840
johannes: dieses Muster fort. Das finde ich sehr schön.

01:10:35.000 --> 01:10:37.000
jochen: Ah, hervorragend.

01:10:37.000 --> 01:10:42.000
jochen: Ja, was mir da noch ganz kurz zu einem fällt, ist, ich habe letztens eine Podcast-Episode gehört,

01:10:42.000 --> 01:10:53.000
jochen: mit, na, wie heißt der noch, David Crockford, der, also, JavaScript, ja, viel mit JavaScript gemacht hat

01:10:44.980 --> 01:10:46.980
dominik: Ja.

01:10:46.980 --> 01:10:49.980
dominik: Ja.

01:10:49.840 --> 01:10:51.840
johannes: Der Urvater des JavaScript.

01:10:51.840 --> 01:10:53.840
johannes: [lacht]

01:10:53.000 --> 01:10:59.000
jochen: und auch da irgendwie das eines der besten Bücher da geschrieben hat, das irgendwie relativ knackig und kurz ist.

01:10:59.000 --> 01:11:04.000
jochen: Und der, ach genau, der auch sich den JSON-Standard ausgedacht hat und so.

01:11:04.000 --> 01:11:14.000
jochen: Der, ich wusste gar nicht, wie hartnäckig die XML-Crowd an der Stelle irgendwie angepisst war davon,

01:11:13.980 --> 01:11:15.980
dominik: Ja.

01:11:14.000 --> 01:11:19.000
jochen: aber er meinte halt wirklich, er hatte Todesdrogen gekriegt von Leuten aus der XML-Community

01:11:15.980 --> 01:11:18.980
dominik: Ja.

01:11:19.000 --> 01:11:23.000
jochen: und war da auch nicht so richtig amüsiert drüber.

01:11:23.000 --> 01:11:24.000
jochen: Links, links, bitte.

01:11:24.000 --> 01:11:27.000
jochen: Ja, den Podcast verlinke ich mal.

01:11:27.000 --> 01:11:31.000
jochen: Aber der hat nämlich dann nebenher noch was anderes Interessantes gemacht, nämlich dann,

01:11:31.000 --> 01:11:36.000
jochen: also einmal, also, ansonsten waren so ein paar sehr coole Aussagen dabei, so was wie,

01:11:36.000 --> 01:11:41.000
jochen: na ja, also, also, wurde gefragt, so, wie ist denn ein TypeScript, ist das irgendwie eine sinnvolle Weiterentwicklung von,

01:11:41.000 --> 01:11:43.000
jochen: und ist das gut und so?

01:11:42.980 --> 01:11:44.980
dominik: Ja.

01:11:43.000 --> 01:11:48.000
jochen: Und er war so, ja, also, wenn es irgendwie den .NET-Entwicklern das irgendwie einfacher macht irgendwie,

01:11:44.980 --> 01:11:47.980
dominik: Ja.

01:11:48.000 --> 01:11:52.000
jochen: dass sie da jetzt JavaScript schreiben müssen, dann ist das wohl okay.

01:11:52.000 --> 01:11:57.000
jochen: Also, ich brauche das jetzt nicht, aber, also, okay.

01:11:57.000 --> 01:12:03.000
jochen: Na ja, aber der hatte so eine interessante Hobbygeschichte, und er meinte,

01:12:03.000 --> 01:12:06.000
jochen: er interessiert sich eigentlich sehr stark für Mathematik und so,

01:12:06.000 --> 01:12:10.000
jochen: aber jetzt nicht so für die komplizierten Sachen, sondern so die einfachen, basic Geschichten,

01:12:10.000 --> 01:12:11.000
jochen: der findet die voll toll.

01:12:11.000 --> 01:12:16.000
jochen: Und deswegen, weil er findet, diese Teile der Mathematik kriegen irgendwie zu wenig Liebe ab.

01:12:11.980 --> 01:12:13.980
dominik: Ja.

01:12:13.980 --> 01:12:16.980
dominik: Ja.

01:12:16.000 --> 01:12:19.000
jochen: Und es gibt da so komische Sachen, wie zum Beispiel meinte er,

01:12:19.000 --> 01:12:23.000
jochen: also, wisst ihr eigentlich, was eine Hypotenuse ist, oder so?

01:12:23.000 --> 01:12:25.000
jochen: Und wisst ihr, wie man das schreibt?

01:12:25.000 --> 01:12:30.000
jochen: Und so, keine Ahnung, ja, also, das weiß tatsächlich kaum jemand,

01:12:25.840 --> 01:12:39.840
johannes: Im rechtwinkligen Dreieck.

01:12:30.000 --> 01:12:34.000
jochen: aber dabei ist das total wichtig, also, auch so gerade für so ganz einfache Sachen.

01:12:34.000 --> 01:12:37.000
jochen: Das ist halt die lange Seite in einem Dreieck.

01:12:37.000 --> 01:12:41.000
jochen: Und er so, ja, warum nennen wir das nicht einfach, ja, also, ich meine,

01:12:39.840 --> 01:12:51.840
johannes: Wenn es nicht griechisch ist,

01:12:40.980 --> 01:12:42.980
dominik: Ja.

01:12:41.000 --> 01:12:45.000
jochen: natürlich gibt es auch Dreiecke, die haben, das sind die Seiten gleich lang und so,

01:12:42.980 --> 01:12:45.980
dominik: Ja.

01:12:45.000 --> 01:12:48.000
jochen: aber warum nennen wir das nicht einfach die lange Seite?

01:12:48.000 --> 01:12:49.000
jochen: Das wäre viel einfacher.

01:12:49.000 --> 01:12:53.000
jochen: Wenn wir das immer Hypotenuse nennen, das ist einfach, ja, genau,

01:12:51.840 --> 01:12:53.840
johannes: ist es nicht cool genug.

01:12:53.000 --> 01:12:57.000
jochen: ist nicht cool genug, aber es verwirrt halt viele Leute und schreckt halt ab

01:12:53.840 --> 01:12:55.840
johannes: [lacht]

01:12:55.840 --> 01:13:07.840
johannes: Oh.

01:12:57.000 --> 01:13:00.000
jochen: und eigentlich ist es aber irgendwie gar nicht so schwierig.

01:13:00.000 --> 01:13:04.000
jochen: Ja, und er nannte das, dieses Gebiet, was er da, womit er sich da beschäftigt,

01:13:04.000 --> 01:13:09.000
jochen: nannte er Lower Mathematics im Gegensatz zu dem Zweier Mathematics.

01:13:07.840 --> 01:13:09.840
johannes: [lacht]

01:13:09.000 --> 01:13:11.000
jochen: Das ist so großartig.

01:13:09.840 --> 01:13:15.840
johannes: Ja.

01:13:09.980 --> 01:13:11.980
dominik: Ja.

01:13:11.000 --> 01:13:14.000
jochen: Da gibt es ganz viel Kraft, der sich so über die Jahrhunderte angesammelt hat,

01:13:11.980 --> 01:13:14.980
dominik: Ja.

01:13:14.000 --> 01:13:17.000
jochen: das können wir eigentlich alles mal wegmachen, das ist alles Blödsinn.

01:13:15.840 --> 01:13:17.840
johannes: Das stimmt.

01:13:17.000 --> 01:13:27.000
jochen: Ja, die einfach so willkürlich sind und, ja.

01:13:17.840 --> 01:13:19.840
johannes: Ja, aber

01:13:19.840 --> 01:13:21.840
johannes: und es gibt auch ganz viele Notationssachen

01:13:21.840 --> 01:13:23.840
johannes: und ganz viele so Benennungssachen,

01:13:23.840 --> 01:13:25.840
johannes: die

01:13:25.840 --> 01:13:27.840
johannes: ja und die auch

01:13:27.000 --> 01:13:45.000
jochen: Nur weil Sie den höheren Sinn davon noch nicht verstanden haben, Johannes.

01:13:27.840 --> 01:13:29.840
johannes: die Didaktik

01:13:29.840 --> 01:13:31.840
johannes: einfach kaputt machen und die

01:13:31.840 --> 01:13:33.840
johannes: wo du halt durch musst und

01:13:33.840 --> 01:13:37.840
johannes: genau, weil die Higher Mathematics, weil wir

01:13:37.840 --> 01:13:39.840
johannes: wir haben das lernen müssen.

01:13:38.980 --> 01:13:40.980
dominik: Ja.

01:13:39.840 --> 01:13:41.840
johannes: Dann müssen die jungen Leute das heute auch lernen

01:13:40.980 --> 01:13:43.980
dominik: Ja.

01:13:41.840 --> 01:13:43.840
johannes: und es ist mir scheißegal, ob das nützlich ist oder nicht.

01:13:43.840 --> 01:13:45.840
johannes: [lacht]

01:13:45.000 --> 01:13:49.000
jochen: Ja, okay, na gut. Also ich tippe natürlich wieder was Unsinniges und zwar,

01:13:49.000 --> 01:13:53.000
jochen: schönen Tipp bekommen, ihr wisst ja, ich mache Musik, man kann hier hören,

01:13:53.000 --> 01:14:01.000
jochen: die DRB Bespoke, die sind ja auch ein kommerzielles Produkt, also eine DRB,

01:14:01.000 --> 01:14:05.000
jochen: also eine digitale Audio Workstation, mit der man Live-Coding machen kann,

01:14:05.000 --> 01:14:12.000
jochen: von Musik, das heißt Live-Coding Access Solut, was eigentlich sehr nice ist,

01:14:07.980 --> 01:14:09.980
dominik: Ja.

01:14:09.980 --> 01:14:12.980
dominik: Ja.

01:14:12.000 --> 01:14:15.000
jochen: wenn man ein bisschen modular mag, oder Musik machen mag,

01:14:15.000 --> 01:14:19.000
jochen: da kann man dann ein Instrument und Filter und sowas in Kette schalten,

01:14:19.000 --> 01:14:23.000
jochen: die alle über den Interpreterkoden und sich da funktionieren verbauen.

01:14:23.000 --> 01:14:25.000
jochen: Das sieht ganz nice aus.

01:14:25.000 --> 01:14:31.000
jochen: Ah, hast du eigentlich den Vortrag von Lukas Schlange auf der EuroPython?

01:14:31.000 --> 01:14:34.000
jochen: Ja, der war live da, war das natürlich geil, weil er hat außer dem Modular Ding mitgenommen.

01:14:34.000 --> 01:14:37.000
jochen: Ich habe mich da ein bisschen belästigt, habe mir das ein bisschen angeschaut,

01:14:36.980 --> 01:14:38.980
dominik: Ja.

01:14:37.000 --> 01:14:40.000
jochen: und er hatte schon einige andere nette Sachen da drin stehen.

01:14:38.980 --> 01:14:41.980
dominik: Ja.

01:14:40.000 --> 01:14:43.000
jochen: Das, ihr meint ja, was viele Leute nicht verstanden haben, ist,

01:14:43.000 --> 01:14:49.000
jochen: dass er auch nur funktioniert hat, so wie das mit quasi Noggle-Free-Threading,

01:14:49.000 --> 01:14:52.000
jochen: und dass das halt ein Showcase dafür war, aber dass das irgendwie keiner verstanden hat,

01:14:52.000 --> 01:14:55.000
jochen: und er war so ein bisschen enttäuscht, dass das irgendwie nicht so richtig angekommen ist.

01:14:55.000 --> 01:14:58.000
jochen: Ja, da hat er sich gedacht, das macht halt irgendwie Musik, aber das ist ja tatsächlich,

01:14:58.000 --> 01:15:00.000
jochen: ja, deswegen ganz gemütlich.

01:15:00.000 --> 01:15:03.000
jochen: Aber, ja, das war tatsächlich einer der Punkte, wo ich auch sagen würde,

01:15:03.000 --> 01:15:05.000
jochen: ey, das ist so Live-Coding, macht damit schon sehr viel Spaß.

01:15:05.000 --> 01:15:09.000
jochen: Er hat halt dann die Sachen auch alle vorbereitet, ne, das war mit dem neuen Rappel von 3.13 auch.

01:15:05.980 --> 01:15:07.980
dominik: Ja.

01:15:07.980 --> 01:15:10.980
dominik: Ja.

01:15:09.000 --> 01:15:18.000
jochen: Genau, er hatte auch die neue Rappel und hatte da so lustige Dinge, dass er halt dieses, na, Hash-Sharp.

01:15:18.000 --> 01:15:22.000
jochen: Er konnte auf einen Knopfdruck das Bild von Comic einbilden, das war auch sehr geil.

01:15:22.000 --> 01:15:23.000
jochen: Ah, ja.

01:15:23.000 --> 01:15:25.000
jochen: Und die Menschen von dem da auch schon kommentiert haben.

01:15:25.000 --> 01:15:26.000
jochen: Genau.

01:15:26.000 --> 01:15:30.000
jochen: Das war ziemlich lustig, und ja, weil er hat mit dem Euro-Projekt, also von meinem Feld,

01:15:30.000 --> 01:15:33.000
jochen: das hat er relativ wenig gemacht, er hat halt einmal seine Synth-Stimme vorher eingestellt,

01:15:33.000 --> 01:15:39.000
jochen: Out of Sieta, und das hat halt schöne Musik gemacht, und er hat halt ein bisschen getriggert,

01:15:34.980 --> 01:15:36.980
dominik: Ja.

01:15:36.980 --> 01:15:39.980
dominik: Ja.

01:15:39.000 --> 01:15:43.000
jochen: war halt eigentlich nur ein Instrument, was dann ein paar Töne gespielt hat,

01:15:43.000 --> 01:15:45.000
jochen: die Töne hat er aber halt dann gar nicht mehr.

01:15:45.000 --> 01:15:48.000
jochen: Also er hat ja ein bisschen gelebt, das Nostalgia weiter auf seine Preise gespielt,

01:15:48.000 --> 01:15:53.000
jochen: ich glaube er hat, ja, ich weiß nicht, welche Lippen er noch hat.

01:15:53.000 --> 01:15:55.000
jochen: Irgendwas Cooles mit MIDI-Access.

01:15:55.000 --> 01:15:58.000
jochen: Er hat über MIDI-Sachen halt eingefleutert, wie das geht.

01:15:55.840 --> 01:16:23.840
johannes: Was löst du?

01:15:58.000 --> 01:16:07.000
jochen: Ja, aber es gibt jetzt andere, Spokes und...

01:16:03.980 --> 01:16:05.980
dominik: Ja.

01:16:05.980 --> 01:16:08.980
dominik: Ja.

01:16:07.000 --> 01:16:08.000
jochen: Ah, cool.

01:16:08.000 --> 01:16:10.000
jochen: Ich habe das noch nicht selber ausprobiert, aber das steht auf meiner Liste,

01:16:10.000 --> 01:16:13.000
jochen: und ich muss das unbedingt gerne tun, weil...

01:16:13.000 --> 01:16:16.000
jochen: Synthesizer und so, gibt's auch.

01:16:16.000 --> 01:16:18.000
jochen: Ja, das war natürlich fett.

01:16:18.000 --> 01:16:19.000
jochen: Ja.

01:16:19.000 --> 01:16:20.000
jochen: Ich weiß nicht, wer das noch hat.

01:16:20.000 --> 01:16:21.000
jochen: Ich glaube ich.

01:16:21.000 --> 01:16:22.000
jochen: Hatten wir schon.

01:16:22.000 --> 01:16:23.000
jochen: Hm.

01:16:23.000 --> 01:16:25.000
jochen: Wir haben das schon.

01:16:23.840 --> 01:16:34.840
johannes: Das ist der USB-Modul von Stefan.

01:16:25.000 --> 01:16:34.000
jochen: Es gibt tatsächlich ein USB-Modul von dem Stefan.

01:16:32.980 --> 01:16:34.980
dominik: Ja.

01:16:34.000 --> 01:16:36.000
jochen: Egal, also, ja.

01:16:34.840 --> 01:16:36.840
johannes: Stefan.

01:16:34.980 --> 01:16:37.980
dominik: Ja.

01:16:36.000 --> 01:16:39.000
jochen: Synthesizer.

01:16:36.840 --> 01:17:05.840
johannes: [Lacht]

01:16:39.000 --> 01:16:41.000
jochen: Wo gehst du löten?

01:16:41.000 --> 01:16:45.000
jochen: In so einer, nennt man das Kollektiv?

01:16:45.000 --> 01:16:48.000
jochen: Es gibt ja so Hacker-Kollektive, das sind so Musik-Kollektive.

01:16:48.000 --> 01:16:49.000
jochen: Ja.

01:16:51.000 --> 01:16:52.000
jochen: Und dann wird gelötet.

01:16:52.000 --> 01:16:53.000
jochen: Ja.

01:16:53.000 --> 01:16:54.000
jochen: Ja, klar.

01:16:54.000 --> 01:16:55.000
jochen: Ja, weil das ist einfach einfach ein guter...

01:16:55.000 --> 01:16:57.000
jochen: Bei so einem Elektro-Egg ist das vielleicht für dich,

01:16:57.000 --> 01:16:59.000
jochen: wenn man einmal anfängt mit diesem ganzen Quatsch und dann

01:16:59.000 --> 01:17:03.000
jochen: Widerstände in tausender Packs und so rüber.

01:17:01.980 --> 01:17:03.980
dominik: Ja.

01:17:03.000 --> 01:17:05.000
jochen: Ja.

01:17:03.980 --> 01:17:06.980
dominik: Schön.

01:17:05.000 --> 01:17:09.000
jochen: Schön.

01:17:05.840 --> 01:17:10.840
johannes: Man kann die auch in den 100er-Packs kaufen. Die kosten genauso viel wie die 1000er-Packs.

01:17:06.980 --> 01:17:09.980
dominik: Ja, genau.

01:17:09.000 --> 01:17:11.000
jochen: Ja, genau.

01:17:09.980 --> 01:17:12.980
dominik: Ich glaube, ich brauche nur 13. 13 also.

01:17:10.840 --> 01:17:34.840
johannes: Du kannst auch in 10er-Packs kaufen. Die kosten so viel wie die 100er-Packs.

01:17:11.000 --> 01:17:15.000
jochen: Ich glaube ich war auch in 13, 13 oder so.

01:17:12.980 --> 01:17:15.980
dominik: Ja, du kennst dich aus.

01:17:15.000 --> 01:17:16.000
jochen: Tja.

01:17:15.980 --> 01:17:17.980
dominik: Ja.

01:17:16.000 --> 01:17:17.000
jochen: Ja, das kennt sich aus.

01:17:17.000 --> 01:17:19.000
jochen: Ja.

01:17:17.980 --> 01:17:19.980
dominik: Ja, tatsächlich. Ja, okay.

01:17:19.000 --> 01:17:20.000
jochen: Ja, tatsächlich.

01:17:19.980 --> 01:17:21.980
dominik: Ich wollte nur kurz abschweifen.

01:17:20.000 --> 01:17:21.000
jochen: Ja, okay.

01:17:21.000 --> 01:17:23.000
jochen: Ja, gut.

01:17:21.980 --> 01:17:25.980
dominik: Ja, also herzlichen Dank fürs Zuhören und dafür, dass du dabei warst.

01:17:23.000 --> 01:17:25.000
jochen: Ja, also herzlichen Dank fürs Zuhören.

01:17:25.000 --> 01:17:26.000
jochen: Ja.

01:17:25.980 --> 01:17:27.980
dominik: Und schreibt bei mir nichts mehr wieder rein.

01:17:26.000 --> 01:17:30.000
jochen: Schreibt bei mir so wieder rein, Feedback und Tag und so alles

01:17:27.980 --> 01:17:29.980
dominik: Feedback und Kritik und Deal und so alles an

01:17:29.980 --> 01:17:31.980
dominik: hallo@pythonpodcast.de

01:17:30.000 --> 01:17:31.000
jochen: an hallo@pysyn.com.

01:17:31.000 --> 01:17:32.000
jochen: Genau, und...

01:17:31.980 --> 01:17:33.980
dominik: Bleibt uns gewogen. Vielen Dank, Johannes.

01:17:32.000 --> 01:17:33.000
jochen: Vielen Dank für alles.

01:17:33.000 --> 01:17:37.000
jochen: Ja, dann vielen Dank.

01:17:33.980 --> 01:17:38.980
dominik: Bis bald. Tschüss.

01:17:34.840 --> 01:17:39.840
johannes: Danke euch allen. Einen schönen Abend.

01:17:37.000 --> 01:17:38.000
jochen: Bis bald.

01:17:38.000 --> 01:17:39.000
jochen: Bis zum nächsten Mal.

01:17:38.980 --> 01:17:40.980
dominik: Auf jeden Fall. Ciao, ciao.

01:17:39.000 --> 01:17:40.000
jochen: Tata.

