WEBVTT

00:00:01.000 --> 00:00:04.000
Ja, hallo liebe Hörerinnen und Hörer, willkommen zum Python-Podcast.

00:00:04.000 --> 00:00:10.160
Wir haben die elfte Episode heute und sind heute wieder in Jochens Winter-Sommergarten.

00:00:10.160 --> 00:00:11.180
Wir haben gerade Sommer.

00:00:11.180 --> 00:00:15.320
Ja, hey Jochen, und wir haben heute wieder einen tollen Gast dabei, das ist der Gerrit.

00:00:15.320 --> 00:00:18.040
Heute ist unser Thema Scientific Python.

00:00:18.040 --> 00:00:20.800
Ja, vielleicht darf er erst mal hallo, Gerrit, kurz, und dann...

00:00:20.800 --> 00:00:21.580
Oder so Python in der Wissenschaft.

00:00:21.580 --> 00:00:22.380
Hallo, Python in der Wissenschaft.

00:00:22.380 --> 00:00:26.540
Genau, weil Scientific Python ist ja ein Paket und das wollen wir nicht verwechseln.

00:00:26.540 --> 00:00:29.180
Wir reden eventuell auch über Scientific Python, aber...

00:00:29.180 --> 00:00:30.920
Ja, vielleicht sag doch kurz auch deinen Hörern, wer du bist.

00:00:30.920 --> 00:00:38.020
Ja, ich bin Gerrit, ich bin von Haus aus Physiker und beschäftige mich hauptsächlich mit komplexen Systemen

00:00:38.020 --> 00:00:44.080
und deren Anwendung auf diverse Fachgebiete, Neurophysik, zum Teil auch Wirtschaft

00:00:44.080 --> 00:00:49.340
und zurzeit Biologie und Ökosysteme aus Mikroben.

00:00:49.340 --> 00:00:52.200
Mikrobeller-Analyst habe ich mir aufgeschrieben.

00:00:52.200 --> 00:00:53.540
Das hast du dir aber ausgedacht.

00:00:53.540 --> 00:00:53.720
Ja.

00:00:53.720 --> 00:00:54.840
Wenn überhaupt, Mikrobiell.

00:00:54.840 --> 00:00:57.120
Okay, Mikrobieller-Analytiker.

00:00:57.120 --> 00:00:57.840
Ja, also.

00:00:58.800 --> 00:01:08.680
Und, ja, nutze dafür Python, um Sachen zu simulieren, um Daten zu analysieren und manchmal auch, um ganz komische Sachen mit symbolischem Rechnen zu machen.

00:01:08.680 --> 00:01:09.880
Und du spielst Golf.

00:01:09.880 --> 00:01:16.200
Und ich spiele, ja, also zurzeit eigentlich nicht mehr so viel, aber ich habe Golf gespielt und, ja.

00:01:16.200 --> 00:01:16.820
Ja, negativ.

00:01:16.820 --> 00:01:19.320
Da reden wir mal, also, keine Ahnung, wollen wir direkt darüber, über Golf reden?

00:01:19.320 --> 00:01:20.620
Die Code-Golf, ja, kommen wir gleich noch dazu.

00:01:20.620 --> 00:01:25.000
Wir machen einmal kurz so ein bisschen News wieder, verpeisen, wie wir das irgendwie so kennen und dann kommen wir irgendwie so zum Topic.

00:01:25.000 --> 00:01:27.320
Ja, ja, auf jeden Fall, weil dann mache ich hier schon mal die...

00:01:27.320 --> 00:01:28.300
Erste Kapitel-Markt.

00:01:28.300 --> 00:01:31.980
Erste Kapitel-Marke, äh, äh, alles klar.

00:01:31.980 --> 00:01:37.640
Ähm, ja, was gab es denn so, also irgendwas wie PyOxidizer oder sowas, vorgestern so eine News raus.

00:01:37.640 --> 00:01:52.660
Ja, das, äh, genau, äh, PyOxidizer ist irgendwie so ein, so eine Software, mit der es möglich sein soll, äh, ja, so eine Python-Applikation, äh, einen Standalone-Executable zu verwandeln, dass man dann einfach irgendwo hinschütten kann und dann läuft das da.

00:01:52.660 --> 00:01:57.800
Und das halt auch, äh, auf unterschiedlichen Plattformen, das heißt auf Unix ganz genauso wie auf, äh, Windows.

00:01:57.800 --> 00:02:08.640
Und, ähm, das ganze Ding ist irgendwie so Rust-basiert, also das, äh, packt den Python-Interpreter halt irgendwie in, äh, in, äh, in, in ein Rust-Programm.

00:02:08.640 --> 00:02:13.660
Also das ganze Ding ist sozusagen irgendwie hinterher das, was auch dabei rausfallen würde, wenn man einfach ein, ein Rust-Programm kompiliert.

00:02:13.660 --> 00:02:18.820
Ähm, und, ähm, ja, man kann alle möglichen Dinge noch mit dazu, man kann auch Rust-Code mit dazu...

00:02:18.820 --> 00:02:27.300
Also so kann man tatsächlich Python irgendwo mit hinschippen, also man braucht halt Python-Maison mehr mitmachen, wenn man irgendwo was deliveren will, beendable oder sowas, auf den Server gehen, hat man das dabei.

00:02:27.300 --> 00:02:32.120
Und dann läuft das dann direkt, oder auf Windows oder sowas, ne, für irgendwelche Nutzer, die halt damit nichts zu tun haben wollen, die...

00:02:32.120 --> 00:02:32.340
Genau.

00:02:32.340 --> 00:02:34.020
...können dann dieses PyOxygen aus und sind dann direkt...

00:02:34.020 --> 00:02:44.380
Ja, also das ist, das hatten wir letztes Mal auch schon, äh, und auch darauf nimmt auch, äh, quasi der, dieses, ähm, Announcement, äh, der Announcement-Bog-Post, die ich da heute gesehen hab, äh, äh, Bezug,

00:02:44.380 --> 00:02:53.740
dass es für Python keine so richtig konsistente, ähm, Story dazu gibt, wie das denn jetzt, äh, irgendwie installiert wird auf einer Maschine.

00:02:53.740 --> 00:02:56.840
Also das wäre wie so ein Black Swan, also eine der großen Bedrohungen.

00:02:56.960 --> 00:02:57.700
Wie so der Python-Community.

00:02:57.700 --> 00:03:17.720
Und das ist, das ist tatsächlich genau, und da gab's einen, einen Vortrag, äh, der, also das war die Keynote von der diesjährigen, äh, äh, PyCon, irgendwie US, äh, von, von Russell Kies-McGee, der sagte, naja, das ist halt eine, eine potenziell fatale Bedrohung eigentlich für Python als Sprache, dass das irgendwann mal den Zugang halt abschneiden kann zu allem.

00:03:17.720 --> 00:03:26.940
Also, auf, äh, mobilen Geräten ist es ja jetzt schon im Grunde so, da kommt man halt mit Python nicht drauf, und, ähm, ja, wenn man das halt, wenn man keine solche Story hat...

00:03:26.940 --> 00:03:42.900
...dann ist das halt echt blöd unter Umständen, also es macht für Entwickler ja nicht so einen Unterschied, ne, und das ist ja auch die Hauptzielgruppe, da ist es dann egal, da macht man sich sein Virtual Environment und, äh, äh, benutzt Pip und, äh, vielleicht noch ein paar andere Tools und so und hat damit kein Problem, aber für, äh, wenn man jetzt einen Endanwender hätte draußen, der...

00:03:42.900 --> 00:03:45.080
Ja, der will vielleicht gar nicht wissen, was für eine Sprache dahinter steckt, oder was?

00:03:45.080 --> 00:03:47.000
Genau, dem interessiert das nicht, ob das Python ist oder nicht.

00:03:47.000 --> 00:03:47.880
Ob das ganz funktioniert, machen wir schneller.

00:03:47.880 --> 00:03:54.280
Genau, genau, der möchte einfach nur irgendein Problem gelöst haben und gar nicht, äh, ein Problem bekommen, zusätzlich.

00:03:54.280 --> 00:03:56.920
Und das ist natürlich, äh, momentan so ein bisschen doof.

00:03:56.920 --> 00:04:09.120
Gerade für Windows, also für, für Unix gibt's da ja schon was, ähm, das, äh, also ehrlich gesagt weiß ich davon auch nur, weil, ähm, äh, derjenige, der das, äh, entwickelt hat, hier auch in, in Düsseldorf oder...

00:04:09.120 --> 00:04:09.420
PyRun.

00:04:09.420 --> 00:04:24.840
Genau, die Düsseldorfer Python User Group, äh, irgendwie, ähm, gegründet hat oder, äh, betreut, äh, irgendwie, ähm, äh, Marc-André Lemberg und, ähm, der, äh, hat, genau, das ist uralt, das hat, das ist irgendwie schon 20 Jahre alt oder so.

00:04:24.840 --> 00:04:26.220
Ja, ist noch ein 90er schon, kann man sagen.

00:04:26.900 --> 00:04:27.520
Äh, und...

00:04:27.520 --> 00:04:56.880
Und Python 1, was war das?

00:04:56.880 --> 00:05:26.860
Und, äh, das ist ziemlich nett, äh, das ganze, äh...

00:05:26.860 --> 00:05:42.060
Man kann da sogar noch so, so nette Dinge machen wie, ähm, äh, da das, äh, es beruht irgendwie darauf, dass man, glaube ich, das Modul, das irgendwie ausgeführt wird oder Entry Point ist halt irgendwie, äh, in einem Zip-File, das halt...

00:05:42.060 --> 00:05:43.700
Ja, das hört sich jetzt gerade ein bisschen kompliziert an, also...

00:05:43.700 --> 00:05:52.540
Ja, also, also, was, was man tun kann, ist, man kann halt, äh, eigene Sachen per Zip irgendwie einpacken, dann per Cut hinten an das Binary dranhängen und dann wird das halt ausgeführt, zum Beispiel, solche Sachen.

00:05:52.540 --> 00:05:54.900
Ah, ja, cool, also, also unsere eigenen Pakete und, und so.

00:05:54.900 --> 00:05:56.840
Ja, weil das, äh, weil halt das Binary...

00:05:56.840 --> 00:05:59.460
...irgendwie selbst hinten dran irgendwie schon Zip ist oder ich weiß es nicht mehr genau.

00:05:59.460 --> 00:06:14.420
Aber, also, also man kann damit sehr, sehr lustige Dinge tun und, äh, die, äh, von der Größe her, äh, wenn man das irgendwie so ein bisschen optimiert, dann ist das, glaube ich, irgendwie so knapp 5 MB groß oder sowas, aber rausfällt normalerweise und da ist halt die Standardbibliothek nicht komplett drin, aber zum großen Teil.

00:06:14.420 --> 00:06:18.640
Ja, und, ähm, ich weiß jetzt nicht, hab hier...

00:06:18.640 --> 00:06:20.780
Ja, aber jetzt kriegst du eine nette Alternative, das hört sich ganz nett an, ne?

00:06:20.780 --> 00:06:20.860
Genau.

00:06:20.860 --> 00:06:21.860
Dieses Hinterlohn-Single-File.

00:06:21.860 --> 00:06:25.740
Der, der, genau, der Vorteil bei PyOxidizer ist halt, dass das auf Windows halt auch funktioniert.

00:06:25.740 --> 00:06:26.820
Was sind PyRun halt?

00:06:26.820 --> 00:06:33.660
Dass jemand von euch von der PyCon 2019, äh, irgendwelche Talks gehört, Talks gesehen, irgendwie was Interessantes noch mitgebracht.

00:06:33.660 --> 00:06:40.200
Also, ich hatte einige Sachen gesehen, die ich mir natürlich wieder interessierte, war irgendwie, dass ein bisschen Musik wieder was dabei war mit Foxtot von Jessica Garson war ganz nett.

00:06:40.200 --> 00:06:42.000
Ähm, ja, und...

00:06:42.000 --> 00:06:44.840
Den hast du aber dann gesehen quasi tatsächlich, äh...

00:06:44.840 --> 00:06:50.040
Ja, ja, ich hab irgendwie aber nur kurz reingeguckt, ich muss das immer noch auf meiner Liste zu Ende schauen, das gibt ja da irgendwie auf YouTube so ein bisschen.

00:06:50.040 --> 00:06:53.680
Ja, und ich hab gehört, äh, Pinterest ist jetzt bald Python 3 oder so.

00:06:53.680 --> 00:06:56.800
Ach, ich dachte, die werden schon längst irgendwie umgeschaltet.

00:06:56.800 --> 00:07:04.940
Aber das war dann wahrscheinlich irgendwie Instagram oder so, da gab's so eine, äh, Riesendaten, die auch viel, äh, zu veröffentlicht, glaube ich, dass, wie sie da umgestiegen sind.

00:07:04.940 --> 00:07:05.560
Hab ich auch nicht gesehen, aber ich...

00:07:05.560 --> 00:07:09.040
Aber bei Pinterest, dass die auf Python 3 umsteigen, ist natürlich jetzt irgendwie so ein bisschen...

00:07:09.040 --> 00:07:11.320
So wirklich angeben kann man damit jetzt...

00:07:11.320 --> 00:07:12.060
Ja, ne, oder?

00:07:12.060 --> 00:07:12.820
Ja, ja, klar.

00:07:12.820 --> 00:07:13.160
Ich bin da für.

00:07:13.160 --> 00:07:15.680
Äh, ja, irgendwas...

00:07:15.680 --> 00:07:16.900
Wie lädt es an, die so umsteigen?

00:07:16.900 --> 00:07:26.780
Ja, ich hab gehört, also, äh, Python 4, also der, äh, Niklas, der war jetzt auch schon einmal bei uns hier, ähm, die haben jetzt ein Tutorial für Python 2.7 und der Python 3.7.

00:07:26.780 --> 00:07:28.340
3 veröffentlicht, das fand ich, äh, sehr lustig.

00:07:28.340 --> 00:07:28.920
Ah.

00:07:28.920 --> 00:07:30.500
Ja, und auch diese Woche.

00:07:30.500 --> 00:07:31.920
Ja.

00:07:31.920 --> 00:07:37.960
Ne, aber ansonsten hab ich auch tatsächlich im Grunde nix wirklich, was, äh, irgendwie an tollen Dingen passiert wäre.

00:07:37.960 --> 00:07:38.380
Hm.

00:07:38.380 --> 00:07:39.620
Ja.

00:07:39.620 --> 00:07:40.380
Ja, dann...

00:07:40.380 --> 00:07:41.760
Aber immerhin ist das schon so ein bisschen was.

00:07:41.760 --> 00:07:42.900
Ja, so ein kleines bisschen.

00:07:42.900 --> 00:07:43.380
Ja.

00:07:43.380 --> 00:07:47.460
Sonst machen wir dann nächstes Mal einfach wieder eine große News-Section und fangen jetzt einfach an mit unserem, äh, Scientific-Thema.

00:07:47.460 --> 00:07:49.240
Oder wollen wir erst mal was mit dem Golf spielen?

00:07:49.240 --> 00:07:50.560
Also spielst du auch richtig Golf oder nur Code-Golf?

00:07:50.560 --> 00:07:52.200
Ne, ich spiele, wenn überhaupt, Code-Golf.

00:07:52.200 --> 00:07:52.820
Ja, okay, okay.

00:07:52.820 --> 00:07:55.240
Ähm, zur Zeit auch ehrlich gesagt nicht mehr so viel.

00:07:55.360 --> 00:07:59.440
Irgendwann, wenn man das so ein paar Jahre gemacht hat, hat man alles gesehen, was es zu sehen...

00:07:59.440 --> 00:08:03.940
Jetzt erst mal für, für, für die, äh, ungewöhnliche Hörer, was ist das denn überhaupt, Code-Golf?

00:08:03.940 --> 00:08:10.800
Also Code-Golf ist die Aufgabe, dass man versucht, irgendeine Programmieraufgabe, zum Beispiel Programmiere die Fakultät oder was auch immer,

00:08:10.800 --> 00:08:17.440
mit möglichst wenig Zeichen zu lösen in einer gegebenen Programmiersprache in der Regel.

00:08:17.440 --> 00:08:23.960
Oder man kann es auch allgemein machen, aber da wir jetzt über Python reden und für die meisten Leute ist es das Interessanteste, in einer Programmiersprache zu machen.

00:08:23.960 --> 00:08:25.340
Und ja, ohne Rückschlüsse.

00:08:25.340 --> 00:08:36.300
Man berücksichtigt auf irgendwelche Regeln, ähm, und das kann Spaß machen, offensichtlicherweise, dass man einfach mal alle Regeln fallen lassen kann und wild böse programmieren kann.

00:08:36.300 --> 00:08:41.500
Ich kann mich noch daran erinnern, ich saß mal in so einem Talk von dir und da war ich immer noch ein absoluter Anfänger und ich habe mich nicht verstanden von dem, was du da...

00:08:41.500 --> 00:08:45.100
Irgendwas funktionierte da und dann irgendwie, ja, okay, warum machen wir das jetzt? Keine Ahnung, ja.

00:08:45.100 --> 00:08:53.400
Und, ja, also die zweite Sache, warum man es macht, wenn wir mal dabei bleiben, ist, ähm, dass man auch wirklich was über die Programmiersprache lernt oder das Programmieren am Allgemeinen,

00:08:55.320 --> 00:09:03.600
drüber nachdenkt, gewisse Probleme mit ganz neuen Algorithmen zu lösen, zum Beispiel rekursive Algorithmen statt irgendwelchen Schleifen oder, oder, oder.

00:09:03.600 --> 00:09:09.480
Und, ähm, ja, das macht einfach sehr viel Spaß, wenn man das ab und zu macht und man lernt auch viel.

00:09:09.480 --> 00:09:13.260
Da gibt es auch so Wettbewerbe oder sowas, ne? Also richtig mit 18 Löchern oder wie? Wie spielt man das?

00:09:13.260 --> 00:09:23.920
Äh, ne, also es gibt natürlich Webseiten, wo man dann seine Lösung veröffentlichen kann und dann sagen, okay, ich habe das jetzt kürzer gelöst als alle anderen oder zumindest kürzer in dieser Programmiersprache gelöst als alle anderen.

00:09:23.920 --> 00:09:25.140
Hast du da eine Schonnot für uns?

00:09:25.300 --> 00:09:25.980
Für, für eine Webseite?

00:09:25.980 --> 00:09:31.960
Ähm, es gibt eine Stack-Exchange-Seite zum Thema CodeGolf. Das ist auch die, wo ich hauptsächlich aktiv bin oder war.

00:09:31.960 --> 00:09:32.460
Ja.

00:09:32.460 --> 00:09:37.820
Ähm, es gibt andere Seiten, aber da muss ich ehrlich gesagt sagen, weiß ich gar nicht so viel drüber.

00:09:37.820 --> 00:09:38.440
Okay.

00:09:38.440 --> 00:09:44.340
Und, jetzt schau doch mal mit Stack-Exchange vorbei für CodeGolfen.

00:09:44.340 --> 00:09:54.860
Äh, ja, ich, wie gesagt, ich pack den Link da einfach dazu. Ähm, und was sind so deine, deine, hast du vielleicht Lieblingsaufgaben oder so oder was besonders, äh, irgendwie interessante, einen interessanten Lösungsweg hatte oder?

00:09:55.280 --> 00:10:05.580
Ja, also, ja, also interessante Lösungswege, ja gut, ich bin, komme aus der Physik-Mathematik-Ecke, also kann man, finde ich immer froh, wenn ich Sachen mit komplexen Zahlen oder so lösen kann.

00:10:05.580 --> 00:10:20.000
Also, klassisch sind irgendwelche Aufgaben wie, was weiß ich, irgendwer, irgendein Objekt bewegt sich in irgendeinem Raum oder irgendein, ähm, Robot oder was auch immer und man muss den steuern und das kann man natürlich machen, indem man zweidimensionale Koordinaten speichert.

00:10:20.000 --> 00:10:25.260
Das ist in der Regel aber kürzer, wenn man das Ganze in komplexen Zahlen löst.

00:10:25.260 --> 00:10:36.560
Ähm, und, ja, da gibt's dann einige Aufgaben, wo man das sehr lustig lösen kann und am Ende natürlich überhaupt nicht mehr, wenn man nicht eingeweiht ist, versteht, äh, was da eigentlich passiert.

00:10:36.560 --> 00:10:55.240
Ähm, und, ja, also ansonsten, ich kann, keine Ahnung, ich glaube, das Interessanteste, was man jetzt so auf dem, diesem Medium überhaupt kommunizieren kann, ist, sind dann vielleicht so ein paar Tricks, die man nutzen kann, also, ein klassisches Beispiel ist natürlich, wenn ich,

00:10:55.240 --> 00:11:19.560
wenn ich irgendwas habe, muss ich irgendwas in einer Schleife lösen, das kann man natürlich auch so machen, häufig ist es dann aber so, dass diese Schleife vielleicht nicht so spannend ist, also, dass da jetzt nicht so viele komplizierte Dinge passieren und dann könnte es zum Beispiel einfacher sein, den Befehl, den man in der Schleife ausführt, in einen String zu packen, diesen String zu multiplizieren, also mit dem Nikola getrennt, mal fünf oder so, weil ich das fünfmal ausführen möchte und dann ein Exek darüber zu jagen.

00:11:19.560 --> 00:11:49.540
Ähm, ähm, ähm, ähm, ähm, ähm, ähm.

00:11:49.540 --> 00:12:19.520
Ähm, ähm, ähm, ähm, ähm, ähm.

00:12:19.520 --> 00:12:49.500
Ähm, ähm, ähm, ähm, ähm.

00:12:49.500 --> 00:13:19.480
Ähm, ähm, ähm, ähm.

00:13:19.480 --> 00:13:27.860
Ja, ist auch wirklich geil, es gibt diesen klassischen Sortieralgorithmus, ich, äh, nehme meine Daten, ich mische sie, ich gucke, ob sie sortiert sind, wenn nicht, mische ich sie nochmal.

00:13:27.860 --> 00:13:28.680
Ja, ja, ja.

00:13:28.680 --> 00:13:36.180
Solche Ansätze und, und, ja, wenn dann die Aufgabe nicht vorgibt, dass man das Ganze in einer endlichen Zeit lösen möchte, geht das natürlich.

00:13:36.180 --> 00:13:47.480
Also, das ist auch immer eine, ja, ein Lieblingsansatz, dass man sagt, okay, wir versuchen das jetzt schön in, äh, Brute Force zu lösen, statt, weil...

00:13:47.480 --> 00:13:49.460
Ja, war an der gewissen Wahrscheinlichkeit.

00:13:49.460 --> 00:13:50.540
Ja, war an der gewissen Wahrscheinlichkeit, ist das dann sofort fertig.

00:13:50.540 --> 00:14:19.440
Ja, ich hab, ich hab letztens, äh, auch irgendwo neun, äh, es gibt ja diverse, äh, lustige, äh, Sortierverfahren, ich hab letztens eins gesehen, das fand ich auch wieder sehr cool, äh, sehr schön, das, äh, besteht einfach darin, ich glaub, das nennt sich irgendwie Sleep Sort und, äh, wenn man halt Zahlen hat, dann, äh, macht man das mit, äh, mit, äh, mit Async Await Notation, halt, äh, man awaitet einfach die Zahl und, äh, das ist dann halt sortiert, weil, naja, je größer die Zahl, desto länger...

00:14:19.440 --> 00:14:20.860
Ja, muss man natürlich, wartet man halt.

00:14:20.860 --> 00:14:24.340
So, das ist auch sehr, sehr cool.

00:14:24.340 --> 00:14:27.260
Also, mein Lieblings-Algorithmus ist der LSD Radix.

00:14:27.260 --> 00:14:30.340
Das ist so schön, der hört sich auch besonders toll an, wenn man den so visualisiert.

00:14:30.340 --> 00:14:32.540
Äh, auch defiziliert, wie nennt man das?

00:14:32.540 --> 00:14:35.680
Wenn man so einen Algorithmus, es gibt ja so...

00:14:35.680 --> 00:14:36.080
Vertont.

00:14:36.080 --> 00:14:38.260
Ja, ja, ja, wahrscheinlich.

00:14:38.260 --> 00:14:39.040
Vertont.

00:14:39.040 --> 00:14:39.740
Gut.

00:14:39.740 --> 00:14:42.880
Ja, wir vertonen für euch ja wieder heute eine neue Folge.

00:14:42.880 --> 00:14:45.780
Ja, jetzt hab ich keine Ahnung, was LSD Radix macht, aber gut.

00:14:45.780 --> 00:14:49.420
Ähm, der baut so Buckets auf.

00:14:49.420 --> 00:14:53.240
Und sortiert dann die ganzen Sachen immer in so Buckets rein und gibt die dann immer wieder auseinander und dann...

00:14:53.240 --> 00:14:53.520
Ah, okay.

00:14:53.520 --> 00:14:59.780
Ja, also nach, von, von, äh, 0 bis 1, 9 oder sowas und dann gibt der die auseinander und dann funktioniert das für mich ganz gut.

00:14:59.780 --> 00:15:02.720
Eine Sache, die mir jetzt noch gerade eingefallen ist, wo wir sagen, wir warten auf die Eingabe und wie lange es dauert.

00:15:02.720 --> 00:15:10.340
Ähm, also auf, auf CodeGov StackExchange gab's dann auch, äh, zwischendrin mal so eine Kategorie von Fragen, die haben wir so auch ganz schnell ausgebildet und abgeschafft.

00:15:10.340 --> 00:15:17.420
Äh, wir versuchen jetzt mal eine Programmieraufgabe möglichst schlecht zu lösen, also nicht schnell oder kurz oder was auch immer, sondern einfach schlecht.

00:15:17.420 --> 00:15:19.400
Und dann haben wir die Aufgabe hinzufügen.

00:15:19.400 --> 00:15:33.720
Und, äh, ja, meine Lösung war dann, ähm, wir nehmen, wir speichern einfach mal irgendwie irgendwo ein Bit ab, lassen einen Zähler hochlaufen und überprüfen nach jeder Zahl, ob das Bit sich eventuell geändert hat.

00:15:33.720 --> 00:15:39.400
Und wenn sich das Bit ändert, durch Höhenstrahlung oder was auch immer, dann nehmen wir die Zeit und dann haben wir unsere Zufallszahl.

00:15:39.400 --> 00:15:47.060
Das erinnert mich so ein bisschen an deinen Wart-Sortier-Algorithmus.

00:15:47.060 --> 00:15:49.380
Ja, das klingt gut.

00:15:49.380 --> 00:15:52.400
In einer besonders chaotischen Umgebung könnte das relativ schnell passieren.

00:15:52.400 --> 00:16:04.340
Ja, äh, wie ist das eigentlich bei so, bei so CodeGolf-Community, macht die nur CodeGolf? Es gibt ja noch so andere lustige Programmier, ähm, weiß ich nicht, wie soll man sagen, so, äh, ja, Knubel-Ecken.

00:16:04.340 --> 00:16:05.980
Ja, also die machen auch andere Sachen.

00:16:05.980 --> 00:16:09.700
So Quines zum Beispiel oder, äh, also Programme, die sich selbst ausgeben.

00:16:09.700 --> 00:16:17.760
Ja, oder auch CodeGolf mit Einschränkungen, also man kann natürlich immer CodeGolf machen, aber auch so lustige Sachen war so eine Aufgabe, äh, multiplizier jetzt mal bitte zwei Zahlen.

00:16:17.760 --> 00:16:19.940
Aber verwenden im ganzen Code keine einzige Zahl.

00:16:19.940 --> 00:16:27.480
Dann muss man erstmal die Zahlen irgendwie in römische Zahlen darstellen, also so i, i, i, i, i, ja, ist dann halt fünf.

00:16:27.480 --> 00:16:33.360
Und dann kann man da auf Basis, basiert natürlich multiplizieren und am Ende kommt dann halt wieder eine Zahl raus.

00:16:33.360 --> 00:16:38.840
Man muss halt irgendwie auch gucken, wie sieht man das mit der Darstellung macht, dass man das dann regelkonform macht, aber, ja.

00:16:38.840 --> 00:16:41.900
I, i, i, i, i, i ist fünf, i, i, i, i.

00:16:41.900 --> 00:16:46.340
Ja, römische Ziffern, Rechner mit römischen Ziffern, sehr, sehr böse.

00:16:47.740 --> 00:16:48.700
Ja, ja, x, x, x.

00:16:48.700 --> 00:17:07.820
Ich habe irgendwann mal auch, glaube ich, im Blogpost dazu gesehen, wie jemand irgendwie mit römischen Ziffern schriftlich dividiert hat und das war echt so, das war so, das war so, sagen wir mal so, es ist nicht so unmittelbar einleuchten, wie das funktioniert, das ist, ja, aber, ja, ähm, no.

00:17:07.820 --> 00:17:17.720
Ja, so CodeGolf ist im Prinzip so eine Absatzionsebene, um mit der Sprache Schabernack zu treiben, also um irgendwie die Komplexität von Algorithmen zu ergründen und um vielleicht so ein bisschen die Geschwindigkeit da so rauszukriegen.

00:17:17.720 --> 00:17:46.580
Ja, oder auch die gerade, also sich einfach so Gedanken zu machen, also sowas wie SlowSort oder SleepSort oder was auch immer sind ja Sachen, die einfach existieren, dass man sich, dass man überhaupt erstmal sieht, wie gut man es hat und wenn so echten Sortieralgorithmen und auch einfach das Konzept eines Algorithmus besser versteht und, ja, man, genau, man, ist es natürlich einfach, ja, also wie du schon sagst, man beschäftigt sich mit den Dingen und es ist einfach eine Möglichkeit, sich selbst dazu zu treiben, sich mit den Dingen zu beschäftigen und, ja, man lernt einiges über Algorithmen und Ähnlichem.

00:17:46.580 --> 00:17:47.700
Ja, genau.

00:17:47.700 --> 00:18:00.120
Also ich habe mich tatsächlich irgendwo mal dann, dem ich begegnet bin, auch tatsächlich später eingesetzt in echter wissenschaftlicher Arbeit und war dann sehr froh, dass ich ihn kannte, weil, ja, also man, ja.

00:18:00.120 --> 00:18:05.320
Ja, also du hast jetzt das Thema, da hast du dich direkt fast schon wieder mit aufgemacht und ich glaube, es ist Zeit für den nächsten Chapter, Marc.

00:18:05.320 --> 00:18:05.660
Ja, ja.

00:18:05.660 --> 00:18:17.220
Wenn du jetzt sagst, du hast ihn jetzt scientific in der wissenschaftlichen Arbeit eingesetzt, was ist denn jetzt das Scientific Python, also das ist nicht SciPy oder was eben sagt das, sondern was bedeutet das und warum macht man das, was macht man da?

00:18:17.680 --> 00:18:19.820
Warum ist das so nett oder doch nicht, oder?

00:18:19.820 --> 00:18:34.280
Also erstmal natürlich als Wissenschaftler hat man in der Regel, oder nicht in der Regel, also viele Wissenschaftler müssen programmieren, zwangsläufig, weil sie sichern, simulieren oder Daten analysieren in großen Mengen und das nicht per Hand machen möchten, aus gutem Grund.

00:18:34.280 --> 00:18:40.500
Also quantitative Analyse und keine qualitative Analyse, würdest du jetzt sagen, ist die wahre Kunst der Wissenschaft, oder?

00:18:40.500 --> 00:18:47.160
Ja, also ich glaube, gibt es so richtig qualitative, rein qualitative Arbeit.

00:18:47.660 --> 00:18:49.840
Gibt es zumindest in meinem Bereich kaum.

00:18:49.840 --> 00:18:56.700
Ich kenne noch die alte Philosophische Fakultät an meiner Universität, die hat sich durchaus damit hervorgetan, mit qualitativ.

00:18:56.700 --> 00:18:59.180
Ja, ja, gut, aber das ist ja auch nicht mein Bereich.

00:18:59.180 --> 00:19:12.940
Also klar, es gibt natürlich Bereiche, in denen das gibt und das auch sinnvoll ist und schön und gut, aber ich glaube nicht, dass ich jemals irgendwas beruflich begegnet bin, das rein qualitativ war.

00:19:12.940 --> 00:19:16.140
Okay, also ein ZDF, das ist Scientific Python, also Zahlen, Daten, Fakten.

00:19:16.140 --> 00:19:17.260
Ja.

00:19:17.640 --> 00:19:18.220
Ja, okay.

00:19:18.220 --> 00:19:39.180
Es geht nicht unbedingt darum, also nicht nur darum, Zahlen auseinanderzunehmen, manchmal geht es auch um Zahlen zu produzieren oder irgendwie einfach etwas, was man mathematisch, theoretisch zumindestens, theoretisch aber, beweisen könnte oder verstehen könnte, aber zu kompliziert ist, dass man es mathematisch zerdröseln kann, zu simulieren und dann auf die Weise zu verstehen.

00:19:39.180 --> 00:19:44.500
Also viele Sachen, die ich gemacht habe, würde ich als Experimentalmathematik bezeichnen.

00:19:44.500 --> 00:19:47.620
Also ich stelle experimentell mathematische Aussagen.

00:19:47.620 --> 00:19:48.620
Ja.

00:19:48.620 --> 00:20:09.920
Ja, und dazu muss man natürlich programmieren und das macht man natürlich gerne in Python, also zumindest ich, anderen natürlich nicht, das muss man so ein bisschen Überzeugungsarbeit leisten, weil es zum einen häufig nicht um Geschwindigkeit geht, sondern eben darum geht, die Sachen möglichst schnell und anschaulich zu programmieren und zu verstehen, was man eigentlich tut.

00:20:09.920 --> 00:20:17.600
Zum anderen natürlich manchmal geht es auch um Geschwindigkeit und da sind viele, viele Aufgaben, die man hart macht.

00:20:17.600 --> 00:20:26.460
Mit solchen Tools wie NumPy lösbar, die die entscheidenden Sachen, die dann wirklich schnell laufen müssen, in einer hartgecodeten, schnell laufenden Variante machen.

00:20:26.460 --> 00:20:37.760
In einigen Fällen gibt es da nicht und das war dann auch bei mir der Grund, warum ich so eine Sache dann selbst geschrieben habe, um nochmal irgendwie so eine Überleitung in den Raum zu einem gewissen Thema zu schweißen.

00:20:37.760 --> 00:20:45.460
Ja, ja, ich wollte gerade noch auf die Experimentalmathematik, also ich weiß nicht genau, ob ich das jetzt irgendwie falsch assoziiere.

00:20:47.580 --> 00:21:12.820
Aber Mathematik fand ich auch immer sehr interessant, weil ich fand, das war immer so eines der besten Argumente dafür, dass Mathematik unabhängig davon existiert, also nicht wirklich erfunden wird von demjenigen, der sie betreibt, sondern eher so auch entdeckt wird, dass man da halt, also wenn man jetzt einen Computer losrennen lässt und der würfelt halt so lange Gleichungen durcheinander, also bis er halt einen Pfad gefunden hat von dem, was man irgendwie zeigen möchte zu irgendwie einfachen Sachen, die schon bewiesen sind.

00:21:12.820 --> 00:21:16.820
Also das kenne ich jedenfalls, da habe ich mal gehört, dass Leute so experimentieren.

00:21:17.580 --> 00:21:47.560
Oh, da war ein Ding.

00:21:47.560 --> 00:21:56.220
Ist wahrscheinlich auch nicht unzutreffend, weil der Begriff Experimentalmathematik ist nicht Kopiergeschütze oder Trademark von irgendwem, der sagt, das ist jetzt genau das.

00:21:56.220 --> 00:22:01.500
Die Sachen, die ich mache, sind da schon gemacht habe oder auch noch mache, sind auch schon anders.

00:22:01.500 --> 00:22:08.080
Da geht es dann eben um die Frage, wie verhält sich jetzt dieses Modell, wenn ich das lange laufen lasse.

00:22:08.080 --> 00:22:17.540
Und dann hat man eben, also so klassische Beispiele für die Modelle, die meisten Modelle, Aufstellungen, kann man als Gleichung formulieren, das ist eine Differenzierung.

00:22:17.540 --> 00:22:28.240
In der Regel oder ähnliche Sachen, also für die Leute, denen es was sagt, man hat eine Gleichung und die Lösung ist dann, wie verhält sich mein Objekt, mein System über die Zeit.

00:22:28.240 --> 00:22:29.860
Das wäre die Lösung für meine Gleichung.

00:22:29.860 --> 00:22:36.480
Und diese Lösung kann man in aller Regel nicht mit Stift und Papier finden, so wie was Leute normalerweise tun.

00:22:36.480 --> 00:22:39.280
Man kann es schon machen, aber das dauert dann ein bisschen.

00:22:39.280 --> 00:22:41.440
Also auch das ist dann nur eine Annäherung.

00:22:41.440 --> 00:22:44.340
Auch die richtige Intuition für die Bewegung der Funktion.

00:22:44.340 --> 00:22:47.380
Nee, im Zeitfall geht es wirklich nicht.

00:22:47.540 --> 00:22:50.520
Wir haben zumindest seit 100 Jahren keinen Weg gefunden, das zu machen.

00:22:50.520 --> 00:22:54.240
Man kann eben höchstens in Nährungsweise Lösungen machen und auch das will man nicht mit Stift und Papier machen.

00:22:54.240 --> 00:22:55.340
Das ist dann sehr automatisiert.

00:22:55.340 --> 00:22:58.780
Das macht man dann mit dem Computer und natürlich dann wieder mit Programmierung.

00:22:58.780 --> 00:23:06.840
Und ja, dann kann man eben herausfinden, okay, wenn ich diese Sachen habe, dann verhält sich dieses System so und so.

00:23:06.840 --> 00:23:10.520
Ich kriege so eine Lösung raus, das ist ein klassisches Beispiel, das ist chaotisch.

00:23:10.520 --> 00:23:12.020
Und das ist meine Aussage.

00:23:12.020 --> 00:23:16.520
Und die habe ich dann experimentell gefunden, in gewissem Maße, über Simulationen.

00:23:17.540 --> 00:23:22.640
Und diese Aussage ist auch nicht so in Stein gemeißelt, wie es normale mathematische Aussagen sind,

00:23:22.640 --> 00:23:29.880
sondern das kann immer noch schiefgegangen sein, weil ich gerade ganz komisch mein Programm laufen lasse,

00:23:29.880 --> 00:23:32.660
habe mit genau den falschen Strafbedingungen oder was auch immer und mein Algorithmus.

00:23:32.660 --> 00:23:37.380
Ja, weil man in irgendwelche numerischen Geschichteninstabilitäten gelaufen ist.

00:23:37.380 --> 00:23:46.200
Ja, also das kann man sogar noch lösen, aber weil man einfach ganz, ganz viel Pech hatte zum Beispiel.

00:23:46.200 --> 00:23:47.180
Natürlich, also.

00:23:47.540 --> 00:23:52.360
Die meisten Aussagen, wenn man sagt, das ist jetzt Chaos, als Beispiel, sind schon sehr, sehr hieb- und stichfest.

00:23:52.360 --> 00:23:57.980
Aber es ist kein formeller Beweis, wie Mathematiker ihn führen, in den meisten Fällen.

00:23:57.980 --> 00:24:02.680
Natürlich gibt es dann auch die Leute, die sich hingesetzt haben und das mal für einen Fall wirklich bewiesen haben.

00:24:02.680 --> 00:24:05.520
Das war dann auch eine Sensation oder so.

00:24:05.520 --> 00:24:07.760
Hat auch ein paar Jahre gedauert.

00:24:07.760 --> 00:24:11.800
Aber das ist nichts, was man praktisch machen kann.

00:24:11.800 --> 00:24:16.740
Und das war auch dann nur für die einfachsten Systeme, die man schon vorher sehr gut verstanden hat.

00:24:17.540 --> 00:24:20.620
Also diesen ganzen Absatzionslayer noch nicht so ganz begriffen.

00:24:20.620 --> 00:24:24.340
Also man hat jetzt ganz komplexe, große, komplizierte Systeme.

00:24:24.340 --> 00:24:29.640
Und wenn ich jetzt irgendwie das vorstelle, du sagst irgendwas von Chaos, du sagst sowas über Zeitstrahlen und Funktionen, die da irgendwie durchläuft.

00:24:29.640 --> 00:24:33.840
Da denke ich irgendwie immer an sowas wie eine Häufigkeitsverteilung oder sowas, was da irgendwie rauskommt.

00:24:33.840 --> 00:24:38.340
Was hat das, also wie kann ich das so real beschreiben, wenn ich jetzt irgendwie Mikrobialen...

00:24:38.340 --> 00:24:39.600
Machen wir mal ein Beispiel.

00:24:39.600 --> 00:24:43.620
Also ich habe, genau, ich habe Bakterien zum Beispiel.

00:24:43.620 --> 00:24:46.540
Also ja, ich mache mal ein bakterielles Ökosystem.

00:24:46.700 --> 00:24:50.160
Also ich habe meinen Topf, da schmeiße ich, da habe ich Nährstoffe drin.

00:24:50.160 --> 00:24:51.340
Das heißt, Bakterien können da leben.

00:24:51.340 --> 00:25:00.700
Genau, da schmeiße ich jetzt, was weiß ich was, fünf Escherichia coli oder zehn Pneumokokken oder was auch immer mir einfällt rein.

00:25:00.700 --> 00:25:03.180
Irgendwelches ungesunde Zeug, genau, ja.

00:25:03.180 --> 00:25:07.240
Haben wir aber übrigens überall nebenbei.

00:25:07.240 --> 00:25:10.460
Also wir tragen mehrere Kilo Bakterien mit uns im Darm rum.

00:25:10.460 --> 00:25:11.660
Und noch dreimal Karies.

00:25:11.660 --> 00:25:14.680
Ich weiß gar nicht, ob das ein Bakterium ist, was ich gesagt habe.

00:25:14.680 --> 00:25:15.200
Oder was das ist.

00:25:15.200 --> 00:25:15.940
Karies.

00:25:15.940 --> 00:25:16.380
Karies.

00:25:16.700 --> 00:25:17.860
Ein Pulbaktus oder wie?

00:25:17.860 --> 00:25:18.620
Ich habe keine Ahnung.

00:25:18.620 --> 00:25:19.920
Das sah einmal bei einem Zahnarzt früher so aus.

00:25:19.920 --> 00:25:21.120
Dann gab es dann diese Zahnarzt-Schiff.

00:25:21.120 --> 00:25:23.140
Dann liefen dann irgendwelche Dinge.

00:25:23.140 --> 00:25:25.040
Das sah so aus, wie ich mir Bakterien vorstelle.

00:25:25.040 --> 00:25:25.620
Genau, ja.

00:25:25.620 --> 00:25:27.360
Also die laufen dann auf jeden Fall da rum.

00:25:27.360 --> 00:25:32.080
Und jetzt kann ich natürlich das einfach hinstellen und warten und gucken.

00:25:32.080 --> 00:25:36.720
Aber das kann ich nur begrenzt häufig machen, da das Zeit kostet.

00:25:36.720 --> 00:25:40.680
Und ich kann auch, habe dann Messfehler und Rauschen und so weiter und so fort.

00:25:40.680 --> 00:25:42.820
Aber ich möchte das eventuell einfach mal allgemein verstehen.

00:25:42.820 --> 00:25:44.700
Wie entwickeln sich solche Bakterienpopulationen?

00:25:45.940 --> 00:25:46.880
Das hört sich jetzt doof an.

00:25:46.880 --> 00:25:48.680
Also du hast das gerade gesagt, es gibt irgendwie so Sachen im Darm.

00:25:48.680 --> 00:25:52.920
Das heißt, ihr macht dann so einen Auszug und stellt das in so ein Glas auf dem Balkon in die Hitze

00:25:52.920 --> 00:25:54.580
und guckt, was da so passiert.

00:25:54.580 --> 00:25:58.540
Ja, das wäre so die Karikatur des Ganzen.

00:25:58.540 --> 00:26:00.480
Aber es ist gar nicht so falsch.

00:26:00.480 --> 00:26:03.740
Also viel ist wirklich, wir haben einen Topf Flüssigkeit.

00:26:03.740 --> 00:26:04.920
Da sind Nährstoffe drin.

00:26:04.920 --> 00:26:06.320
Da schieben wir einen Backpakt Pakterien rein.

00:26:06.320 --> 00:26:07.940
Das rühren wir dauerhaft um.

00:26:07.940 --> 00:26:09.140
Und dann gucken wir mal, was passiert.

00:26:09.140 --> 00:26:11.460
Also das ist schon sehr, sehr häufig.

00:26:11.460 --> 00:26:13.160
Und danach macht ihr irgendeine Analyse.

00:26:13.160 --> 00:26:15.860
Ihr klebt das Ganze auf Papier, kommt euch die Farbe an.

00:26:15.940 --> 00:26:17.720
Oder zählt irgendwas mit irgendwelchen Sensoren.

00:26:17.720 --> 00:26:19.300
Und packt das in eine Datenbank.

00:26:19.300 --> 00:26:21.060
Und daraus schmeißt ihr dann einen Algorithmus.

00:26:21.060 --> 00:26:24.680
Nein, das wäre das, was wir eigentlich modellieren wollen.

00:26:24.680 --> 00:26:26.440
Also das ist unser reales System.

00:26:26.440 --> 00:26:27.760
Da wissen wir, was passiert.

00:26:27.760 --> 00:26:28.660
Da können wir das messen.

00:26:28.660 --> 00:26:31.120
Das Problem ist, das hat natürlich diverse Nachteile.

00:26:31.120 --> 00:26:32.320
Wie gesagt, wir können nicht alles messen.

00:26:32.320 --> 00:26:34.840
Das ist nur ein Glas und nicht eine echte Haut oder sowas.

00:26:34.840 --> 00:26:36.940
Ja, das ist der andere Nachteil.

00:26:36.940 --> 00:26:39.940
Aber der Nachteil ist, wir müssen eben wirklich dieses Glas auf die Fensterbank stellen.

00:26:39.940 --> 00:26:45.100
Und im Computer können wir das eventuell in einer halben Sekunde einfach mal durchrechnen.

00:26:45.180 --> 00:26:47.920
Und dann können wir das noch schnell 10.000 Mal machen und besser verstehen.

00:26:47.920 --> 00:26:49.880
Virtuelle Bakteriengläser, schön.

00:26:49.880 --> 00:26:50.260
Genau.

00:26:50.260 --> 00:26:52.440
Das heißt, wir haben die ganzen Bugs hergekommen.

00:26:52.440 --> 00:26:54.340
Ja, genau.

00:26:54.340 --> 00:26:56.780
Deswegen, ich bastle virtuelle Bakteriengläser.

00:26:56.780 --> 00:27:02.160
Und diese virtuellen Bakteriengläser werden dann beschrieben durch Gleichung.

00:27:02.160 --> 00:27:05.460
Zum Beispiel bei Differenzialreichen wäre die Frage,

00:27:05.460 --> 00:27:07.720
okay, ich habe jetzt meine Bakterien, meinen Zustand.

00:27:07.720 --> 00:27:11.200
Mein Zustand ist dann 5 von der Sorte, 6 von der Sorte, 7 von der Sorte,

00:27:11.200 --> 00:27:12.500
so viel Nährstoff und so weiter und so fort.

00:27:12.500 --> 00:27:15.040
Und die Frage ist, wenn ich jetzt eine Sekunde,

00:27:15.040 --> 00:27:16.520
in die Zukunft gehe, wie sieht mein Zustand aus?

00:27:16.520 --> 00:27:18.280
Vermehren sich einige von diesen Bakterien?

00:27:18.280 --> 00:27:20.260
Werden einige Nährstoffe gefressen und so weiter?

00:27:20.260 --> 00:27:23.360
Das kann ich dann machen oder ausrechnen.

00:27:23.360 --> 00:27:26.080
Und dann mache ich das nochmal und nochmal und nochmal und nochmal.

00:27:26.080 --> 00:27:28.720
Und die Frage, wie man das richtig macht, ist,

00:27:28.720 --> 00:27:32.600
ja, da haben sich Menschen schon 100 Jahre lang mit beschäftigt

00:27:32.600 --> 00:27:34.740
und gute Wege herausgefunden, das zu machen.

00:27:34.740 --> 00:27:36.800
Und die kann man dann natürlich auch implementieren und das nutzen.

00:27:36.800 --> 00:27:39.420
Also die haben quasi das Rezept, den Algorithmus schon entwickelt

00:27:39.420 --> 00:27:41.740
und den wird dann in Python irgendwie übertragen,

00:27:41.740 --> 00:27:44.980
auf das Modell angewandt und dann gibt es eine zufällige Verteilung,

00:27:44.980 --> 00:27:45.340
die rauskommt.

00:27:45.340 --> 00:27:46.940
Oder hast du dann immer konkrete Ergebnisse?

00:27:46.940 --> 00:27:50.880
Es könnte zum Beispiel rauskommen, okay, diese Population schluckt aus

00:27:50.880 --> 00:27:54.180
und diese Population geht auf genau diesen Wert und bleibt da.

00:27:54.180 --> 00:27:55.740
Und du hast eine Zeit, in der das passiert ist.

00:27:55.740 --> 00:27:57.280
Und ich habe die Zeit, in der das passiert ist.

00:27:57.280 --> 00:28:00.020
Ja, das ist in vielen Fällen gar nicht mal so das Interessante,

00:28:00.020 --> 00:28:00.920
aber es ist auch interessant.

00:28:00.920 --> 00:28:04.140
Die andere Sache, die halt rauskommen kann, ist zum Beispiel,

00:28:04.140 --> 00:28:06.120
okay, es geht nicht einfach auf irgendeinen festen Wert,

00:28:06.120 --> 00:28:09.500
sondern es oszilliert wild rum, zum Beispiel chaotisch.

00:28:09.500 --> 00:28:14.240
Und dann können wir eben das feststellen.

00:28:14.240 --> 00:28:14.920
Okay, es oszilliert.

00:28:15.790 --> 00:28:19.330
oder es ist was anderes, als wenn es konstant bleiben würde.

00:28:19.330 --> 00:28:23.450
Und ja, wir können uns dann die Frage stellen,

00:28:23.450 --> 00:28:25.090
okay, unter welchen Bedingungen oszilliert es rum?

00:28:25.090 --> 00:28:27.330
Welch viele Bakterien-Spezies überleben?

00:28:27.330 --> 00:28:28.690
Unter welchen Bedingungen?

00:28:28.690 --> 00:28:30.030
Wovon hängt das ab?

00:28:30.030 --> 00:28:32.290
Wie beeinflussen die Bakterien-Spezies einander?

00:28:32.290 --> 00:28:37.250
Und ja, wie verhalten sich eben solche Systeme im Allgemeinen?

00:28:37.250 --> 00:28:39.110
So ein geschlossener Game-of-Life-Kreislauf.

00:28:39.110 --> 00:28:42.870
Ja, und ein bisschen realistischer.

00:28:42.870 --> 00:28:45.370
Aber ja, Game-of-Life ist auch durch.

00:28:45.370 --> 00:28:46.730
Echte zelluläre Automaten.

00:28:46.730 --> 00:28:50.910
Ja, also zelluläre Automaten sind halt ein Typ von Simulation,

00:28:50.910 --> 00:28:52.230
Differenzialgleichungen sind ein anderer Typ.

00:28:52.230 --> 00:28:57.350
Dann können wir noch diverse andere Typen durchsprechen,

00:28:57.350 --> 00:28:58.530
wie wir es lösen können, aber ja.

00:28:58.530 --> 00:29:02.130
Und dann kann ich am Ende sagen,

00:29:02.130 --> 00:29:05.230
ich weiß, wenn ich Bakterien so und so zusammen packe,

00:29:05.230 --> 00:29:07.230
dann passiert wahrscheinlich sowas.

00:29:07.230 --> 00:29:09.930
Das ist das Fernziel dieser ganzen Forschung.

00:29:09.930 --> 00:29:13.750
Dass man eben besser versteht, wie sich solche Systeme entwickeln.

00:29:13.750 --> 00:29:14.830
Und dann natürlich auch die Frage,

00:29:14.950 --> 00:29:16.250
reagieren sie auf Aumwelteinflüsse?

00:29:16.250 --> 00:29:18.050
Eine häufige Frage ist zum Beispiel Antibiotika.

00:29:18.050 --> 00:29:20.710
Ich habe ein klassischer Fall,

00:29:20.710 --> 00:29:22.690
wo wir kein Ökosystem haben im Körper.

00:29:22.690 --> 00:29:24.050
Was die Ausnahme ist, ist die Blase.

00:29:24.050 --> 00:29:26.970
Das ist normalerweise bakterienfrei,

00:29:26.970 --> 00:29:28.250
soweit man das bisher weiß.

00:29:28.250 --> 00:29:29.130
Steril.

00:29:29.130 --> 00:29:30.710
Steril, ja, genau.

00:29:30.710 --> 00:29:33.770
Aber wenn da was reinkommt, hat man ein Problem.

00:29:33.770 --> 00:29:35.730
Und manchmal kommen da mehrere Dinge rein.

00:29:35.730 --> 00:29:37.390
Und dann ist die Frage, begünstigen die einander?

00:29:37.390 --> 00:29:39.450
Bekämpfen die einander?

00:29:39.450 --> 00:29:40.490
Sind da verschiedene Bakterien,

00:29:40.490 --> 00:29:42.970
die Fressfeinde oder was auch immer sind?

00:29:42.970 --> 00:29:44.470
Fressfeinde.

00:29:44.530 --> 00:29:46.530
Die Fressfeinde sind in dem Fall das falsche Wort eigentlich.

00:29:46.530 --> 00:29:49.310
Also die umgleichen Währstoffe von Kurieren.

00:29:49.310 --> 00:29:51.310
Und die Frage ist jetzt,

00:29:51.310 --> 00:29:53.070
wenn ich ein Antibiotikum dazu kippe, was passiert?

00:29:53.070 --> 00:29:55.730
Kann ich natürlich wieder im Reagenzglas austesten?

00:29:55.730 --> 00:29:57.310
Dauert dann genauso lange wie im echten Menschen?

00:29:57.310 --> 00:29:57.830
Ist ein Problem.

00:29:57.830 --> 00:30:00.310
Also ein Fernziel der Anwendung wäre zum Beispiel,

00:30:00.310 --> 00:30:02.190
dass man eben eine Probe hat,

00:30:02.190 --> 00:30:03.990
feststellt, welche Spezies sind da drin,

00:30:03.990 --> 00:30:05.670
wie verhalten die sich und dann direkt simuliert,

00:30:05.670 --> 00:30:08.370
welches Antibiotikum muss ich geben

00:30:08.370 --> 00:30:10.730
oder in welchem Takt, mit welchen Bedingungen,

00:30:10.730 --> 00:30:12.890
damit ich diese Handwerksinfektion

00:30:12.890 --> 00:30:14.270
möglichst effektiv wegkriege.

00:30:14.350 --> 00:30:15.550
Also das heißt, ihr könnt tatsächlich auch sowas,

00:30:15.550 --> 00:30:17.370
chemische Verbindungen tatsächlich simulieren,

00:30:17.370 --> 00:30:19.750
da reinschießen und dann sagen, hey, vielleicht kommt da was raus.

00:30:19.750 --> 00:30:21.470
Also wir simulieren nicht die chemische Verbindung

00:30:21.470 --> 00:30:23.050
in dem Sinne, sondern wir wissen halt,

00:30:23.050 --> 00:30:26.030
dass das Antibiotikum hat die Auswirkungen

00:30:26.030 --> 00:30:27.930
auf das Bakterium, ganz grob.

00:30:27.930 --> 00:30:30.650
Aber auch das ist alles nur das Fernziel.

00:30:30.650 --> 00:30:32.650
Also wir sind eben, solche Ökosysteme

00:30:32.650 --> 00:30:34.270
zum Beispiel zu simulieren, ist

00:30:34.270 --> 00:30:35.750
verdammt schwierig.

00:30:35.750 --> 00:30:37.290
Hört sich sehr nützlich an.

00:30:37.290 --> 00:30:39.130
Ja, deswegen versuchen wir es ja auch.

00:30:39.130 --> 00:30:41.910
Und deswegen gibt es hoffentlich Leute, die uns dafür bezahlen, das zu machen.

00:30:41.910 --> 00:30:43.970
Ähm, ja.

00:30:44.170 --> 00:30:45.410
Und das ist so eine...

00:30:45.410 --> 00:30:46.890
Hier wird jetzt ein großer Sponsorenaufruf,

00:30:46.890 --> 00:30:48.090
weil du falsch irgendwie...

00:30:48.090 --> 00:30:50.150
Naja, aber ich meine, das klingt halt schon so ein bisschen danach,

00:30:50.150 --> 00:30:51.850
wie man hat irgendwo einen umgekippten Weiher

00:30:51.850 --> 00:30:53.370
und dann geht man da halt mit drei Gläsern

00:30:53.370 --> 00:30:54.730
unterschiedliche Bakterien im Socken hinten,

00:30:54.730 --> 00:30:55.890
füttert das da rein, wartet zwei Tage

00:30:55.890 --> 00:30:57.030
und dann hat man eine Blümchenwiese da.

00:30:57.030 --> 00:30:58.150
Oder so, das wäre schon gut.

00:30:58.150 --> 00:30:58.910
Ja, das wäre schon nicht schlecht.

00:30:58.910 --> 00:31:00.390
Wenn man das ausfinden könnte, wie das geht.

00:31:00.390 --> 00:31:01.750
Ja, aber...

00:31:01.750 --> 00:31:04.330
Und das geht alles mit Python, das ist ja wie das sollte.

00:31:04.330 --> 00:31:05.670
Also mit der schönen Schlange mit der Abenteuer.

00:31:05.670 --> 00:31:05.850
Naja.

00:31:05.850 --> 00:31:07.910
Also, genau.

00:31:07.910 --> 00:31:09.510
Und wie?

00:31:09.510 --> 00:31:11.350
Genau, also

00:31:11.350 --> 00:31:13.290
entweder sagt man, ich habe eine Simulation

00:31:13.290 --> 00:31:15.510
und Zeit stört mich nicht.

00:31:15.510 --> 00:31:17.390
Also Laufzeit.

00:31:17.390 --> 00:31:19.810
Das kann schon mal sehr häufig passieren.

00:31:19.810 --> 00:31:20.190
Dann

00:31:20.190 --> 00:31:24.390
kann man es einfach wirklich rein in Python simulieren,

00:31:24.390 --> 00:31:24.770
in vielen Fällen.

00:31:24.770 --> 00:31:27.570
Ich habe auch Simulationswerkzeuge mal gebaut

00:31:27.570 --> 00:31:30.130
aus so Nebenkriegsschauplätzen,

00:31:30.130 --> 00:31:31.470
die wirklich rein in Python laufen

00:31:31.470 --> 00:31:33.430
und auch da einigermaßen effizient sind noch.

00:31:33.430 --> 00:31:36.510
Ein Hauptproblem mit vielen komplexen Simulationen

00:31:36.510 --> 00:31:39.370
und jetzt mache ich jetzt wieder eine eigensinnige Überleitung

00:31:39.370 --> 00:31:41.010
zu dem, was ich wirklich gemacht habe,

00:31:41.010 --> 00:31:42.710
ist,

00:31:42.710 --> 00:31:43.150
dass es,

00:31:43.250 --> 00:31:46.230
nicht so einfach und schnell in Python geht

00:31:46.230 --> 00:31:47.530
und dass es insbesondere auch nicht so schnell

00:31:47.530 --> 00:31:48.410
und einfach mit NumPy geht,

00:31:48.410 --> 00:31:49.770
weil es nicht vektorisierbar ist.

00:31:49.770 --> 00:31:51.470
Jetzt muss ich wahrscheinlich kurz erklären,

00:31:51.470 --> 00:31:52.490
was vektorisierbar ist.

00:31:52.490 --> 00:31:52.670
Ja.

00:31:52.670 --> 00:31:54.170
Das heißt, ich habe,

00:31:54.170 --> 00:31:55.770
ein klassisches Beispiel ist,

00:31:55.770 --> 00:31:57.650
ich addiere zwei Vektoren.

00:31:57.650 --> 00:32:01.150
Ich habe ein großes Array mit Zahlen

00:32:01.150 --> 00:32:02.730
oder Liste oder was auch immer man sich vorstellen möchte.

00:32:02.730 --> 00:32:04.890
Ich habe eine andere, genauso lange Liste mit Zahlen.

00:32:04.890 --> 00:32:06.270
Wenn ich jetzt sage,

00:32:06.270 --> 00:32:08.470
addiere bitte mal die ersten beiden Elemente

00:32:08.470 --> 00:32:09.530
und von jeder Liste

00:32:09.530 --> 00:32:12.010
und füge das als erstes neues Element

00:32:12.010 --> 00:32:12.750
in eine neue Liste

00:32:12.750 --> 00:32:13.210
und dann mache ich das.

00:32:13.210 --> 00:32:14.570
Dann mache ich das mit den zweiten Elementen

00:32:14.570 --> 00:32:15.410
und so weiter und so fort.

00:32:15.410 --> 00:32:17.130
Dann ist das eine vektorisierbare Operation.

00:32:17.130 --> 00:32:19.790
Ich glaube, das hat jetzt niemand verstanden,

00:32:19.790 --> 00:32:21.870
der nicht wusste, was vorher eine Vektoroperation ist.

00:32:21.870 --> 00:32:25.190
Wenn du zwei Vektoren addierst,

00:32:25.190 --> 00:32:25.830
dann machst du irgendwie sowas,

00:32:25.830 --> 00:32:28.070
du erklärst irgendwie den Weg,

00:32:28.070 --> 00:32:29.370
den du per Luftlinie kennst

00:32:29.370 --> 00:32:30.790
und dem erzählst du,

00:32:30.790 --> 00:32:31.930
ja, musst du links, dann musst du rechts

00:32:31.930 --> 00:32:32.530
und dann kommst du irgendwann...

00:32:32.530 --> 00:32:33.930
Nenn es nicht so sehr das, was es tut,

00:32:33.930 --> 00:32:35.010
sondern die Art, wie es passiert.

00:32:35.010 --> 00:32:36.230
Also es ist immer das Gleiche.

00:32:36.230 --> 00:32:36.790
Ich mache einfach,

00:32:36.790 --> 00:32:39.870
also das auch gleich für viele Sachen ist das so,

00:32:39.870 --> 00:32:42.090
Moment, jetzt muss ich es gerade richtig hinkriegen.

00:32:43.170 --> 00:32:44.750
Äh, Multiple Data,

00:32:44.750 --> 00:32:48.230
Moment, Multiple Input, Single Operation,

00:32:48.230 --> 00:32:50.330
Single Operation, Multiple Data.

00:32:50.330 --> 00:32:52.050
Also ich mache...

00:32:52.050 --> 00:32:54.310
Single Input, 7D, irgendwas?

00:32:54.310 --> 00:32:56.130
Genau, also da geht...

00:32:56.130 --> 00:32:58.010
Ja, also das Konzept ist auf jeden Fall klar.

00:32:58.010 --> 00:32:59.970
Der Begriff ist nicht der übliche wahrscheinlich,

00:32:59.970 --> 00:33:02.770
aber alle, die es kennen, wissen, worum es geht.

00:33:02.770 --> 00:33:05.290
Also ich habe einen Datensatz

00:33:05.290 --> 00:33:08.990
und ich mache damit 5000 Mal das Gleiche,

00:33:08.990 --> 00:33:11.210
wenn ich jetzt 5000 Elemente in meinem Datensatz habe.

00:33:11.210 --> 00:33:13.130
Und, oder der Datensatz,

00:33:13.130 --> 00:33:14.150
der Datensatz wird halt ein Array.

00:33:14.150 --> 00:33:16.610
Und das ist ein Problem,

00:33:16.610 --> 00:33:18.090
was in vielen, vielen Simulationen auftaucht

00:33:18.090 --> 00:33:19.370
und das ist auch alles schön und gut.

00:33:19.370 --> 00:33:22.430
Und das kann man dann natürlich effizient

00:33:22.430 --> 00:33:24.690
mit solchen Sachen wie NumPy gut lösen.

00:33:24.690 --> 00:33:25.970
Also nicht 100% effizient,

00:33:25.970 --> 00:33:27.270
aber schon sehr nah dran.

00:33:27.270 --> 00:33:28.690
Da ich dann eben,

00:33:28.690 --> 00:33:30.970
wenn ich mit NumPy zwei Arrays addiere,

00:33:30.970 --> 00:33:31.990
funktioniert es eben so,

00:33:31.990 --> 00:33:33.890
dass der sagt,

00:33:33.890 --> 00:33:34.510
okay, ich erkenne,

00:33:34.510 --> 00:33:35.270
das ist jetzt eine Addition

00:33:35.270 --> 00:33:36.170
und dann geht er jetzt nicht

00:33:36.170 --> 00:33:38.650
für jedes einzelne Element dieses Arrays hin

00:33:38.650 --> 00:33:39.790
oder dieser paarweisen Arrays

00:33:39.790 --> 00:33:42.410
und überlegt sich,

00:33:42.410 --> 00:33:43.010
oh, guck mal,

00:33:43.090 --> 00:33:44.130
was ist das für ein Objekt?

00:33:44.130 --> 00:33:45.330
Ist das eine Zahl?

00:33:45.330 --> 00:33:47.770
Aha, eine Zahl kann ich jetzt multiplizieren

00:33:47.770 --> 00:33:48.170
mit einer Zahl.

00:33:48.170 --> 00:33:48.910
Was passiert denn da?

00:33:48.910 --> 00:33:50.010
Ah, da kommt wieder eine Zahl raus.

00:33:50.010 --> 00:33:51.290
Und unter der Haube

00:33:51.290 --> 00:33:53.490
findet dann die tatsächliche Multiplikation statt.

00:33:53.490 --> 00:33:53.850
Das ist ja das,

00:33:53.850 --> 00:33:55.230
was im normalen Python passieren würde.

00:33:55.230 --> 00:33:57.750
Sondern der sagt,

00:33:57.750 --> 00:33:58.830
okay, ah, das ist ein Array.

00:33:58.830 --> 00:34:00.290
Das ist aus Zahlen.

00:34:00.290 --> 00:34:01.570
Das ist noch ein Array aus Zahlen.

00:34:01.570 --> 00:34:04.390
Und jetzt gehe ich mal unter der Haube hin,

00:34:04.390 --> 00:34:06.330
lasse eine effiziente Schleife da durchlaufen,

00:34:06.330 --> 00:34:08.310
die in C oder was auch immer geschrieben ist,

00:34:08.310 --> 00:34:10.470
multipliziere die alle Elementweisen miteinander

00:34:10.470 --> 00:34:12.230
oder addiere sie Elementweisen miteinander

00:34:12.230 --> 00:34:13.050
und dann kriege ich das Ergebnis.

00:34:13.050 --> 00:34:13.930
Und das ist schnell.

00:34:13.930 --> 00:34:16.770
Und wenn ich jetzt mein Problem

00:34:16.770 --> 00:34:19.430
ausschließlich aus solchen Operationen beschreiben kann,

00:34:19.430 --> 00:34:21.310
dann kann ich das auch

00:34:21.310 --> 00:34:23.710
schnell mit NumPy und Python lösen,

00:34:23.710 --> 00:34:25.270
ohne dass ich da irgendwie selbst

00:34:25.270 --> 00:34:26.890
in C programmieren muss oder so.

00:34:26.890 --> 00:34:28.310
Ja, ich glaube,

00:34:28.310 --> 00:34:30.950
ich weiß jetzt auch nicht,

00:34:30.950 --> 00:34:32.550
ob ich mich da ganz komplett korrekt dran erinnere,

00:34:32.550 --> 00:34:34.750
aber ich glaube, der Witz bei dem Vektorisieren ist eigentlich,

00:34:34.750 --> 00:34:36.850
dass man, man hat ja mehrere Register

00:34:36.850 --> 00:34:38.810
irgendwie und dann kann man das halt sozusagen

00:34:38.810 --> 00:34:40.050
in gewisser Weise parallelisieren,

00:34:40.050 --> 00:34:43.010
diese Additionen oder Multiplikationen

00:34:43.010 --> 00:34:44.790
von Arrays, indem man das halt in

00:34:44.790 --> 00:34:46.890
so viele Teile zackt und das halt alles

00:34:46.890 --> 00:34:48.850
irgendwie gleichzeitig macht oder diese Dinger sind irgendwie

00:34:48.850 --> 00:34:51.370
oder man kann mehrere Dinge in einen Register packen.

00:34:51.370 --> 00:34:53.730
Ja, das ist noch ein Vorteil

00:34:53.730 --> 00:34:55.250
bei Grafikkarten und in dem könnte ich das

00:34:55.250 --> 00:34:56.870
dann tatsächlich parallelisieren. Stimmt.

00:34:56.870 --> 00:34:59.250
Also gerade dieses Rechnen

00:34:59.250 --> 00:35:01.130
auf Grafikkarten, wenn man das immer,

00:35:01.130 --> 00:35:03.090
was man immer wieder hört, das ist genau solche

00:35:03.090 --> 00:35:05.110
Sachen, wo man eben, ja, mehrfach

00:35:05.110 --> 00:35:06.370
die gleiche Operation rechnet.

00:35:06.370 --> 00:35:09.330
Aber das ist

00:35:09.330 --> 00:35:11.010
auch schon eine Sache, die, wenn ich jetzt mit

00:35:11.010 --> 00:35:12.990
reinem Python arbeiten möchte oder nicht,

00:35:12.990 --> 00:35:14.490
wenn ich irgendwas Neues programmieren möchte in Python,

00:35:14.490 --> 00:35:16.930
mir mein Leben deutlich einfacher mache, wenn ich

00:35:16.930 --> 00:35:18.790
sowas nutze wie NumPy, denn NumPy,

00:35:18.790 --> 00:35:20.990
das Hauptkonzept von NumPy ist eigentlich, wir haben

00:35:20.990 --> 00:35:22.750
vektorisierbare Operationen

00:35:22.750 --> 00:35:24.870
und stellen sie dem Python-Nutzer zur Verfügung,

00:35:24.870 --> 00:35:26.050
ohne dass der sich darüber

00:35:26.050 --> 00:35:28.970
kümmern muss. Also wir stellen sie zur Verfügung, wir stellen sie

00:35:28.970 --> 00:35:31.070
in effizienter Form zur Verfügung, ohne dass der Nutzer

00:35:31.070 --> 00:35:32.890
sich darum kümmern muss, da

00:35:32.890 --> 00:35:35.070
irgendwie in C vortragen oder was auch

00:35:35.070 --> 00:35:37.030
immer für niedrigeren Sprachen das zu machen.

00:35:37.030 --> 00:35:38.570
So.

00:35:38.570 --> 00:35:41.110
Ja, ja, ich glaube auch, ich habe

00:35:41.110 --> 00:35:42.950
mal gehört, dass das halt irgendwie der Grund

00:35:42.950 --> 00:35:44.870
ist, warum vortragen immer noch so eine große Rolle spielt,

00:35:44.870 --> 00:35:46.850
weil vortragen, bei vortragen

00:35:46.850 --> 00:35:48.650
diese Geschichten halt, die

00:35:48.650 --> 00:35:50.930
Schleifen, glaube ich, auch automatisch vektorisierbar sind,

00:35:50.930 --> 00:35:52.950
bei C halt nicht, weil, und das ist halt ein Problem,

00:35:52.950 --> 00:35:54.270
also man muss es dem Compiler halt sagen,

00:35:54.270 --> 00:35:57.070
weil man da so Seiteneffekte haben kann,

00:35:57.070 --> 00:35:58.670
dass das Ergebnis

00:35:58.670 --> 00:36:00.790
der, eine Addition von zum Beispiel

00:36:00.790 --> 00:36:02.830
zwei Vektoren kann halt wieder irgendwie

00:36:02.830 --> 00:36:05.050
Einfluss nehmen auf was davor und es ist halt

00:36:05.050 --> 00:36:06.950
ja,

00:36:06.950 --> 00:36:08.770
sozusagen nicht garantiert, dass

00:36:08.770 --> 00:36:11.090
man das halt vektorisieren kann

00:36:11.090 --> 00:36:12.910
oder sonst irgendwie parallelisieren kann, sondern das kann halt

00:36:12.910 --> 00:36:14.870
dann an, das kann halt dann einem die Programmlogik

00:36:14.870 --> 00:36:16.210
kaputt machen, wenn man das halt nicht

00:36:16.210 --> 00:36:18.810
weiß, dass das geht und in Vortragen geht das halt nur so

00:36:18.810 --> 00:36:20.430
und daher, aber ja, keine Ahnung.

00:36:20.430 --> 00:36:22.030
Also mittlerweile stimmt das, glaube ich, nicht mehr,

00:36:22.030 --> 00:36:25.010
oder nicht mittlerweile, ich glaube seit 15, 20 Jahren.

00:36:25.010 --> 00:36:25.810
Oh, das kann sein.

00:36:25.810 --> 00:36:28.750
Man kann dem Compiler sagen.

00:36:28.750 --> 00:36:30.850
Restrict Keyword, ich hoffe, ich mache das jetzt

00:36:30.850 --> 00:36:31.150
richtig.

00:36:31.150 --> 00:36:34.850
Muss mich wahrscheinlich schämen, dass ich das nicht kenne, was eben genau das sagt,

00:36:34.850 --> 00:36:36.890
okay, also das klassische Problem ist ja,

00:36:36.890 --> 00:36:38.510
wenn ich,

00:36:38.510 --> 00:36:40.670
um das, was du vorhin beschrieben hast, nochmal zu,

00:36:40.670 --> 00:36:42.870
in anderen Worten zu beschreiben, dass der

00:36:42.870 --> 00:36:44.330
Compiler nicht weiß, wenn ich

00:36:44.330 --> 00:36:46.610
A und B addiere,

00:36:46.610 --> 00:36:48.690
dass eventuell das

00:36:48.690 --> 00:36:50.770
B, was ich da addiere, vorher schon

00:36:50.770 --> 00:36:51.990
in einem vorigen Durchlauf

00:36:51.990 --> 00:36:54.590
anders beschrieben wurde, an einem vorigen

00:36:54.590 --> 00:36:56.570
Element der eigentlichen Schleife, also ich habe irgendwie mein,

00:36:56.570 --> 00:36:58.650
nehmen wir wieder Vektoren, also es könnte sein,

00:36:58.650 --> 00:37:00.790
dass ich die erste Komponente zur ersten Komponente addiere und dann kriege ich

00:37:00.790 --> 00:37:02.730
eine Komponente raus, es könnte aber sein, dass ich das in die

00:37:02.730 --> 00:37:04.630
zweite Komponente des Vektors schreibe

00:37:04.630 --> 00:37:06.490
und das auch tatsächlich möchte, warum auch immer,

00:37:06.490 --> 00:37:08.010
wenn ich C programmieren möchte, ist das anscheinend,

00:37:08.010 --> 00:37:10.130
und

00:37:10.130 --> 00:37:12.050
der Compiler geht davon aus, dass er das nicht weiß

00:37:12.050 --> 00:37:12.850
und dass er sich das möchte,

00:37:12.870 --> 00:37:14.190
und deswegen optimiert er es nicht weg,

00:37:14.190 --> 00:37:15.590
wenn ich jetzt aber sage,

00:37:15.590 --> 00:37:18.830
dieses Array ist restricted oder restrict,

00:37:18.830 --> 00:37:20.810
dann passiert

00:37:20.810 --> 00:37:22.870
das nicht, also man kann

00:37:22.870 --> 00:37:24.070
das mittlerweile in C lösen,

00:37:24.070 --> 00:37:26.350
aber

00:37:26.350 --> 00:37:28.570
das ist auch wieder eine Wissenschaft für sich,

00:37:28.570 --> 00:37:29.950
wie man das dann genau,

00:37:29.950 --> 00:37:32.770
was man alles optimieren kann und wenn man es richtig schnell haben will,

00:37:32.770 --> 00:37:34.710
dann muss man sowieso ein Assembly schreiben und

00:37:34.710 --> 00:37:36.710
immer mit

00:37:36.710 --> 00:37:39.090
GoTo-Schleifen immer hin und her springen.

00:37:39.090 --> 00:37:42.090
Ja,

00:37:42.090 --> 00:37:42.850
aber Assembly doch,

00:37:42.870 --> 00:37:43.570
so.

00:37:43.570 --> 00:37:46.730
Nee, Assembly ist glaube ich noch schlimmer, da gibt es

00:37:46.730 --> 00:37:48.110
keine GoTo-Schleifen, da gibt es...

00:37:48.110 --> 00:37:49.810
Ja, springe zur Adresse oder sowas.

00:37:49.810 --> 00:37:50.310
Genau.

00:37:50.310 --> 00:37:53.290
Ja.

00:37:53.290 --> 00:37:55.450
Also auf jeden Fall,

00:37:55.450 --> 00:37:58.510
das ist einem, ja,

00:37:58.510 --> 00:38:00.790
auf die Weise kann man dann Python in vielen Sachen nutzen

00:38:00.790 --> 00:38:02.910
und jetzt wieder gesagt,

00:38:02.910 --> 00:38:04.570
die schamlose Überleitung nächster Versuch

00:38:04.570 --> 00:38:06.770
zu meinem eigentlichen Sachen, die ich gemacht habe,

00:38:06.770 --> 00:38:09.150
oder zu Sachen,

00:38:09.150 --> 00:38:10.590
die ich selbst gemacht habe, ist, dass es

00:38:10.590 --> 00:38:12.250
in vielen solchen Simulationssachen,

00:38:12.870 --> 00:38:15.190
das Problem ist, dass man es eben

00:38:15.190 --> 00:38:17.190
nicht vektorisierbar machen kann.

00:38:17.190 --> 00:38:19.250
Also, was in meiner

00:38:19.250 --> 00:38:21.530
vorigen Arbeit sehr häufig aufgetaucht ist,

00:38:21.530 --> 00:38:23.590
ist zum Beispiel, dass wir uns komplizierte

00:38:23.590 --> 00:38:25.530
Netzwerke von, man kann sich jetzt Neuronen

00:38:25.530 --> 00:38:27.270
vorstellen, angeguckt haben,

00:38:27.270 --> 00:38:29.110
die irgendwie miteinander verknüpft sind und

00:38:29.110 --> 00:38:31.310
dann hat man das Problem,

00:38:31.310 --> 00:38:33.110
dass die Verbindungen zwischen diesen

00:38:33.110 --> 00:38:35.190
Knoten zufällig sind und dann ab dem Punkt kann ich es

00:38:35.190 --> 00:38:36.270
nicht mehr sinnvoll vektorisieren.

00:38:36.270 --> 00:38:39.190
Oder man kann sich auch vorstellen,

00:38:39.190 --> 00:38:41.370
man hat komplexe metabolische

00:38:41.370 --> 00:38:42.850
Modelle, wie irgendwelche Spezies,

00:38:42.870 --> 00:38:44.830
irgendwelche Stoffe in andere Stoffe

00:38:44.830 --> 00:38:46.470
überführen und so weiter und das ist

00:38:46.470 --> 00:38:49.190
eben auch komplex und nicht vektorisierbar

00:38:49.190 --> 00:38:50.290
in vielen Fällen und das

00:38:50.290 --> 00:38:51.850
muss man dann,

00:38:51.850 --> 00:38:54.990
möchte man natürlich auch irgendwie effizient haben

00:38:54.990 --> 00:38:56.730
und das Interessante ist, nebenbei ist

00:38:56.730 --> 00:38:58.950
auch, viele

00:38:58.950 --> 00:39:00.770
Leute haben sich vorher immer die

00:39:00.770 --> 00:39:02.870
vektorisierbaren Fälle angeguckt,

00:39:02.870 --> 00:39:04.950
weil sie ja so schön einfach anzugucken sind,

00:39:04.950 --> 00:39:07.010
weil man sie ja schön einfach programmieren

00:39:07.010 --> 00:39:08.770
kann und viele Phänomene

00:39:08.770 --> 00:39:10.770
zeigen sich eben erst, wenn es nicht vektorisierbar ist

00:39:10.770 --> 00:39:12.310
oder wenn eben diese interessanten Fälle passieren.

00:39:12.870 --> 00:39:14.590
Und da habe ich dann eine Software

00:39:14.590 --> 00:39:16.450
geschrieben, die gerade das

00:39:16.450 --> 00:39:18.530
für den Nutzer macht, dass man

00:39:18.530 --> 00:39:22.730
irgendwelche komplizierten Gleichungen hinschreiben kann,

00:39:22.730 --> 00:39:24.550
die das System beschreiben und die werden dann

00:39:24.550 --> 00:39:26.510
für den Nutzer unter der Haube kompiliert,

00:39:26.510 --> 00:39:28.010
nicht vektorisiert

00:39:28.010 --> 00:39:30.290
oder nicht vektorisierbar und

00:39:30.290 --> 00:39:31.650
trotzdem schnell in Python.

00:39:31.650 --> 00:39:34.590
Ja, das

00:39:34.590 --> 00:39:36.270
kam irgendwie...

00:39:36.270 --> 00:39:38.450
Wo gibt es das zu finden oder ist das alles

00:39:38.450 --> 00:39:40.390
private? Das gibt es zu finden,

00:39:40.390 --> 00:39:42.410
das ist schöne, freie Software. Ich habe sie

00:39:42.870 --> 00:39:44.030
also es ist eigentlich drei

00:39:44.030 --> 00:39:46.990
Software, das erste ist JIT-Code, das steht für

00:39:46.990 --> 00:39:48.970
Just-in-Time-Compilation for Ordinary

00:39:48.970 --> 00:39:50.230
Differential Equations.

00:39:50.230 --> 00:39:52.770
Also Ordinary Differential Equations sind gewöhnliche

00:39:52.770 --> 00:39:54.870
Differenzialgleichungen. Just-in-Time-Compilation sagt

00:39:54.870 --> 00:39:56.630
eventuell dem neigten Hörer was, das ist

00:39:56.630 --> 00:39:58.450
dieser Aspekt, dass wir

00:39:58.450 --> 00:40:00.890
irgendeine Eingabe hat und die wird

00:40:00.890 --> 00:40:02.510
dann unter der Haube für den Nutzer kompiliert.

00:40:02.510 --> 00:40:04.950
Und das gibt es dann auch mal

00:40:04.950 --> 00:40:06.950
für sogenannte Delay Differential Equations

00:40:06.950 --> 00:40:08.970
und Stochastic Differential Equations, aber

00:40:08.970 --> 00:40:10.890
ich glaube, das ist ein Detail, auf den wir

00:40:10.890 --> 00:40:11.730
jetzt nicht rumreiten müssen.

00:40:12.870 --> 00:40:14.710
Ja, und das ist

00:40:14.710 --> 00:40:16.330
ein Werkzeug, was dann

00:40:16.330 --> 00:40:18.070
sich herausgestellt hat,

00:40:18.070 --> 00:40:20.810
gut, ich habe es, als ich das gemacht habe,

00:40:20.810 --> 00:40:22.770
konnte ich das natürlich schon irgendwo absehen, dass das für viele

00:40:22.770 --> 00:40:23.810
Leute sehr nützlich ist.

00:40:23.810 --> 00:40:26.230
Insbesondere, als wir uns damals

00:40:26.230 --> 00:40:28.630
von der Forschung damit beschäftigt haben, genau solche

00:40:28.630 --> 00:40:29.490
Probleme zu lösen.

00:40:29.490 --> 00:40:32.550
Und ja,

00:40:32.550 --> 00:40:34.770
eine Sache, die vielleicht auch noch interessant ist, also man

00:40:34.770 --> 00:40:36.670
kann jetzt natürlich sagen, der Nutzer gibt

00:40:36.670 --> 00:40:38.350
mir irgendwelche Gleichungen und die werden umgesetzt.

00:40:38.350 --> 00:40:39.770
Das ist in Python

00:40:39.770 --> 00:40:42.610
auch mit SymPy, also

00:40:42.870 --> 00:40:44.890
Symbolic Python, das wird jetzt wahrscheinlich

00:40:44.890 --> 00:40:45.530
noch ein Exkurs.

00:40:45.530 --> 00:40:48.430
Eine schöne Möglichkeit gibt es, die Gleichung einzugeben.

00:40:48.430 --> 00:40:50.770
Also SymPy macht was denn? Also das ist jetzt

00:40:50.770 --> 00:40:52.790
wieder tatsächlich spannend, was für die Heurer, die das

00:40:52.790 --> 00:40:54.730
noch nie gehört haben, was macht das? Also normales

00:40:54.730 --> 00:40:56.670
Rechnen im Computer macht man ja

00:40:56.670 --> 00:40:57.830
klassischerweise mit Zahlen.

00:40:57.830 --> 00:41:00.210
Eins plus zwei ist drei.

00:41:00.210 --> 00:41:02.890
Aber SymPy rechnet

00:41:02.890 --> 00:41:04.590
mit Symbolen, also ganz

00:41:04.590 --> 00:41:06.410
abstrakten Objekten wie X.

00:41:06.410 --> 00:41:08.810
Und das Schöne an SymPy ist, dass es

00:41:08.810 --> 00:41:10.870
oder auch generell an symbolischem Rechnen,

00:41:10.870 --> 00:41:12.070
das hat jetzt SymPy nicht erfunden,

00:41:12.870 --> 00:41:14.850
aber das Schöne ist, dass

00:41:14.850 --> 00:41:16.930
es dann exakt gewisse Sachen

00:41:16.930 --> 00:41:18.810
lösen kann. Zum Beispiel, wenn man sagt X plus

00:41:18.810 --> 00:41:20.890
X, steht da nicht X plus X,

00:41:20.890 --> 00:41:22.850
sondern steht da 2X. Oder wenn

00:41:22.850 --> 00:41:24.870
man sagt X minus X, dann

00:41:24.870 --> 00:41:26.690
steht da nicht 10 hoch minus 16

00:41:26.690 --> 00:41:28.890
oder so, sondern 0.

00:41:28.890 --> 00:41:30.910
Und das ist dann auch exakt 0.

00:41:30.910 --> 00:41:33.050
Und

00:41:33.050 --> 00:41:34.310
ja, es hat sich herausgestellt, dass

00:41:34.310 --> 00:41:36.870
diese Library gibt es und die hat auch

00:41:36.870 --> 00:41:38.990
direkt Interfaces, um Sachen

00:41:38.990 --> 00:41:40.730
in C-Code zu übersetzen, wenn man wirklich Sachen

00:41:40.730 --> 00:41:42.670
schnell machen muss, was genau das ist, was ich

00:41:42.670 --> 00:41:42.990
brauchte.

00:41:42.990 --> 00:41:46.810
Und sie kann auch viele Sachen, die ihnen jetzt noch

00:41:46.810 --> 00:41:49.070
für mich wichtig waren, automatisieren,

00:41:49.070 --> 00:41:50.930
solche Ausdrücke analysieren, welche Symbole

00:41:50.930 --> 00:41:51.930
tauchen da eigentlich auf,

00:41:51.930 --> 00:41:54.690
damit rechnen natürlich und eventuell

00:41:54.690 --> 00:41:56.610
sogar Gleichungen lösen, wobei das eine Sache ist,

00:41:56.610 --> 00:41:58.350
die ich interessanterweise kaum mache.

00:41:58.350 --> 00:42:00.610
Auch wenn man sich irgendwie viele Leute vorstellt,

00:42:00.610 --> 00:42:02.450
dass das Wichtigste ist, wenn man so ein symbolisches Rechnen

00:42:02.450 --> 00:42:04.890
hat, dass man tatsächlich...

00:42:04.890 --> 00:42:06.870
Ja, genau. Man kann irgendwelche komplizierten

00:42:06.870 --> 00:42:08.510
Gleichungen lösen. Ja, kann man,

00:42:08.510 --> 00:42:10.570
aber man kann es auch als Werkzeug nutzen,

00:42:10.570 --> 00:42:12.510
um ganz schnell

00:42:12.670 --> 00:42:14.790
dumpfe Routineaufgaben durchzurechnen

00:42:14.790 --> 00:42:15.290
und

00:42:15.290 --> 00:42:18.510
es einfach als Eingabe-Maske

00:42:18.510 --> 00:42:19.390
zu nutzen oder

00:42:19.390 --> 00:42:22.670
einfach auch solche Ausdrücke zu analysieren und zu gucken,

00:42:22.670 --> 00:42:24.590
okay, ja, welche Verben tauchen dann eigentlich

00:42:24.590 --> 00:42:26.570
auf? Also nichts, was ein Mensch nicht

00:42:26.570 --> 00:42:28.210
auch könnte, aber eben automatisiert.

00:42:28.210 --> 00:42:30.570
Kann man die auch... Ich meine, wenn man das

00:42:30.570 --> 00:42:32.170
eine gute Methode gibt, die anzugeben,

00:42:32.170 --> 00:42:34.290
das ist auch vielleicht ein bisschen...

00:42:34.290 --> 00:42:36.050
Kann man dann auch irgendwie sowas sagen wie

00:42:36.050 --> 00:42:38.550
printe mal das nett raus

00:42:38.550 --> 00:42:40.770
oder latech dafür oder so?

00:42:40.770 --> 00:42:41.990
Das wäre natürlich auch...

00:42:41.990 --> 00:42:42.470
Ja, also...

00:42:42.470 --> 00:42:44.670
Weil das mache ich nämlich sonst immer total mühselig von der Hand

00:42:44.670 --> 00:42:46.870
und muss mir dann die Syntax zusammenklauben irgendwoher.

00:42:46.870 --> 00:42:48.370
Das ist ja scheiße, wenn ich irgendwie sowas sage,

00:42:48.370 --> 00:42:50.350
wo der x plus x gleich x²

00:42:50.350 --> 00:42:52.910
oder sowas, dass man dann tatsächlich

00:42:52.910 --> 00:42:53.930
ein latech-Rechte irgendwie kriegt.

00:42:53.930 --> 00:42:55.990
Ja, ja, der hat einen latech-Printer.

00:42:55.990 --> 00:42:59.010
Ich habe damit noch

00:42:59.010 --> 00:43:00.670
nicht viel gearbeitet, insofern kann ich dazu nicht so viel sagen.

00:43:00.670 --> 00:43:02.470
Ich bin ziemlich... Also, er existiert definitiv.

00:43:02.470 --> 00:43:04.750
Was man halt aufpassen muss, ist die Frage,

00:43:04.750 --> 00:43:05.710
ob man das dann wirklich

00:43:05.710 --> 00:43:08.630
so dem geneigten Leser

00:43:08.630 --> 00:43:10.430
verkaufen möchte, wie es da ausgegeben wird.

00:43:10.430 --> 00:43:12.430
Die Sachen sind halt so sortiert,

00:43:12.470 --> 00:43:14.290
wie Sympy das gerade für richtig hält.

00:43:14.290 --> 00:43:16.510
Also, man kann das

00:43:16.510 --> 00:43:17.590
wahrscheinlich modifizieren, aber dann

00:43:17.590 --> 00:43:20.570
macht man sich mehr Arbeit, als es selbst zu schreiben.

00:43:20.570 --> 00:43:24.610
Aber auch solche

00:43:24.610 --> 00:43:26.350
Sachen gehen ja. Man kann es auch ausgeben,

00:43:26.350 --> 00:43:27.270
wenn man ja unbedingt möchte.

00:43:27.270 --> 00:43:29.970
Aber was natürlich so die Sachen sind, die

00:43:29.970 --> 00:43:32.190
in vielen Anwendungen gar nicht auftauchen.

00:43:32.190 --> 00:43:34.370
In dem Zusammenhang von

00:43:34.370 --> 00:43:36.350
diesem Gleichung, du hast nämlich irgendwann mal über so ein

00:43:36.350 --> 00:43:38.270
Programm gesprochen, das heißt irgendwie LP-Solver

00:43:38.270 --> 00:43:40.310
oder sowas? Linear Programming

00:43:40.310 --> 00:43:40.850
oder sowas?

00:43:42.270 --> 00:43:44.050
Lineare Optimierung. Da gibt es

00:43:44.050 --> 00:43:45.690
einige Softwarezungen.

00:43:45.690 --> 00:43:48.030
Ich meine, da bin ich jetzt wenig der Experte. Ich glaube,

00:43:48.030 --> 00:43:50.050
das ist dann wieder ein Fall, wo es numerisch gelöst wird.

00:43:50.050 --> 00:43:52.330
Also mit Zahlen. Das Interessante

00:43:52.330 --> 00:43:54.030
hier ist, dass wir wirklich mit abstrakten Symbolen

00:43:54.030 --> 00:43:55.530
rechnen. Das ist ein bisschen was anderes. Also natürlich,

00:43:55.530 --> 00:43:56.210
ja.

00:43:56.210 --> 00:43:59.990
Okay, vielleicht könnte man das dann kombinieren

00:43:59.990 --> 00:44:00.430
oder sowas.

00:44:00.430 --> 00:44:04.530
Ich weiß nicht.

00:44:04.530 --> 00:44:05.690
Ich glaube, das Standardpaket für so

00:44:05.690 --> 00:44:07.310
konvexe Optimierung ist CVX-Opt

00:44:07.310 --> 00:44:09.770
oder so. Da habe ich schon mal ein bisschen was gemacht.

00:44:09.770 --> 00:44:12.070
Es gibt dann noch so ein paar mehr

00:44:12.070 --> 00:44:13.930
Pakete, ja. Also, aber

00:44:13.930 --> 00:44:16.030
ich glaube, das ist nochmal eine andere

00:44:16.030 --> 00:44:18.630
Richtung.

00:44:18.630 --> 00:44:20.030
Wahrscheinlich, obwohl das auch wahrscheinlich

00:44:20.030 --> 00:44:22.070
alles in dem Scientific-Umfeld

00:44:22.070 --> 00:44:24.530
irgendwie so existiert.

00:44:24.530 --> 00:44:26.290
Es gibt sehr viele Standardprobleme

00:44:26.290 --> 00:44:28.450
mit sehr vielen Lösungen dafür und schon allein die ganzen Probleme

00:44:28.450 --> 00:44:29.610
alle mit Namen hinzuführen,

00:44:29.610 --> 00:44:32.870
da ist man dann eine ganze Karriere mit beschäftigt.

00:44:32.870 --> 00:44:34.870
Ich weiß nicht,

00:44:34.870 --> 00:44:36.410
ob das bei dir noch eine Rolle spielt, aber ich habe

00:44:36.410 --> 00:44:38.510
da so mal früher, da gab es irgendwie sowas wie Sage

00:44:38.510 --> 00:44:40.410
oder so. Das war so eine Distribution von ganz

00:44:40.410 --> 00:44:41.870
vielen Dingen. Ja, das ist

00:44:41.870 --> 00:44:43.370
das, was heute noch gibt. Ich habe keine Ahnung.

00:44:43.370 --> 00:44:45.610
Es gibt es, glaube ich, noch. Ich habe auch damit gearbeitet.

00:44:45.610 --> 00:44:47.970
Also, ja, also was ist Sage?

00:44:47.970 --> 00:44:49.050
Ich kann sowas, also das ist,

00:44:49.050 --> 00:44:51.770
es ist sehr komisch. Es ist

00:44:51.770 --> 00:44:53.730
weitestgehend Python

00:44:53.730 --> 00:44:56.290
und ist speziell

00:44:56.290 --> 00:44:58.090
dafür gemacht, so ein Ersatz für so Sachen

00:44:58.090 --> 00:45:00.290
wie, ja, ich glaube, Mathematiker

00:45:00.290 --> 00:45:02.230
hauptsächlich. Mathematik

00:45:02.230 --> 00:45:03.990
und so weiter zu sein. Es ist ein

00:45:03.990 --> 00:45:05.490
großer Klotz, den man

00:45:05.490 --> 00:45:07.850
sich kompilieren oder runterladen muss.

00:45:07.850 --> 00:45:10.030
Der ist dann 600 Megabyte

00:45:10.030 --> 00:45:10.670
groß oder so.

00:45:11.670 --> 00:45:13.570
Und funktioniert weitestgehend wie

00:45:13.570 --> 00:45:15.410
Python, aber nicht

00:45:15.410 --> 00:45:17.330
ganz. Also es gibt so

00:45:17.330 --> 00:45:20.130
eigenwillige Modifikationen,

00:45:20.130 --> 00:45:21.770
sage ich mal, die dazu

00:45:21.770 --> 00:45:23.310
dienen, das ansprechender zu machen.

00:45:23.310 --> 00:45:25.070
Ob das jetzt gut ist oder nicht,

00:45:25.070 --> 00:45:26.890
sei dahingestellt. Also zum Beispiel ist

00:45:26.890 --> 00:45:29.890
das, der Zirkum-Flex-Operator

00:45:29.890 --> 00:45:31.670
Potenzierung macht, statt Sternchen,

00:45:31.670 --> 00:45:33.770
Sternchen. Also Sternchen, Sternchen macht auch noch Potenzierung,

00:45:33.770 --> 00:45:35.490
aber man kann es jetzt auch mit...

00:45:35.490 --> 00:45:37.390
Okay, das wusste ich gar nicht, dass sie das geändert haben.

00:45:37.390 --> 00:45:39.610
Also solche Änderungen

00:45:39.610 --> 00:45:41.470
sind da drin. Es sind viele Sachen automatisch

00:45:41.470 --> 00:45:42.670
geladen als Pakete

00:45:42.670 --> 00:45:44.950
in so einem

00:45:44.950 --> 00:45:47.090
Standard-Namensraum. Also es macht so ein paar

00:45:47.090 --> 00:45:49.330
Sachen, ja, wie soll ich sagen,

00:45:49.330 --> 00:45:51.290
komisch kaputt, die...

00:45:51.290 --> 00:45:52.190
Nicht kaputt, aber

00:45:52.190 --> 00:45:55.190
so Sachen, die in Python eigentlich ganz gut sind,

00:45:55.190 --> 00:45:57.090
dass man den Standard-Namensraum eben nicht mit

00:45:57.090 --> 00:45:59.130
10.000 Dingen vollgemüllt hat und die nicht

00:45:59.130 --> 00:46:00.870
einfach aus Versehen überschreiben kann

00:46:00.870 --> 00:46:03.390
und weiß, woher

00:46:03.390 --> 00:46:04.130
die Dinge kommen,

00:46:04.130 --> 00:46:07.370
wurden

00:46:07.370 --> 00:46:09.270
dann wieder zu nicht gemacht. Warum der ein...

00:46:09.270 --> 00:46:11.110
Warum man jetzt den Zirkum-Flex-Operator unbedingt

00:46:11.110 --> 00:46:13.510
brauchte, dafür...

00:46:13.510 --> 00:46:15.270
Ja, ob das so wichtig ist, gut, ja.

00:46:15.270 --> 00:46:17.250
Weiß ich nicht.

00:46:17.250 --> 00:46:18.870
Also ich habe damit gearbeitet, es

00:46:18.870 --> 00:46:20.990
kann ein bisschen mehr, oder konnte

00:46:20.990 --> 00:46:22.470
zu dem Zeitpunkt ein bisschen mehr als Sympathie,

00:46:22.470 --> 00:46:24.990
andererseits eben Sachen Gleichung lösen.

00:46:24.990 --> 00:46:27.090
Was, wie gesagt, die Sache ist,

00:46:27.090 --> 00:46:29.030
die ich nicht mache, auch wenn sie irgendwie alle warten,

00:46:29.030 --> 00:46:31.230
sondern ich nutze es wirklich eben, Gleichung zu verarbeiten

00:46:31.230 --> 00:46:33.030
und damit einfache Sachen zu machen.

00:46:33.030 --> 00:46:34.830
Deswegen habe ich das letzten Endes

00:46:34.830 --> 00:46:35.510
nicht gebraucht.

00:46:35.510 --> 00:46:38.910
Und es ist, wie gesagt, dieser große monolithische

00:46:38.910 --> 00:46:40.910
Klotz, den man dann immer auch komplett updaten

00:46:40.910 --> 00:46:43.230
muss oder wo man, ja...

00:46:43.230 --> 00:46:44.150
Es war nicht sehr

00:46:44.150 --> 00:46:47.070
handhabbar, aber nicht schön, fand ich.

00:46:47.070 --> 00:46:49.150
Wo wir, aber noch ein kurzer Rückbezug,

00:46:49.150 --> 00:46:50.750
ist super zum Code-Golfen, wie gesagt,

00:46:50.750 --> 00:46:53.270
alles wird in die... Viele Dinge sind im Standard-Nahmensraum.

00:46:53.270 --> 00:46:54.830
Das heißt, eine Lösung, ein

00:46:54.830 --> 00:46:57.050
Python-Programm kompakter zu

00:46:57.050 --> 00:46:58.510
machen in Code-Golfen, ist dann

00:46:58.510 --> 00:46:59.350
mach es in Sage.

00:46:59.350 --> 00:47:03.010
Auch nicht schlecht, ja. Ist natürlich keine Python-Lösung

00:47:03.010 --> 00:47:03.850
mehr, aber, ja.

00:47:03.850 --> 00:47:06.910
Ja, interessant. Also,

00:47:06.910 --> 00:47:08.890
okay, aber SymPy scheint auf jeden Fall

00:47:08.890 --> 00:47:10.530
dann, wenn man irgendwie so, ja,

00:47:10.710 --> 00:47:12.630
Gleichungen symbolisch verarbeiten möchte, dann halt

00:47:12.630 --> 00:47:14.710
so das Mittel der Wahl zu sein. Was gibt es denn noch

00:47:14.710 --> 00:47:16.550
an Bibliotheken oder Software,

00:47:16.550 --> 00:47:18.450
die so regelmäßig benutzt

00:47:18.450 --> 00:47:20.330
werden und da eine wichtige Rolle spielen?

00:47:20.330 --> 00:47:22.450
Also, ich glaube, NumPy ist

00:47:22.450 --> 00:47:24.510
klar, SymPy ist,

00:47:24.510 --> 00:47:26.710
stellt einem viele

00:47:26.710 --> 00:47:28.710
Simulations und Statistik und sonst

00:47:28.710 --> 00:47:30.750
was Tools zur Verfügung. Nutze ich

00:47:30.750 --> 00:47:32.750
zum Beispiel auch unter der Haube, um gewöhnliche

00:47:32.750 --> 00:47:34.490
Differenzialgleichungen zu integrieren. Für andere

00:47:34.490 --> 00:47:36.810
Differenzialgleichungen dann nicht mehr, weil das komplizierter

00:47:36.810 --> 00:47:38.410
ist. Da habe ich dann meine eigenen

00:47:38.410 --> 00:47:39.690
Integratoren implementiert.

00:47:40.710 --> 00:47:44.650
Ja, dann, gut, es gibt

00:47:44.650 --> 00:47:46.810
viele Sachen für Datenfahr,

00:47:46.810 --> 00:47:49.090
also, um wirklich große Datenmengen

00:47:49.090 --> 00:47:50.830
und vor allem Daten zu verwalten. Ich glaube,

00:47:50.830 --> 00:47:52.510
ihr hattet schon mal eine Folge zu Pandas, insofern werde ich

00:47:52.510 --> 00:47:54.710
davon nicht zu viel erzählen. Kann ich auch gar nicht,

00:47:54.710 --> 00:47:56.690
weil ich jetzt in der Regel nicht so viel mit Daten

00:47:56.690 --> 00:47:58.730
zu tun habe, aber die Daten, die ich habe,

00:47:58.730 --> 00:48:00.050
sind einigermaßen überschaubar.

00:48:00.050 --> 00:48:04.690
Ja, und dann eben ganz viele

00:48:04.690 --> 00:48:06.290
Bibliotheken, die gerade genau die

00:48:06.290 --> 00:48:08.450
Spezialanwendung machen, die man braucht.

00:48:08.450 --> 00:48:10.510
Und da ist

00:48:10.510 --> 00:48:12.530
eben das Schöne an Python, denke ich, dass

00:48:12.530 --> 00:48:14.550
es relativ einfach

00:48:14.550 --> 00:48:16.030
ist, erstmal irgendwas,

00:48:16.030 --> 00:48:18.570
wenn es nicht effizient sein soll, zu schreiben

00:48:18.570 --> 00:48:19.810
und zur Verfügung zu stellen,

00:48:19.810 --> 00:48:22.570
insbesondere auch Dinge zu nutzen und sie natürlich

00:48:22.570 --> 00:48:24.370
auch mit anderen Dingen zusammen zu nutzen, weil man

00:48:24.370 --> 00:48:26.470
am Ende eine vollwertige Programmiersprache

00:48:26.470 --> 00:48:28.510
dahinter hat. Was immer

00:48:28.510 --> 00:48:30.190
das Problem mit anderen Sachen ist,

00:48:30.190 --> 00:48:32.490
die, also,

00:48:32.490 --> 00:48:34.190
ja, dass man eben

00:48:34.190 --> 00:48:36.470
irgendwann an die Grenzen stößt,

00:48:36.470 --> 00:48:38.450
dass man, gut, häufig braucht man

00:48:38.450 --> 00:48:40.230
die Sachen natürlich auch nicht, häufig braucht man nicht

00:48:40.510 --> 00:48:42.650
also, wenn ich jetzt, was ich leute,

00:48:42.650 --> 00:48:44.390
die Matlab oder was auch immer

00:48:44.390 --> 00:48:46.550
nutzen, ja, die wollen damit natürlich auch keinen

00:48:46.550 --> 00:48:48.670
Webserver betreiben, oder

00:48:48.670 --> 00:48:49.270
was auch immer,

00:48:49.270 --> 00:48:52.530
aber, ja,

00:48:52.530 --> 00:48:54.270
man kann halt auch immer,

00:48:54.270 --> 00:48:56.650
also, ich glaube, der Vorteil ist eher nicht, also weniger,

00:48:56.650 --> 00:48:58.770
dass man solche Sachen wie Webserver

00:48:58.770 --> 00:49:00.250
oder so weiter nutzen kann, sondern dass man

00:49:00.250 --> 00:49:02.730
sagen kann, das hier ist eine universelle Programmiersprache,

00:49:02.730 --> 00:49:04.630
die lernen wir jetzt mal bitte alle, und dann

00:49:04.630 --> 00:49:06.650
können wir dann machen,

00:49:06.650 --> 00:49:08.910
was wir wollen, und wenn man allgemeine Programmierkonzepte

00:49:08.910 --> 00:49:10.390
nutzt, kann man sie verwenden,

00:49:10.390 --> 00:49:12.510
ob man jetzt, also, muss jetzt gar nicht in Python sein,

00:49:12.510 --> 00:49:14.290
aber, wenn man so etwas wie

00:49:14.290 --> 00:49:16.450
objektorientiertes Programmieren einmal verstanden hat,

00:49:16.450 --> 00:49:18.770
kann man das dann eben für Simulationen

00:49:18.770 --> 00:49:19.890
nutzen, oder, oder, oder.

00:49:19.890 --> 00:49:22.350
Was ist so die häufigste andere Sprache, die du

00:49:22.350 --> 00:49:24.230
findest, dann in deinem wissenschaftlichen Umfeld,

00:49:24.230 --> 00:49:26.410
mit der du dann auch arbeiten wollen würdest, oder sagst,

00:49:26.410 --> 00:49:28.490
das gehört auch dazu? Also, arbeiten wollen würden,

00:49:28.490 --> 00:49:30.630
das ist ja da so hingestellt, ich, ich musste,

00:49:30.630 --> 00:49:32.930
sage ich mal,

00:49:32.930 --> 00:49:34.410
äh, einen Kurs

00:49:34.410 --> 00:49:36.230
Datenanalyse in Matlab für Biologen

00:49:36.230 --> 00:49:38.290
unterrichten, ähm,

00:49:38.290 --> 00:49:40.370
das heißt, ja, das ist so die andere Programmiersprache,

00:49:40.370 --> 00:49:42.190
mit der ich viel zu tun hatte,

00:49:42.190 --> 00:49:43.250
ich habe es aber geschafft, das

00:49:43.250 --> 00:49:45.870
weitestgehend Matlab nie anzurühren,

00:49:45.870 --> 00:49:48.370
also, es gibt ja eine freie Alternative namens

00:49:48.370 --> 00:49:50.270
Octave, das macht schon mal, so für

00:49:50.270 --> 00:49:52.010
freundefreie Software, äh,

00:49:52.010 --> 00:49:54.470
etwas erträglicher, aus dem muss ich mich dann nicht irgendwie rumschlagen,

00:49:54.470 --> 00:49:56.310
das zu installieren, und, ja,

00:49:56.310 --> 00:49:58.350
ich habe es tatsächlich weitestgehend

00:49:58.350 --> 00:50:00.310
geschafft, diesen Kurs zu lehren, ohne

00:50:00.310 --> 00:50:02.390
das jemals anzurühren, ähm,

00:50:02.390 --> 00:50:04.330
und, ja, also,

00:50:04.330 --> 00:50:06.230
ich würde auch mit der Programmiersprache nicht arbeiten,

00:50:06.230 --> 00:50:07.390
weil es gibt Sachen, das,

00:50:07.390 --> 00:50:10.350
das Schöne ist, ich habe es irgendwie so dann zwei Monate vor

00:50:10.350 --> 00:50:12.090
dem Kurs mich hingesetzt und das gelernt, und

00:50:12.090 --> 00:50:13.050
wirklich

00:50:13.050 --> 00:50:16.230
jede Sache, wo ich denke, okay, wer hat

00:50:16.230 --> 00:50:18.310
sich das ausgedacht, das kann doch nur zu tausenden von

00:50:18.310 --> 00:50:19.830
Fehlern und sonst was Problemen führen,

00:50:19.830 --> 00:50:22.150
führte auch zu tausenden von Fehlern und Problemen.

00:50:22.150 --> 00:50:23.950
Ja, gut, wenn dann, ja, okay, super, ja.

00:50:23.950 --> 00:50:25.650
Also, es, ja,

00:50:25.650 --> 00:50:28.050
es ist, es passt wirklich zum Teil, wie die Voraussetzung,

00:50:28.050 --> 00:50:30.130
ich meine, ich habe ja auch, ja gut, das kann man jetzt wieder nicht

00:50:30.130 --> 00:50:32.070
vorführen, aber so ein Beispiel, wo man

00:50:32.070 --> 00:50:33.050
an einer Stelle,

00:50:33.050 --> 00:50:35.610
also, ich hoffe, ich erzähle es doch nochmal ein bisschen,

00:50:35.610 --> 00:50:38.010
äh, Matlab hat die großartige Idee gehabt,

00:50:38.010 --> 00:50:40.090
dass man das Leerzeichen als Element,

00:50:40.330 --> 00:50:42.290
Trennungsoperator in Arrays nutzt,

00:50:42.290 --> 00:50:43.990
oder Lüften, ja, ja, ja,

00:50:43.990 --> 00:50:46.170
genau, also, statt

00:50:46.170 --> 00:50:47.930
Kommata, wie in Python,

00:50:47.930 --> 00:50:50.070
und man kann auch

00:50:50.070 --> 00:50:52.110
Kommata nutzen, man kann auch Semikola nutzen,

00:50:52.110 --> 00:50:54.150
das ist dann eine neue Zeile, aber man kann auch Leerzeichen

00:50:54.150 --> 00:50:56.090
nutzen, ähm, und dann gibt es

00:50:56.090 --> 00:50:58.070
jetzt das Problem, wenn ich jetzt was tippe,

00:50:58.070 --> 00:51:00.110
wie, eckige Klammer auf, was steht für Array,

00:51:00.110 --> 00:51:01.490
okay, soweit so erwartet,

00:51:01.490 --> 00:51:04.190
5 Leerzeichen plus Leerzeichen

00:51:04.190 --> 00:51:06.050
3, dann ist das natürlich

00:51:06.050 --> 00:51:08.230
8, wenn ich aber eintippe

00:51:08.230 --> 00:51:10.310
5 Leerzeichen plus, kein Leerzeichen

00:51:10.310 --> 00:51:12.350
Achtung, 3, ist das natürlich

00:51:12.350 --> 00:51:13.870
das Array, was 5 und 3 enthält,

00:51:13.870 --> 00:51:15.370
weil das Leerzeichen ja der

00:51:15.370 --> 00:51:18.210
plus 3, ja, und das plus

00:51:18.210 --> 00:51:20.210
gehört dann halt zu der Zahl und sagt einfach nur,

00:51:20.210 --> 00:51:22.030
das ist jetzt plus 5 und nicht minus, genau,

00:51:22.030 --> 00:51:23.870
ja, und das

00:51:23.870 --> 00:51:26.190
hört sich so noch okay,

00:51:26.190 --> 00:51:28.190
kann man auch verstehen, das Problem ist, wenn jetzt die Arrays etwas

00:51:28.190 --> 00:51:30.150
größer und komplizierter werden und da komplizierte Ausdrücke

00:51:30.150 --> 00:51:31.870
drinstehen, was manchmal tatsächlich der Fall ist,

00:51:31.870 --> 00:51:34.350
dann kann einem die Formatierung

00:51:34.350 --> 00:51:36.230
dieses Arrays dann die Probleme machen, also,

00:51:36.230 --> 00:51:38.430
ja, das war der Fehler, wo wir

00:51:38.430 --> 00:51:40.290
wirklich eine halbe Stunde gesucht haben, um zu verstehen, was

00:51:40.290 --> 00:51:41.050
da überhaupt passiert ist.

00:51:41.050 --> 00:51:45.690
Man startet da drauf und denkt sich so,

00:51:45.690 --> 00:51:46.590
ja,

00:51:46.590 --> 00:51:49.950
die Spare ist halt jetzt voll davon,

00:51:49.950 --> 00:51:51.630
das wurde halt in den

00:51:51.630 --> 00:51:53.930
80er Jahren entwickelt,

00:51:53.930 --> 00:51:55.390
1987, 1986, keine Ahnung,

00:51:55.390 --> 00:51:58.210
und seitdem gefühlt nicht mehr

00:51:58.210 --> 00:51:58.730
weiterentwickelt.

00:51:58.730 --> 00:52:01.250
Und ja, so bedient es sich auch.

00:52:01.250 --> 00:52:03.810
Das erinnert mich so ein bisschen an Python, wenn du das Tupel machen

00:52:03.810 --> 00:52:06.230
übergeben würdest, dass du dahinter noch ein Komma machen würdest, weil da sonst kein Tupel

00:52:06.230 --> 00:52:08.390
macht, wenn du die Klammer einfach, ein Element nur drin hast.

00:52:08.390 --> 00:52:09.670
Ja,

00:52:10.270 --> 00:52:11.870
genau, das ist noch so, ja,

00:52:11.870 --> 00:52:13.830
aber das passiert halt andauernd.

00:52:13.830 --> 00:52:14.630
Bäh.

00:52:14.630 --> 00:52:18.110
Und dann gibt es so zwischendrin gibt es R, das ist schon

00:52:18.110 --> 00:52:18.690
ein bisschen besser.

00:52:18.690 --> 00:52:21.990
Also, erstens ist es frei,

00:52:21.990 --> 00:52:24.110
zweitens ist es nicht ganz so

00:52:24.110 --> 00:52:26.570
irrsinnig, es hält sich noch ein bisschen an Programmierstandards,

00:52:26.570 --> 00:52:26.910
aber

00:52:26.910 --> 00:52:30.230
ja, damit habe ich noch

00:52:30.230 --> 00:52:32.210
nicht so viel zu tun gehabt. Und es gibt natürlich auch diverse

00:52:32.210 --> 00:52:33.430
andere Sparen, es ist

00:52:33.430 --> 00:52:35.710
relativ ein Kompass für Simulationen oder

00:52:35.710 --> 00:52:37.970
Sachen, die schnell laufen müssen, ist Julia,

00:52:37.970 --> 00:52:40.150
wo ich

00:52:40.150 --> 00:52:42.010
dann mich immer noch frage, okay,

00:52:42.010 --> 00:52:44.210
wieso brauchen wir jetzt hier noch Klammern,

00:52:44.210 --> 00:52:46.110
weil die Python ja zum Beispiel abgeschafft hat.

00:52:46.110 --> 00:52:48.350
Und insbesondere, dass es hier eine Sprache ist,

00:52:48.350 --> 00:52:50.270
die sich in vielen Fällen, so wie ich es verstanden habe,

00:52:50.270 --> 00:52:51.990
an Python orientiert. Ja,

00:52:51.990 --> 00:52:54.250
aber sehr viel mache ich zur Zeit in Python und wenn

00:52:54.250 --> 00:52:56.110
es dann schnell gehen muss, mache ich es eigentlich in C.

00:52:56.110 --> 00:52:58.230
Also das sind so die Sprachen, mit

00:52:58.230 --> 00:52:59.890
denen ich direkt zu tun habe.

00:52:59.890 --> 00:53:01.630
Dann direkt tatsächlich als

00:53:01.630 --> 00:53:03.850
C-Extension oder nimmst du sowas wie

00:53:03.850 --> 00:53:04.950
Saiten und

00:53:04.950 --> 00:53:07.470
wandelt das dann halt

00:53:07.470 --> 00:53:09.550
um in C?

00:53:10.030 --> 00:53:12.310
Ich mache es tatsächlich als C-Extension, weil ich es einfach gelernt habe

00:53:12.310 --> 00:53:14.210
und mich da auskenne. Zum einen

00:53:14.210 --> 00:53:16.010
und zum anderen jetzt, um auf meine eigene Software

00:53:16.010 --> 00:53:18.430
zurückzukommen, da ist ja wieder gerade das Problem,

00:53:18.430 --> 00:53:20.450
dass ich es dann wirklich möglichst schnell haben möchte

00:53:20.450 --> 00:53:22.230
und wenn ich den Nutzer

00:53:22.230 --> 00:53:24.470
dann Siphon-Code eingeben lasse, habe ich

00:53:24.470 --> 00:53:26.210
nicht so viel gewonnen.

00:53:26.210 --> 00:53:28.210
Ja, klar. Dann kann ich auch direkt

00:53:28.210 --> 00:53:30.370
C-Code machen und dann kann ich auch noch viele Sachen nutzen,

00:53:30.370 --> 00:53:32.370
die eben so

00:53:32.370 --> 00:53:33.790
in Siphon nicht drin sind.

00:53:33.790 --> 00:53:35.870
Also doppelt verlinkte Listen

00:53:35.870 --> 00:53:38.070
oder so, glaube ich, würden

00:53:38.070 --> 00:53:39.350
Siphon nicht funktionieren.

00:53:40.030 --> 00:53:42.150
Also, dann mache ich es

00:53:42.150 --> 00:53:44.130
schon einmal Hardcore und

00:53:44.130 --> 00:53:46.090
kann dann wenigstens die Sachen, die

00:53:46.090 --> 00:53:47.310
wirklich schnell sein müssen, auch

00:53:47.310 --> 00:53:49.070
radikal optimieren.

00:53:49.070 --> 00:53:51.910
Du sitzt dann

00:53:51.910 --> 00:53:53.530
mit der Stoppuhr-Time mit und dann

00:53:53.530 --> 00:53:55.350
guckst du es dann wirklich an?

00:53:55.350 --> 00:53:57.990
Ja, also in einigen Fällen wirklich

00:53:57.990 --> 00:53:58.830
ja, zum anderen

00:53:58.830 --> 00:54:01.870
bilde ich mir ein, ein bisschen Erfahrung

00:54:01.870 --> 00:54:03.870
zu haben, wie man Dinge schnell macht.

00:54:03.870 --> 00:54:06.090
Also, in vielen Fällen

00:54:06.090 --> 00:54:07.930
schreibe ich die Dinge dann hoffentlich auch direkt so, dass sie

00:54:07.930 --> 00:54:09.910
schnell sind. Also hintereinander direkt

00:54:09.910 --> 00:54:11.790
den Speicher, dass der Teig ja nicht so schnell oder so

00:54:11.790 --> 00:54:13.670
viel hin- und herspringen muss oder was es dann so ist.

00:54:13.670 --> 00:54:15.830
Ja, okay, auf der Ebene bin ich noch nicht, aber dass man sich halt

00:54:15.830 --> 00:54:16.870
schon mal überlegt,

00:54:16.870 --> 00:54:20.170
ja, das könnte

00:54:20.170 --> 00:54:20.810
ich jetzt,

00:54:20.810 --> 00:54:24.070
dass man eben

00:54:24.070 --> 00:54:26.050
hier diese gewisse Schleifen gar nicht braucht

00:54:26.050 --> 00:54:27.070
oder

00:54:27.070 --> 00:54:30.030
mit Zeiger-Arithmetik arbeitet

00:54:30.030 --> 00:54:31.950
oder eben sich überlegt, okay, jetzt habe ich hier noch

00:54:31.950 --> 00:54:33.770
einen Funktionsaufruf und das kostet Zeit

00:54:33.770 --> 00:54:34.430
und

00:54:34.430 --> 00:54:37.690
wie kann ich das vermeiden oder wie kann ich hier die Suche

00:54:37.690 --> 00:54:39.550
also irgendwelche Suchoperationen, ja,

00:54:39.790 --> 00:54:41.850
Okay, okay, das hört sich tatsächlich an, das wird ja tatsächlich

00:54:41.850 --> 00:54:43.830
von der schwachen Hardware, die er noch zur Verfügung

00:54:43.830 --> 00:54:46.270
stellt, in den Forschungsinstitutionen

00:54:46.270 --> 00:54:47.810
so ein bisschen abhängig, aber ich dachte, die wären eigentlich

00:54:47.810 --> 00:54:49.430
schon weiter. Ja, aber das ist

00:54:49.430 --> 00:54:51.650
abhängig von dieser Komplexität,

00:54:51.650 --> 00:54:54.170
dieser unheimlich großen Berechnungen.

00:54:54.170 --> 00:54:55.890
Naja, also die Hardware kann

00:54:55.890 --> 00:54:57.390
ja nur so viel leisten, wenn ich,

00:54:57.390 --> 00:54:59.350
also erstmal, weil ich ja durch die,

00:54:59.350 --> 00:55:01.530
in vielen Fällen gehe ich, indem ich von

00:55:01.530 --> 00:55:03.750
Python auf C gehe, hole ich

00:55:03.750 --> 00:55:05.370
einen Faktor von 1000 oder so raus

00:55:05.370 --> 00:55:07.050
bei mir. Das,

00:55:07.050 --> 00:55:08.790
ja,

00:55:09.670 --> 00:55:11.170
da will ich jetzt nicht mehr mit der...

00:55:11.170 --> 00:55:12.850
Das klingt jetzt ziemlich viel. Ja.

00:55:12.850 --> 00:55:15.610
Natürlich, also ich könnte das in Python

00:55:15.610 --> 00:55:17.670
wahrscheinlich auch noch, wenn ich mich wirklich, wirklich stark

00:55:17.670 --> 00:55:19.710
hinsetze, besser machen, dass es

00:55:19.710 --> 00:55:21.670
nur noch ein Faktor 100 ist, aber

00:55:21.670 --> 00:55:23.330
gerade solche Probleme habe ich eben.

00:55:23.330 --> 00:55:25.570
Das muss man ja auch, also das

00:55:25.570 --> 00:55:27.570
für viele andere Probleme gilt das übrigens nicht. Also ich habe

00:55:27.570 --> 00:55:29.670
jetzt schon meine exotischen Spezialprobleme,

00:55:29.670 --> 00:55:31.710
die ich und vielleicht noch, ja, so

00:55:31.710 --> 00:55:33.610
ein paar kleinere Communities auf der Welt

00:55:33.610 --> 00:55:33.990
haben,

00:55:33.990 --> 00:55:37.350
wo das wirklich einen riesen Unterschied macht

00:55:37.350 --> 00:55:39.470
und wo ich dann eben auch Software geschrieben habe, die diese

00:55:39.550 --> 00:55:40.450
Unterschiede dann weg macht, aber

00:55:40.450 --> 00:55:43.350
für Python-Nutzer rausholt,

00:55:43.350 --> 00:55:45.530
die,

00:55:45.530 --> 00:55:47.250
so jetzt war ich, ja,

00:55:47.250 --> 00:55:49.430
was war nochmal deine Frage?

00:55:49.430 --> 00:55:51.270
Ja, es geht so ein bisschen darum, also wie das dann hinterher

00:55:51.270 --> 00:55:53.370
aussieht, also warum du diese Geschwindigkeit dann

00:55:53.370 --> 00:55:55.350
über C rausholen musst, warum das nicht irgendwie,

00:55:55.350 --> 00:55:57.170
weiß nicht, andere Ideen dafür noch...

00:55:57.170 --> 00:55:58.630
Großrechnung. Einfach mehr Hardware, ja.

00:55:58.630 --> 00:56:01.090
Genau, mehr Hardware draufschmeißen. Genau, also

00:56:01.090 --> 00:56:03.130
natürlich kann man immer mehr Hardware draufschmeißen,

00:56:03.130 --> 00:56:05.350
aber diese Hardware muss ja dann auch erstmal, also gerade wenn ich einen Cluster

00:56:05.350 --> 00:56:07.270
habe, muss ich mich erstmal damit auseinandersetzen,

00:56:07.270 --> 00:56:08.570
wie ich meine Sachen clusterfähig mache.

00:56:09.430 --> 00:56:11.390
Und in vielen dieser Fälle ist es auch so, ich möchte

00:56:11.390 --> 00:56:13.510
das mal eben schnell laufen lassen, sofort das Ergebnis sehen

00:56:13.510 --> 00:56:15.550
und dann darauf basierend

00:56:15.550 --> 00:56:17.350
weiterdenken. Also ich habe viele

00:56:17.350 --> 00:56:19.510
Fälle, da habe ich eine Simulation, ich möchte

00:56:19.510 --> 00:56:21.270
jetzt verstehen, was passiert da, ich drehe an dem

00:56:21.270 --> 00:56:23.250
Parameter, ich möchte verstehen, was der Parameter macht und dann

00:56:23.250 --> 00:56:24.310
möchte ich sofort das Ergebnis sehen.

00:56:24.310 --> 00:56:27.350
Da hilft mir ein Großrechner nicht

00:56:27.350 --> 00:56:29.270
viel weiter, wenn ich das

00:56:29.270 --> 00:56:31.170
jetzt erstmal auf dem Großrechner lagen muss und so weiter und so fort.

00:56:31.590 --> 00:56:36.430
und dann irgendwann am Wochenende nachts gibt es dann mal Rechenzeit, wo man das dann durchläuft.

00:56:36.430 --> 00:56:42.850
Das zweite Problem ist, ja, auch der Großrechner kann die Sachen nur hintereinander ausführen.

00:56:42.850 --> 00:56:46.910
Viele Sachen, also gerade die Simulationen, sind eben, ich habe ein großes System,

00:56:46.910 --> 00:56:49.230
ich simuliere das über die Zeit, es baut alles aufeinander auf.

00:56:49.230 --> 00:56:53.350
Ich kann einfach nicht diese 500 Zeitschritte parallelisieren,

00:56:53.350 --> 00:56:56.150
denn die brauchen die ersten Ergebnisse vom vorigen Zeitschritt.

00:56:56.150 --> 00:57:01.290
Also das heißt, da kann ich auch mit dem Großrechner unbedingt viel rausholen.

00:57:01.350 --> 00:57:04.170
Was ich natürlich machen kann, ist, ich kann diese ganzen Simulationen, die ich habe,

00:57:04.170 --> 00:57:08.270
sage, okay, ich möchte jetzt 500 Simulationen laufen lassen, die kann ich dann parallelisieren.

00:57:08.270 --> 00:57:10.510
Aber da bin ich natürlich aufgerufen, wenn es schneller geht,

00:57:10.510 --> 00:57:14.230
weil wenn es schneller geht, kann ich eben 500 Simulationen laufen lassen statt nur 5.

00:57:14.230 --> 00:57:19.110
Und ja, das macht halt in vielen Fällen auch schon wieder einen schönen Unterschied.

00:57:19.110 --> 00:57:21.550
Also das klingt tatsächlich so, also wäre das ein großer Vorteil.

00:57:21.550 --> 00:57:24.090
Also ich hätte jetzt nicht gedacht, dass man irgendwie das 100-fache da auch mit rausziehen kann,

00:57:24.090 --> 00:57:28.410
weil ich hätte irgendwie gedacht, dass man die Sachen in Python dann irgendwie mit Python oder was,

00:57:28.410 --> 00:57:31.110
dann irgendwie trotzdem so hinbiegt, dass das...

00:57:31.110 --> 00:57:35.050
Ja, ich weiß nicht, wenn man sich jetzt hinsetzt und das mit Python hinbiegt,

00:57:35.050 --> 00:57:37.270
dann hat man eventuell, keine Ahnung, Faktor 10.

00:57:37.270 --> 00:57:39.550
Das hängt so ein bisschen vom Problem ab.

00:57:39.550 --> 00:57:42.970
Aber ich habe, also ich habe wirklich Probleme, da habe ich, also was ich gemacht habe,

00:57:42.970 --> 00:57:45.850
ist, weil ich bei diesen Sachen mache, ich schreibe immer erst die Sache komplett in Python.

00:57:45.850 --> 00:57:50.930
Wenn ich meine eigenen Sachen baue, mache ich mir einen Kern aus Python,

00:57:50.930 --> 00:57:54.610
von dem ich weiß, was er tut, der lesbar und so weiter ist.

00:57:54.610 --> 00:58:00.950
Und wo ich erstmal lerne, den Algorithmus so ein bisschen zu optimieren und wie speichere ich Dinge

00:58:00.950 --> 00:58:01.710
und so weiter und so fort.

00:58:01.710 --> 00:58:04.790
Und dann gehe ich hin und schreibe das Ganze nochmal neu in C.

00:58:04.790 --> 00:58:08.050
Was auch sehr schön ist, dann habe ich irgendwie eine Testmöglichkeit.

00:58:08.050 --> 00:58:11.030
Ich habe einfach meine zwei Kerne, ich bombardiere die mit zufälligen Eingraben

00:58:11.030 --> 00:58:13.150
und gucke, ob sie das gleiche tun.

00:58:13.150 --> 00:58:17.430
Aber von dem, dafür habe ich halt dann auch einen guten Vergleich,

00:58:17.430 --> 00:58:20.850
weil ich habe das einmal in Python geschrieben, genau dasselbe.

00:58:20.850 --> 00:58:25.550
Vielleicht dann, ehrlicher gesagt, auch nicht optimiert darauf, dass es besonders schnell ist,

00:58:25.550 --> 00:58:28.290
sondern eben auch, dass es lesbar ist und vergleichbar und dass ich verstehe, was es tut

00:58:28.290 --> 00:58:30.590
und dass es gut testbar ist und so weiter und so fort.

00:58:30.790 --> 00:58:33.090
Das muss ich dann schon eingestehen.

00:58:33.090 --> 00:58:36.950
Aber es ist trotzdem, je nach Aufgabenstellung wirklich, sind es solche großen Faktoren.

00:58:36.950 --> 00:58:42.570
Mit Python, ja, wenn ich das jetzt in Python programmieren könnte oder wollte

00:58:42.570 --> 00:58:46.930
oder meinen Nutzer das vermuten würde, dass er das in Python programmiert,

00:58:46.930 --> 00:58:52.750
ja, okay, dann wäre es vielleicht nur noch ein Faktor, keine Ahnung, 10, 5, was auch immer.

00:58:52.750 --> 00:58:55.530
Aber dann geht natürlich auch sehr viel Programmierzeit drauf.

00:58:55.530 --> 00:59:00.630
Wenn du jetzt sagst, so deine Nutzer, das heißt, du stellst tatsächlich so ein Programmierinterface

00:59:00.630 --> 00:59:07.030
bereit und deine Nutzer machen ihre Dateneingabe oder die Schnittstelle dafür noch komplett selber oder also irgendwie...

00:59:07.030 --> 00:59:08.390
Also meine Nutzer sind Programmierer.

00:59:08.390 --> 00:59:08.810
Ja.

00:59:08.810 --> 00:59:10.590
Das muss ich auch immer unterscheiden.

00:59:10.590 --> 00:59:14.750
Das ist immer sehr lustig, wenn man dann auf diesem Python-Treffen sitzt mit allen möglichen Leuten,

00:59:14.750 --> 00:59:19.610
die aus dem Web-Bereich und so weiter kommen und erstmal deren Nutzer natürlich keine Programmierer sind

00:59:19.610 --> 00:59:24.230
und sich dann Gedanken und man ganz andere Vorstellungen darauf hat, wie man eine Fehlermeldung schmeißt.

00:59:24.230 --> 00:59:29.190
Meinen Benutzer schmeiße ich einfach eine Fehlermeldung und die können die dann hoffentlich auch lesen.

00:59:29.190 --> 00:59:29.710
Naja, manchmal.

00:59:30.470 --> 00:59:38.950
Ja, also meine Nutzer sind Programmierer und die brauchen jetzt kein grafisches Interface zum Glück.

00:59:38.950 --> 00:59:44.050
Du visualisierst dann auch gar nichts von den Lösungen irgendwie, sondern das schmeißt du dann irgendwo rein und dann kann man...

00:59:44.050 --> 00:59:49.870
Ja, das kann der Nutzer dann mit einem Plotprogramm machen, das ist der Plotprogramm der Wahl oder was auch immer.

00:59:49.870 --> 00:59:51.570
Gut, meistens ist es ein Matplotlib.

00:59:51.570 --> 00:59:58.990
Aber das ist ja in modularer Denkweise nicht meine Verantwortung, da irgendwas zu visualisieren,

00:59:58.990 --> 01:00:00.450
sondern mir geht es nur darum, die Lösung zu programmieren.

01:00:00.470 --> 01:00:13.310
Also tatsächlich Python und C dann parallel und dann hast du dann eine schnelle und eine hübsche und effektive Lösung, deine Probleme so zu behandeln.

01:00:13.310 --> 01:00:17.110
Und ich würde sagen, das, was du da machst, das hast du jetzt gesagt, das ist irgendwie sehr speziell auf so einer Insel.

01:00:17.110 --> 01:00:23.310
Das kannst du auch übertragen oder könnte man übertragen auf andere Wissenschaften und andere Anwendungsfälle so ohne weiteres oder ist das...

01:00:23.310 --> 01:00:29.690
Also so klein ist die Insel nicht, das Problem gewöhnliche Differenzialgleichung oder retardierte Differenzialgleichung und so weiter und so fort zu lösen.

01:00:29.690 --> 01:00:30.310
Das ist jetzt...

01:00:30.310 --> 01:00:41.750
Betrifft schon eine gewisse Menge, also nicht schon nicht wenig Leute, also ich könnte jetzt, es tut mir schwer eine Zahl abzuschätzen, wie viele Wissenschaftler und andere Leute sich mit so einem Problem beschäftigen.

01:00:41.750 --> 01:00:48.890
Wir stinken halt nicht angegen die Leute, die partielle Differenzialgleichung machen, das sind diese klassischen vektorisierbaren Fälle,

01:00:48.890 --> 01:00:57.690
was man so sagt, wenn Leute Wärmeleitungen simulieren oder irgendwie physikalische Verformung und solche Sachen, die machen alle partielle Differenzialgleichung.

01:01:00.150 --> 01:01:11.350
Ja, also die Insel ist nicht so klein, aber sie ist kleiner als vielleicht andere größere Inseln, was jetzt wahrscheinlich keine sinnvolle Aussage ist.

01:01:11.350 --> 01:01:29.990
Naja, also ich meine gut, ich kenne jetzt vor allen Dingen halt den ganzen Data-Science-Bereich da auch, das wissenschaftliche Umfeld, da gibt es halt, also mit Differenzialgleichung hat man da eigentlich nie so wirklich zu tun, auch nicht mit symbolischen, da wird immer eher so, da nimmt man halt, da packt man die große GPU aus und dann versucht man damit das Problem zu lösen.

01:01:29.990 --> 01:01:44.590
Nee, aber das ist ja auch ein ganz anderer Ansatz, bei der heißt es nicht, ich habe Daten und ich will sie verstehen, bei Simulationen geht es darum, ich habe eine Idee, wie Sachen funktionieren, ich möchte jetzt mal gucken, was eigentlich passiert, wenn ich diese Idee in die Daten umsetze, ganz doof gesagt, weil ja, ich habe mein Modell und jetzt lasse ich es mal laufen.

01:01:44.590 --> 01:01:57.590
Ja, aber da würde mich eigentlich auch mal interessieren, wie ist das denn, wie kann man das denn dann verifizieren, ich meine, woher weißt du, dass deine Simulation tatsächlich irgendwie das liefert, was du jetzt bekommen hättest, wenn du 500...

01:01:59.830 --> 01:02:19.250
Also ich meine, das ist eine große Frage, da gibt es natürlich, also das ist dann wirklich, dass man sagt, okay, wir machen jetzt mal den gleichen Fall und lassen es laufen und vergleichen das wirklich, jetzt mit der Nährflüssigkeit, ich habe jetzt erstmal die Frage auf eine ganz andere Weise verstanden, die vielleicht auch interessant ist, nämlich, wie teste ich eigentlich solche Software?

01:02:29.670 --> 01:02:59.510
Ja, zu bestimmen, was eigentlich rauskommt, das war auch sehr spaßig, insbesondere ein Fall, den ich jetzt noch nicht so angeschaut habe, das sind dann stochastische Differenzialgleichen, das ist so, ja, werden wir jetzt gleich, ich packe noch Zufall drauf und dann muss man, ja, dann gibt es ja noch nicht mal eine richtige Lösung, also jede Lösung, die ich prinzipiell kriegen könnte, könnte, oder die ich sehe, könnte richtig sein, für den richtigen Zufall, ich kann nur sagen, okay, diese Lösung ist jetzt eher unwahrscheinlich oder diese Lösung ist eher wahrscheinlich, aber ich kann ja gar nicht mal sagen, dass es eine

01:02:59.510 --> 01:03:01.370
falsche Lösung anhand einer Lösung, ich kann also

01:03:01.370 --> 01:03:03.510
Du müsstest ja vor allem erstmal die Verteilung kennen, deiner Zielfunktion,

01:03:03.510 --> 01:03:05.590
damit du weißt, ob das wahrscheinlich ist oder nicht.

01:03:05.590 --> 01:03:07.430
Genau, das, ja, genau, das heißt, ich kann

01:03:07.430 --> 01:03:09.410
einfach nur, ich kann nicht mal eine Aussage über eine Lösung meiner

01:03:09.410 --> 01:03:11.750
Software machen, ich kann nur eine Aussage über ein Ensemble

01:03:11.750 --> 01:03:13.450
von Lösungen, also tausend Lösungen machen

01:03:13.450 --> 01:03:15.470
und, ja, das sind dann

01:03:15.470 --> 01:03:17.390
die sehr, sehr langlaufenden Tests, wo ich

01:03:17.390 --> 01:03:19.570
erstmal tausend Lösungen berechne, dann irgendwelche

01:03:19.570 --> 01:03:20.830
statistischen Verfahren darüber.

01:03:20.830 --> 01:03:23.390
Ja, aber ich finde das jetzt das Interessanteste, ne, also jetzt

01:03:23.390 --> 01:03:25.290
von meinem Gusto her, wenn

01:03:25.290 --> 01:03:27.370
du so eine Verteilungswolke irgendwo hast,

01:03:27.370 --> 01:03:29.350
die nähert sich ja dann oder verdichtet sich

01:03:29.350 --> 01:03:31.210
ja dann an den Stellen, wo dann

01:03:31.210 --> 01:03:33.510
doch, ne, die meisten Experimente

01:03:33.510 --> 01:03:35.150
irgendwo in derselben Richtung

01:03:35.150 --> 01:03:37.310
ausgehen und da hättest du, finde ich, so

01:03:37.310 --> 01:03:39.290
die höchste Treffgenauigkeit, als wenn du jetzt einfach so

01:03:39.290 --> 01:03:41.110
dieses Modell hast und sagst, oh, da kommt das

01:03:41.110 --> 01:03:43.070
Also ich verstehe jetzt ohne Statistik,

01:03:43.070 --> 01:03:45.230
ne, bei so Simulationen gar nicht, was dabei

01:03:45.230 --> 01:03:47.490
rauskommt, also wie die Validität einzuschätzen

01:03:47.490 --> 01:03:49.250
wäre. Wenn du jetzt sagst, du machst jetzt der Test

01:03:49.250 --> 01:03:50.310
dazu, dann finde ich das sehr spannend.

01:03:50.310 --> 01:03:52.190
Sorry, ich will jetzt vom Software-Test.

01:03:52.190 --> 01:03:54.470
Ja, klar, aber ich meine, klar, aber

01:03:54.470 --> 01:03:56.650
das hängt ja irgendwie zusammen, ne,

01:03:56.650 --> 01:03:59.190
also der Software-Tester muss ja zwar dann

01:03:59.190 --> 01:04:01.290
klar, dann muss das Programm funktionieren, weil sonst ist der Test ja Quatsch,

01:04:01.290 --> 01:04:03.290
aber der ist ja dann auch irgendwie

01:04:03.290 --> 01:04:05.290
die Basisvoraussetzung dafür, dass

01:04:05.290 --> 01:04:07.210
das Modell, was du dir ausgedacht hast, dann wenigstens

01:04:07.210 --> 01:04:07.850
gerade läuft.

01:04:07.850 --> 01:04:13.070
Ich bin mir nicht sicher, ob ich das richtig verstanden habe, also ja,

01:04:13.070 --> 01:04:14.210
natürlich muss das,

01:04:14.210 --> 01:04:16.970
also einerseits muss das Modell die Realität,

01:04:16.970 --> 01:04:19.210
am Ende wollen wir, dass das Modell die Realität beschreibt, klar,

01:04:19.210 --> 01:04:21.110
aber die erste Schwierigkeit ist erstmal,

01:04:21.110 --> 01:04:22.830
ich habe jetzt irgendwas programmiert, was mir

01:04:22.830 --> 01:04:25.150
mein Modell löst, was es

01:04:25.150 --> 01:04:26.890
behauptet und die Frage ist, macht es

01:04:26.890 --> 01:04:29.030
wirklich die richtige

01:04:29.030 --> 01:04:30.790
Lösung? Ja, ja. Also einfach wirklich nur

01:04:30.790 --> 01:04:32.910
einen Software-Test schreiben, also einfach nur zu gucken, ich stecke

01:04:32.910 --> 01:04:34.230
das rein, kommt das Richtige raus?

01:04:34.230 --> 01:04:36.770
Und das ist halt, wenn es stochastisch ist,

01:04:36.770 --> 01:04:38.990
ein bisschen blöd, weil dann kommt halt jedes Mal

01:04:38.990 --> 01:04:40.950
was anderes raus. Genau, es könnte alles richtig

01:04:40.950 --> 01:04:42.930
sein, also das ist so wie

01:04:42.930 --> 01:04:45.150
Zufallszahlen-Generat-Testen, geht je nachdem

01:04:45.150 --> 01:04:47.030
noch, weil ich einfach ganz

01:04:47.030 --> 01:04:48.930
viel, ganz schnelle Zufallszahlen ziehe und dann weiß

01:04:48.930 --> 01:04:50.810
ich genau, okay, die müssen dann vielleicht gleich verteilt sein

01:04:50.810 --> 01:04:51.550
oder so, aber

01:04:51.550 --> 01:04:54.890
bei, ja, dem Problem ist es dann

01:04:54.890 --> 01:04:57.030
eben nicht so einfach, also letzten Endes sind da ganze

01:04:57.030 --> 01:04:58.990
wissenschaftliche Arbeiten daraus entstanden, nur

01:04:58.990 --> 01:05:00.990
auf die Frage

01:05:00.990 --> 01:05:03.010
wie, also aus der Frage heraus, wie teste

01:05:03.010 --> 01:05:05.070
ich das eigentlich richtig und so eine Differenz,

01:05:05.070 --> 01:05:06.870
wo wir feststellen, okay, das, die

01:05:06.870 --> 01:05:08.890
Theorie, die wir haben, zu dem, was da rauskommen muss, stimmt

01:05:08.890 --> 01:05:10.570
nicht mit dem überein, was da rauskommt

01:05:10.570 --> 01:05:12.810
und können wir das... Entweder stimmt die Theorie nicht oder das

01:05:12.810 --> 01:05:14.870
Modell ist falsch. Ja, oder

01:05:14.870 --> 01:05:16.530
das ist wohl ein Fehler, ne? Ja, genau.

01:05:16.530 --> 01:05:18.470
Also am Ende haben wir festgestellt,

01:05:18.470 --> 01:05:20.870
also erstens, ja, die

01:05:20.870 --> 01:05:22.930
Theorie könnten wir erweitern, das haben wir auch gemacht und

01:05:22.930 --> 01:05:24.710
da sind dann ganze Arbeiten und Paper

01:05:24.710 --> 01:05:26.770
daraus entstanden, das war gut, also

01:05:26.770 --> 01:05:28.950
Software-Testen ist was Gutes, produziert wissenschaftliche

01:05:28.950 --> 01:05:29.190
Paper.

01:05:29.190 --> 01:05:32.910
Die andere Sache ist, wir haben auf die Weise auch tatsächlich

01:05:32.910 --> 01:05:35.150
Fehler im veröffentlichten Algorithmus

01:05:35.150 --> 01:05:36.790
gefunden, wo

01:05:36.790 --> 01:05:38.910
irgendwie in der großen Tabelle, die diesen Algorithmus

01:05:38.910 --> 01:05:40.790
beschreibt, also solche Algorithmen werden mit Tabellen

01:05:40.790 --> 01:05:42.690
beschrieben, ist leider so, dann irgendwo ein

01:05:42.690 --> 01:05:43.510
Vorzeichenfehler war.

01:05:43.510 --> 01:05:46.590
Den

01:05:46.590 --> 01:05:48.850
haben wir damit gefunden und das, also insofern

01:05:48.850 --> 01:05:50.770
ja, und hätten wir wahrscheinlich

01:05:50.770 --> 01:05:52.910
sonst auch nicht gefunden, wenn wir uns diese Mühe nicht gemacht hätten

01:05:52.910 --> 01:05:56.770
und dann hätten wir jetzt wahrscheinlich eine ganze Menge

01:05:56.770 --> 01:05:58.910
fehlerhafter Rechnungen und wüssten es nicht

01:05:58.910 --> 01:05:59.330
was.

01:05:59.330 --> 01:06:02.590
Wir würden alles für bare Münzen verkaufen, wir würden damit

01:06:02.590 --> 01:06:04.390
Geld verdienen und wir würden sich irgendwelchen großen

01:06:04.390 --> 01:06:06.670
Papern veröffentlichen, alle Leute würden nicht zujubeln

01:06:06.670 --> 01:06:07.950
und irgendwann würde einer sagen so, hm.

01:06:07.950 --> 01:06:10.510
Ja, oder halt auch eben nie.

01:06:10.510 --> 01:06:12.590
Und das ist halt, dass man noch viel mehr Sorgen

01:06:12.590 --> 01:06:14.670
machen sollte, dass es eben einfach gar

01:06:14.670 --> 01:06:16.090
nicht schief geht, sondern die Leute einfach...

01:06:16.090 --> 01:06:18.750
Das passiert in der Wissenschaft leider viel zu häufig.

01:06:18.750 --> 01:06:20.990
Ich denke auch, dass das oft passiert, ja.

01:06:20.990 --> 01:06:22.530
Ja, die Erde ist vielleicht doch anscheinend

01:06:22.530 --> 01:06:23.930
bei einem, man weiß es nicht so genau, ja.

01:06:23.930 --> 01:06:26.810
Ja, nee, also ganz so schlimm ist es

01:06:26.810 --> 01:06:28.870
nicht, aber, ja. Naja, also so ein paar

01:06:28.870 --> 01:06:30.250
Paradigmen wechseln, bevor die mal passieren,

01:06:30.250 --> 01:06:32.670
da muss ja so ein bisschen schon Arbeit passieren,

01:06:32.670 --> 01:06:34.470
muss sich irgendjemand aus dem Turm stellen und was runterschmeißen.

01:06:34.470 --> 01:06:36.350
Aber ihr verwendet auch

01:06:36.350 --> 01:06:38.970
ganz normal PyTest oder so zum Testen

01:06:38.970 --> 01:06:40.690
oder habt ihr da noch

01:06:40.690 --> 01:06:42.510
speziellere Kniffe, die man da benutzen muss,

01:06:42.510 --> 01:06:43.630
wenn man das irgendwie in den Griff kriegen will?

01:06:43.630 --> 01:06:46.670
Also nee, als ich angefangen habe, habe ich glaube ich noch mit Unitest

01:06:46.670 --> 01:06:48.650
gearbeitet. Achso, ja. Schande über

01:06:48.650 --> 01:06:49.310
mein Haupt, ich weiß.

01:06:49.310 --> 01:06:52.650
Wenn ihr jetzt gerade irgendwie lustig über

01:06:52.650 --> 01:06:54.670
Tests nochmal einsteigen wollt, dann können wir gleich gerne noch ein bisschen

01:06:54.670 --> 01:06:56.470
länger drüber reden, weil da sind noch einige

01:06:56.470 --> 01:06:57.370
Fragen eingetrudelt.

01:06:58.830 --> 01:07:01.050
Das ist vielleicht auch ein ganz anderes Thema, aber

01:07:01.050 --> 01:07:01.770
nee, also

01:07:01.770 --> 01:07:04.750
ich glaube, die

01:07:04.750 --> 01:07:07.410
klassischen Software-Test-Tools,

01:07:07.410 --> 01:07:09.470
das ist nicht so das Problem, die zu nutzen,

01:07:09.470 --> 01:07:11.570
wenn man sie nutzen kann.

01:07:11.570 --> 01:07:13.410
Das Problem ist eher die Frage, ich habe eben

01:07:13.410 --> 01:07:14.890
so eine, sowas wie

01:07:14.890 --> 01:07:17.410
eine stochastische Sache

01:07:17.410 --> 01:07:19.570
und kann nur eine Aussage über das Ensemble

01:07:19.570 --> 01:07:20.630
machen, wie mache ich das eigentlich?

01:07:20.630 --> 01:07:23.250
Das ist dann eher eine wissenschaftliche Frage, als

01:07:23.250 --> 01:07:25.090
eine Software-Frage oder

01:07:25.090 --> 01:07:27.250
die Frage, eine Software-Lösung zu finden.

01:07:27.250 --> 01:07:28.790
Ja, du musst mal so Stichproben ziehen.

01:07:28.790 --> 01:07:30.390
Du musst ja gucken, ob die Stichproben irgendwie der

01:07:30.390 --> 01:07:31.550
erwarteten Verteilung...

01:07:31.550 --> 01:07:35.470
Ja, genau, aber das ist

01:07:35.470 --> 01:07:37.650
nicht einfach, je nachdem, was man hat.

01:07:37.650 --> 01:07:39.390
Die andere

01:07:39.390 --> 01:07:40.570
Problematik,

01:07:40.570 --> 01:07:43.230
eine andere Beispielproblematik, wenn wir gerade dabei sind,

01:07:43.230 --> 01:07:45.030
ist sowas wie, ich habe ja gesagt,

01:07:45.030 --> 01:07:47.230
ich habe eine symbolische Eingabe, ich übersetze das

01:07:47.230 --> 01:07:49.330
in C-Code. Was ist jetzt

01:07:49.330 --> 01:07:51.330
eigentlich der richtige C-Code? Also ich kann ja nicht

01:07:51.330 --> 01:07:53.230
einfach sagen, okay, ich möchte genau diesen

01:07:53.230 --> 01:07:54.430
C-Code haben, der ist dann richtig,

01:07:54.430 --> 01:07:56.590
sondern ich könnte ja auch einfach mal, weiß ich was,

01:07:56.590 --> 01:07:58.750
A plus B oder B plus A ist in der Stelle

01:07:58.750 --> 01:08:00.910
gleich, in den allermeisten Fällen.

01:08:00.910 --> 01:08:03.190
Wie entscheide ich,

01:08:03.190 --> 01:08:04.750
was da richtig ist? Das kann ich

01:08:04.750 --> 01:08:06.250
eigentlich nur machen, indem ich es ausrechnunglich

01:08:06.250 --> 01:08:07.970
vergleiche.

01:08:07.970 --> 01:08:09.070
Ein solches Späßchen.

01:08:09.070 --> 01:08:12.650
Also das heißt, die Equivalenz von deinen

01:08:12.650 --> 01:08:14.250
Experimenten ist schon fraglich dann.

01:08:14.250 --> 01:08:16.490
Also wenn du die Experimente durchführst,

01:08:16.490 --> 01:08:17.970
dass sie halt gleich durchgeführt worden sind.

01:08:17.970 --> 01:08:20.370
Ich meine nicht bei Experimenten, wir sind jetzt bei Simulation.

01:08:20.370 --> 01:08:23.490
Ist Simulation kein Experiment?

01:08:23.490 --> 01:08:24.070
Also okay, Entschuldigung.

01:08:24.070 --> 01:08:27.610
Ja, ist auch etwas, was ich gerade eben

01:08:27.610 --> 01:08:28.410
Experiment genannt habe.

01:08:28.710 --> 01:08:30.510
Als mathematisches Experiment beschrieben habe.

01:08:30.510 --> 01:08:34.450
Ja, das könnte fraglich sein, aber es geht jetzt erst mal darum,

01:08:34.450 --> 01:08:35.910
macht meine Software das, was sie soll.

01:08:35.910 --> 01:08:38.550
Also ich kann jetzt eben nicht hingehen

01:08:38.550 --> 01:08:40.070
und eine kleine Einheit von einem Code

01:08:40.070 --> 01:08:42.810
Produktion, also Code-Drucker

01:08:42.810 --> 01:08:44.590
oder wie die heißen, also einfach

01:08:44.590 --> 01:08:46.310
eine Übersetzung von Symbolen in Code,

01:08:46.310 --> 01:08:47.450
die ich zum Beispiel nutze, kann ich,

01:08:47.450 --> 01:08:50.690
es ist gar nicht so einfach, die zu testen, da ich eben keine

01:08:50.690 --> 01:08:52.550
ganz klare Aussage habe, was

01:08:52.550 --> 01:08:54.510
da rauskommen muss. Da ich eben nicht

01:08:54.510 --> 01:08:56.710
weiß, in welcher Reihenfolge zum Beispiel

01:08:56.710 --> 01:08:58.570
sind jetzt diese fünf so

01:08:58.570 --> 01:09:00.350
Mandeln in einer Addition.

01:09:00.350 --> 01:09:02.570
Da gibt es keine Vorschrift,

01:09:02.570 --> 01:09:04.350
was da richtig ist. Und wenn ich,

01:09:04.350 --> 01:09:06.430
kann ich natürlich mich drüber hinwegsetzen und

01:09:06.430 --> 01:09:08.490
sagen, ich zerteile das jetzt komplett und

01:09:08.490 --> 01:09:10.370
mache da irgendwie einen Symbolbaum oder was auch immer,

01:09:10.370 --> 01:09:12.490
aber dann muss ich es natürlich wieder zerlegen, ist auch nicht schön.

01:09:12.490 --> 01:09:16.410
Also ein Problem mit der ganzen Software war, dass

01:09:16.410 --> 01:09:17.910
es eigentlich nicht sehr einfach zu testen war.

01:09:17.910 --> 01:09:19.370
Okay.

01:09:19.370 --> 01:09:22.150
Und aber dafür habt ihr was veröffentlicht, wo sagt ihr, hey,

01:09:22.150 --> 01:09:24.290
das ist so ein voller Fortschritt, das sollte man so tun.

01:09:24.290 --> 01:09:26.330
Also nicht zum Testen,

01:09:26.330 --> 01:09:28.450
also ja doch, nee, also das habe gar nicht ich gemacht, das haben

01:09:28.450 --> 01:09:29.970
nur andere Leute, haben darauf aufgebaut und haben

01:09:29.970 --> 01:09:31.690
wir haben, also

01:09:31.690 --> 01:09:33.830
die Geschichte ist eigentlich, wir haben

01:09:33.830 --> 01:09:36.230
ich habe dieses Problem entdeckt und dann haben wir

01:09:36.230 --> 01:09:37.870
irgendwann uns hingesetzt und

01:09:37.870 --> 01:09:40.510
eine Bachelorarbeit aufgesetzt

01:09:40.510 --> 01:09:42.210
und machen lassen zu dem Thema,

01:09:42.210 --> 01:09:44.090
okay, vermessen wir das doch mal bitte,

01:09:44.090 --> 01:09:45.710
verstehen wir das ein bisschen besser und

01:09:45.710 --> 01:09:48.350
hatte dann auch noch andere Anwendungen, nicht nur den Test,

01:09:48.350 --> 01:09:50.370
muss man dazu gestehen. Und ja,

01:09:50.370 --> 01:09:52.330
das war, wir haben, da wurden

01:09:52.330 --> 01:09:53.570
neue Erkenntnisse gewonnen und

01:09:53.570 --> 01:09:56.290
veröffentlicht. Aber das war

01:09:56.290 --> 01:09:58.310
gar nicht so, also das war nur etwas, was ich, das ich

01:09:58.310 --> 01:10:00.090
angestoßen habe, insofern kann ich dir jetzt auch recht

01:10:00.090 --> 01:10:02.410
so viel zu erzählen.

01:10:02.410 --> 01:10:06.290
Ja, klingt sehr spannend, also dass man

01:10:06.290 --> 01:10:08.390
tatsächlich so echte Experimente

01:10:08.390 --> 01:10:10.170
irgendwie begleitet und simuliert

01:10:10.170 --> 01:10:12.250
mit Python oder

01:10:12.250 --> 01:10:14.370
halt ein bisschen C, aber halt dann so in die Zukunft

01:10:14.370 --> 01:10:16.250
damit ein bisschen gucken kann, was könnte denn dabei rauskommen

01:10:16.250 --> 01:10:18.130
oder welche Lösung für

01:10:18.130 --> 01:10:20.470
wirklich Probleme, also weiß nicht, ob das nur Medikamente

01:10:20.470 --> 01:10:21.670
angeht oder kann man

01:10:21.670 --> 01:10:24.030
andere denken, genau, damit

01:10:24.030 --> 01:10:25.610
bauen kann, das ist natürlich schon spannend.

01:10:25.610 --> 01:10:28.290
Also das ist das ganze Feld, so dynamisches System,

01:10:28.310 --> 01:10:29.410
wie wir vorher sagen, ist

01:10:29.410 --> 01:10:32.070
sehr vielfältig in Anwendung.

01:10:32.070 --> 01:10:34.390
Was ich vorher gemacht habe, waren

01:10:34.390 --> 01:10:35.590
Probleme mit,

01:10:35.590 --> 01:10:38.390
oder eine Frage, mit der sich meine frühe Arbeitsgruppe

01:10:38.390 --> 01:10:40.070
beschäftigt hat, war, wie sagen wir,

01:10:40.070 --> 01:10:42.250
epileptische Anfälle voraus, können wir das

01:10:42.250 --> 01:10:42.870
eventuell machen?

01:10:42.870 --> 01:10:46.190
Oder wie sagen

01:10:46.190 --> 01:10:48.190
wir Bevölkerung, plötzlich

01:10:48.190 --> 01:10:49.450
Bevölkerungswachstumsheraus,

01:10:49.450 --> 01:10:52.030
das Thema meiner, also meine

01:10:52.030 --> 01:10:53.890
vorigen Forschungen war, wie sagen wir, extreme Ereignisse

01:10:53.890 --> 01:10:56.150
heraus, oder verstehen, wie passieren extreme

01:10:56.150 --> 01:10:57.930
Ereignisse, und extreme Ereignisse kann dann so sein, wie

01:10:58.310 --> 01:11:00.010
epileptische Anfälle, kann dann auch so was sein, wie

01:11:00.010 --> 01:11:02.010
Überpopulation, Artensterben, Erdbeben,

01:11:02.010 --> 01:11:03.190
ähm,

01:11:03.190 --> 01:11:06.010
all solche verschiedenen Dinge, und

01:11:06.010 --> 01:11:08.410
Was war das Ergebnis? Gibt es so

01:11:08.410 --> 01:11:09.770
einen entscheidenden Punkt,

01:11:09.770 --> 01:11:12.610
den man irgendwie erreichen kann, die dann bestimmte Faktoren

01:11:12.610 --> 01:11:14.330
identifizierbar sind, die sagen so,

01:11:14.330 --> 01:11:16.310
hey, jetzt macht's gleich peng?

01:11:16.310 --> 01:11:18.390
Äh, nee, so weit

01:11:18.390 --> 01:11:19.410
sind wir leider nicht gekommen.

01:11:19.410 --> 01:11:22.330
Also das Ergebnis war dann so was,

01:11:22.330 --> 01:11:24.390
wie wir können, wir haben einen neuen Mechanismus

01:11:24.390 --> 01:11:26.310
gefunden, wie solche Sachen entstehen können

01:11:26.310 --> 01:11:27.770
in der Dynamik eines Systems.

01:11:28.310 --> 01:11:30.350
Den können wir in einigen Fällen, hilft uns das ein bisschen

01:11:30.350 --> 01:11:32.330
was vorherzusagen, aber insbesondere können

01:11:32.330 --> 01:11:34.070
dann die Leute, die ein konkretes System haben,

01:11:34.070 --> 01:11:36.270
mit einem konkreten System was vorhersagen, eventuell

01:11:36.270 --> 01:11:37.810
besser verstehen, wie sie das machen.

01:11:37.810 --> 01:11:40.270
Okay. Das ist leider nicht sehr

01:11:40.270 --> 01:11:42.310
befriedigend für, aber

01:11:42.310 --> 01:11:43.570
das ist eben Grundlagenforschung.

01:11:43.570 --> 01:11:44.570
Das ist Wissenschaft.

01:11:44.570 --> 01:11:47.550
Ich fürchte, das ist halt irgendwie so eine der

01:11:47.550 --> 01:11:50.230
der blöden Eigenschaften, die da halt

01:11:50.230 --> 01:11:52.010
so dabei sind, dass das extrem

01:11:52.010 --> 01:11:54.030
seltene Geschichten halt, sondern

01:11:54.030 --> 01:11:56.210
schlecht Statistik zu machen kann, weil es einfach nicht

01:11:56.210 --> 01:11:58.270
so häufig auftritt, aber wenn die halt,

01:11:58.310 --> 01:12:00.110
äh, stark genug sind, dann haben sie halt einen großen

01:12:00.110 --> 01:12:02.270
Einfluss auf das, was passiert und dann ist es halt blöd.

01:12:02.270 --> 01:12:04.010
Also Statistik ist die eine Sache und

01:12:04.010 --> 01:12:06.150
die Faser können wir jetzt allein mit Statistik

01:12:06.150 --> 01:12:08.150
vorhersagen. Wahrscheinlich nicht. Wir müssen verstehen, was

01:12:08.150 --> 01:12:09.670
passiert da eigentlich. Ja.

01:12:09.670 --> 01:12:11.610
Und wie kommt es eigentlich dazu?

01:12:11.610 --> 01:12:14.010
Und dann geht das überhaupt. Das kann ja auch sein,

01:12:14.010 --> 01:12:15.970
dass man das einfach gar nicht... Und was ist wichtig?

01:12:15.970 --> 01:12:18.030
Also, und jetzt mal vielleicht auch nochmal

01:12:18.030 --> 01:12:19.490
ein Beispiel, wozu Simulationen gut sind.

01:12:19.490 --> 01:12:21.890
Was jetzt immer wieder die Frage war, ein

01:12:21.890 --> 01:12:23.690
früher Kollege von mir, der hat

01:12:23.690 --> 01:12:25.870
bei der ersten, hat wahrscheinlich die erste

01:12:25.870 --> 01:12:27.430
Simulation geschrieben, die macht,

01:12:27.430 --> 01:12:29.370
was aussieht wie ein epileptischer

01:12:29.370 --> 01:12:31.390
Anfall. Ob es jetzt irgendwie

01:12:31.390 --> 01:12:33.290
wirklich das damit zu tun hat, müssen wir dann nochmal

01:12:33.290 --> 01:12:35.390
untersuchen. Aber was nicht

01:12:35.390 --> 01:12:37.270
darauf basiert, dass wir an irgendeinem Kopf drehen und

01:12:37.270 --> 01:12:38.970
irgendeinen Parameter ändern, also irgendwas,

01:12:38.970 --> 01:12:41.290
irgendwelche Neurochemikalien oder so

01:12:41.290 --> 01:12:43.210
im Gehirn ändern, sondern wir können

01:12:43.210 --> 01:12:45.310
eine einfache Simulation machen, die macht einen epileptischen Anfall,

01:12:45.310 --> 01:12:46.710
ohne dass wir was ändern müssen.

01:12:46.710 --> 01:12:49.370
Was dann einfach, okay, was bringt

01:12:49.370 --> 01:12:51.330
das Ganze jetzt? Naja, die

01:12:51.330 --> 01:12:53.250
Leute, die ein paar Ebenen

01:12:53.250 --> 01:12:54.830
in der Anwendung höher sind,

01:12:54.830 --> 01:12:56.670
können jetzt hingehen und sagen, okay,

01:12:57.390 --> 01:12:59.290
wir haben uns bisher immer darauf gestürzt, was ändert sich

01:12:59.290 --> 01:13:01.410
da chemikalisch und so weiter, könnte

01:13:01.410 --> 01:13:03.170
es vielleicht was anderes sein? Könnte es vielleicht

01:13:03.170 --> 01:13:05.450
einfach sein, dass das Gehirn anders

01:13:05.450 --> 01:13:07.350
verknotet ist, weil die Neuronen anders

01:13:07.350 --> 01:13:09.410
verbunden sind in Gehirn, die epileptische

01:13:09.410 --> 01:13:10.990
Anfälle produzieren und das ist das Problem.

01:13:10.990 --> 01:13:13.430
Und die Frage ist

01:13:13.430 --> 01:13:15.470
noch offen, aber solche Ansätze

01:13:15.470 --> 01:13:17.490
stößt man dann eventuell mit Simulationen hervor.

01:13:17.490 --> 01:13:19.170
Ja, fühlt man, dass man heilen kann,

01:13:19.170 --> 01:13:21.070
dass man dafür sorgt, dass man irgendwie den Menschen besser geht.

01:13:21.070 --> 01:13:23.470
Genau, das ist natürlich das fairen Ziel,

01:13:23.470 --> 01:13:24.690
aber ja, leider ist es

01:13:24.690 --> 01:13:27.350
ja, ich suche

01:13:27.350 --> 01:13:29.350
es einfach, ja. Ja, ich weiß

01:13:29.350 --> 01:13:31.190
halt, kann man aus diesem Elfenbeinturm, wenn ich das

01:13:31.190 --> 01:13:33.170
mal so nennen darf, irgendwie so runtersteigen, wieder auf die

01:13:33.170 --> 01:13:35.270
Straße und mit beiden

01:13:35.270 --> 01:13:37.090
Händen wieder so das ausschütten, was man da so

01:13:37.090 --> 01:13:39.250
fabriziert. Ja, ich meine,

01:13:39.250 --> 01:13:41.230
manchmal passiert das ja einmal, sonst hätten wir ja keine Computer

01:13:41.230 --> 01:13:43.490
und... Ja, genau, also manchmal ist da

01:13:43.490 --> 01:13:44.970
jemand, so ein Magier irgendwo so in den Turm

01:13:44.970 --> 01:13:47.210
und macht dann da bumm oder diese Kugel

01:13:47.210 --> 01:13:49.350
leuchtet und auf einmal der Turm fängt an zu leuchten und dann

01:13:49.350 --> 01:13:51.270
gucken alle, oh, was ist das denn? Und dann, ah,

01:13:51.270 --> 01:13:52.690
guck mal hier, ich habe was Schönes gefunden.

01:13:52.690 --> 01:13:55.270
Ich glaube, ja, aber ich fürchte, das kann man nicht wirklich

01:13:55.270 --> 01:13:57.190
weil, ich würde nicht fürchten, dass es bei Wissenschaft noch

01:13:57.310 --> 01:13:59.510
schlimmer als bei Firmen oder Startups

01:13:59.510 --> 01:14:01.430
ist. Es ist ja auch schon irgendwie so, dass man das eigentlich

01:14:01.430 --> 01:14:03.230
nicht wirklich voraussagen kann,

01:14:03.230 --> 01:14:05.270
weil, naja, es hängt halt davon ab, wie sich

01:14:05.270 --> 01:14:07.270
die Zukunft entwickelt, die lässt sich schon mal nicht so gut voraussagen

01:14:07.270 --> 01:14:09.230
und dann sind so viele Faktoren dabei,

01:14:09.230 --> 01:14:10.410
die man nicht unter Kontrolle hat, dass

01:14:10.410 --> 01:14:13.170
und bei Wissenschaft

01:14:13.170 --> 01:14:15.210
hast du jetzt, das ist ja noch übler, du weißt ja,

01:14:15.210 --> 01:14:17.430
also... Das ist alles Alchemie.

01:14:17.430 --> 01:14:19.230
Naja, oder so ein bisschen Glück

01:14:19.230 --> 01:14:21.350
auch. Also ich meine, natürlich ist es so, du kannst kein Glück

01:14:21.350 --> 01:14:23.170
haben, wenn das nicht auch irgendwie funktioniert oder wenn du nicht

01:14:23.170 --> 01:14:25.090
das Richtige tust, aber ob das, was du da tust,

01:14:25.090 --> 01:14:27.270
jetzt irgendwie eine sinnvoll

01:14:27.270 --> 01:14:28.930
erfolgsversprechende Geschichte ist oder nicht,

01:14:28.930 --> 01:14:31.010
das hast du halt, würde ich sagen, zum großen Teil

01:14:31.010 --> 01:14:32.050
gar nicht unbedingt unter Kontrolle.

01:14:32.050 --> 01:14:35.350
Also andersrum, wenn wir es unter Kontrolle hätten,

01:14:35.350 --> 01:14:37.190
müssten wir es nicht machen. Wissenschaft geht ja darum,

01:14:37.190 --> 01:14:39.250
irgendwie, dass wir neue Sachen herausfinden

01:14:39.250 --> 01:14:40.930
und dass wir die Frage beantworten,

01:14:40.930 --> 01:14:42.990
funktioniert diese Methode oder so und wenn wir wissen,

01:14:42.990 --> 01:14:44.490
ob diese Methode funktioniert, müssen wir es nicht machen.

01:14:44.490 --> 01:14:46.970
Jaja, ich finde das immer wieder beeindruckend, wie man dann,

01:14:46.970 --> 01:14:49.110
also es ist ja schon, das hat ja so ein leicht,

01:14:49.110 --> 01:14:51.010
also ich würde

01:14:51.010 --> 01:14:53.190
da leicht in Defizitismus verfallen, glaube ich.

01:14:53.190 --> 01:14:55.470
Man muss ja da sehr motiviert sein, das dann zu tun,

01:14:55.470 --> 01:14:57.230
wenn man sich im Grunde

01:14:57.230 --> 01:14:59.050
ausrechnen kann, dass man

01:14:59.050 --> 01:15:01.090
wahrscheinlich Pech haben wird und das heißt,

01:15:01.090 --> 01:15:02.790
man gibt sich viel Mühe, aber es kommt nichts mehr raus.

01:15:02.790 --> 01:15:05.050
Obwohl, auf der anderen Seite, das, was man tut, macht natürlich auch

01:15:05.050 --> 01:15:05.270
Spaß.

01:15:05.270 --> 01:15:09.110
Ja, aber gut, es ist schon dieses klassische

01:15:09.110 --> 01:15:11.030
Klischee, dass die Hauptsache, die man

01:15:11.030 --> 01:15:12.770
mit einer Promotion kriegt,

01:15:12.770 --> 01:15:15.050
ist eine riesengroße

01:15:15.050 --> 01:15:17.050
Enttäuschungsresistenz

01:15:17.050 --> 01:15:18.910
und

01:15:18.910 --> 01:15:20.570
das ist so.

01:15:20.570 --> 01:15:23.870
Was war das?

01:15:23.870 --> 01:15:26.630
Das ist, ich verwende Apple

01:15:27.190 --> 01:15:27.850
und

01:15:27.850 --> 01:15:31.530
es kommuniziert untereinander

01:15:31.530 --> 01:15:33.450
und mein Telefon hat gerade meinem Kugel gesagt,

01:15:33.450 --> 01:15:35.610
das war Klingeln, was manchmal gut ist,

01:15:35.610 --> 01:15:36.910
in diesem Fall war es nicht so toll.

01:15:36.910 --> 01:15:39.610
Manchmal kümmert sich Jochen auch

01:15:39.610 --> 01:15:40.910
vorher darum, dass er das alles abstellt.

01:15:40.910 --> 01:15:43.110
Ja, diesmal habe ich es irgendwie verpennt.

01:15:43.110 --> 01:15:44.210
Ich glaube, ich mache das gerade mal.

01:15:44.210 --> 01:15:47.650
Die ganzen wissenschaftlichen Probleme, wir kennen die Antwort

01:15:47.650 --> 01:15:48.470
doch eigentlich schon alle, oder?

01:15:48.470 --> 01:15:49.830
Ja, kennen wir die?

01:15:49.830 --> 01:15:51.290
42.

01:15:51.290 --> 01:15:54.750
Ach so, stimmt natürlich.

01:15:57.150 --> 01:15:58.110
Ja, aber das ist halt,

01:15:58.110 --> 01:16:00.790
es ist da so ein

01:16:00.790 --> 01:16:03.110
frustrierendes Potenzial dabei, das glaube ich

01:16:03.110 --> 01:16:04.430
auch immer, wenn man

01:16:04.430 --> 01:16:07.210
guckt, was die Politik da auch mal machen möchte,

01:16:07.210 --> 01:16:08.830
die versucht das dann zu ignorieren, da macht man so

01:16:08.830 --> 01:16:10.810
Forschungsprogramme. Ich habe da von einem gehört,

01:16:10.810 --> 01:16:12.670
es gibt ein großes Forschungsprogramm,

01:16:12.670 --> 01:16:14.630
man macht das dann so, man glaubt,

01:16:14.630 --> 01:16:16.870
was war das irgendwie, man kann

01:16:16.870 --> 01:16:18.850
irgendwie Chips bauen, also normalerweise

01:16:18.850 --> 01:16:20.010
belichtet man irgendwie Chips

01:16:20.010 --> 01:16:22.950
sozusagen top-down irgendwie, man überlegt

01:16:22.950 --> 01:16:25.250
sich eine Architektur, könnte man das nicht auch umgekehrt

01:16:25.250 --> 01:16:27.110
machen, also man hat irgendwie so eine Lösung,

01:16:27.110 --> 01:16:29.070
irgendwie auch für, keine Ahnung, irgendeine

01:16:29.070 --> 01:16:30.750
Art Nährflüssigkeit, ja, und dann

01:16:30.750 --> 01:16:33.010
sorgt man dafür, dass die richtigen Bedingungen

01:16:33.010 --> 01:16:33.910
existieren und dann

01:16:33.910 --> 01:16:36.390
entstehen da Transistoren oder was auch immer,

01:16:36.390 --> 01:16:38.790
Schalter, man braucht gerade quasi dann so bottom-up

01:16:38.790 --> 01:16:40.850
automatisch, das wäre ja voll gut, wäre viel billiger.

01:16:40.850 --> 01:16:43.110
Bräuchte man da

01:16:43.110 --> 01:16:45.150
nicht so super ultra-Reihenräume

01:16:45.150 --> 01:16:46.530
und diese ganzen teuren

01:16:46.530 --> 01:16:48.950
Gerätschaften und da hat man irgendwie,

01:16:48.950 --> 01:16:50.810
die Idee hört sich

01:16:50.810 --> 01:16:52.670
wirklich total super an und dann gab es

01:16:52.670 --> 01:16:55.430
irgendein großes Forschungsprojekt,

01:16:55.430 --> 01:16:56.990
das da, wo da auch

01:16:57.070 --> 01:16:58.750
hundert, das sind, glaube ich, hunderte

01:16:58.750 --> 01:17:00.530
Millionen irgendwie Euro reingegangen

01:17:00.530 --> 01:17:02.830
und das Problem ist natürlich, wenn jetzt so viele

01:17:02.830 --> 01:17:04.890
Leute daran arbeiten, also das lief

01:17:04.890 --> 01:17:06.870
dann ganz lange und irgendwie musste immer

01:17:06.870 --> 01:17:08.330
noch ein Doktorand, ein Armer,

01:17:08.330 --> 01:17:10.710
der musste dann geopfert werden, diesem Drachen,

01:17:10.710 --> 01:17:13.070
der sagte, der muss tatsächlich

01:17:13.070 --> 01:17:14.790
an diesem Problem noch arbeiten, damit man sagen kann,

01:17:14.790 --> 01:17:16.750
dass man an diesem Problem arbeitet, aber in Wirklichkeit

01:17:16.750 --> 01:17:18.330
wussten alle schon seit einigen Jahren,

01:17:18.330 --> 01:17:20.830
naja, das funktioniert aus prinzipiellen Gründen

01:17:20.830 --> 01:17:22.690
grundsätzlich nicht, aber man kann ja auch nicht sagen,

01:17:22.690 --> 01:17:24.350
es funktioniert nicht, dann kriegt man kein Geld mehr, ist auch schlecht.

01:17:24.350 --> 01:17:26.910
Also haben halt die anderen inzwischen,

01:17:27.030 --> 01:17:27.770
also was anderes gemacht.

01:17:27.770 --> 01:17:28.370
Heimlich.

01:17:28.370 --> 01:17:30.410
Ja, okay.

01:17:30.410 --> 01:17:35.110
Das große Problem ist, dass man einfach

01:17:35.110 --> 01:17:36.690
nicht mal sagen kann, okay, wir haben

01:17:36.690 --> 01:17:39.050
herausgefunden, es funktioniert nicht und hier

01:17:39.050 --> 01:17:41.130
ist der Grund. Das ist manchmal ganz schön

01:17:41.130 --> 01:17:43.110
haarig, also ich komme ja aus der VWL

01:17:43.110 --> 01:17:45.150
eigentlich und da waren dann so Experimente schon

01:17:45.150 --> 01:17:47.030
problematisch, weil

01:17:47.030 --> 01:17:48.890
da hat man irgendwelche Modelle gebaut, die dann irgendwelche

01:17:48.890 --> 01:17:50.770
Prognosen gemacht haben und dann ging

01:17:50.770 --> 01:17:52.890
dann vor allen Dingen sowas wie der internationale

01:17:52.890 --> 01:17:54.950
Währungsfonds dann hin und hat dann diese

01:17:54.950 --> 01:17:56.990
Modelle ausprobiert,

01:17:56.990 --> 01:17:58.650
mit irgendwelchen Entwicklungsländern

01:17:58.650 --> 01:18:00.750
und so, guck, klappt das mal? Und das hat dann ab und zu mal

01:18:00.750 --> 01:18:02.890
dazu geführt, dass dann irgendwie so in so einem Land das Gesundheitssystem

01:18:02.890 --> 01:18:03.910
dann zusammenbrach oder sowas.

01:18:03.910 --> 01:18:06.970
Ist das vielleicht so ein Mittelgut? Und das war aber eigentlich

01:18:06.970 --> 01:18:08.890
das Modell hat dann eigentlich

01:18:08.890 --> 01:18:10.830
vorhergesagt, das hätte gut funktionieren sollen. Die haben sich dann alle

01:18:10.830 --> 01:18:12.690
so ein bisschen die Haare gerauft, die wollten eigentlich auch, dass

01:18:12.690 --> 01:18:14.970
dem Land eher gut geht, also es war jetzt nicht nur irgendwie so Weltbankdruck

01:18:14.970 --> 01:18:16.870
oder so. Und dann haben die gesagt, Mist, das haben die jetzt

01:18:16.870 --> 01:18:18.550
ja falsch gemacht, haben es beim nächsten Mal

01:18:18.550 --> 01:18:20.370
anders ausprobiert. Und dann, ja,

01:18:20.370 --> 01:18:22.650
das ist halt das Problem, wenn du halt das so was

01:18:22.650 --> 01:18:24.810
ausprobierst auf Systemen, die auch heterogen sind

01:18:24.810 --> 01:18:26.890
und ein bisschen chaotisch reagieren und

01:18:26.890 --> 01:18:28.710
du weißt nicht genau, was muss denn da jetzt eigentlich genau tun?

01:18:28.710 --> 01:18:30.790
Und das ist schon, glaube ich, nicht so einfach.

01:18:30.790 --> 01:18:32.970
Ja, und noch schon was ist, wenn man das System

01:18:32.970 --> 01:18:34.690
selbst beeinflusst durch die Vorhersage.

01:18:34.690 --> 01:18:37.050
Also das klassische Beispiel ist, ich kann Aktienkurse vorhersagen

01:18:37.050 --> 01:18:38.890
und es gibt immer irgendwelche Leute, die

01:18:38.890 --> 01:18:40.750
irgendeine neue Methode entwickeln, um

01:18:40.750 --> 01:18:42.790
Aktienkurse vorherzusagen.

01:18:42.790 --> 01:18:44.850
Du musst das nur gut verkaufen und die antitypische Strategie

01:18:44.850 --> 01:18:45.070
fahren.

01:18:45.070 --> 01:18:48.070
Ja, oder beziehungsweise,

01:18:48.070 --> 01:18:50.590
wenn sie die dann veröffentlichen,

01:18:50.590 --> 01:18:52.610
dann funktioniert es plötzlich nicht mehr.

01:18:52.610 --> 01:18:54.450
Ja, genau, aber alle, die vorher sagen,

01:18:54.450 --> 01:18:56.270
das ist doch super, dann kannst du antitypisch fahren.

01:18:56.790 --> 01:18:57.450
So was raus, raus.

01:18:57.450 --> 01:19:05.090
Ja, das ist, ja.

01:19:05.090 --> 01:19:10.030
Schon interessant.

01:19:10.030 --> 01:19:12.170
Ja, ja.

01:19:12.170 --> 01:19:14.570
Ich finde das halt sehr, sehr spannend, wenn man

01:19:14.570 --> 01:19:16.710
so Sachen digitalisiert, welche Parameter man überhaupt

01:19:16.710 --> 01:19:18.790
in diese Modelle einbauen müsste und wie man

01:19:18.790 --> 01:19:19.570
es schafft, so

01:19:19.570 --> 01:19:22.970
Reagenzglasbedingungen, selbst wenn es jetzt nur

01:19:22.970 --> 01:19:24.870
in Anführungszeichen so ein Glas mit einer

01:19:24.870 --> 01:19:26.690
Kultur auf einem Fensterbrett in der Sonne

01:19:26.690 --> 01:19:27.050
ist.

01:19:27.050 --> 01:19:28.670
Hui.

01:19:28.670 --> 01:19:32.330
Wobei, da musst du sagen, also

01:19:32.330 --> 01:19:34.830
ich bin auch eher die, es gibt ja, also

01:19:34.830 --> 01:19:36.170
es gibt zwei Spezies der Modellierung,

01:19:36.170 --> 01:19:38.870
Arten der Modellierung. Der erste ist

01:19:38.870 --> 01:19:40.850
der Ansatz, wir wollen es wirklich möglichst exakt

01:19:40.850 --> 01:19:42.770
und so weiter hinbiegen, um wirklich

01:19:42.770 --> 01:19:44.950
die genaue, perfekte Vorhersage für dieses Glas

01:19:44.950 --> 01:19:45.930
auf der Fensterbank zu treffen.

01:19:45.930 --> 01:19:48.210
Der andere Ansatz ist, okay,

01:19:48.210 --> 01:19:50.830
wir können das eh nicht,

01:19:50.830 --> 01:19:52.890
sondern die Frage ist,

01:19:52.890 --> 01:19:55.090
okay, wir sehen dieses Phänomen oder so was

01:19:55.090 --> 01:19:56.390
oder was sind die minimalen Sachen,

01:19:56.590 --> 01:19:58.510
die wir brauchen, um dieses Phänomen zu kriegen. Also das, was ich eben

01:19:58.510 --> 01:20:00.770
beschrieben habe, was ist das minimale System,

01:20:00.770 --> 01:20:02.750
was uns sowas produziert, wie in einem epileptischen

01:20:02.750 --> 01:20:04.890
Anfall oder irgendwas, um daraus

01:20:04.890 --> 01:20:06.890
irgendwie zu verstehen, was sind eigentlich die Zutaten,

01:20:06.890 --> 01:20:08.050
die ich brauche. Und

01:20:08.050 --> 01:20:10.750
ich gehöre eher zu der letzten Spezies,

01:20:10.750 --> 01:20:11.890
weil es,

01:20:11.890 --> 01:20:14.390
ich denke, ja, man kriegt eher

01:20:14.390 --> 01:20:16.670
interessantere Erkenntnisse und es ist

01:20:16.670 --> 01:20:18.270
in vielen Fällen auch wahrscheinlich der

01:20:18.270 --> 01:20:20.970
gesündere Ansatz.

01:20:20.970 --> 01:20:22.810
Sozusagen, weil man

01:20:22.810 --> 01:20:24.890
da dann immer weiß, was man eigentlich getan hat

01:20:24.890 --> 01:20:26.250
sozusagen und das bei,

01:20:26.490 --> 01:20:28.590
Phänomenen, die man beobachtet, da

01:20:28.590 --> 01:20:29.930
sieht man halt nur, was man halt sieht.

01:20:29.930 --> 01:20:32.470
Ja, man kann es auch im Zweifelsfall einfach mal machen.

01:20:32.470 --> 01:20:34.650
Also ich mache mir gar nicht

01:20:34.650 --> 01:20:36.290
die Illusion, das Gehirn komplett

01:20:36.290 --> 01:20:38.350
zu demolieren zu können. Das kann ich nicht, das kann niemand.

01:20:38.350 --> 01:20:40.470
Und, na gut, es gibt ja jetzt gewisse

01:20:40.470 --> 01:20:41.230
Projekte, aber

01:20:41.230 --> 01:20:46.490
ja, ich mache mir diese Illusionen

01:20:46.490 --> 01:20:48.490
gar nicht, aber ich mache mir, eventuell kriege ich

01:20:48.490 --> 01:20:49.710
es hin, einen Teil davon,

01:20:49.710 --> 01:20:51.550
mal ein Konzept zu verstehen,

01:20:51.550 --> 01:20:54.390
welche Auswirkungen gewisse Strukturen haben

01:20:54.390 --> 01:20:55.150
oder, ja.

01:20:56.390 --> 01:20:58.230
Das ist so die

01:20:58.230 --> 01:20:59.530
größte Hoffnung da.

01:20:59.530 --> 01:21:02.490
Ja, aber wie ist

01:21:02.490 --> 01:21:03.330
das eigentlich mit dem

01:21:03.330 --> 01:21:05.670
Wissenschaftsbetrieb und der

01:21:05.670 --> 01:21:07.930
Digitalisierung? Das ist jetzt alles

01:21:07.930 --> 01:21:09.750
inzwischen, ich meine,

01:21:09.750 --> 01:21:11.130
im Grunde sollte man ja annehmen,

01:21:11.130 --> 01:21:14.170
wenn das Steuergelder sind und

01:21:14.170 --> 01:21:15.630
eigentlich ja schon auch irgendwie so

01:21:15.630 --> 01:21:17.450
gemeinwohlmäßig

01:21:17.450 --> 01:21:20.150
ausgerichtet sein sollte

01:21:20.150 --> 01:21:22.010
oder allen zugänglich sein sollte, vielleicht zumindest,

01:21:22.010 --> 01:21:24.110
die das bezahlt haben, dass dann halt

01:21:24.110 --> 01:21:26.290
irgendwie alle Forschungsergebnisse digital veröffentlicht

01:21:26.290 --> 01:21:27.990
werden und dass das halt irgendwie

01:21:27.990 --> 01:21:30.030
ja,

01:21:30.030 --> 01:21:31.730
keine Ahnung,

01:21:31.730 --> 01:21:34.150
ich könnte mir das so vorstellen, dass halt

01:21:34.150 --> 01:21:35.930
die Wissenschaft so ein bisschen funktioniert, wie so

01:21:35.930 --> 01:21:37.810
eine große freie Software-Community

01:21:37.810 --> 01:21:38.690
oder so, aber

01:21:38.690 --> 01:21:44.730
real existieren

01:21:44.730 --> 01:21:45.410
das so ein bisschen anders.

01:21:45.410 --> 01:21:48.030
Also man kann mittlerweile sagen, dass

01:21:48.030 --> 01:21:49.950
ein Großteil der wissenschaftlichen Software, zumindest

01:21:49.950 --> 01:21:51.650
in den Bereichen, in denen ich unterwegs bin, zum Glück

01:21:51.650 --> 01:21:52.610
frei ist,

01:21:52.610 --> 01:21:55.530
also auch frei verfügbar und die Leute,

01:21:56.190 --> 01:21:57.570
die sich das zu Nutzen gemacht haben,

01:21:57.570 --> 01:21:59.690
der große Vorteil ist, kein Mensch hat irgendwas,

01:21:59.690 --> 01:22:01.690
ich habe nichts davon gehabt, ich würde nichts davon haben,

01:22:01.690 --> 01:22:03.830
meine Software zu verkaufen, ich habe

01:22:03.830 --> 01:22:05.730
was davon, dass ich ein Paper über meine Software

01:22:05.730 --> 01:22:07.850
schreibe,

01:22:07.850 --> 01:22:09.190
Leute das zitieren und

01:22:09.190 --> 01:22:11.990
falls ihr schon mal gehört habt, Zitate sind die wissenschaftliche

01:22:11.990 --> 01:22:13.970
Währung und das nützt dann

01:22:13.970 --> 01:22:15.950
eventuell, um meine Karriere voranzubringen.

01:22:15.950 --> 01:22:17.670
Das ist schon mal

01:22:17.670 --> 01:22:19.830
gut, aber auch da gibt es noch Bereiche, wo

01:22:19.830 --> 01:22:21.830
es Leute gibt, die ihre

01:22:21.830 --> 01:22:23.770
Software zwar gerne

01:22:23.770 --> 01:22:25.830
allen zur Verfügung stellen, aber schreibt mir bitte vor,

01:22:25.890 --> 01:22:27.710
eine E-Mail-Authentikette, die zugeschickt und zitiert

01:22:27.710 --> 01:22:28.430
mich bitte natürlich.

01:22:28.430 --> 01:22:31.830
So komplett

01:22:31.830 --> 01:22:33.210
irre Sachen zum Teil, dass

01:22:33.210 --> 01:22:35.530
es einfach extrem schwierig ist, da

01:22:35.530 --> 01:22:37.110
an sinnvolle Sachen ranzukommen

01:22:37.110 --> 01:22:38.730
und auch

01:22:38.730 --> 01:22:41.550
die Sachen, also ja, es ist

01:22:41.550 --> 01:22:43.610
digital, aber ist es vernünftig

01:22:43.610 --> 01:22:44.070
digital?

01:22:44.070 --> 01:22:47.650
Und das ist ja nur

01:22:47.650 --> 01:22:49.890
die Software-Ebene. Du hast noch die ganzen Formulare

01:22:49.890 --> 01:22:51.410
dazu, das kommt halt auch dann noch dazu.

01:22:51.410 --> 01:22:52.830
Ja, nee, also das,

01:22:52.830 --> 01:22:55.590
die eine Sache, der Software-Ebene funktioniert

01:22:55.590 --> 01:22:57.350
funktionieren

01:22:57.350 --> 01:22:59.370
Teile der Wissenschaft vielleicht doch eher so wie eine große

01:22:59.370 --> 01:23:00.790
wissenschaftliche oder eine große

01:23:00.790 --> 01:23:03.330
freie Software-Community. Ja,

01:23:03.330 --> 01:23:04.810
kann man so sagen.

01:23:04.810 --> 01:23:07.290
Es ist vielleicht nicht sehr wohl organisiert und durchdacht

01:23:07.290 --> 01:23:09.330
und so weiter. Es wäre gut, wenn die Leute vielleicht

01:23:09.330 --> 01:23:11.110
mal ein bisschen Ahnung davon hatten, wie man eigentlich Software baut.

01:23:11.110 --> 01:23:15.450
Statt nur programmieren zu können, so ein bisschen.

01:23:15.450 --> 01:23:19.130
Auf der anderen Seite, wenn jetzt die eigentliche Wissenschaft,

01:23:19.130 --> 01:23:21.370
also die Wissenschaft, wenn man jetzt um die Erkenntnisse

01:23:21.370 --> 01:23:22.290
der Wissenschaft

01:23:22.290 --> 01:23:25.290
der Wissenschaft redet, ist es immer noch ein sehr großes

01:23:25.290 --> 01:23:27.370
mein Sandförmchen,

01:23:27.370 --> 01:23:28.530
dein Sandförmchen und

01:23:28.530 --> 01:23:31.290
großer Neid, dass man

01:23:31.290 --> 01:23:33.470
versucht, die eigenen Erkenntnisse

01:23:33.470 --> 01:23:35.130
möglichst, die eigenen Daten

01:23:35.130 --> 01:23:37.010
möglichst auszuschlachten und all solche Sachen.

01:23:37.010 --> 01:23:39.190
Hängt so ein bisschen vom Feld ab, also

01:23:39.190 --> 01:23:41.470
gerade die Mathematik, Informatik,

01:23:41.470 --> 01:23:42.990
Physik sind da so ein bisschen besser, aber

01:23:42.990 --> 01:23:44.750
in der Biologie so ein bisschen.

01:23:44.750 --> 01:23:47.530
Und ja, da ist es immer noch

01:23:47.530 --> 01:23:51.370
ja, da geht es ja auch

01:23:51.370 --> 01:23:53.230
wirklich darum, okay, ich habe diese Daten und wenn ich

01:23:53.230 --> 01:23:54.630
diese Daten habe, dann bin ich

01:23:54.630 --> 01:23:57.130
ja, dann muss ich damit alles Mögliche

01:23:57.130 --> 01:23:59.270
machen, möglichst auf einmal und das große

01:23:59.270 --> 01:24:01.170
eine Ding landen, sonst

01:24:01.170 --> 01:24:03.090
funktioniert es nicht.

01:24:03.090 --> 01:24:04.410
Oder funktioniert es nicht für die Karriere.

01:24:04.410 --> 01:24:06.770
Also leider ist es wahrscheinlich auch richtig,

01:24:06.770 --> 01:24:09.310
dass es nur so geht.

01:24:09.310 --> 01:24:11.450
Was natürlich dämlich ist.

01:24:11.450 --> 01:24:13.810
Obwohl aus der Physik

01:24:13.810 --> 01:24:15.010
habe ich das auch manchmal gehört, dass da

01:24:15.010 --> 01:24:17.150
die Leute dann in Vorträgen sitzen und

01:24:17.150 --> 01:24:19.230
Fotos machen von dem Experiment

01:24:19.230 --> 01:24:21.350
gehabt, sodass sie dann die ersten Theoretiker

01:24:21.350 --> 01:24:23.130
sein konnten, die dann die Theorie dazu, zu einem

01:24:23.130 --> 01:24:24.070
Experiment oder so,

01:24:24.330 --> 01:24:24.710
also irgendwie.

01:24:24.710 --> 01:24:27.190
Ja gut, aber dann machen sie jetzt zumindest nicht

01:24:27.190 --> 01:24:28.330
den Vortragenden den

01:24:28.330 --> 01:24:31.250
Ja, also natürlich,

01:24:31.250 --> 01:24:33.390
das gibt es in allen Bereichen wahrscheinlich irgendwo,

01:24:33.390 --> 01:24:34.710
das wird man nicht vermeiden können, aber

01:24:34.710 --> 01:24:37.310
es gibt da schon große Unterschiede. Also gerade

01:24:37.310 --> 01:24:38.850
in der Physik und Mathematik gibt es ja diese

01:24:38.850 --> 01:24:41.370
Preprint-Kultur, also man muss jetzt vielleicht für die Leute,

01:24:41.370 --> 01:24:43.290
die es nicht kennen, sagen, in der Wissenschaft

01:24:43.290 --> 01:24:45.650
zählen hauptsächlich

01:24:45.650 --> 01:24:47.390
so

01:24:47.390 --> 01:24:49.320
sogenannte Peer-Reviewed-Veröffentlichung,

01:24:49.320 --> 01:24:51.320
also Veröffentlichungen, die andere Wissenschaftler

01:24:51.320 --> 01:24:53.360
für einigermaßen gut befunden

01:24:53.360 --> 01:24:55.100
haben. Das ist ein gewisser Prozess. Dieser Prozess

01:24:55.100 --> 01:24:55.920
dauert

01:24:55.920 --> 01:24:59.160
in einigen Feldern oder Fächern

01:24:59.160 --> 01:25:00.840
und je nachdem, was man macht, bis zu Jahre.

01:25:00.840 --> 01:25:03.200
Also vom Einreichen

01:25:03.200 --> 01:25:05.040
des fertigen Manuskripts bis zur

01:25:05.040 --> 01:25:07.180
Veröffentlichung. Und in der

01:25:07.180 --> 01:25:09.180
Zeit kann natürlich alles Mögliche passieren und andere

01:25:09.180 --> 01:25:10.860
Leute können das Gleiche erfinden und so weiter und so fort.

01:25:10.860 --> 01:25:13.160
Und da gibt es zumindest, gerade

01:25:13.160 --> 01:25:14.960
in Mathe, Physik, Informatik und so weiter,

01:25:14.960 --> 01:25:17.140
die Kultur,

01:25:17.300 --> 01:25:19.180
dass man sagt, okay, wir haben das Preprint-Server,

01:25:19.180 --> 01:25:21.000
das bekannteste ist das

01:25:21.000 --> 01:25:22.900
Archive, wo man sagt, okay,

01:25:22.900 --> 01:25:25.020
ich reiche das jetzt ein und gleichzeitig

01:25:25.020 --> 01:25:27.040
stelle ich das schon mal frei zur Verfügung und

01:25:27.040 --> 01:25:29.160
das Journal, bei dem ich das einreiche,

01:25:29.160 --> 01:25:31.160
ist auch, kann

01:25:31.160 --> 01:25:32.980
damit leben, dass ich das frei zur Verfügung stelle

01:25:32.980 --> 01:25:34.840
und sage mir, nee, das hast du schon veröffentlicht, machen wir nicht.

01:25:34.840 --> 01:25:36.640
Und ja,

01:25:36.640 --> 01:25:38.800
das ist so langsam im Kommen,

01:25:38.800 --> 01:25:40.720
jetzt auch in der Biologie,

01:25:40.720 --> 01:25:42.920
das ist auch definitiv gut

01:25:42.920 --> 01:25:44.680
und das führt natürlich auch so ein bisschen dazu,

01:25:44.680 --> 01:25:46.960
dass man

01:25:46.960 --> 01:25:47.220
die Sachen

01:25:47.220 --> 01:25:48.940
wirklich direkt nutzen kann, aber

01:25:48.940 --> 01:25:51.240
andererseits in der Biologie dauert es halt auch

01:25:51.240 --> 01:25:53.000
einfach immer noch ewig, bevor man die Sachen überhaupt

01:25:53.000 --> 01:25:54.300
veröffentlicht und

01:25:54.300 --> 01:25:56.960
ja, wird egal, aber das ist jetzt

01:25:56.960 --> 01:25:57.800
vielleicht auch nicht so.

01:25:57.800 --> 01:26:01.580
Ja, du hast noch ein paar

01:26:01.580 --> 01:26:03.380
Tab-Termines, glaube ich, unterlassen.

01:26:03.380 --> 01:26:04.860
Ja, das kann sein.

01:26:04.860 --> 01:26:06.780
Das war so eine spannende Geschichte.

01:26:06.780 --> 01:26:09.320
Ja. Was fällt euch noch dazu ein?

01:26:09.320 --> 01:26:11.140
Habt ihr noch was zu dem Thema

01:26:11.140 --> 01:26:11.860
zu erzählen?

01:26:11.860 --> 01:26:14.840
Ich kann auch was erzählen, natürlich.

01:26:14.840 --> 01:26:16.720
Ja, du wenn du noch was auf dem Herzen hast.

01:26:17.140 --> 01:26:17.600
Was die Situation angeht.

01:26:17.600 --> 01:26:19.040
Genau, wir haben, wir haben, genau,

01:26:19.040 --> 01:26:19.820
da haben wir noch gar nichts zu bescheuen.

01:26:19.820 --> 01:26:22.140
Wie gesagt, ich habe eine wissenschaftliche Software geschrieben.

01:26:22.140 --> 01:26:23.240
Okay, soweit zu furchtbar.

01:26:23.240 --> 01:26:25.980
Das Hauptproblem ist natürlich jetzt, ich möchte auch weiterhin

01:26:25.980 --> 01:26:27.740
als Wissenschaftler bezahlt werden und das heißt,

01:26:27.740 --> 01:26:30.180
ich muss zitiert werden, wie ich gerade schon gesagt habe

01:26:30.180 --> 01:26:32.240
und dazu muss ich das Ganze veröffentlichen.

01:26:32.240 --> 01:26:35.180
Andersrum, Veröffentlichung und Zitate sind Geld,

01:26:35.180 --> 01:26:36.120
also muss ich veröffentlichen.

01:26:36.120 --> 01:26:38.860
Und ja,

01:26:38.860 --> 01:26:40.660
die meisten Veröffentlichungen in der Wissenschaft

01:26:40.660 --> 01:26:42.860
sind natürlich immer noch über eigentliche Forschung

01:26:42.860 --> 01:26:43.940
oder klassische Forschung.

01:26:43.940 --> 01:26:45.200
Ich habe irgendwas herausgefunden,

01:26:45.200 --> 01:26:46.760
hier ist es und nicht,

01:26:47.140 --> 01:26:48.880
ich habe hier eine neue Software geschrieben,

01:26:48.880 --> 01:26:50.020
die ich ihr erlaubt, das zu machen.

01:26:50.020 --> 01:26:52.860
Das war's.

01:26:52.860 --> 01:26:55.840
Und ja,

01:26:55.840 --> 01:26:58.140
diesen Prozess habe ich durchlaufen,

01:26:58.140 --> 01:26:59.120
ich habe ihn erfolgreich durchlaufen,

01:26:59.120 --> 01:27:01.080
ich habe es geschafft, dieses Paper zu veröffentlichen.

01:27:01.080 --> 01:27:03.280
Es war aber zum Teil sehr interessant.

01:27:03.280 --> 01:27:06.760
Ja, wo fange ich mal an?

01:27:06.760 --> 01:27:07.800
Höflich formuliert.

01:27:07.800 --> 01:27:09.760
Ja, höflich formuliert, genau.

01:27:09.760 --> 01:27:11.940
Also der erste Schritt ist erstmal,

01:27:11.940 --> 01:27:13.460
dass man ein Journal finden muss,

01:27:13.460 --> 01:27:15.860
das überhaupt sagt, okay, ich akzeptiere,

01:27:15.860 --> 01:27:17.120
wir akzeptieren solche,

01:27:17.140 --> 01:27:17.760
solche Veröffentlichungen,

01:27:17.760 --> 01:27:19.280
wir finden das gut.

01:27:19.280 --> 01:27:22.420
Der zweite Schritt ist dann zu sagen,

01:27:22.420 --> 01:27:24.380
ein Journal, bei dem Journal auch,

01:27:24.380 --> 01:27:26.500
ja, etwas, natürlich das Ganze zusammenzuschreiben,

01:27:26.500 --> 01:27:28.800
was übrigens,

01:27:28.800 --> 01:27:30.960
also für die Leute, jetzt wirklich für die Wissenschaftler

01:27:30.960 --> 01:27:33.300
unter den Zuhörern, bedeutend einfacher war,

01:27:33.300 --> 01:27:35.140
als klassische Forschungsarbeit zusammenzuschreiben.

01:27:35.140 --> 01:27:38.780
Ukulele.

01:27:38.780 --> 01:27:39.480
Ja.

01:27:39.480 --> 01:27:46.640
Und ja, dann,

01:27:47.140 --> 01:27:48.800
gab es, wie gesagt, den Peer-Review-Prozess,

01:27:48.800 --> 01:27:51.260
das heißt, auch dieses Manuskript

01:27:51.260 --> 01:27:52.400
ging an andere

01:27:52.400 --> 01:27:54.680
Forscher, die dann sagen sollten,

01:27:54.680 --> 01:27:56.460
ist das schön oder nicht, oder gut oder nicht.

01:27:56.460 --> 01:27:59.240
Und da hat dann erstmal

01:27:59.240 --> 01:28:01.460
einer der Reviewer, die nebenbei anonym sind,

01:28:01.460 --> 01:28:02.580
also ich weiß nicht, wer es war,

01:28:02.580 --> 01:28:04.800
gesagt,

01:28:04.800 --> 01:28:07.140
ja, das ist ja alles

01:28:07.140 --> 01:28:09.220
schön und gut, das ist auch besonders interessant

01:28:09.220 --> 01:28:11.340
für diese spezifische

01:28:11.340 --> 01:28:12.720
wissenschaftliche Community,

01:28:12.720 --> 01:28:15.300
aber das ist

01:28:15.300 --> 01:28:17.120
ja so irgendwie eigentlich kein,

01:28:17.120 --> 01:28:18.280
kein richtiges Paper,

01:28:18.280 --> 01:28:20.480
also lehne ich es ab.

01:28:20.480 --> 01:28:25.020
Obwohl das Journal sagt, genau solche Dinge

01:28:25.020 --> 01:28:26.280
würden wir auch gerne haben.

01:28:26.280 --> 01:28:29.400
Und ja, ich weiß nicht genau, was da schiefgelaufen ist,

01:28:29.400 --> 01:28:31.220
ob das Journal dem Reviewer nicht gesagt hat,

01:28:31.220 --> 01:28:32.580
guck mal, das ist okay,

01:28:32.580 --> 01:28:34.920
oder ob der Reviewer es nicht verstanden hat, oder

01:28:34.920 --> 01:28:37.300
ja, es war auf jeden Fall

01:28:37.300 --> 01:28:39.040
ganz komisch, also am Ende bin ich hingegangen und habe,

01:28:39.040 --> 01:28:40.940
also man sagt dann natürlich nicht, okay,

01:28:40.940 --> 01:28:43.300
ich akzeptiere das, ich werde abgelehnt worden, ich gehe woanders hin

01:28:43.300 --> 01:28:43.620
oder so,

01:28:43.620 --> 01:28:47.080
sondern,

01:28:47.120 --> 01:28:47.540
man

01:28:47.540 --> 01:28:51.060
kann dann

01:28:51.060 --> 01:28:53.020
erst mal das Ganze erwidern

01:28:53.020 --> 01:28:55.080
und sagen, ja, du sagst, mein Paper

01:28:55.080 --> 01:28:57.120
ist doof, aber ich sage, es ist gut, weil...

01:28:57.120 --> 01:28:59.200
Und ja,

01:28:59.200 --> 01:29:00.680
mein Argument bestand dann daraus,

01:29:00.680 --> 01:29:03.180
dieses Urteil

01:29:03.180 --> 01:29:05.140
von diesem Reviewer, der halt

01:29:05.140 --> 01:29:06.660
gesagt hat, ja, es ist relevant für die Community,

01:29:06.660 --> 01:29:08.840
neben die Kriterien vom Journal

01:29:08.840 --> 01:29:11.000
zu stellen, dass er gesagt hat, ja, wir akzeptieren solche

01:29:11.000 --> 01:29:12.400
Paper, wenn, und dann kam

01:29:12.400 --> 01:29:15.000
fast genau das Gleiche, was

01:29:15.000 --> 01:29:16.900
der Reviewer dann gesagt hat, und ja,

01:29:17.120 --> 01:29:19.220
und am Ende ist es, hat es

01:29:19.220 --> 01:29:21.160
dann auch ohne große Probleme geklappt, aber

01:29:21.160 --> 01:29:22.780
es war irgendwie schon lustig.

01:29:22.780 --> 01:29:25.000
Dann kommt das nächste Problem, also wenn man das alles

01:29:25.000 --> 01:29:27.100
geschafft hat, also wenn quasi die

01:29:27.100 --> 01:29:29.100
Wissenschaftler sagen, das ist okay, dann muss das

01:29:29.100 --> 01:29:29.700
noch

01:29:29.700 --> 01:29:32.960
in eine druckbare Form gebracht werden,

01:29:32.960 --> 01:29:35.140
was sich jetzt erstmal ein bisschen albern

01:29:35.140 --> 01:29:37.140
anhört, denn ja, gut, wir sind jetzt hier in

01:29:37.140 --> 01:29:39.040
der Physik, Mathematik und ähnlichem, da sprechen alle

01:29:39.040 --> 01:29:41.240
Leute latech und können

01:29:41.240 --> 01:29:43.100
in der Regel selbst sehr gute

01:29:43.100 --> 01:29:45.100
Sachen produzieren,

01:29:45.100 --> 01:29:47.040
die man auch drucken kann, aber

01:29:47.120 --> 01:29:48.800
ja, einige

01:29:48.800 --> 01:29:51.160
ähm

01:29:51.160 --> 01:29:52.620
Wobei, kurze

01:29:52.620 --> 01:29:55.000
Abschweifung, ich glaube, für die, für diese

01:29:55.000 --> 01:29:57.120
Physics Review Letters oder so, das ist

01:29:57.120 --> 01:29:59.240
irgendwie ganz wichtig in der Physik, da gibt's

01:29:59.240 --> 01:30:01.000
ein Word Template, das man benutzen muss,

01:30:01.000 --> 01:30:02.980
die, äh... Nein, ziemlich sicher.

01:30:02.980 --> 01:30:05.200
Also für Physical Review Letters

01:30:05.200 --> 01:30:06.900
kann man definitiv auch Technik einreichen.

01:30:06.900 --> 01:30:08.900
Und auch, also es geht

01:30:08.900 --> 01:30:11.020
mittlerweile, es ist schon, es ist sehr weit verbreitet, man kann

01:30:11.020 --> 01:30:12.940
latech einreichen, die Fahre ist halt, wird es eins zu eins

01:30:12.940 --> 01:30:13.700
verwendet, also

01:30:13.700 --> 01:30:17.000
das Einreichen ist die eine Geschichte, die

01:30:17.120 --> 01:30:19.080
andere Sache ist, was macht das Journal

01:30:19.080 --> 01:30:21.100
dann, was machen am Ende die Schriftsetzer damit?

01:30:21.100 --> 01:30:23.020
Sie könnten natürlich, also im Prinzip könnte man

01:30:23.020 --> 01:30:24.960
eigentlich hinsehen, wir haben einen Standardstil und den

01:30:24.960 --> 01:30:27.040
wenden wir einfach an und dann braucht man gar keine Schriftsetzer

01:30:27.040 --> 01:30:29.000
mehr. Das ist aber nicht der Fall.

01:30:29.000 --> 01:30:30.700
In den meisten Journalen,

01:30:30.700 --> 01:30:32.720
zumindest in meinem Feld, und das heißt,

01:30:32.720 --> 01:30:34.860
irgendein Schriftsetzer hatte dann zum ersten Mal

01:30:34.860 --> 01:30:36.780
in seinem Leben Computercode vor sich

01:30:36.780 --> 01:30:38.680
und musste den

01:30:38.680 --> 01:30:40.680
setzen. Oh, diese blöden

01:30:40.680 --> 01:30:43.280
tabulatorischen Eindrückungen, das sieht aber doof aus.

01:30:43.280 --> 01:30:45.220
Ja, also

01:30:45.220 --> 01:30:47.040
das würde ja noch,

01:30:47.040 --> 01:30:47.100
das würde ja noch, das würde ja noch, das würde ja noch,

01:30:47.120 --> 01:30:47.280
das würde ja noch, das würde ja noch, das würde ja noch,

01:30:47.280 --> 01:30:47.300
das würde ja noch, das würde ja noch, das würde ja noch,

01:30:47.300 --> 01:30:47.320
das würde ja noch, das würde ja noch,

01:30:47.320 --> 01:30:47.360
das würde ja noch, das würde ja noch,

01:30:47.360 --> 01:30:47.380
das würde ja noch, das würde ja noch,

01:30:47.380 --> 01:30:50.960
also, ja, das wäre auch ein Problem,

01:30:50.960 --> 01:30:53.120
aber, also ja,

01:30:53.120 --> 01:30:54.920
der Code war an verschiedenen Eindrückungsebenen,

01:30:54.920 --> 01:30:57.260
unterschiedliche Codeblöcke waren an unterschiedlichen

01:30:57.260 --> 01:30:59.100
Eindrückungsebenen, ja, das war auch ein Problem,

01:30:59.100 --> 01:31:01.000
aber das war nur der Anfang, das hätte man noch

01:31:01.000 --> 01:31:02.760
über, oder darüber hätte man noch hinwegsehen können.

01:31:02.760 --> 01:31:04.500
Da gab es auch zum Beispiel, also was,

01:31:04.500 --> 01:31:07.240
nach so drei Iterationen,

01:31:07.240 --> 01:31:08.980
also, ich habe

01:31:08.980 --> 01:31:09.280
ein,

01:31:09.280 --> 01:31:12.900
das Resultat der Schriftsetzer

01:31:12.900 --> 01:31:14.500
bekommen, ich habe gesagt, nee, das geht so nicht,

01:31:14.500 --> 01:31:17.200
die haben es neu versucht, ich habe es bekommen, ich habe gesagt, nee, das geht so nicht,

01:31:17.200 --> 01:31:19.020
und so weiter und so fort, nach drei Iterationen

01:31:19.020 --> 01:31:20.940
hatte ich ungefähr raus, was da eigentlich

01:31:20.940 --> 01:31:22.780
vor sich geht, und zwar haben die

01:31:22.780 --> 01:31:24.940
versucht, meinen Code wie

01:31:24.940 --> 01:31:26.940
Formeln zu interpretieren, und den

01:31:26.940 --> 01:31:28.360
nach Formelregeln gesetzt.

01:31:28.360 --> 01:31:30.880
Und Formeln gibt es halt zum Beispiel solche,

01:31:30.880 --> 01:31:32.720
also für den Formelsatz gab es die Regel,

01:31:32.720 --> 01:31:35.040
wenn die erste, die innerste Klammer,

01:31:35.040 --> 01:31:36.380
die man macht, ist rund,

01:31:36.380 --> 01:31:38.980
die nächste Klammer ist eckig, und danach

01:31:38.980 --> 01:31:39.640
kommt geschweift.

01:31:39.640 --> 01:31:42.080
Das haben die auch

01:31:42.080 --> 01:31:43.440
radikal auf den,

01:31:43.440 --> 01:31:45.600
das ist ein Formelsatz,

01:31:45.600 --> 01:31:46.960
das kann man drüber schreiben,

01:31:46.960 --> 01:31:49.480
das haben die aber radikal auf den Code angewendet.

01:31:49.480 --> 01:31:50.340
Tja.

01:31:50.340 --> 01:31:53.480
Und dann steht halt Sinus, eckige Klammer auf,

01:31:53.480 --> 01:31:55.280
F von I, eckige Klammer zu.

01:31:55.280 --> 01:31:56.800
Ja.

01:31:56.800 --> 01:31:59.340
Ja, das

01:31:59.340 --> 01:32:01.640
wäre jetzt

01:32:01.640 --> 01:32:03.400
natürlich dann auch wieder irgendwie eine Anwendung

01:32:03.400 --> 01:32:05.200
für CodeGolf,

01:32:05.200 --> 01:32:07.000
ob man das dann so transformieren könnte,

01:32:07.000 --> 01:32:08.680
dass es irgendwie,

01:32:08.680 --> 01:32:10.860
am Schluss hat man dann halt noch so ein kleines CodeGolf-Ding,

01:32:10.860 --> 01:32:12.040
dass das eine wieder in die andere Form

01:32:12.080 --> 01:32:13.580
übersetzt wird, dass es halt dann

01:32:13.580 --> 01:32:15.400
irgendwie ausführbar wird.

01:32:15.400 --> 01:32:18.360
Ich mache eine Exkursion, ist das glaube ich okay?

01:32:18.360 --> 01:32:20.520
Das war auch,

01:32:20.520 --> 01:32:22.540
das war jetzt nicht CodeGolf, aber so eine

01:32:22.540 --> 01:32:24.480
Programmieraufgabe,

01:32:24.480 --> 01:32:26.540
das war, ich versuche es jetzt gerade aus dem Gedächtnis

01:32:26.540 --> 01:32:28.180
zu reproduzieren, sagen wir es so wie

01:32:28.180 --> 01:32:30.460
A, Klammer auf, B plus C

01:32:30.460 --> 01:32:33.000
gleich, gleich

01:32:33.000 --> 01:32:35.000
AB plus

01:32:35.000 --> 01:32:36.100
BC, also das

01:32:36.100 --> 01:32:38.580
Assoziativgesetz, und zwar

01:32:38.580 --> 01:32:40.620
hingeschrieben, so wie man es auf Papier schreiben würde.

01:32:40.620 --> 01:32:42.060
Das heißt, ohne mal,

01:32:42.080 --> 01:32:42.580
mal Zeichen.

01:32:42.580 --> 01:32:45.600
So, also man hat jetzt

01:32:45.600 --> 01:32:47.760
diesen Code, das könnte man ja in Python machen,

01:32:47.760 --> 01:32:50.180
und die Aufgabe ist jetzt, davor

01:32:50.180 --> 01:32:51.920
etwas zu machen, dass dieser

01:32:51.920 --> 01:32:53.880
Code, dass das wahr ergibt.

01:32:53.880 --> 01:32:57.840
Okay.

01:32:57.840 --> 01:33:00.260
Und man darf,

01:33:00.260 --> 01:33:02.040
ja, ich glaube mit der Bedingung, dass man

01:33:02.040 --> 01:33:04.000
ja A und B nicht einfach durch Nullen

01:33:04.000 --> 01:33:04.960
ersetzen darf oder so,

01:33:04.960 --> 01:33:06.820
und ja, also

01:33:06.820 --> 01:33:09.940
mein Ansatz dafür, es war leider nicht

01:33:09.940 --> 01:33:11.540
der schnellste oder der kürzeste,

01:33:12.080 --> 01:33:13.860
war, dass man sagt, okay, wir machen erst mal

01:33:13.860 --> 01:33:15.800
A, B und C zu Symbolen, dann funktioniert

01:33:15.800 --> 01:33:17.260
schon mal symbolisches Rechnen, also mit Symbol.

01:33:17.260 --> 01:33:20.040
Und dann überschreiben

01:33:20.040 --> 01:33:21.980
wir noch für A, oder fügen wir

01:33:21.980 --> 01:33:22.780
A eine

01:33:22.780 --> 01:33:25.520
Call-Funktion hinzu,

01:33:25.520 --> 01:33:27.720
die Call-Methode für A,

01:33:27.720 --> 01:33:29.880
und sagen halt, dass sie das macht, was dann

01:33:29.880 --> 01:33:31.820
rechnisch rauskommen müsste. Das heißt,

01:33:31.820 --> 01:33:33.620
dieses A, Klammer auf, B plus C würde wie ein

01:33:33.620 --> 01:33:35.980
Funktionsaufruf ähnlich interpretiert werden,

01:33:35.980 --> 01:33:37.440
und dann funktioniert so das.

01:33:37.440 --> 01:33:39.980
Was auch eine sehr schöne Sache in Python

01:33:39.980 --> 01:33:41.760
ist, wenn man das einfach weiß, dass man

01:33:41.760 --> 01:33:43.900
einfach alle Operatoren irgendwie beliebig

01:33:43.900 --> 01:33:45.160
definieren kann, wenn man möchte,

01:33:45.160 --> 01:33:47.700
und das auch für sehr viele Sachen nutzen kann,

01:33:47.700 --> 01:33:48.800
ja,

01:33:48.800 --> 01:33:51.460
und eben um die Säse zu lösen.

01:33:51.460 --> 01:33:53.760
Plus mit O überschreiben oder so,

01:33:53.760 --> 01:33:55.680
was machst du auch mit True, wenn du ein Bohl draufwirfst?

01:33:55.680 --> 01:33:57.860
Wenn du das Pluszeichen

01:33:57.860 --> 01:33:59.780
mit einem O überschreibst oder sowas,

01:33:59.780 --> 01:34:01.640
also dann

01:34:01.640 --> 01:34:02.640
könnte das vielleicht funktionieren.

01:34:02.640 --> 01:34:05.740
Ja,

01:34:05.740 --> 01:34:07.760
ich glaube, es musste vereinigt,

01:34:07.760 --> 01:34:09.200
man durfte irgendwie A, B und C nicht überschreiben.

01:34:09.200 --> 01:34:10.700
Ich müsste es nochmal raussuchen, was genau die...

01:34:10.700 --> 01:34:11.320
Ja, deswegen das Plus.

01:34:11.760 --> 01:34:13.780
Und dann den Bolian draufwerfen, dann

01:34:13.780 --> 01:34:14.740
stimmt das schon.

01:34:14.740 --> 01:34:17.200
Ja, gut.

01:34:17.200 --> 01:34:20.520
Also ich hatte dann sehr viel Spaß mit den Schriftziffern eben.

01:34:20.520 --> 01:34:22.760
Ja, das war auf jeden Fall schön.

01:34:22.760 --> 01:34:23.900
Die Klammern anpassen,

01:34:23.900 --> 01:34:25.280
einrücken, eben entfernen.

01:34:25.280 --> 01:34:28.140
Ich habe auch irgendwie den Unterstrich per Hand gezeichnet,

01:34:28.140 --> 01:34:30.300
das heißt, wenn man den Code kopiert hat, war der Unterstrich plötzlich weg.

01:34:30.300 --> 01:34:31.800
War es irgendwie kein Unterstrich.

01:34:31.800 --> 01:34:33.860
Das Bild war innerhalb von dem PDF dann

01:34:33.860 --> 01:34:36.380
nicht mehr Text.

01:34:36.380 --> 01:34:38.440
Genau, es war Text,

01:34:38.440 --> 01:34:40.100
und anstatt des Unterstrichs, der auch irgendwie

01:34:40.100 --> 01:34:41.440
unterschiedlich lang war, war da halt...

01:34:41.760 --> 01:34:43.480
ein Leerzeichen, und da war eine Linie.

01:34:43.480 --> 01:34:45.520
Also so per Hand

01:34:45.520 --> 01:34:47.560
reingeseinigt.

01:34:47.560 --> 01:34:49.480
Ein Wörter- und Zeichenobjekt.

01:34:49.480 --> 01:34:51.880
Ja, genau. Aber wenn man den Text kopiert hat,

01:34:51.880 --> 01:34:52.700
war das halt nicht da.

01:34:52.700 --> 01:34:54.560
Dann hat jemand die Taste auf der Tastatur nicht gefunden.

01:34:54.560 --> 01:34:57.900
Dann wurden die auch schön typografische Anführungszeichen

01:34:57.900 --> 01:34:58.360
im Code.

01:34:58.360 --> 01:35:00.340
Sieht einfach viel besser aus.

01:35:00.340 --> 01:35:03.400
Ja, ich meine, es sieht tatsächlich viel besser aus,

01:35:03.400 --> 01:35:05.000
es funktioniert leider halt auch nicht.

01:35:05.000 --> 01:35:07.760
Aber gut, da kann ich jetzt...

01:35:07.760 --> 01:35:09.760
Ja, aber das ist...

01:35:09.760 --> 01:35:11.020
Das ist halt gut.

01:35:11.760 --> 01:35:13.880
Das fand ich eben je nach Community so unterschiedlich,

01:35:13.880 --> 01:35:15.700
weil jetzt so was in der Informatik oder so,

01:35:15.700 --> 01:35:18.120
Pseudocode wird ja schon oft

01:35:18.120 --> 01:35:20.860
in Papers auch reingeschrieben, aber...

01:35:20.860 --> 01:35:22.720
Naja, ich war halt...

01:35:22.720 --> 01:35:23.840
Was heißt leider?

01:35:23.840 --> 01:35:24.800
Ich meine, es war ja...

01:35:24.800 --> 01:35:28.380
Es gab Sinn, dass ich mich in eine Community

01:35:28.380 --> 01:35:29.300
gewandert habe, die das nicht macht,

01:35:29.300 --> 01:35:31.460
und die haben irgendwie so

01:35:31.460 --> 01:35:33.440
ein solches Paper pro Jahr.

01:35:33.440 --> 01:35:35.980
Und ja, das ist

01:35:35.980 --> 01:35:36.980
nicht viel.

01:35:36.980 --> 01:35:38.080
Ja.

01:35:38.080 --> 01:35:41.480
Naja, aber das ist...

01:35:41.480 --> 01:35:43.380
Also, ich weiß nicht, diese ganze Publikationspraxis,

01:35:43.380 --> 01:35:46.480
dass man halt Dinge halt nur publizieren kann.

01:35:46.480 --> 01:35:47.860
Oder ich meine, in der Informatik ist es halt auch so,

01:35:47.860 --> 01:35:48.920
dass...

01:35:48.920 --> 01:35:51.920
Ich meine, es gibt Ausnahmen, aber überwiegend zu der Zeit,

01:35:51.920 --> 01:35:53.560
wo ich viel Papers gelesen habe, war es halt so,

01:35:53.560 --> 01:35:55.480
dass die Leute...

01:35:55.480 --> 01:35:56.820
Naja,

01:35:56.820 --> 01:35:59.280
dass man eigentlich nur

01:35:59.280 --> 01:36:01.840
mathematische Sachen veröffentlichen konnte.

01:36:01.840 --> 01:36:03.600
Also Code und so eigentlich eher nicht.

01:36:03.600 --> 01:36:05.720
Man kommt an den Code auf Anfrage

01:36:05.720 --> 01:36:07.320
dann immer ran, wenn man die Leute anschreibt.

01:36:07.320 --> 01:36:09.140
Aber

01:36:09.140 --> 01:36:11.000
ist es halt nicht Teil der Veröffentlichung.

01:36:11.480 --> 01:36:12.500
Ähm, dann

01:36:12.500 --> 01:36:15.360
war halt... Also, ich meine, es führt halt

01:36:15.360 --> 01:36:16.340
auch so ein bisschen dazu,

01:36:16.340 --> 01:36:18.480
quasi, dass man...

01:36:18.480 --> 01:36:21.520
Ich meine, an dem Paper, ob das jetzt stimmt oder nicht,

01:36:21.520 --> 01:36:23.160
kann man den Paper halt nicht mehr ansehen.

01:36:23.160 --> 01:36:25.560
Also, wenn man nur das überprüft, dann weiß man überhaupt nicht,

01:36:25.560 --> 01:36:26.820
ob das jetzt funktioniert oder nicht.

01:36:26.820 --> 01:36:29.660
Und wir haben dann halt auch teilweise

01:36:29.660 --> 01:36:30.300
versucht, Sachen

01:36:30.300 --> 01:36:32.560
ja, halt

01:36:32.560 --> 01:36:35.280
sozusagen zu reproduzieren.

01:36:35.280 --> 01:36:37.660
Und die Quote der Sachen,

01:36:37.660 --> 01:36:39.560
die so wirklich überhaupt gar nicht...

01:36:39.560 --> 01:36:41.320
Also, manchmal kann man vielleicht auch Sachen nicht richtig

01:36:41.320 --> 01:36:43.200
reproduzieren, weil man es nicht verstanden hat oder selber

01:36:43.200 --> 01:36:44.620
zu blöd ist, es hinzukriegen oder so.

01:36:44.620 --> 01:36:47.140
Aber manchmal ist es relativ offensichtlich, dass das nie

01:36:47.140 --> 01:36:49.340
funktioniert haben kann. Und die Quote

01:36:49.340 --> 01:36:51.480
von den Sachen war recht hoch. Also, das war

01:36:51.480 --> 01:36:53.340
schon erschreckend. Und dann denkt man sich so schon,

01:36:53.340 --> 01:36:55.060
okay, ja, und das waren alles

01:36:55.060 --> 01:36:57.180
ordentlich peer-reviewte Sachen,

01:36:57.180 --> 01:36:59.260
die durchgegangen sind, die irgendwo veröffentlicht wurden und so.

01:36:59.260 --> 01:37:00.860
Also, ja.

01:37:00.860 --> 01:37:01.780
Ja.

01:37:01.780 --> 01:37:05.400
Aber da muss man sagen, die Informatik hat es noch gut,

01:37:05.400 --> 01:37:07.160
wenn man einfach so sagt, okay, ich hab hier das...

01:37:07.160 --> 01:37:09.040
Man könnte zumindest mal hingehen und diese Standard-Einführung,

01:37:09.040 --> 01:37:10.740
es gibt ja auch Tendenzen in die Richtung zum Glück,

01:37:11.160 --> 01:37:12.700
dass man sagt, okay, hier ist jetzt bitte die Software,

01:37:12.700 --> 01:37:15.180
ein Programm, was das macht, und wenn ich das ausführe,

01:37:15.180 --> 01:37:17.100
das Programm verstehe,

01:37:17.100 --> 01:37:19.040
und das Programm ist verständlich, dann

01:37:19.040 --> 01:37:20.860
kommt das raus. Mit anderen

01:37:20.860 --> 01:37:22.360
experimentellen Sachen geht das nicht.

01:37:22.360 --> 01:37:24.660
Du kannst halt eben nicht einfach mal

01:37:24.660 --> 01:37:26.880
ein Jahr ins Labor sitzen, da rumpipitieren

01:37:26.880 --> 01:37:29.240
und welche Bakterien

01:37:29.240 --> 01:37:30.940
wachsen lassen und gucken, ob das gleich rauskommt.

01:37:30.940 --> 01:37:32.200
Also, kann man schon.

01:37:32.200 --> 01:37:34.580
Das ist aber deutlich schwieriger.

01:37:34.580 --> 01:37:36.980
Stimmt, ja. Stimmt, bei anderen ist es noch viel übler.

01:37:36.980 --> 01:37:40.360
Ja, oder hat er O.

01:37:41.000 --> 01:37:42.280
Das war jetzt das Land.

01:37:42.280 --> 01:37:44.140
Hm, was machen wir jetzt?

01:37:44.140 --> 01:37:45.560
Nächstes Mal.

01:37:45.560 --> 01:37:46.540
Welche Länder haben wir denn noch?

01:37:46.540 --> 01:37:49.360
Welche haben noch nie etwas von uns gehört?

01:37:49.360 --> 01:37:50.740
Und was sind unsere bisherigen Ergebnisse?

01:37:50.740 --> 01:37:52.960
Wir lassen das Modell einfach nochmal rechnen.

01:37:52.960 --> 01:37:54.720
Ja.

01:37:54.720 --> 01:37:57.100
Ja, dann haben wir ein paar so Programme eingeführt.

01:37:57.100 --> 01:37:58.000
Das musste man dann so machen.

01:37:58.000 --> 01:38:00.760
Sie haben dann tatsächlich das Modell nicht geändert.

01:38:00.760 --> 01:38:02.740
Sie waren davon überzeugt, das Modell war richtig,

01:38:02.740 --> 01:38:05.380
nur die Umstände waren bei zwei oder drei anderen

01:38:05.380 --> 01:38:06.760
Informatikern auch nicht funktionieren.

01:38:06.760 --> 01:38:08.800
Also, ja, da war ein bisschen Resistenzgang

01:38:08.800 --> 01:38:10.320
gegen gute...

01:38:10.320 --> 01:38:10.840
Ja, das ist halt...

01:38:10.840 --> 01:38:12.500
Das ist halt so, wenn man einmal weiß, dass man richtig liegt,

01:38:12.500 --> 01:38:14.680
ich meine, dann muss man einfach nur das häufig genug probieren

01:38:14.680 --> 01:38:15.680
und irgendwann wird es schon funktionieren.

01:38:15.680 --> 01:38:18.100
So viel zählt das doch, oder?

01:38:18.100 --> 01:38:18.680
Ja, ja, ja.

01:38:18.680 --> 01:38:22.680
Ja, SAP war das, aber das Structural Adjustment Program.

01:38:22.680 --> 01:38:25.300
Tja.

01:38:25.300 --> 01:38:26.420
Ja, ja.

01:38:26.420 --> 01:38:27.560
Ja.

01:38:27.560 --> 01:38:30.700
Aber sozusagen, also,

01:38:30.700 --> 01:38:32.520
ich weiß nicht, wie arbeitest du

01:38:32.520 --> 01:38:34.620
üblicherweise? Also in Notebooks oder

01:38:34.620 --> 01:38:36.960
eher...

01:38:36.960 --> 01:38:38.640
Ich versuche mir mittlerweile

01:38:38.640 --> 01:38:40.620
angewöhnt, so ein bisschen anzugewöhnt in Notebooks zu arbeiten,

01:38:40.680 --> 01:38:42.620
einfach, weil es gerade für, wenn man mit

01:38:42.620 --> 01:38:44.380
Plots zusammenarbeitet, ist es halt

01:38:44.380 --> 01:38:46.660
irgendwie einfach, ja, ganz praktisch.

01:38:46.660 --> 01:38:48.620
Also, ich muss dazu sagen, ich komme ursprünglich,

01:38:48.620 --> 01:38:50.680
ich bin, habe

01:38:50.680 --> 01:38:52.580
sehr früh genug Plot gelernt und

01:38:52.580 --> 01:38:54.600
das auch, was jetzt ein

01:38:54.600 --> 01:38:56.620
Plotting-Programm ist, was nichts

01:38:56.620 --> 01:38:58.440
mit Python zu tun hat, weil es

01:38:58.440 --> 01:39:00.080
eine eigene Programmiersprache ist und

01:39:00.080 --> 01:39:02.800
bin damit sehr zufrieden gewesen

01:39:02.800 --> 01:39:04.540
und beziehungsweise bin auch in der Lage gewesen, alles zu machen.

01:39:04.540 --> 01:39:06.180
Ich kannte einfach alle Kniffe und

01:39:06.180 --> 01:39:07.600
habe mich deswegen sehr lange

01:39:07.600 --> 01:39:10.120
geweigert auf Python,

01:39:10.520 --> 01:39:12.660
Plots umzustellen, was natürlich

01:39:12.660 --> 01:39:14.580
gewisse Vorteile hat, da man eben

01:39:14.580 --> 01:39:16.460
nicht erstmal die Programmiersprache wechseln muss, um was

01:39:16.460 --> 01:39:18.420
zu plotten und nicht erstmal ein Interface

01:39:18.420 --> 01:39:19.660
schreiben muss und so weiter und so fort.

01:39:19.660 --> 01:39:22.560
Insofern, ja, hink ich da so

01:39:22.560 --> 01:39:24.480
ein bisschen hinterher, denke ich,

01:39:24.480 --> 01:39:26.580
aber mittlerweile, ja, ist mein...

01:39:26.580 --> 01:39:28.840
Also, ich schreibe die meisten

01:39:28.840 --> 01:39:30.520
oder Sachen, die ich mehrfach verwende,

01:39:30.520 --> 01:39:32.540
definitiv ganz normal mit

01:39:32.540 --> 01:39:34.580
ja...

01:39:34.580 --> 01:39:36.780
meiner Entwicklungsumgebung,

01:39:36.780 --> 01:39:38.220
die da Unix heißt, also

01:39:38.220 --> 01:39:40.160
Text-Editor und Konsole und was auch immer.

01:39:40.360 --> 01:39:41.580
Genau, was für ein Editor bist du?

01:39:41.580 --> 01:39:44.280
Ich nutze NeoWim.

01:39:44.280 --> 01:39:47.240
Ja, ja, ein Wim hat auch immer rum.

01:39:47.240 --> 01:39:49.900
Und, ja.

01:39:49.900 --> 01:39:52.580
Und dann, wenn

01:39:52.580 --> 01:39:54.960
die Sachen einigermaßen stehen und es wirklich nur noch darum geht,

01:39:54.960 --> 01:39:56.740
entweder

01:39:56.740 --> 01:39:58.360
schöne Plots zu produzieren oder

01:39:58.360 --> 01:40:00.600
rumzuspielen in dem, was man jetzt

01:40:00.600 --> 01:40:02.080
an Simulationen geschrieben hat,

01:40:02.080 --> 01:40:04.660
dann wechsle ich mittlerweile dann auch

01:40:04.660 --> 01:40:05.520
doch mal ins Notebook.

01:40:05.520 --> 01:40:08.520
Andererseits,

01:40:08.520 --> 01:40:10.200
also wenn es jetzt wirklich darum geht, Software

01:40:10.200 --> 01:40:11.880
zu schreiben, die andere nutzen sollen,

01:40:11.880 --> 01:40:14.060
findet das immer noch...

01:40:14.060 --> 01:40:16.000
Ja, was heißt, findet das nicht im Notebook statt, aber

01:40:16.000 --> 01:40:17.620
dafür ist es, glaube ich, auch nicht gemacht.

01:40:17.620 --> 01:40:17.980
Ja.

01:40:17.980 --> 01:40:22.460
Ja, ja, das ist auch etwas, was man

01:40:22.460 --> 01:40:24.360
jetzt immer zunehmend hört, dass Leute das

01:40:24.360 --> 01:40:26.300
halt benutzen. Und, ja,

01:40:26.300 --> 01:40:27.520
ich finde es eigentlich relativ

01:40:27.520 --> 01:40:30.180
einleuchtend, dass das jetzt sich so durchsetzt.

01:40:30.180 --> 01:40:32.300
Was halt auch schade finde, ist, dass es irgendwie noch

01:40:32.300 --> 01:40:33.400
immer keine so richtig

01:40:33.400 --> 01:40:35.100
schöne,

01:40:35.100 --> 01:40:38.520
schön bedienbare oder intuitive

01:40:38.520 --> 01:40:40.040
Plot-Umgebung irgendwie

01:40:40.040 --> 01:40:41.480
überhaupt gibt.

01:40:41.480 --> 01:40:44.340
Also, es gibt ja so ein paar, die hast du

01:40:44.340 --> 01:40:46.340
bestimmt schon alle ausprobiert. Also, in Matplot, du hast ja selber schon gesagt,

01:40:46.340 --> 01:40:47.920
Alter, ihr oder sowas.

01:40:47.920 --> 01:40:50.000
Mal reingeschaut, für Python.

01:40:50.000 --> 01:40:52.180
Ich glaube, das ist für Scientific-Sachen gar nicht so

01:40:52.180 --> 01:40:54.240
verkehrt, gerade für so statistische Plotting nochmal.

01:40:54.240 --> 01:40:56.340
Habe ich aber selber auch noch nicht so viel benutzt.

01:40:56.340 --> 01:40:58.180
Ja, gut. Vielleicht muss ich da auch nochmal reingucken.

01:40:58.180 --> 01:41:00.120
Also, mich stört halt noch so dieses,

01:41:00.120 --> 01:41:02.440
ich glaube, das wurde mal Plotting by Side-Effect

01:41:02.440 --> 01:41:03.800
genannt von Matplotlib.

01:41:03.800 --> 01:41:06.880
Ja, das stimmt.

01:41:06.880 --> 01:41:08.340
Also, wahrscheinlich,

01:41:08.340 --> 01:41:09.580
ja, vielleicht gibt es mittlerweile,

01:41:09.880 --> 01:41:11.820
aber ich meine, ich habe noch nichts

01:41:11.820 --> 01:41:13.920
davon gehört, dass irgendwas eben die

01:41:13.920 --> 01:41:16.080
ganze, das ganze

01:41:16.080 --> 01:41:17.960
Repertoire mitbringt, was man eben auch braucht.

01:41:17.960 --> 01:41:20.020
Ich möchte halt, das Hauptproblem ist, wenn ich

01:41:20.020 --> 01:41:21.960
jetzt irgendeine Plotting-Sprache

01:41:21.960 --> 01:41:24.140
lerne oder irgendein Plotting-Interface lerne oder was auch immer,

01:41:24.140 --> 01:41:26.120
möchte ich, dass es wirklich alles

01:41:26.120 --> 01:41:28.180
kann. Irgendwann werde ich

01:41:28.180 --> 01:41:29.880
dazu kommen, dass ich das brauche, dass ich

01:41:29.880 --> 01:41:32.020
dieses Detail einstellen muss und wenn ich das nicht kann...

01:41:32.020 --> 01:41:33.820
Plotly Express, das ist, glaube ich, noch ganz nett.

01:41:33.820 --> 01:41:35.900
Und das heißt,

01:41:35.900 --> 01:41:37.960
das ist so ein bisschen auch ein Problem,

01:41:37.960 --> 01:41:39.840
dass natürlich normalerweise,

01:41:39.840 --> 01:41:41.880
kann man irgendwie ein kleines Tool schreiben und dann

01:41:41.880 --> 01:41:43.460
wird das immer größer und so weiter, aber

01:41:43.460 --> 01:41:45.800
gerade bei Plot-Sachen, man muss

01:41:45.800 --> 01:41:48.020
eigentlich schon mit etwas anfangen, was fast alles kann,

01:41:48.020 --> 01:41:49.740
bevor man irgendwie eine Chance hat,

01:41:49.740 --> 01:41:51.680
was anderes sich durchzusetzen.

01:41:51.680 --> 01:41:53.140
Ja.

01:41:53.140 --> 01:41:55.440
Ja, es gibt da, ich weiß nicht,

01:41:55.440 --> 01:41:57.660
inwiefern Gnuplot das auch

01:41:57.660 --> 01:41:59.780
übernommen hat, das gab ja dieses sehr einflussreiche

01:41:59.780 --> 01:42:01.580
Wort, obwohl das, glaube ich, gar nicht so

01:42:01.580 --> 01:42:04.220
furchtbar alt, Grammar of Graphics

01:42:04.220 --> 01:42:04.600
irgendwie.

01:42:04.600 --> 01:42:07.760
Und unter R

01:42:07.760 --> 01:42:09.680
hat man ja mit ggplot2 irgendwie da so eine

01:42:09.680 --> 01:42:11.680
Umsetzung von im Grunde.

01:42:11.680 --> 01:42:13.720
Und das ist eigentlich ja schon sehr nett, aber ich

01:42:13.720 --> 01:42:15.520
fürchte auch, in Python gibt es da nichts, was

01:42:15.520 --> 01:42:17.680
irgendwie...

01:42:17.680 --> 01:42:19.820
Es gibt

01:42:19.820 --> 01:42:21.820
irgendwie Adaptionen davon

01:42:21.820 --> 01:42:23.680
in Python, aber ob das jetzt

01:42:23.680 --> 01:42:25.120
wirklich genauso gut ist, weiß ich auch nicht.

01:42:25.120 --> 01:42:27.560
Es ist immer noch aktiv irgendwie unter Entwicklung.

01:42:27.560 --> 01:42:29.620
Ich meine, so furchtbar schlecht ist

01:42:29.620 --> 01:42:30.960
Matplotlib auch nicht, aber...

01:42:30.960 --> 01:42:32.440
Nee, nee, nee, es ist...

01:42:32.440 --> 01:42:35.540
Ich möchte jetzt einfach mal eine Parabel plotten.

01:42:35.540 --> 01:42:37.680
So. Und jetzt...

01:42:37.680 --> 01:42:39.520
Ja, und so hast du

01:42:39.520 --> 01:42:41.600
die Gnuplot, was eine rein plot-orientierte

01:42:41.600 --> 01:42:43.220
Programmiersprache ist, ist das eine Zeile.

01:42:43.220 --> 01:42:45.540
Und ja, Matplot

01:42:45.540 --> 01:42:47.160
muss ich... Ich weiß gar nicht, was ich...

01:42:47.160 --> 01:42:49.140
Wie ich das am schnellsten hinbekommen würde.

01:42:49.140 --> 01:42:50.460
Plotplot?

01:42:50.460 --> 01:42:53.600
Ja, den müssen wir schon ein bisschen rumbasteln,

01:42:53.600 --> 01:42:55.700
glaube ich, aber wenn du es einmal definiert hast,

01:42:55.700 --> 01:42:56.600
so dann ist das auch so.

01:42:56.600 --> 01:42:59.460
Wenn mir irgendjemand einfach für fünf Jahre Geld geben sollte oder so,

01:42:59.460 --> 01:43:00.760
würde ich mich daran setzen, dass

01:43:00.760 --> 01:43:03.020
ich einen komplett neuen Album in der Sitzung habe.

01:43:03.020 --> 01:43:04.840
Cool.

01:43:04.840 --> 01:43:07.360
Ja, wir haben noch

01:43:07.360 --> 01:43:09.360
den Lieblingspick natürlich, der Pick,

01:43:09.360 --> 01:43:10.720
der Folge oder sowas.

01:43:10.720 --> 01:43:13.160
Was wäre denn deine Wahl,

01:43:13.160 --> 01:43:15.060
dein bester Pick für ein zweites Modul?

01:43:15.060 --> 01:43:19.360
Ich glaube, eigene Module sind wahrscheinlich

01:43:19.360 --> 01:43:19.900
ausgeschlossen.

01:43:19.900 --> 01:43:23.260
Oh, wenn du so dein eigenes Modul da

01:43:23.260 --> 01:43:24.280
ein bisschen umschmachst, würde ich...

01:43:24.280 --> 01:43:27.360
Jetzt musst du das aber kurz erzählen, was ist denn dein

01:43:27.360 --> 01:43:28.980
eigenes Modul? Nee, nee, nee, mach ich nicht.

01:43:28.980 --> 01:43:29.980
Das war jetzt...

01:43:29.980 --> 01:43:31.980
Ich habe ja auch schon die ganze Zeit darüber geredet.

01:43:31.980 --> 01:43:35.580
Ja, ich glaube,

01:43:35.580 --> 01:43:37.260
das Lieblingsmodul ist wahrscheinlich immer noch

01:43:37.260 --> 01:43:39.200
Numpal, weil es einfach...

01:43:39.200 --> 01:43:41.040
enorm mächtig

01:43:41.040 --> 01:43:43.180
die Sachen bringt, die

01:43:43.180 --> 01:43:45.080
gerade

01:43:45.080 --> 01:43:46.440
ja, in

01:43:46.440 --> 01:43:49.280
Rechnen von großen Datenmengen

01:43:49.280 --> 01:43:51.380
und auch ansatzweise, also nicht mal

01:43:51.380 --> 01:43:54.200
sehr großen Datenmengen, aber auch kleineren Datenmengen

01:43:54.200 --> 01:43:55.660
Dinge bringt, die

01:43:55.660 --> 01:43:57.500
Standard Python nicht hat

01:43:57.500 --> 01:43:58.700
und das, ja,

01:43:58.700 --> 01:44:01.320
ich kann mir, glaube ich, kaum...

01:44:01.320 --> 01:44:03.420
Es gibt sehr wenige Fälle, wo ich es nicht importiere.

01:44:03.420 --> 01:44:04.440
Mhm.

01:44:04.440 --> 01:44:06.560
Und was wäre dein Pick der Woche?

01:44:06.560 --> 01:44:09.140
Ist das auch Numpal?

01:44:09.200 --> 01:44:09.360
Ja, oder?

01:44:09.360 --> 01:44:10.380
Was ist der Pick der Woche?

01:44:10.380 --> 01:44:11.760
Ich weiß es auch nicht.

01:44:11.760 --> 01:44:14.540
Ja, ja, fast.

01:44:14.540 --> 01:44:17.420
Ja, aber ich wollte mir so eine kleine Kategorie einführen.

01:44:17.420 --> 01:44:18.940
Pick der Folge oder sowas, ja.

01:44:18.940 --> 01:44:19.580
Pick der Folge, ja.

01:44:19.580 --> 01:44:22.660
Also, was macht es für mich zum Pick der Folge?

01:44:22.660 --> 01:44:25.480
Das ist das, was ich diese Woche genutzt habe oder was ich diese Woche neu gelernt habe?

01:44:25.480 --> 01:44:26.720
Ja, oder vielleicht irgendwas Aktuelles.

01:44:26.720 --> 01:44:29.040
Das ist ja irgendwas, was so in letzter Zeit als cool aufgefallen ist.

01:44:29.040 --> 01:44:31.080
Du musst nicht gar nichts Aktuelles, da kann doch was ganz Altes sein.

01:44:31.080 --> 01:44:32.140
Einfach was so nochmal so.

01:44:32.140 --> 01:44:33.260
Irgendwas Neues, aber...

01:44:33.260 --> 01:44:34.140
Was soll der Standard-Tipp sein?

01:44:34.140 --> 01:44:37.980
Ihr stellt Fragen.

01:44:39.200 --> 01:44:40.740
Ich kann doch schon mal überlegen.

01:44:40.740 --> 01:44:42.580
Ja, ja, ich habe nämlich auch noch nicht gefragt.

01:44:42.580 --> 01:44:49.920
Also, was ich neulich zum ersten Mal verwendet habe, was ich dann wieder nicht verwendet habe,

01:44:49.920 --> 01:44:52.040
weil es mich dann doch nicht glücklich gemacht hat, war NameTupel.

01:44:52.040 --> 01:44:54.480
Ich habe aber gehört, es gibt jetzt Data Classes.

01:44:54.480 --> 01:44:56.860
Da muss ich mich dazu unbedingt einlesen.

01:44:56.860 --> 01:44:57.460
Ja.

01:44:57.460 --> 01:45:03.000
Ich will nicht dazu sagen, aber es ist wahrscheinlich genau das, was ich...

01:45:03.000 --> 01:45:03.620
Ja, ich glaube schon.

01:45:03.620 --> 01:45:09.080
Ja, beziehungsweise es gibt halt für ältere Python-Versionen auch ein Modul,

01:45:09.200 --> 01:45:10.080
das man einfach so installieren kann.

01:45:10.080 --> 01:45:12.600
Also, es ist jetzt natürlich in der Standard-Python-Bibliothek mit drin,

01:45:12.600 --> 01:45:18.680
beziehungsweise in Python selber, aber das Ding heißt Atris oder so.

01:45:18.680 --> 01:45:23.380
Und das kann sogar noch deutlich mehr als die Data Classes.

01:45:23.380 --> 01:45:29.580
Aber ich glaube auch, dass das Data Classes, da gab es auch in den letzten paar PDF-Treffen einen Talk zu,

01:45:29.580 --> 01:45:31.540
wo halt auch von der Geschwindigkeit wurde gesagt,

01:45:31.540 --> 01:45:34.400
das ist halt alles deutlich besser als NameTupel und so.

01:45:34.400 --> 01:45:38.580
Im Grunde gibt es keinen wirklich tollen Grund mehr,

01:45:39.100 --> 01:45:40.840
außer man braucht jetzt die Indizierbarkeit oder so,

01:45:40.840 --> 01:45:42.300
um NameTupel zu verwenden,

01:45:42.300 --> 01:45:45.620
weil man das mit Data Classes oder Atris halt deutlich besser hinkriegt.

01:45:45.620 --> 01:45:47.360
Ja.

01:45:47.360 --> 01:45:50.240
Ja, das ist auf jeden Fall eine interessante Geschichte.

01:45:50.240 --> 01:45:52.460
Und dein Weg dahin?

01:45:52.460 --> 01:45:54.420
Ja, ich würde tatsächlich...

01:45:54.420 --> 01:45:59.320
Also, was ich in letzter Zeit nochmal angeguckt habe aus unterschiedlichen Gründen

01:45:59.320 --> 01:46:00.980
und dann doch wieder gar nicht so schlecht fand,

01:46:00.980 --> 01:46:02.960
ist Django Guardian.

01:46:02.960 --> 01:46:07.020
Ist halt eine Weckentwicklung, was völlig anders ist.

01:46:09.000 --> 01:46:14.740
Also, da geht es einfach darum, dass man halt häufig das Problem hat,

01:46:14.740 --> 01:46:22.060
dass man Berechtigungen verwalten möchte auf bestimmte Zeilen in der Datenbank.

01:46:22.060 --> 01:46:25.540
Und auf Tabellenebene ist es in Django schon eingebaut,

01:46:25.540 --> 01:46:27.260
dass man da halt Berechtigungen vergeben kann

01:46:27.260 --> 01:46:29.600
und dann halt auch diese Berechtigungen benutzen kann,

01:46:29.600 --> 01:46:31.320
um irgendwie Zugriff darauf zu regeln.

01:46:31.320 --> 01:46:37.860
Aber für Objekte, Einzelobjekte oder Zeilen geht das halt nicht.

01:46:38.900 --> 01:46:42.060
Und Django Guardian erweitert halt das Django-Permissions-Modell darum,

01:46:42.060 --> 01:46:43.040
dass das halt dann doch geht.

01:46:43.040 --> 01:46:45.460
In dem da zwei zusätzliche Tabellen eingeführt werden.

01:46:45.460 --> 01:46:48.180
Ja, der rammt sich dann relativ wüst aus, wenn man das macht.

01:46:48.180 --> 01:46:49.460
Aber es ist...

01:46:49.460 --> 01:46:52.280
Also, man denkt zuerst, das kann nicht gehen oder das ist halt furchtbar.

01:46:52.280 --> 01:46:54.060
Aber nee, es funktioniert tatsächlich.

01:46:54.060 --> 01:46:55.880
Und zwar sieht es ziemlich gut aus.

01:46:55.880 --> 01:46:57.700
Und ja, genau.

01:46:57.700 --> 01:47:00.900
Also, wenn man dieses Problem hat, sollte man sich vielleicht das mal genauer angucken.

01:47:00.900 --> 01:47:03.820
Weil das sieht doch nach einer halbwegs vernünftigen Lösung aus.

01:47:03.820 --> 01:47:06.180
Cool, kann man die Permission in dem Webzug endlich lösen.

01:47:06.180 --> 01:47:08.400
Das ist irgendwie jeder darauf zugreifen, was er will.

01:47:08.800 --> 01:47:10.380
Ja, ich picke Embedded.

01:47:10.380 --> 01:47:12.260
Das habe ich irgendwie zwischendurch entdeckt.

01:47:12.260 --> 01:47:17.540
Das ist so ein Anfänger-Security-Hinweis, was so alles sicherheitsrelevant sein könnte

01:47:17.540 --> 01:47:18.920
in einem Code, den man so in Python geschrieben hat.

01:47:18.920 --> 01:47:21.540
Da habe ich noch eine Sache, die mich überhaupt nicht interessiert.

01:47:21.540 --> 01:47:25.100
Nicht ganz viel zu machen.

01:47:25.100 --> 01:47:26.440
Das ist auch nicht so, glaube ich, so ganz tiefgehend.

01:47:26.440 --> 01:47:28.780
Aber so für die ersten Sachen, dass man so ein bisschen was versteht, was man da tut.

01:47:28.780 --> 01:47:30.060
Fand ich das ganz spannend.

01:47:30.060 --> 01:47:31.860
Erst mal so reinzugucken.

01:47:31.860 --> 01:47:35.060
Ja, cool.

01:47:35.060 --> 01:47:36.420
Ich weiß nicht.

01:47:36.420 --> 01:47:37.240
Haben wir noch irgendwas?

01:47:38.700 --> 01:47:39.060
Ich weiß ja auch nicht.

01:47:39.060 --> 01:47:40.640
Es ist ja ein Geschlossener.

01:47:40.640 --> 01:47:41.880
Ich kann noch was erzählen.

01:47:41.880 --> 01:47:42.520
Ich kann immer noch was erzählen.

01:47:42.520 --> 01:47:45.420
Also ich meine, wahrscheinlich, wenn ihr mich lasst,

01:47:45.420 --> 01:47:47.280
wir gehen nicht einfach fünf Stunden lang an die Schule.

01:47:47.280 --> 01:47:47.820
Ja, klar.

01:47:47.820 --> 01:47:50.380
Das ist ja richtig schlecht.

01:47:50.380 --> 01:47:53.400
Aber vielleicht noch eine lustige Sache zum Thema, was kann man alles...

01:47:53.400 --> 01:47:54.760
Ich glaube, ich habe mein Mikrofon vorgestellt.

01:47:54.760 --> 01:47:55.060
Sorry.

01:47:55.060 --> 01:47:58.560
Kann das sein, dass ich irgendwie lauter bin oder so?

01:47:58.560 --> 01:47:59.040
Okay, gut.

01:47:59.040 --> 01:47:59.420
Super das.

01:47:59.420 --> 01:48:02.600
Genau.

01:48:02.600 --> 01:48:05.280
Was ich auch noch gemacht habe, was vielleicht so,

01:48:05.280 --> 01:48:08.260
weil es jetzt furchtbar schwer zu erklären sein wird, ist,

01:48:08.600 --> 01:48:10.920
ich habe mich ja auch mit der Frage beschäftigt.

01:48:10.920 --> 01:48:13.080
Also wir bauen Ökosystemmodelle, haben wir ja schon geredet.

01:48:13.080 --> 01:48:15.620
Und irgendwann bin ich auf die Frage gekommen,

01:48:15.620 --> 01:48:19.260
wie macht man das eigentlich richtig,

01:48:19.260 --> 01:48:24.360
beziehungsweise wir sind auf ein Problem gestoßen mit einem Modell,

01:48:24.360 --> 01:48:26.620
dass wenn ich jetzt, ich habe meine Spezies,

01:48:26.620 --> 01:48:29.860
die da irgendwas machen, also von Tieren oder Bakterien oder was auch immer.

01:48:29.860 --> 01:48:32.200
Und es ist keines passiert.

01:48:32.200 --> 01:48:34.200
Also nehmen wir mal an, wir haben Elefanten und Giraffen

01:48:34.200 --> 01:48:36.000
oder was auch immer, was da einfach vorzustellen ist.

01:48:36.000 --> 01:48:37.780
Und, ähm,

01:48:38.500 --> 01:48:38.840
jetzt,

01:48:38.840 --> 01:48:43.920
mein Modell sagt immer, eine Spezies ist eine Variable,

01:48:43.920 --> 01:48:48.040
also die Menge an Individuen einer Spezies.

01:48:48.040 --> 01:48:49.320
Ähm,

01:48:49.320 --> 01:48:51.920
und darauf baue ich ein ganzes Modell auf.

01:48:51.920 --> 01:48:52.780
Und, ähm,

01:48:52.780 --> 01:48:54.480
einfach weil ich diese Vereinfachung,

01:48:54.480 --> 01:48:56.160
die Vereinfachung, die ich mache, dass ich sage,

01:48:56.160 --> 01:48:58.320
alle diese, alle Elefanten sind gleich,

01:48:58.320 --> 01:48:59.760
alle Giraffen sind gleich, was auch immer.

01:48:59.760 --> 01:49:01.600
Und, ähm,

01:49:01.600 --> 01:49:04.660
ja, eine Sache, die wir dann festgestellt haben,

01:49:04.660 --> 01:49:06.260
ist, dass gewisse Modelle die Eigenschaften haben,

01:49:06.260 --> 01:49:08.480
dass ich jetzt irgendwie aus Versehen,

01:49:08.480 --> 01:49:10.460
es nicht hinkriege, alle Elefanten korrekt

01:49:10.460 --> 01:49:11.740
in eine Spezies zuzuordnen.

01:49:11.740 --> 01:49:15.120
Angenommen, die Hälfte davon sind blau und rot angemalt.

01:49:15.120 --> 01:49:15.880
Nashörner.

01:49:15.880 --> 01:49:18.600
Ja, nee, also Nashörner auch,

01:49:18.600 --> 01:49:20.040
aber eigentlich sind es wirklich alles Elefanten.

01:49:20.040 --> 01:49:21.320
Sie haben genau die gleichen Eigenschaften,

01:49:21.320 --> 01:49:22.680
es sind nur die Hälfte von ihnen sind halt rot.

01:49:22.680 --> 01:49:24.500
Rosa, nehmen wir rosa Elefanten,

01:49:24.500 --> 01:49:25.800
ist immer gut, über rosa Elefanten zu reden.

01:49:25.800 --> 01:49:27.820
Ähm,

01:49:27.820 --> 01:49:30.480
und dann haben wir festgestellt, dass gewisse Modelle

01:49:30.480 --> 01:49:32.000
dann andere Ergebnisse produzieren,

01:49:32.000 --> 01:49:33.440
wenn wir das machen.

01:49:33.440 --> 01:49:36.460
Also wenn wir irgendwie eine Spezies nehmen und die aufteilen,

01:49:36.460 --> 01:49:37.420
künstlich.

01:49:38.380 --> 01:49:40.740
Was nicht gut ist, denn ich möchte natürlich,

01:49:40.740 --> 01:49:43.100
dass ein Modell, wenn ich dieselbe Situation

01:49:43.100 --> 01:49:44.940
zweimal beschreibe, da soll auch tunlich dasselbe

01:49:44.940 --> 01:49:45.580
rauskommen.

01:49:45.580 --> 01:49:48.680
Und, ähm, okay,

01:49:48.680 --> 01:49:50.020
was hat das jetzt mit Python zu tun?

01:49:50.020 --> 01:49:53.100
Ich bin dann irgendwann hingegangen und habe

01:49:53.100 --> 01:49:54.880
festgestellt, wir haben dieses Problem,

01:49:54.880 --> 01:49:56.520
jetzt wollen wir verstehen, wann taucht dieses Problem auf?

01:49:56.520 --> 01:49:58.880
Und dann habe ich mit Python und SymPy

01:49:58.880 --> 01:50:00.200
automatisierte Tests

01:50:00.200 --> 01:50:02.240
geschrieben für Modelle.

01:50:02.240 --> 01:50:04.780
Ähm, das heißt, ich konnte eben einfach

01:50:04.780 --> 01:50:06.640
ein Modell geben, hatte einige Rechnungen gemacht,

01:50:06.640 --> 01:50:08.340
hatte dann eben die Hälfte der Elefanten blau,

01:50:08.360 --> 01:50:10.280
angemalt und

01:50:10.280 --> 01:50:12.260
mir automatisch gesagt, das ist jetzt ein gutes Modell

01:50:12.260 --> 01:50:13.400
und das ist ein schlechtes Modell.

01:50:13.400 --> 01:50:16.280
Also das ist auch eine, ja, eine etwas

01:50:16.280 --> 01:50:18.540
exotischere Sache, die ich dann mit Python oder mit

01:50:18.540 --> 01:50:20.620
genöst habe,

01:50:20.620 --> 01:50:22.280
wo man auch sowas wie SymPy eben

01:50:22.280 --> 01:50:24.160
benutzen kann, dass man solche Rechnungen

01:50:24.160 --> 01:50:25.600
automatisieren kann, die man sonst,

01:50:25.600 --> 01:50:27.980
sonst würde ich wahrscheinlich heute noch da sitzen

01:50:27.980 --> 01:50:29.960
und das Ganze auf dem Papier durchrechnen.

01:50:29.960 --> 01:50:33.780
Dann starten sich dann die Blöcke irgendwann, ja.

01:50:33.780 --> 01:50:35.620
Ja, also das ist,

01:50:35.620 --> 01:50:38.300
ich meine, und ich habe jetzt immer noch,

01:50:38.300 --> 01:50:40.300
ich habe trotzdem einen Block nur vollgeschrieben

01:50:40.300 --> 01:50:41.260
mit irgendwelchen Formeln.

01:50:41.260 --> 01:50:44.640
Tja.

01:50:44.640 --> 01:50:48.360
Ja, aber ist

01:50:48.360 --> 01:50:50.420
dann sozusagen rausgekommen, woran das

01:50:50.420 --> 01:50:52.260
lag, oder ist das irgendwie, das liegt

01:50:52.260 --> 01:50:53.720
dann am Modell selber wahrscheinlich irgendwie?

01:50:53.720 --> 01:50:56.380
Ja, also am Ende habe ich eine Regel gefunden für Modelle,

01:50:56.380 --> 01:50:58.000
die genau das machen.

01:50:58.000 --> 01:51:00.260
Das ist jetzt auch so gerade meine aktuelle

01:51:00.260 --> 01:51:01.960
Arbeit, wo ich noch irgendwie gucken muss,

01:51:01.960 --> 01:51:04.080
dass ich das veröffentlicht kriege,

01:51:04.080 --> 01:51:05.660
oder beziehungsweise, dass die Leute das wertschätzen.

01:51:05.660 --> 01:51:07.800
Und dann am Ende braucht man den Test nicht mehr.

01:51:07.800 --> 01:51:08.120
Das,

01:51:08.280 --> 01:51:10.060
eigentlich wäre es natürlich lustig gewesen,

01:51:10.060 --> 01:51:12.160
wenn man sagen würde, wir finden es nicht heraus, verdammt, scheiße.

01:51:12.160 --> 01:51:14.320
Aber hier ist eine Software, die euch zur Frage

01:51:14.320 --> 01:51:15.300
annähernd beantwortet.

01:51:15.300 --> 01:51:20.100
Hätte was für sich gehabt, aber nein, wir haben am Ende

01:51:20.100 --> 01:51:22.420
eine Regel gefunden, wann genau es der Fall ist

01:51:22.420 --> 01:51:24.360
und jetzt braucht man es dann nicht mehr.

01:51:24.360 --> 01:51:26.140
Aber natürlich hat es enorm geholfen,

01:51:26.140 --> 01:51:28.100
irgendwie ein Gefühl dafür zu kriegen, wann das passiert.

01:51:28.100 --> 01:51:30.040
Ja, klar. Unter welchen Bedingungen,

01:51:30.040 --> 01:51:31.720
warum und, ja.

01:51:31.720 --> 01:51:33.980
Das erstmal so da ein bisschen rumzuspielen.

01:51:33.980 --> 01:51:35.800
Ja.

01:51:35.800 --> 01:51:37.840
Das war irgendwie...

01:51:38.280 --> 01:51:40.100
Ja, eine Sache, wo ich dann simpel

01:51:40.100 --> 01:51:42.080
wirklich gelernt habe, wertzuschätzen.

01:51:42.080 --> 01:51:43.860
Ah.

01:51:43.860 --> 01:51:46.640
Cool.

01:51:46.640 --> 01:51:48.220
Ja, würde ich sagen,

01:51:48.220 --> 01:51:49.720
dann sind wir doch schon so quasi durch, ne?

01:51:49.720 --> 01:51:51.660
Ja, ich würde auch sagen, dann sind wir doch mal tatsächlich durch.

01:51:51.660 --> 01:51:52.460
Vielen Dank, dass du da warst, Gerrit.

01:51:52.460 --> 01:51:56.680
Ja, Gerrit, vielen Dank, dass du da warst.

01:51:56.680 --> 01:51:57.840
Ja, vielen Dank.

01:51:57.840 --> 01:51:59.180
Hat mich auch gefreut, hier zu sein.

01:51:59.180 --> 01:52:01.820
Einfach über mich selbst reden,

01:52:01.820 --> 01:52:04.020
zwei Stunden lang, nenn ich ganz...

01:52:04.020 --> 01:52:05.340
Ja, ja.

01:52:05.340 --> 01:52:07.360
Fast.

01:52:07.360 --> 01:52:07.960
Ja.

01:52:08.280 --> 01:52:08.440
Ja.

01:52:08.440 --> 01:52:10.620
Das schaut doch hier aus, auch in längeren Sachen, ja.

01:52:10.620 --> 01:52:12.760
Und wir haben es tatsächlich geschafft, so ein bisschen wie der Luft,

01:52:12.760 --> 01:52:14.680
der Wind ist gerade aufgekommen, vielleicht könnt ihr euch erinnern,

01:52:14.680 --> 01:52:15.360
wenn wir uns heute aufgenommen haben.

01:52:15.360 --> 01:52:16.780
Ich bin sehr gespannt, wie das mit den...

01:52:16.780 --> 01:52:19.380
Ja, also es ging nicht. Wir mussten Ventilatoren aufstellen.

01:52:19.380 --> 01:52:23.420
Nachdem wir in der letzten Episode das Audio schon versaut haben,

01:52:23.420 --> 01:52:25.080
dachte ich mir so, gut, vielleicht können wir noch einen draufsetzen.

01:52:25.080 --> 01:52:26.760
Ja, ja.

01:52:26.760 --> 01:52:28.800
Nicht alle die Verzweiflung treiben mit Ventilatoren-Geräusch,

01:52:28.800 --> 01:52:29.180
aber hoffentlich...

01:52:29.180 --> 01:52:30.220
Ich kann noch mal fächern.

01:52:30.220 --> 01:52:35.780
Hoffentlich wird das irgendwie einer der Post-Processing-Algorithmen

01:52:35.780 --> 01:52:37.520
irgendwie magisch beseitigen.

01:52:37.940 --> 01:52:40.160
Ja, wenn sie sonst beschwert euch bei uns und...

01:52:40.160 --> 01:52:41.340
Ja, wisst ihr, ihr könnt immer E-Mails schreiben an

01:52:41.340 --> 01:52:43.040
hallo-at-pison-podcast.de

01:52:43.040 --> 01:52:45.040
und ihr könnt auch gerne kommentieren.

01:52:45.040 --> 01:52:47.380
Auf der Webseite gibt es eine schöne Kommentarfunktion.

01:52:47.380 --> 01:52:49.120
Ihr könnt uns überall abonnieren,

01:52:49.120 --> 01:52:50.420
wo ihr gerade lustig seid, bei uns gewogen,

01:52:50.420 --> 01:52:52.320
erzählt weiter, was es uns gibt und...

01:52:52.320 --> 01:52:54.900
Ja, wo ihr auch immer gerade seid, was auf der Tageseite ist auch,

01:52:54.900 --> 01:52:55.600
Tagessnachtzeit...

01:52:55.600 --> 01:52:56.680
Schnappt nicht an Hitzschlag.

01:52:56.680 --> 01:52:58.760
Ja, bisschen warm.

01:52:58.760 --> 01:53:01.660
Ja, wir hören uns. Viel Spaß und bis später.

01:53:01.660 --> 01:53:02.400
Tschüss.
