WEBVTT

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

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

00:00:10.600 --> 00:00:11.200
Wir haben gerade Sommer.

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

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

00:00:19.040 --> 00:00:20.800
Ja, vielleicht dachte ich erst mal hallo Gerrit kurz und dann...

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

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

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

00:00:26.940 --> 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:31.500 --> 00:00:49.320
Ja, ich bin Gerrit. Ich bin von Haus aus Physiker und beschäftige mich hauptsächlich mit komplexen Systemen und deren Anwendung auf diverse Fachgebiete, Neurophysik, zum Teil auch Wirtschaft und zurzeit Biologie und Ökosysteme aus Mikroben.

00:00:50.140 --> 00:00:52.180
Mikrobeller-Analyst habe ich mir aufgeschrieben.

00:00:52.520 --> 00:00:53.560
Das hast du dir aber ausgedacht.

00:00:53.560 --> 00:00:54.860
Wenn überhaupt Mikrobiell.

00:00:55.240 --> 00:00:57.140
Okay, Mikrobieller-Analytiker.

00:00:57.420 --> 00:00:57.900
Ja, alles klar.

00:00:58.960 --> 00:01:05.740
Und ja, nutze dafür Python, um Sachen zu simulieren, um Daten zu analysieren

00:01:05.740 --> 00:01:08.680
und manchmal auch, um ganz komische Sachen mit symbolischem Rechnen zu machen.

00:01:09.100 --> 00:01:09.900
Und du spielst Golf.

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

00:01:16.320 --> 00:01:19.340
Da reden wir, also keine Ahnung, wollen wir direkt darüber, über Golf reden?

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

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

00:01:25.260 --> 00:01:27.020
Ja, auf jeden Fall. Dann mache ich hier schon mal die

00:01:27.020 --> 00:01:29.060
erste News-Kapitelmarke.

00:01:31.540 --> 00:01:32.000
Alles klar.

00:01:32.820 --> 00:01:33.620
Ja, was gab es denn so?

00:01:33.620 --> 00:01:35.580
Irgendwas wie PyOxidizer

00:01:35.580 --> 00:01:37.640
oder sowas vorgestern, so eine News raus.

00:01:37.960 --> 00:01:38.960
Ja, das genau.

00:01:40.300 --> 00:01:41.420
PyOxidizer ist irgendwie so

00:01:41.420 --> 00:01:43.520
eine Software, mit der es möglich

00:01:43.520 --> 00:01:44.060
sein soll,

00:01:44.860 --> 00:01:46.760
so eine Python-Applikation

00:01:46.760 --> 00:01:49.440
ein Standalone-Executable

00:01:49.440 --> 00:01:51.520
zu verwandeln, dass man dann einfach irgendwo hinschütten

00:01:51.520 --> 00:01:53.580
kann und dann läuft das da. Und das halt

00:01:53.580 --> 00:01:55.520
auch auf unterschiedlichen Plattformen, das heißt auf

00:01:55.520 --> 00:01:57.120
Unix ganz genauso wie auf

00:01:57.120 --> 00:01:58.400
Windows und

00:01:58.400 --> 00:02:01.680
das ganze Ding ist irgendwie so Rust-basiert,

00:02:01.860 --> 00:02:03.920
also das packt den Python-Interpreter

00:02:03.920 --> 00:02:04.960
halt irgendwie in

00:02:04.960 --> 00:02:06.380
in

00:02:06.380 --> 00:02:09.480
ein Rust-Programm, also das ganze Ding ist

00:02:09.480 --> 00:02:11.360
sozusagen irgendwie hinterher das, was auch

00:02:11.360 --> 00:02:13.280
dabei rausfallen würde, wenn man einfach ein Rust-Programm

00:02:13.280 --> 00:02:13.660
kompiliert

00:02:13.660 --> 00:02:17.520
und ja, man kann alle möglichen

00:02:17.520 --> 00:02:19.640
Dinge noch mit dazu, man kann auch Rust-Node mit dazu

00:02:19.640 --> 00:02:21.420
So kann man tatsächlich Python irgendwo mithin shippen, also man braucht halt

00:02:21.420 --> 00:02:23.340
Python mehr mitmachen, wenn man irgendwo

00:02:23.340 --> 00:02:25.780
was deliveren will, beendable oder sowas,

00:02:25.860 --> 00:02:27.800
auf den Server gehen, hat man das dabei und dann läuft

00:02:27.800 --> 00:02:29.380
das einfach direkt oder auf Windows oder sowas,

00:02:29.460 --> 00:02:31.660
für irgendwelche Nutzer, die halt damit nichts zu tun haben wollen,

00:02:32.120 --> 00:02:34.020
die füllen dann die SpyOxygen aus und sind dann direkt...

00:02:34.020 --> 00:02:36.020
Ja, also das hatten wir letztes Mal auch schon

00:02:36.020 --> 00:02:37.880
und darauf nimmt

00:02:37.880 --> 00:02:39.380
auch quasi dieses

00:02:39.380 --> 00:02:42.280
Announcement, der Announcement-Blog-Post,

00:02:42.540 --> 00:02:43.480
den ich da heute gesehen habe,

00:02:43.840 --> 00:02:45.740
Bezug, dass es für

00:02:45.740 --> 00:02:47.640
Python keine so richtig konsistente

00:02:47.640 --> 00:02:50.380
Story

00:02:50.380 --> 00:02:51.800
dazu gibt, wie das denn jetzt

00:02:51.800 --> 00:02:53.740
irgendwie installiert wird auf einer Maschine.

00:02:53.880 --> 00:02:56.060
Das wäre wie so ein Black Swan, also eine der

00:02:56.060 --> 00:02:57.780
großen Bedrohungen, die so der Python-Community

00:02:57.780 --> 00:02:59.860
vorstellt. Das ist tatsächlich genau. Und da gab es

00:02:59.860 --> 00:03:02.040
einen Vortrag, also das war

00:03:02.040 --> 00:03:04.080
die Keynote von der diesjährigen

00:03:04.080 --> 00:03:06.180
PyCon US

00:03:06.180 --> 00:03:08.060
von Russell

00:03:08.060 --> 00:03:09.980
Keith McGee, der sagte, naja, das

00:03:09.980 --> 00:03:12.000
ist halt eine potenziell fatale

00:03:12.000 --> 00:03:13.920
Bedrohung eigentlich für Python als

00:03:13.920 --> 00:03:15.960
Sprache, dass das irgendwann mal den

00:03:15.960 --> 00:03:17.720
Zugang halt abschneiden kann zu allem.

00:03:18.440 --> 00:03:19.940
Also auf mobilen Geräten

00:03:19.940 --> 00:03:22.000
ist es ja jetzt schon im Grunde so. Da kommt man halt mit Python

00:03:22.000 --> 00:03:23.360
nicht drauf. Und

00:03:23.360 --> 00:03:25.560
ja, wenn man

00:03:25.560 --> 00:03:27.900
keine solche Story hat, dann ist das halt echt

00:03:27.900 --> 00:03:29.840
blöd unter Umständen. Also es macht für Entwickler nicht so

00:03:29.840 --> 00:03:31.820
einen Unterschied. Das ist ja auch die Hauptzielgruppe,

00:03:31.860 --> 00:03:33.720
da ist es dann egal. Da macht man sich sein

00:03:33.720 --> 00:03:34.920
Virtual Environment und

00:03:34.920 --> 00:03:37.780
benutzt Pip und vielleicht noch ein paar

00:03:37.780 --> 00:03:39.620
andere Tools und so und hat damit kein Problem.

00:03:39.780 --> 00:03:41.860
Aber wenn man jetzt einen Endanwender hätte

00:03:41.860 --> 00:03:43.800
draußen, der... Ja, der will vielleicht gar nicht wissen,

00:03:43.880 --> 00:03:45.940
was für eine Sprache dahinter steckt. Genau, dem interessiert

00:03:45.940 --> 00:03:47.220
das nicht, ob das Python ist oder C.

00:03:48.560 --> 00:03:49.900
Genau, genau. Der möchte einfach

00:03:49.900 --> 00:03:52.080
nur irgendein Problem gelöst haben und gar nicht

00:03:52.080 --> 00:03:54.280
ein Problem bekommen zusätzlich.

00:03:54.920 --> 00:03:56.140
Und das ist natürlich momentan

00:03:56.140 --> 00:03:58.160
so ein bisschen doof, gerade für Windows.

00:03:58.340 --> 00:04:00.100
Also für Unix gibt es da ja schon was.

00:04:01.420 --> 00:04:02.240
Also ehrlich

00:04:02.240 --> 00:04:03.480
gesagt weiß ich davon auch nur, weil

00:04:03.480 --> 00:04:06.220
derjenige, der das

00:04:06.220 --> 00:04:08.180
entwickelt hat, hier auch

00:04:08.180 --> 00:04:09.120
in Düsseldorf oder die

00:04:09.120 --> 00:04:12.080
Düsseldorfer Python User Group

00:04:12.080 --> 00:04:12.880
irgendwie

00:04:12.880 --> 00:04:16.020
gegründet hat oder betreut

00:04:16.020 --> 00:04:16.640
irgendwie

00:04:16.640 --> 00:04:19.280
Markentree Lemberg und

00:04:19.280 --> 00:04:23.220
der hat, genau, das ist uralt,

00:04:23.280 --> 00:04:24.860
das ist irgendwie schon 20 Jahre alt oder so.

00:04:24.940 --> 00:04:25.820
Ja, ist schon ein 90er schon.

00:04:27.260 --> 00:04:28.400
Python 1, was war das?

00:04:28.760 --> 00:04:31.160
Ja, ich weiß es nicht mehr genau, aber es ist auf jeden Fall schon

00:04:31.160 --> 00:04:33.220
sehr alt und war halt,

00:04:33.600 --> 00:04:35.100
er hatte das irgendwann mal geschrieben, um

00:04:35.100 --> 00:04:37.220
damals

00:04:37.220 --> 00:04:38.500
die ganzen Hoster konnten nur

00:04:38.500 --> 00:04:40.900
Perl, irgendwie da Perl war davor installiert

00:04:40.900 --> 00:04:43.020
und, aber man konnte mit

00:04:43.020 --> 00:04:44.440
CGI auch beliebige

00:04:44.440 --> 00:04:46.900
Programme sozusagen hochladen

00:04:46.900 --> 00:04:48.580
per FTP irgendwie auf seinen Webspace

00:04:48.580 --> 00:04:50.660
und wenn das halt ausführbar war, dann

00:04:50.660 --> 00:04:53.020
hat das halt auch funktioniert

00:04:53.020 --> 00:04:54.980
und er hat dann halt ein ganzes Python

00:04:54.980 --> 00:04:57.040
und seine komplette Applikation halt

00:04:57.040 --> 00:04:59.140
in ein Executable reingepackt

00:04:59.140 --> 00:05:01.080
und das dann halt als CGI-Ding laufen

00:05:01.080 --> 00:05:03.100
lassen können und konnte dann halt auch

00:05:03.100 --> 00:05:05.220
auf einem Hoster, der eigentlich nur ein Perl konnte

00:05:05.220 --> 00:05:06.720
oder so, halt sein Python

00:05:06.720 --> 00:05:08.980
seine Python-Skripte hosten und

00:05:08.980 --> 00:05:11.140
ja, das

00:05:11.140 --> 00:05:13.120
hat auf Unix schon immer super funktioniert

00:05:13.120 --> 00:05:14.620
ist jetzt auch inzwischen irgendwie

00:05:14.620 --> 00:05:17.180
läuft das auf aktuellen Python-Versionen

00:05:17.180 --> 00:05:21.200
Also ich glaube, seit dem letzten PyTDF-Sprint auch auf 3.7.

00:05:22.280 --> 00:05:24.900
Und das ist ziemlich nett, das Ganze.

00:05:26.640 --> 00:05:28.960
Man kann da sogar noch so nette Dinge machen wie,

00:05:31.540 --> 00:05:34.420
da das, es beruht irgendwie darauf,

00:05:34.620 --> 00:05:36.580
dass man, glaube ich, das Modul,

00:05:36.660 --> 00:05:37.700
das irgendwie ausgeführt wird,

00:05:37.780 --> 00:05:41.300
oder der Entry Point ist halt irgendwie in einem Zip-File,

00:05:41.400 --> 00:05:42.080
das halt...

00:05:42.080 --> 00:05:43.440
Das hört sich jetzt gerade ein bisschen kompliziert an.

00:05:43.440 --> 00:05:46.320
Also was man tun kann, ist, man kann halt

00:05:46.320 --> 00:05:48.380
eigene Sachen per ZIP irgendwie

00:05:48.380 --> 00:05:49.940
einpacken, dann per Cut hinten an das

00:05:49.940 --> 00:05:52.120
Binary dranhängen und dann wird das halt ausgeführt zum Beispiel.

00:05:52.600 --> 00:05:54.460
Ah ja, cool, also eigene Pakete

00:05:54.460 --> 00:05:55.540
und so. Ja, weil das

00:05:55.540 --> 00:05:58.080
Binary irgendwie selbst hinten dran

00:05:58.080 --> 00:05:59.460
schon ZIP ist oder ich weiß es nicht mehr genau.

00:05:59.780 --> 00:06:01.800
Also man kann damit sehr, sehr lustige Dinge tun

00:06:01.800 --> 00:06:04.480
und von der Größe her,

00:06:05.200 --> 00:06:06.280
wenn man das

00:06:06.280 --> 00:06:08.000
irgendwie so ein bisschen optimiert, dann

00:06:08.000 --> 00:06:10.140
ist das, glaube ich, irgendwie so knapp 5 MB

00:06:10.140 --> 00:06:11.900
groß oder so, was dabei rausfällt normalerweise

00:06:11.900 --> 00:06:13.740
und da ist halt die Standard-Bibliothek nicht komplett drin,

00:06:13.800 --> 00:06:14.420
aber zum großen Teil.

00:06:16.280 --> 00:06:17.940
Ja, und ich weiß

00:06:17.940 --> 00:06:19.700
jetzt nicht, hab jetzt... Ja, aber jetzt kriegst du eine nette Alternative,

00:06:19.820 --> 00:06:20.820
das hört sich ganz nett an, ne?

00:06:20.820 --> 00:06:23.880
Genau, der Vorteil bei PyAxidizer

00:06:23.880 --> 00:06:25.720
ist halt, dass das auf Windows halt auch funktioniert,

00:06:26.060 --> 00:06:27.180
was mit PyRun halt nicht geht.

00:06:27.860 --> 00:06:29.560
Hat jemand von euch von der PyCon

00:06:29.560 --> 00:06:31.480
2019 irgendwelche Talks gehört,

00:06:31.580 --> 00:06:33.640
Talks gesehen, irgendwas Interessantes noch mitgebracht?

00:06:34.560 --> 00:06:35.780
Also ich hatte einige Sachen gesehen, die ich mir natürlich

00:06:35.780 --> 00:06:37.680
wieder interessierte, war irgendwie, dass ein bisschen Musik wieder

00:06:37.680 --> 00:06:39.720
was dabei war mit Foxtrot von Jessica Garson,

00:06:39.720 --> 00:06:40.200
war ganz nett.

00:06:41.660 --> 00:06:44.160
Den hast du aber dann gesehen quasi tatsächlich.

00:06:44.860 --> 00:06:46.280
Ja, ja, ich habe irgendwie aber nur kurz reingeguckt.

00:06:46.360 --> 00:06:48.280
Ich muss das immer noch auf meiner Liste zu Ende schauen.

00:06:48.420 --> 00:06:50.040
Das gibt es ja da irgendwie auf YouTube so ein bisschen.

00:06:50.580 --> 00:06:53.680
Ja, und ich habe gehört, Pinterest ist jetzt bald Python 3 oder so.

00:06:54.640 --> 00:06:57.100
Ach, ich dachte, die wären schon längst irgendwie umgestiegen.

00:06:57.500 --> 00:06:59.660
Aber das war dann wahrscheinlich irgendwie Instagram oder so.

00:06:59.660 --> 00:07:03.900
Da gab es so eine Riesendamme, die auch viel zu veröffentlicht, glaube ich,

00:07:03.980 --> 00:07:04.960
wie sie da umgestiegen sind.

00:07:05.600 --> 00:07:07.160
Aber bei Pinterest, dass die auf Python 3 umsteigen,

00:07:07.240 --> 00:07:08.660
ist natürlich jetzt irgendwie so ein bisschen...

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

00:07:11.660 --> 00:07:16.920
Die letzten, die so umsteigen.

00:07:18.680 --> 00:07:19.560
Ja, ich habe gehört, also

00:07:19.560 --> 00:07:21.940
der Python-Fu, also der Niklas, der war

00:07:21.940 --> 00:07:23.480
jetzt auch schon einmal bei uns hier.

00:07:24.120 --> 00:07:25.980
Die haben jetzt ein Tutorial für Python 2.7

00:07:25.980 --> 00:07:27.740
und der Python 3 veröffentlicht. Das fand ich

00:07:27.740 --> 00:07:28.380
sehr lustig.

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

00:07:31.780 --> 00:07:33.760
Ja. Nee, aber ansonsten

00:07:33.760 --> 00:07:35.480
habe ich auch tatsächlich im Grunde nichts

00:07:35.480 --> 00:07:37.340
wirklich, was irgendwie an tollen Dingen

00:07:37.340 --> 00:07:37.960
passiert wäre.

00:07:39.260 --> 00:07:41.560
Aber immerhin ist ja schon so ein bisschen

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

00:07:43.280 --> 00:07:45.360
Sonst machen wir dann nächstes Mal einfach wieder eine große News-Section und

00:07:45.360 --> 00:07:47.440
fangen jetzt einfach an mit unserem Scientific-Thema.

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

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

00:07:50.580 --> 00:07:52.200
Nee, ich spiele, wenn überhaupt, Code-Golf.

00:07:53.740 --> 00:07:55.240
Zurzeit auch ehrlich gesagt nicht mehr so viel.

00:07:55.360 --> 00:07:57.160
Irgendwann, wenn man das so ein paar Jahre

00:07:57.160 --> 00:07:59.280
gemacht hat, hat man alles gesehen, was es

00:07:59.280 --> 00:08:00.880
zu sehen ist. Jetzt erst mal für die

00:08:00.880 --> 00:08:03.040
ungebeten Hörer, was ist das denn überhaupt?

00:08:03.220 --> 00:08:05.180
Code-Golf. Also Code-Golf ist die

00:08:05.180 --> 00:08:07.400
Aufgabe, dass man versucht, irgendeine

00:08:07.400 --> 00:08:09.080
Programmieraufgabe, zum Beispiel programmiere die

00:08:09.080 --> 00:08:10.800
Fakultät oder was auch immer,

00:08:11.360 --> 00:08:15.240
mit möglichst wenig Zeichen zu lösen

00:08:15.240 --> 00:08:17.440
in einer gegebenen Programmiersprache in der Regel.

00:08:17.580 --> 00:08:18.760
Oder man kann es auch allgemein machen,

00:08:18.920 --> 00:08:20.480
aber da wir jetzt über Python reden

00:08:20.480 --> 00:08:22.940
und für die meisten Leute das Interessante ist,

00:08:22.940 --> 00:08:23.980
in einer Programmiersprache zu machen.

00:08:24.680 --> 00:08:26.620
Und ja, ohne Rücksicht auf irgendwelche Regeln.

00:08:27.800 --> 00:08:32.540
Und das kann Spaß machen, offensichtlicherweise,

00:08:32.620 --> 00:08:34.420
dass man einfach mal alle Regeln fallen lassen kann

00:08:34.420 --> 00:08:36.300
und wild böse programmieren kann.

00:08:36.320 --> 00:08:36.820
Ich kann mich noch daran erinnern,

00:08:36.920 --> 00:08:37.820
ich saß mal in so einem Talk von dir,

00:08:37.920 --> 00:08:39.820
da war ich immer noch ein absoluter Anfänger

00:08:39.820 --> 00:08:41.620
weil ich habe nichts verstanden von dem, was du da erzählst.

00:08:42.180 --> 00:08:43.680
Irgendwas funktionierte da, aber dann irgendwie, ja,

00:08:43.800 --> 00:08:44.900
okay, warum machen wir das jetzt? Keine Ahnung.

00:08:45.380 --> 00:08:47.820
Und ja, also die zweite Sache, warum man es macht,

00:08:48.040 --> 00:08:49.340
wenn wir mal dabei bleiben, ist,

00:08:49.620 --> 00:08:51.940
dass man auch wirklich was über die Programmiersprache lernt

00:08:51.940 --> 00:08:53.440
oder über das Programmieren im Allgemeinen,

00:08:54.040 --> 00:08:55.900
weil man eben auch darüber nachdenkt,

00:08:56.000 --> 00:08:58.280
gewisse Probleme mit ganz neuen Algorithmen zu lösen,

00:08:58.700 --> 00:09:00.760
zum Beispiel rekursive Algorithmen

00:09:00.760 --> 00:09:03.600
statt irgendwelchen Schleifen oder, oder, oder.

00:09:04.040 --> 00:09:07.120
Und ja, das macht einfach sehr viel Spaß,

00:09:07.200 --> 00:09:09.500
wenn man das ab und zu macht und man lernt auch viel.

00:09:09.500 --> 00:09:10.960
Da gibt es auch so Wettbewerbe oder sowas, ne?

00:09:10.960 --> 00:09:13.260
Ist das so richtig mit 18 Löchern oder wie spielt man das?

00:09:13.580 --> 00:09:15.180
Ne, also es gibt natürlich Webseiten,

00:09:15.240 --> 00:09:17.080
wo man dann seine Lösung veröffentlichen kann und dann sagen,

00:09:17.180 --> 00:09:19.800
okay, ich habe das jetzt kürzer gelöst als alle anderen

00:09:19.800 --> 00:09:23.060
oder zumindest kürzer in dieser Programmiersprache gelöst

00:09:23.060 --> 00:09:23.900
als alle anderen.

00:09:24.080 --> 00:09:25.980
Hast du da eine Shownote für uns, für eine Webseite?

00:09:26.780 --> 00:09:29.480
Es gibt eine Stack-Exchange-Seite zum Thema CodeGolf.

00:09:29.560 --> 00:09:31.960
Das ist auch die, wo ich hauptsächlich aktiv bin oder war.

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

00:09:33.640 --> 00:09:36.840
Es gibt andere Seiten, aber da muss ich ehrlich gesagt sagen,

00:09:36.900 --> 00:09:37.840
weiß ich gar nicht so viel drüber.

00:09:38.260 --> 00:09:38.460
Okay.

00:09:39.500 --> 00:09:41.780
Und

00:09:41.780 --> 00:09:43.940
jetzt schau doch mal mit Stecken-Change vorbei für

00:09:43.940 --> 00:09:46.060
Kotgolfen. Ja, wie gesagt, ich packe

00:09:46.060 --> 00:09:48.040
den Link dann einfach dazu. Und was sind

00:09:48.040 --> 00:09:50.120
so deine, hast du vielleicht Lieblingsaufgaben

00:09:50.120 --> 00:09:51.360
oder so, oder was besonders

00:09:51.360 --> 00:09:53.840
irgendwie interessante, einen interessanten

00:09:53.840 --> 00:09:55.840
Lösungsweg hatte? Also, ja, also

00:09:55.840 --> 00:09:57.280
interessante Lösungswege,

00:09:58.780 --> 00:09:59.360
ja gut, ich bin,

00:10:00.040 --> 00:10:01.860
komme aus der Physik-Mathematik-Ecke, also kann man,

00:10:02.060 --> 00:10:03.360
finde ich immer froh, wenn ich Sachen mit

00:10:03.360 --> 00:10:05.600
komplexen Zahlen oder so lösen kann.

00:10:06.440 --> 00:10:08.040
Also klassisch sind irgendwelche

00:10:08.040 --> 00:10:36.540
Aufgaben, wie irgendein Objekt bewegt sich in irgendeinem Raum oder irgendein Robot oder was auch immer und man muss den steuern und das kann man natürlich machen, indem man zweidimensionale Koordinaten speichert. Das ist in der Regel aber kürzer, wenn man das Ganze in komplexen Zahlen löst und ja, da gibt es 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, was da eigentlich passiert.

00:10:38.040 --> 00:10:39.920
und

00:10:39.920 --> 00:10:42.620
ja, also ansonsten

00:10:42.620 --> 00:10:44.620
ich kann, keine Ahnung, ich glaube das Interessanteste

00:10:44.620 --> 00:10:46.260
was man jetzt so auf dem

00:10:46.260 --> 00:10:48.560
diesem Medium überhaupt kommunizieren kann

00:10:48.560 --> 00:10:50.140
sind dann vielleicht so ein paar Tricks

00:10:50.140 --> 00:10:51.860
die man nutzen kann

00:10:51.860 --> 00:10:54.680
also ein klassisches Beispiel

00:10:54.680 --> 00:10:56.460
ist natürlich, wenn ich irgendwas habe, muss ich irgendwas in einer

00:10:56.460 --> 00:10:58.180
Schleife lösen, das kann man natürlich auch so machen

00:10:58.180 --> 00:11:00.700
häufig ist es dann aber so, dass diese Schleife

00:11:00.700 --> 00:11:02.080
vielleicht nicht so

00:11:02.080 --> 00:11:04.420
spannend ist, also dass da jetzt nicht so viele

00:11:04.420 --> 00:11:06.460
komplizierte Dinge passieren und dann könnte es

00:11:06.460 --> 00:11:07.600
zum Beispiel einfacher sein

00:11:07.600 --> 00:11:10.060
den Befehl, den man in der Schleife ausführt,

00:11:10.120 --> 00:11:11.080
in einen String zu packen,

00:11:11.940 --> 00:11:14.000
diesen String zu multiplizieren,

00:11:14.500 --> 00:11:15.840
also mit Semikola getrennt, mal

00:11:15.840 --> 00:11:17.600
fünf oder so, weil ich das fünfmal ausführen möchte

00:11:17.600 --> 00:11:19.580
und dann ein Exek darüber zu jagen.

00:11:22.840 --> 00:11:23.960
Also genau,

00:11:24.300 --> 00:11:24.760
die ersten

00:11:24.760 --> 00:11:26.220
Jochen

00:11:26.220 --> 00:11:29.700
hingen sich schon die Fußnägel hoch

00:11:29.700 --> 00:11:31.800
und ja,

00:11:31.800 --> 00:11:33.540
das ist dann, genau solche Sachen

00:11:33.540 --> 00:11:35.040
passieren dann andauernd, dass man irgendwie

00:11:35.040 --> 00:11:37.300
feststellt, wie wenig Leerzeichen man

00:11:37.300 --> 00:11:39.160
eigentlichen Python braucht, wenn man denn

00:11:39.160 --> 00:11:41.340
unbedingt möchte. Also es gibt so Späßchen,

00:11:41.440 --> 00:11:42.100
dass man, wenn man

00:11:42.100 --> 00:11:45.500
hinter irgendwo

00:11:45.500 --> 00:11:47.140
eine Klammer aufhört oder dahinter kommt ein

00:11:47.140 --> 00:11:49.420
Keyword oder so, dann kann man die einfach direkt

00:11:49.420 --> 00:11:50.340
aneinander schreiben

00:11:50.340 --> 00:11:53.100
oder zahlen oder

00:11:53.100 --> 00:11:55.340
eigentlich irgendwas. Ich glaube, das ist der einzige Unterschied. Man muss immer aufpassen,

00:11:55.400 --> 00:11:57.220
wenn es mit e anfängt, weil das könnte ja 1

00:11:57.220 --> 00:11:58.640
e 8 wäre dann 10 hoch 8.

00:11:59.080 --> 00:12:01.300
Das darf man dann nicht machen, aber alles andere kann man

00:12:01.300 --> 00:12:02.740
einfach wild aneinander klatschen

00:12:02.740 --> 00:12:05.480
in vielen Fällen und es wird richtig interpretiert.

00:12:06.880 --> 00:12:26.080
Dann gibt es, ich glaube in Python 3 funktioniert das nicht mehr, in Python 2 funktioniert das noch, dass man verschiedene Eindrückungsebenen mit Tab und Leerzeichen hat. Also die erste Eindrückungsebene wäre ein Leerzeichen, die zweite Eindrückungsebene war ein Tab und dann kam irgendwie ein Tab und ein Leerzeichen als Eindrückung und so weiter. Aber gut, wenn man dreimal einrücken muss, dann ist es in der Regel kein CodeGolf mehr.

00:12:26.080 --> 00:12:27.980
Ja, genau. Muss man denn überhaupt einrücken?

00:12:28.140 --> 00:12:29.980
Ich meine, es gibt doch Semikolon, das ist doch auch gut.

00:12:30.740 --> 00:12:31.700
Man muss es manchmal schon machen.

00:12:31.820 --> 00:12:32.980
Also manchmal ist es schon das Beste,

00:12:33.780 --> 00:12:35.940
aber zwei Einrückungsebenen sind schon sehr,

00:12:36.760 --> 00:12:38.420
das sind dann schon, wie ich ausgefallen habe, Programme.

00:12:39.920 --> 00:12:42.580
Da kann man dann schon die ganze Fakultät mit abwenden.

00:12:42.840 --> 00:12:44.300
Und ich meine jetzt nicht das mathematische Problem,

00:12:44.440 --> 00:12:45.880
sondern das, was man in der Uni dann so besucht.

00:12:49.880 --> 00:12:50.560
Ja, okay.

00:12:50.900 --> 00:12:53.380
Und das heißt, du machst dann sowieso nur ein Name.

00:12:53.660 --> 00:12:55.300
Also lesen kann man das dann wahrscheinlich nicht mehr?

00:12:55.900 --> 00:12:57.480
Sondern es geht tatsächlich darum, in wie viel Byte

00:12:57.480 --> 00:12:59.520
passt denn dann so ein Algorithmus? Genau, also

00:12:59.520 --> 00:13:01.540
lesen ist die eine Sache, die man nicht mehr kann. Manchmal

00:13:01.540 --> 00:13:03.700
hört das auch gar nicht auf. Also auch so die

00:13:03.700 --> 00:13:05.680
klassischen Ansätze für viele Sachen sind, dass man

00:13:05.680 --> 00:13:07.620
jetzt sagen kann, okay, ich kann jetzt

00:13:07.620 --> 00:13:10.000
meine Daten,

00:13:10.660 --> 00:13:11.600
ich kann jetzt einen interessanten

00:13:11.600 --> 00:13:13.480
Algorithmus entwickeln, der die richtige

00:13:13.480 --> 00:13:15.260
Lösung für irgendwas findet.

00:13:15.500 --> 00:13:16.640
Ich kann aber auch,

00:13:17.400 --> 00:13:19.580
jetzt weiß ich gar nicht, ob es Bogosort oder Stupid Sort

00:13:19.580 --> 00:13:21.380
oder, ja, ist auch egal, es gibt diesen klassischen

00:13:21.380 --> 00:13:22.440
Sortieralgorithmus. Ich

00:13:22.440 --> 00:13:25.440
nehme meine Daten, ich mische sie,

00:13:25.760 --> 00:13:27.840
ich gucke, ob sie sortiert sind, wenn nicht, wische ich sie nochmal.

00:13:28.200 --> 00:13:29.520
Ja, ja, ja. Solche Ansätze

00:13:29.520 --> 00:13:31.820
und, ja, wenn

00:13:31.820 --> 00:13:33.780
dann die Aufgabe nicht vorgibt, dass man das

00:13:33.780 --> 00:13:35.700
Ganze in einer endlichen Zeit lösen möchte, geht

00:13:35.700 --> 00:13:36.180
das natürlich.

00:13:37.520 --> 00:13:39.520
Das ist auch immer eine, ja,

00:13:39.840 --> 00:13:41.680
ein Lieblingsansatz, dass man sagt, okay,

00:13:41.720 --> 00:13:43.100
wir versuchen das jetzt schön

00:13:43.100 --> 00:13:45.920
in Brute Force

00:13:45.920 --> 00:13:47.560
zu lösen, statt, weil

00:13:47.560 --> 00:13:49.780
an der gewissen Wahrscheinlichkeit ist

00:13:49.780 --> 00:13:50.540
das dann sofort fertig.

00:13:51.780 --> 00:13:53.780
Ja, ich habe letztens auch

00:13:53.780 --> 00:13:55.420
irgendwo neun, es gibt ja diverse

00:13:55.420 --> 00:13:57.480
lustige Sortierverfahren. Ich habe

00:13:57.480 --> 00:13:59.160
letztens eins gesehen, das fand ich auch wieder sehr cool.

00:13:59.840 --> 00:14:01.600
Sehr schön. Das besteht einfach

00:14:01.600 --> 00:14:03.420
darin, ich glaube, das nennt sich irgendwie Sleepsort.

00:14:04.120 --> 00:14:05.540
Und wenn man halt

00:14:05.540 --> 00:14:07.540
Zahlen hat, dann macht man das mit

00:14:08.540 --> 00:14:09.860
Async

00:14:09.860 --> 00:14:10.840
Await-Notation.

00:14:11.720 --> 00:14:13.220
Man awaitet einfach die Zahl.

00:14:14.280 --> 00:14:17.640
das ist dann halt sortiert, weil

00:14:17.640 --> 00:14:19.420
naja, je größer die Zahl, desto länger

00:14:19.420 --> 00:14:20.840
wartet man halt.

00:14:22.560 --> 00:14:23.380
Das ist auch

00:14:23.380 --> 00:14:24.340
sehr, sehr cool.

00:14:24.920 --> 00:14:27.280
Mein Lieblings-Sortiere-Algorithmus ist der LSD-Radix.

00:14:27.980 --> 00:14:28.480
Das ist so schön.

00:14:28.540 --> 00:14:30.340
Der hört sich auch besonders toll an, wenn man den so visualisiert.

00:14:31.000 --> 00:14:32.540
Äh, audifiziliert, wie nennt man das?

00:14:33.920 --> 00:14:35.100
Wenn man so einen Algorithmus...

00:14:35.100 --> 00:14:35.840
Es gibt ja so einen...

00:14:35.840 --> 00:14:36.100
Vertont.

00:14:36.520 --> 00:14:38.280
Ja, ja, ja, wahrscheinlich.

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

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

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

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

00:14:47.400 --> 00:14:51.260
Der baut so Buckets auf und sortiert dann die ganzen Sachen immer in so Buckets rein

00:14:51.260 --> 00:14:52.320
und gibt die dann immer wieder auseinander.

00:14:53.140 --> 00:14:53.460
Okay.

00:14:53.940 --> 00:14:56.840
Ja, also von 0 bis 1.9 oder sowas.

00:14:56.940 --> 00:14:58.700
Und dann kippt er die auseinander.

00:14:58.960 --> 00:14:59.780
Und dann funktioniert das für mich ganz gut.

00:14:59.820 --> 00:15:00.940
Eine Sache, die mir jetzt noch gerade eingefallen ist,

00:15:00.980 --> 00:15:02.820
man muss sagen, wir warten auf die Eingabe und wie lange es dauert.

00:15:03.740 --> 00:15:07.580
Also auf CodeGolf StackExchange gab es dann auch zwischendrin mal

00:15:07.580 --> 00:15:08.520
so eine Kategorie von Fragen,

00:15:08.560 --> 00:15:10.340
die haben wir uns auch ganz schnell ausgedruckt und abgeschafft.

00:15:10.840 --> 00:15:12.300
Wir versuchen jetzt mal eine Programmieraufgabe

00:15:12.300 --> 00:15:14.440
möglichst schlecht zu lösen.

00:15:14.440 --> 00:15:16.280
Also nicht schnell oder kurz oder was auch immer,

00:15:16.360 --> 00:15:17.440
sondern einfach schlecht.

00:15:18.140 --> 00:15:20.620
Und dann die Aufgabe, einen Zufallszahlengenerator zu bauen.

00:15:21.480 --> 00:15:33.720
Und ja, meine Lösung war dann, wir nehmen, wir speichern einfach mal 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:34.240 --> 00:15:39.700
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:42.920 --> 00:15:47.080
Das erinnert mich so ein bisschen an deinen Wartsortier-Algorithmus.

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

00:15:49.680 --> 00:15:51.440
in einer besonders chaotischen Umgebung könnte das

00:15:51.440 --> 00:15:52.360
relativ schnell passieren.

00:15:54.300 --> 00:15:55.360
Wie ist das eigentlich bei so

00:15:55.360 --> 00:15:57.460
Code-Golf-Community? Macht die nur

00:15:57.460 --> 00:15:59.160
Code-Golf? Es gibt ja noch so andere lustige

00:15:59.160 --> 00:16:00.860
Programmier, weiß ich nicht,

00:16:01.500 --> 00:16:02.920
ich soll mal sagen, so, ja,

00:16:03.140 --> 00:16:05.380
Knubelecken. Ja, also die machen

00:16:05.380 --> 00:16:07.240
auch andere Sachen. So Quines zum Beispiel

00:16:07.240 --> 00:16:09.400
oder Programme, die sich selbst

00:16:09.400 --> 00:16:11.600
ausgeben. Oder auch Code-Golf mit Einschränkungen.

00:16:11.700 --> 00:16:13.040
Also man kann natürlich immer Code-Golf machen, aber

00:16:13.040 --> 00:16:15.260
auch so lustige Sachen war es noch eine Aufgabe.

00:16:16.340 --> 00:16:17.320
Multipliziere jetzt mal bitte zwei

00:16:17.320 --> 00:16:19.260
Zahlen, aber verwende im ganzen Code keine

00:16:19.260 --> 00:16:19.960
einzige Zahl.

00:16:22.660 --> 00:16:23.260
Dann muss man

00:16:23.260 --> 00:16:25.240
erstmal die Zahlen irgendwie in römische Zahlen darstellen,

00:16:25.340 --> 00:16:27.120
also so i, i, i, i, i, ja, ist dann halt

00:16:27.120 --> 00:16:29.200
5 und dann kann man da

00:16:29.200 --> 00:16:31.200
auf Basis, basiert natürlich multiplizieren und

00:16:31.200 --> 00:16:33.380
am Ende kommt dann halt wieder eine Zahl raus.

00:16:34.020 --> 00:16:35.060
Man muss halt irgendwie auch gucken, wie

00:16:35.060 --> 00:16:36.660
man das mit der Darstellung macht, dass man das dann

00:16:36.660 --> 00:16:37.920
regelkonform macht, aber

00:16:37.920 --> 00:16:41.180
i, i, i, i, i, i ist 5,

00:16:41.300 --> 00:16:42.120
i, i, i, i.

00:16:42.940 --> 00:16:45.080
Ja, römische Ziffern, Rechner mit

00:16:45.080 --> 00:16:46.360
römischen Ziffern, sehr, sehr böse.

00:16:47.380 --> 00:16:48.720
Ja, ja, x, x, x.

00:16:49.260 --> 00:16:51.040
Ich habe irgendwann mal auch, glaube ich,

00:16:51.040 --> 00:16:53.020
im Blogpost dazu gesehen, wie jemand irgendwie mit römischen

00:16:53.020 --> 00:16:55.040
Ziffern schriftlich dividiert hat und das war echt so.

00:16:57.420 --> 00:16:58.780
Also, sagen wir mal so,

00:16:58.860 --> 00:17:01.000
es ist nicht so unmittelbar einleuchten,

00:17:01.080 --> 00:17:02.060
wie das funktioniert.

00:17:03.340 --> 00:17:03.740
Ja.

00:17:04.900 --> 00:17:05.820
Aber, ja.

00:17:07.640 --> 00:17:09.120
Ja, so Kotkolben

00:17:09.120 --> 00:17:10.920
ist im Prinzip so eine Absatzionsebene, um

00:17:10.920 --> 00:17:12.880
mit der Sprache Schabernack zu treiben, also um

00:17:12.880 --> 00:17:15.060
die Komplexität von Algorithmen zu ergründen

00:17:15.060 --> 00:17:17.280
und um vielleicht so ein bisschen die Geschwindigkeit

00:17:17.280 --> 00:17:18.920
da so rauszuholen und vielleicht auch sowas

00:17:18.920 --> 00:17:46.620
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, also man, genau, man, es ist 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.620 --> 00:17:49.240
Ich habe tatsächlich einen Algorithmus, den ich

00:17:49.240 --> 00:17:50.840
begegnet bin, auch tatsächlich später eingesetzt

00:17:50.840 --> 00:17:52.700
in echter wissenschaftlicher Arbeit

00:17:52.700 --> 00:17:54.920
und war dann sehr froh, dass ich

00:17:54.920 --> 00:17:56.880
ihn kannte, weil

00:17:56.880 --> 00:17:58.600
ja, also man

00:17:58.600 --> 00:18:00.800
Ja,

00:18:00.900 --> 00:18:02.840
du hast das Thema tatsächlich direkt fast

00:18:02.840 --> 00:18:04.640
schon wieder mit aufgemacht und ich glaube, es ist Zeit für den nächsten

00:18:04.640 --> 00:18:06.640
Chapter, Marc. Wenn du das sagst,

00:18:06.700 --> 00:18:08.860
du hast ihn jetzt scientific in der wissenschaftlichen Arbeit

00:18:08.860 --> 00:18:10.700
eingesetzt. Was ist denn jetzt

00:18:10.700 --> 00:18:13.020
Scientific Python? Also das ist nicht SciPy

00:18:13.020 --> 00:18:14.040
oder was du eben gesagt hast, sondern

00:18:14.040 --> 00:18:16.120
was bedeutet das und warum

00:18:16.120 --> 00:18:18.020
macht man das, was macht man da und warum

00:18:18.020 --> 00:18:19.580
ist das so nett oder doch nicht?

00:18:19.920 --> 00:18:22.220
Also erstmal natürlich als Wissenschaftler

00:18:22.220 --> 00:18:24.200
hat man in der Regel, oder nicht in der Regel,

00:18:24.300 --> 00:18:25.940
also viele Wissenschaftler müssen

00:18:25.940 --> 00:18:27.780
programmieren, zwangsläufig, weil

00:18:27.780 --> 00:18:30.160
sie sichern, simulieren oder Daten

00:18:30.160 --> 00:18:32.120
analysieren in großen Mengen und

00:18:32.120 --> 00:18:34.280
das nicht per Hand machen möchten, aus gutem Grund.

00:18:34.880 --> 00:18:36.080
Also quantitative Analyse und

00:18:36.080 --> 00:18:37.820
keine qualitative Analyse, würdest du jetzt sagen,

00:18:38.020 --> 00:18:40.200
ist die wahre Kunst der Wissenschaft?

00:18:40.800 --> 00:18:41.620
Ja, also

00:18:41.620 --> 00:18:43.840
ich glaube, gibt es so richtig

00:18:43.840 --> 00:18:46.160
qualitative, rein

00:18:46.160 --> 00:18:48.040
qualitative Arbeit gibt es

00:18:48.040 --> 00:18:49.840
zumindest in meinem Bereich kaum.

00:18:50.640 --> 00:18:51.700
Ich kenne noch die alte

00:18:51.700 --> 00:18:53.600
Philosophische Fakultät an meiner Universität.

00:18:54.500 --> 00:18:56.220
Die hat sich durchaus damit hervorgetan.

00:18:56.420 --> 00:18:57.960
Ja, ja gut, aber das ist

00:18:57.960 --> 00:18:59.160
ja auch nicht mein Bereich.

00:19:00.360 --> 00:19:01.920
Also klar, es gibt natürlich

00:19:01.920 --> 00:19:03.460
Bereiche, in denen das

00:19:03.460 --> 00:19:05.820
gibt und es auch sinnvoll ist und schön und gut, aber

00:19:05.820 --> 00:19:07.900
also ich habe, ich glaube

00:19:07.900 --> 00:19:09.180
nicht, dass ich jemals hier irgendwas

00:19:09.180 --> 00:19:11.860
beruflich begegnet bin, das

00:19:11.860 --> 00:19:13.740
rein qualitativ war. Okay, also ein

00:19:13.740 --> 00:19:16.140
ZDF, Scientific Price, also Zahlen, Daten, Fakten.

00:19:17.040 --> 00:19:17.280
Ja.

00:19:18.420 --> 00:19:21.060
Es geht nicht nur darum, Zahlen auseinanderzunehmen.

00:19:21.160 --> 00:19:22.600
Manchmal geht es auch um Zahlen zu produzieren

00:19:22.600 --> 00:19:25.100
oder irgendwie einfach etwas,

00:19:25.240 --> 00:19:29.260
was man mathematisch, theoretisch zumindest,

00:19:29.780 --> 00:19:33.220
theoretisch aber, beweisen könnte oder verstehen könnte,

00:19:33.480 --> 00:19:34.680
aber zu kompliziert ist,

00:19:34.720 --> 00:19:36.160
dass man es mathematisch zerdröseln kann,

00:19:36.600 --> 00:19:39.180
zu simulieren und dann auf die Weise zu verstehen.

00:19:39.180 --> 00:19:42.460
Also viele Sachen, die ich gemacht habe,

00:19:42.500 --> 00:19:44.500
würde ich als Experimentalmathematik bezeichnen.

00:19:44.680 --> 00:19:48.020
Also ich stelle experimentell mathematische Aussagen fest.

00:19:50.480 --> 00:19:52.200
Ja, und dazu muss man natürlich programmieren

00:19:52.200 --> 00:19:53.940
und das macht man natürlich gerne in Python,

00:19:54.280 --> 00:19:56.360
also zumindest ich, anderen natürlich nicht.

00:19:56.580 --> 00:19:58.960
Das muss man so ein bisschen Überzeugungsarbeit leisten,

00:19:59.200 --> 00:20:05.460
weil es zum einen häufig nicht um Geschwindigkeit geht,

00:20:05.540 --> 00:20:07.320
sondern eben darum geht, die Sachen möglichst schnell

00:20:07.320 --> 00:20:09.100
und anschaulich zu programmieren und zu verstehen,

00:20:09.180 --> 00:20:09.940
was man eigentlich tut.

00:20:11.520 --> 00:20:37.780
Zum anderen natürlich, manchmal geht es auch um Geschwindigkeit und da sind viele, viele Aufgaben, die man hat 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. 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 schmeißen.

00:20:37.780 --> 00:21:07.460
Ja, ja, ich wollte gerade noch auf die experimentale Mathematik, also ich weiß nicht genau, ob ich das jetzt irgendwie falsch assoziiere, wenn ich, experimentelle 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,

00:21:07.780 --> 00:21:10.080
irgendwie zeigen möchte

00:21:10.080 --> 00:21:11.880
zu irgendwie einfachen Sachen, die schon

00:21:11.880 --> 00:21:13.960
bewiesen sind, also das

00:21:13.960 --> 00:21:15.920
kenne ich jedenfalls, oder habe ich mal gehört, dass

00:21:15.920 --> 00:21:18.180
Leute so experimentelle Mathematik

00:21:18.180 --> 00:21:20.120
nennen, also man

00:21:20.120 --> 00:21:21.300
sucht halt einfach quasi

00:21:21.300 --> 00:21:23.860
in dem Baum

00:21:23.860 --> 00:21:25.980
aller, oder in dem Graphen aller Umformungen,

00:21:26.000 --> 00:21:27.840
die man halt irgendwie machen kann, halt

00:21:27.840 --> 00:21:29.840
nach einem Pfad von Sachen, die man schon

00:21:29.840 --> 00:21:31.880
bewiesen hat, zu einer Geschichte, die man halt beweisen

00:21:31.880 --> 00:21:34.060
möchte oder so, dann sieht es halt dann doch eher so aus,

00:21:34.100 --> 00:21:35.800
als ob man das entdeckt, halt

00:21:35.800 --> 00:21:37.920
wie mit einem Mikroskop oder so und nicht so sehr

00:21:37.920 --> 00:21:39.140
irgendwie konstruiert.

00:21:41.160 --> 00:21:41.560
Aber...

00:21:41.560 --> 00:21:44.180
Das fällt dann unter Computerbeweise.

00:21:44.340 --> 00:21:45.940
Das ist manchmal das, was ich jetzt...

00:21:45.940 --> 00:21:48.000
Also das ist wahrscheinlich

00:21:48.000 --> 00:21:49.400
auch nicht unzutreffend. Der Begriff

00:21:49.400 --> 00:21:51.100
Experimentalmathematik ist nicht

00:21:51.100 --> 00:21:53.000
kopiergeschützt oder

00:21:53.000 --> 00:21:55.980
getrademarkt von irgendwem, der sagt, das ist jetzt genau

00:21:55.980 --> 00:21:56.200
das.

00:21:57.520 --> 00:21:59.400
Die Sachen, die ich mache, sind da schon

00:21:59.400 --> 00:22:01.500
gemacht habe oder auch noch mache, sind auch schon anders.

00:22:01.500 --> 00:22:02.660
Da geht es dann eben um die Frage,

00:22:04.000 --> 00:22:05.380
wie verhält sich jetzt

00:22:05.380 --> 00:22:07.520
dieses Modell, wenn ich das lange

00:22:07.520 --> 00:22:08.920
laufen lasse und dann hat man eben

00:22:08.920 --> 00:22:11.460
also so klassische Beispiele für

00:22:11.460 --> 00:22:13.500
wie Modelle, die meisten

00:22:13.500 --> 00:22:15.240
Modelle, Aufstellung oder die

00:22:15.240 --> 00:22:17.200
kann man als Gleichung formulieren, das ist eine

00:22:17.200 --> 00:22:19.100
Differenzialgleichung in der Regel oder

00:22:19.100 --> 00:22:21.260
ähnliche Sachen, also für die Leute, denen es was sagt, man hat

00:22:21.260 --> 00:22:23.540
eine Gleichung und die Lösung ist

00:22:23.540 --> 00:22:25.560
dann, wie verhält sich mein

00:22:25.560 --> 00:22:27.160
Objekt, mein System

00:22:27.160 --> 00:22:29.520
über die Zeit. Das wäre die Lösung für meine

00:22:29.520 --> 00:22:31.580
Gleichung. Und diese Lösung

00:22:31.580 --> 00:22:33.560
kann man in aller Regel nicht

00:22:33.560 --> 00:22:35.440
mit Stift und Papier finden, so wie was

00:22:35.440 --> 00:22:37.580
Leute normalerweise tun. Also man kann es schon

00:22:37.580 --> 00:22:39.280
machen, aber... Dauert dann ein bisschen.

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

00:22:41.160 --> 00:22:43.600
Man braucht die richtige Intuition für die Bewegung

00:22:43.600 --> 00:22:45.300
der Funktion. Nee, also das

00:22:45.300 --> 00:22:47.380
in Zeitfall geht es wirklich nicht.

00:22:48.060 --> 00:22:49.440
Wir haben zumindest seit 100 Jahren

00:22:49.440 --> 00:22:51.360
keinen Weg gefunden, das zu machen. Man kann eben

00:22:51.360 --> 00:22:53.380
höchstens eine näherungsweise Lösung machen und auch das will man nicht

00:22:53.380 --> 00:22:55.340
mit Stift und Papier machen. Das ist dann sehr automatisiert.

00:22:55.660 --> 00:22:57.520
Das macht man dann mit dem Computer und natürlich

00:22:57.520 --> 00:22:58.760
dann wieder mit Programmierung.

00:23:00.460 --> 00:23:01.540
Und ja, dann kann

00:23:01.540 --> 00:23:03.360
man eben herausfinden, okay, wenn ich diese Sachen

00:23:03.360 --> 00:23:04.180
habe, dann verhält sich

00:23:04.180 --> 00:23:06.840
dieses System so und so.

00:23:07.380 --> 00:23:08.780
Ich kriege so eine Lösung raus, das ist

00:23:08.780 --> 00:23:10.520
ein klassisches Beispiel, das ist chaotisch.

00:23:10.840 --> 00:23:12.960
Und das ist meine Aussage. Und die habe ich dann

00:23:12.960 --> 00:23:14.360
experimentell gefunden,

00:23:14.860 --> 00:23:17.100
in gewissem Maße, über Simulationen.

00:23:17.720 --> 00:23:19.320
Und diese Aussage ist auch nicht

00:23:19.320 --> 00:23:21.000
so in Stein gemeißelt, wie es

00:23:21.000 --> 00:23:23.040
normale mathematische Aussagen sind, sondern

00:23:23.040 --> 00:23:25.040
das kann immer noch schiefgegangen sein, weil

00:23:25.040 --> 00:23:27.220
ich gerade ganz komisch

00:23:27.220 --> 00:23:28.060
meinen

00:23:28.060 --> 00:23:30.820
Programmlauf in der Sache habe, mit genau den falschen

00:23:30.820 --> 00:23:32.680
Startbedingungen oder was auch immer und mein Algorithmus.

00:23:33.080 --> 00:23:35.420
Ja, weil man in irgendwelche numerischen

00:23:35.420 --> 00:23:37.380
Geschichteninstabilitäten gelaufen ist

00:23:37.380 --> 00:23:38.900
oder weil...

00:23:38.900 --> 00:23:41.320
Also gut, das kann man sogar noch lösen,

00:23:41.460 --> 00:23:42.920
aber weil man einfach

00:23:42.920 --> 00:23:45.340
ganz, ganz viel

00:23:45.340 --> 00:23:47.180
Pech hatte zum Beispiel. Natürlich, also

00:23:47.180 --> 00:23:49.180
die meisten Aussagen, wenn man sagt, das ist jetzt

00:23:49.180 --> 00:23:50.900
Chaos, sind schon

00:23:50.900 --> 00:23:53.240
sehr, sehr hieb- und stichfest, aber

00:23:53.240 --> 00:23:55.140
es ist kein formeller Beweis, wie

00:23:55.140 --> 00:23:57.200
Mathematiker ihn führen.

00:23:57.340 --> 00:23:59.180
In den meisten Fällen. Natürlich gibt es dann auch die Leute,

00:23:59.240 --> 00:24:01.220
die sich hingesetzt haben und das mal für einen Fall wirklich

00:24:01.220 --> 00:24:02.680
bewiesen haben.

00:24:03.080 --> 00:24:16.740
Das war dann auch eine Sensation oder so, hat auch ein paar Jahre gedauert, aber das ist nichts, was man praktisch machen kann und das war auch dann nur für die einfachsten Systeme, die man schon vorher sehr gut verstanden hat.

00:24:16.820 --> 00:24:19.480
Ich habe jetzt diesen ganzen Absatzionslayer

00:24:19.480 --> 00:24:20.640
noch nicht so ganz begriffen.

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

00:24:24.540 --> 00:24:25.680
Und wenn ich mir das jetzt irgendwie vorstelle,

00:24:25.740 --> 00:24:26.660
du sagst irgendwas von Chaos,

00:24:27.440 --> 00:24:29.080
du sagst sowas über Zeitstrahlen und Funktionen,

00:24:29.120 --> 00:24:29.640
die da irgendwie durchläuft,

00:24:29.940 --> 00:24:32.400
da denke ich irgendwie immer an sowas wie eine Häufigkeitsverteilung

00:24:32.400 --> 00:24:33.840
oder sowas, was da irgendwie rauskommt.

00:24:33.920 --> 00:24:36.140
Was hat das, also wie kann ich das so real beschreiben,

00:24:36.220 --> 00:24:39.000
wenn ich jetzt irgendwie jetzt Mikrobialen ...

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

00:24:39.720 --> 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:48.420
also ich habe meinen Topf,

00:24:48.780 --> 00:24:50.440
da schmeiße ich, da habe ich Nährstoffe drin, das heißt

00:24:50.440 --> 00:24:53.560
Bakterien können da leben und da schmeiße ich

00:24:53.560 --> 00:24:55.180
jetzt, was weiß ich was,

00:24:55.640 --> 00:24:57.080
fünf Escherichia coli

00:24:57.080 --> 00:24:59.340
oder zehn Pneumokokken

00:24:59.340 --> 00:25:00.700
oder was auch immer mir einfällt rein.

00:25:01.500 --> 00:25:02.900
Irgendwelches ungesunde Zeug, genau.

00:25:04.980 --> 00:25:06.700
Haben wir aber übrigens überall

00:25:06.700 --> 00:25:08.620
nebenbei, also wir tragen mehrere

00:25:08.620 --> 00:25:10.440
Kilo Bakterien mit uns im Darm rum.

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

00:25:12.960 --> 00:25:14.140
Ich weiß gar nicht, ob das ein Bakterium ist,

00:25:14.180 --> 00:25:15.220
oder was das ist.

00:25:16.700 --> 00:25:18.600
Pulbactus? Ich habe keine Ahnung.

00:25:18.660 --> 00:25:19.940
Das sah einmal beim Zahnarzt früher so aus.

00:25:20.040 --> 00:25:21.120
Da gab es dann diese Psyche.

00:25:21.740 --> 00:25:23.140
Die liefen dann irgendwelche Dinge.

00:25:23.240 --> 00:25:25.040
Die sahen so aus, wie ich mir Bakterien vorstelle.

00:25:25.240 --> 00:25:26.960
Genau. Also die laufen dann auf jeden Fall

00:25:26.960 --> 00:25:28.080
da rum und

00:25:28.080 --> 00:25:30.820
jetzt kann ich natürlich das einfach

00:25:30.820 --> 00:25:32.620
hinstellen und warten und gucken, aber

00:25:32.620 --> 00:25:35.140
das kann ich nur begrenzt

00:25:35.140 --> 00:25:36.980
häufig machen, da das Zeit kostet und ich

00:25:36.980 --> 00:25:39.240
kann auch, habe dann Messfehler

00:25:39.240 --> 00:25:41.080
und Rauschen und so weiter und so fort. Aber ich möchte

00:25:41.080 --> 00:25:42.820
das eventuell einfach mal allgemein verstehen.

00:25:43.000 --> 00:25:45.340
Wie entwickeln sich solche Bakterienpopulationen?

00:25:45.980 --> 00:25:54.600
Hört sich jetzt doof an, also du hast es gerade gesagt, es gibt irgendwie so Sachen im Darm, das heißt ihr macht dann so einen Auszug und stellt das in so ein Glas auf den Balkon in die Hitze und guckt, was da so passiert.

00:25:56.220 --> 00:26:09.140
Ja, das wäre so die Karikatur des Ganzen, aber es ist gar nicht so falsch, also viel ist wirklich, wir haben einen Topf Flüssigkeit, da sind Nährstoffe drin, da schieben wir ein paar Bakterien rein, das rühren wir dauerhaft um und dann gucken wir mal, was passiert.

00:26:10.060 --> 00:26:11.480
Also das ist schon sehr, sehr häufig.

00:26:11.600 --> 00:26:13.480
Und danach macht ihr irgendeine Analyse mit,

00:26:13.580 --> 00:26:15.000
ich weiß nicht, ihr kippt das Ganze auf Papier,

00:26:15.100 --> 00:26:17.720
kommt euch die Farbe an 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:22.020 --> 00:26:24.680
Nein, das wäre das, was wir eigentlich modellieren wollen.

00:26:24.820 --> 00:26:26.460
Also das ist unser reales System.

00:26:26.900 --> 00:26:28.640
Da wissen wir, was passiert, da können wir das messen.

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

00:26:31.200 --> 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:35.380 --> 00:26:36.960
Ja, das ist der andere Nachteil.

00:26:37.220 --> 00:26:37.820
Aber der Nachteil ist,

00:26:37.860 --> 00:26:39.940
wir müssen eben wirklich dieses Glas auf die Fensterbank stellen.

00:26:40.700 --> 00:26:47.920
Und im Computer können wir das eventuell in einer halben Sekunde einfach mal durchrechnen und dann können wir das noch schnell 10.000 Mal machen und besser verstehen.

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

00:26:50.100 --> 00:26:50.300
Genau.

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

00:26:52.580 --> 00:27:02.160
Ja, genau. Deswegen, ich bastle virtuelle Bakteriengläser und diese virtuellen Bakteriengläser werden dann beschrieben durch Gleichung.

00:27:03.460 --> 00:27:05.080
die zum Beispiel bei Differenzialgleichen

00:27:05.080 --> 00:27:06.660
wäre die Frage, okay, ich habe jetzt meine Bakterien,

00:27:07.220 --> 00:27:08.600
mein Zustand, mein Zustand ist dann

00:27:08.600 --> 00:27:11.200
fünf von der Sorte, sechs von der Sorte, sieben von der Sorte,

00:27:11.300 --> 00:27:12.500
so viele Nährstoffe und so weiter und so fort.

00:27:13.140 --> 00:27:15.020
Und die Frage ist, wenn ich jetzt eine Sekunde

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

00:27:16.660 --> 00:27:18.740
Vermehren sich einige von diesen Bakterien, werden

00:27:18.740 --> 00:27:20.920
einige Nährstoffe gefressen und so weiter? Das kann ich

00:27:20.920 --> 00:27:22.800
dann machen oder

00:27:22.800 --> 00:27:24.960
ausrechnen und dann mache ich das noch mal

00:27:24.960 --> 00:27:26.520
und noch mal und noch mal und noch mal und

00:27:26.520 --> 00:27:28.740
die Frage, wie man das richtig macht, ist

00:27:28.740 --> 00:27:30.540
ja, da haben sich Menschen schon

00:27:30.540 --> 00:27:32.860
hundert Jahre lang mit beschäftigt und

00:27:32.860 --> 00:27:34.740
gute Wege herausgefunden, das zu machen

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

00:27:36.980 --> 00:27:38.500
Also die haben quasi das Rezept, den Algorithmus

00:27:38.500 --> 00:27:40.400
schon entwickelt und den wird dann

00:27:40.400 --> 00:27:42.540
in Python irgendwie übertragen, auf das Modell

00:27:42.540 --> 00:27:44.700
angewandt und dann gibt es eine zufällige

00:27:44.700 --> 00:27:46.640
Verteilung, die rauskommt. Oder hast du dann immer konkrete

00:27:46.640 --> 00:27:48.800
Ergebnisse? Das könnte zum Beispiel

00:27:48.800 --> 00:27:50.600
rauskommen, okay, diese Population stirbt

00:27:50.600 --> 00:27:52.600
aus und diese Population geht

00:27:52.600 --> 00:27:54.160
auf genau diesen Wert und bleibt da.

00:27:54.520 --> 00:27:56.620
Und du hast eine Zeit, in der das passiert ist. Und ich habe die Zeit,

00:27:56.620 --> 00:27:58.760
in der das passiert ist. Ja, das ist in vielen Fällen

00:27:58.760 --> 00:28:00.520
gar nicht mal so das Interessante, aber es ist auch

00:28:00.520 --> 00:28:02.660
interessant. Die andere

00:28:02.660 --> 00:28:04.680
Sache, die halt rauskommen kann, ist zum Beispiel, okay, es geht

00:28:04.680 --> 00:28:06.640
nicht einfach auf irgendeinen festen Wert, sondern es

00:28:06.640 --> 00:28:08.860
oszilliert wild rum, zum Beispiel

00:28:08.860 --> 00:28:09.500
chaotisch.

00:28:11.440 --> 00:28:12.100
Und dann

00:28:12.100 --> 00:28:14.640
können wir eben das feststellen, okay, es

00:28:14.640 --> 00:28:15.800
oszilliert rum. Das ist eine

00:28:15.800 --> 00:28:17.670
Antwort. Oder es ist was anderes, als wenn es

00:28:17.670 --> 00:28:19.310
konstant bleiben würde.

00:28:20.350 --> 00:28:21.370
Und ja,

00:28:21.870 --> 00:28:23.670
wir können uns dann die Frage stellen, okay,

00:28:23.750 --> 00:28:25.570
unter welchen Bedingungen oszilliert es rum? Welch viele

00:28:25.570 --> 00:28:27.330
Bakterien, Spezies überleben?

00:28:27.830 --> 00:28:29.650
Unter welchen Bedingungen? Wovon hängt

00:28:29.650 --> 00:28:31.570
das ab? Wie beeinflussen die Bakterien,

00:28:31.630 --> 00:28:33.570
Spezies einander? Und

00:28:33.570 --> 00:28:35.690
ja, wie verhalten sich eben solche

00:28:35.690 --> 00:28:37.250
Systeme im Allgemeinen?

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

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

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

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

00:28:47.330 --> 00:28:49.410
Ja, nur dass wir halt nicht mehr, ja, also zelluläre

00:28:49.410 --> 00:28:50.910
Automaten sind halt ein Typ von Simulation,

00:28:51.010 --> 00:28:52.970
Differenzialgleichungen sind ein anderer Typ, dann können wir noch

00:28:52.970 --> 00:28:55.410
ja, diverse andere

00:28:55.410 --> 00:28:57.350
Typen durchsprechen,

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

00:28:59.750 --> 00:29:01.390
Und dann kann ich

00:29:01.390 --> 00:29:03.350
am Ende sagen, ich weiß, wenn ich

00:29:03.350 --> 00:29:05.230
Bakterien so und so zusammen packe,

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

00:29:07.810 --> 00:29:09.270
Das ist das Fernziel dieser

00:29:09.270 --> 00:29:11.230
ganzen Forschung, dass man eben

00:29:11.230 --> 00:29:13.330
besser versteht, wie sich solche Systeme

00:29:13.330 --> 00:29:15.310
entwickeln und dann natürlich auch die Frage, wie reagieren

00:29:15.310 --> 00:29:17.210
sie auf Aumwelteinflüsse. Eine häufige Frage ist

00:29:17.210 --> 00:29:19.190
zum Beispiel Antibiotika. Ich habe

00:29:19.190 --> 00:29:21.090
ein klassischer Fall, wo wir

00:29:21.090 --> 00:29:23.330
kein Ökosystem haben im Körper. Was die Ausnahme

00:29:23.330 --> 00:29:25.350
ist, ist die Blase. Das ist

00:29:25.350 --> 00:29:26.950
normalerweise bakterienfrei,

00:29:27.170 --> 00:29:29.150
soweit man das bisher weiß. Steril.

00:29:29.690 --> 00:29:30.690
Steril, ja, genau.

00:29:31.670 --> 00:29:33.010
Aber wenn da was reinkommt,

00:29:33.150 --> 00:29:35.230
hat man ein Problem. Und manchmal kommen da mehrere

00:29:35.230 --> 00:29:37.410
Dinge rein und dann ist die Frage, begünstigen die einander?

00:29:38.490 --> 00:29:39.470
Bekämpfen die einander?

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

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

00:29:44.110 --> 00:29:45.050
Fressfeinde hat sich toll angefragt.

00:29:45.050 --> 00:29:46.510
Befressfeind ist in dem Fall das falsche Wort eigentlich.

00:29:47.010 --> 00:29:49.290
Also die ungleichen Nährstoffe konkurrieren.

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

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

00:29:53.630 --> 00:29:55.750
Kann ich natürlich wieder im Reagenzglas austesten.

00:29:55.870 --> 00:29:57.310
Dauert dann genauso lange wie im echten Menschen.

00:29:57.370 --> 00:29:57.850
Ist ein Problem.

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

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

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

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

00:30:06.350 --> 00:30:08.390
welches Antibiotikum muss ich geben

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

00:30:11.550 --> 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:16.590
Also das heißt, ihr könnt tatsächlich auch sowas, chemische Verbindungen

00:30:16.590 --> 00:30:18.390
tatsächlich simulieren, da reinschießen und dann

00:30:18.390 --> 00:30:20.490
sagen, hey, vielleicht kommt da was raus. Also wir simulieren

00:30:20.490 --> 00:30:22.310
nicht die chemische Verbindung in dem Sinne,

00:30:22.390 --> 00:30:23.990
sondern wir wissen halt, dass das

00:30:23.990 --> 00:30:26.330
Antibiotikum hat die Auswirkungen auf das

00:30:26.330 --> 00:30:27.930
Bakterium, ganz grob.

00:30:28.890 --> 00:30:30.290
Aber auch das ist alles nur das

00:30:30.290 --> 00:30:32.310
Fernsehen. Also wir sind eben, solche

00:30:32.310 --> 00:30:34.310
Ökosysteme zum Beispiel zu simulieren ist

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

00:30:36.150 --> 00:30:37.930
Hört sich sehr nützlich an. Also mal so.

00:30:38.010 --> 00:30:40.290
Ja, deswegen versuchen wir es ja auch. Und deswegen gibt es

00:30:40.290 --> 00:30:41.910
hoffentlich Leute, die uns dafür bezahlen, das zu machen.

00:30:43.610 --> 00:30:45.510
Ja, und das ist so eine...

00:30:45.510 --> 00:30:46.910
Hier wieder die große Sponsorenaufrufe.

00:30:48.170 --> 00:30:49.830
Naja, aber ich meine, das klingt halt schon so ein bisschen

00:30:49.830 --> 00:30:51.850
danach, wie man hat irgendwo einen umgekippten Weiher

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

00:30:53.390 --> 00:30:55.890
unterschiedliche Bakteriensocken hin, schüttet das da rein, wartet zwei Tage

00:30:55.890 --> 00:30:58.150
und dann hat man eine Blümchenwiese da. Oder so, das wäre schon gut.

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

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

00:31:01.490 --> 00:31:03.910
Und das geht alles mit Python, das ist ja wie das

00:31:03.910 --> 00:31:05.670
sollte, also mit der schönen Schlange und der Abenteuer.

00:31:05.690 --> 00:31:05.890
Naja.

00:31:07.050 --> 00:31:09.510
Also, und wie?

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

00:31:11.350 --> 00:31:24.790
Also entweder sagt man, ich habe eine Simulation und Zeit stört mich nicht, also Laufzeit, das kann schon mal sehr häufig passieren, dann kann man es einfach wirklich rein in Python simulieren in vielen Fällen.

00:31:24.790 --> 00:31:33.430
Ich habe auch Simulationswerkzeuge mal gebaut aus so Nebenkriegsschauplätzen, die wirklich rein in Python laufen und auch da einigermaßen effizient sind noch.

00:31:34.150 --> 00:31:40.990
Ein Hauptproblem mit vielen komplexen Simulationen und jetzt mache ich jetzt wieder eine eigensinnige Überleitung zu dem, was ich wirklich gemacht habe.

00:31:41.350 --> 00:31:43.170
ist, dass es

00:31:43.170 --> 00:31:45.350
nicht so einfach und schnell

00:31:45.350 --> 00:31:47.270
in Python geht und dass es insbesondere auch nicht

00:31:47.270 --> 00:31:48.850
so schnell und einfach mit NumPy geht, weil es nicht

00:31:48.850 --> 00:31:51.250
vektorisierbar ist. Jetzt muss ich wahrscheinlich kurz

00:31:51.250 --> 00:31:52.510
erklären, was vektorisierbar heißt.

00:31:53.430 --> 00:31:55.130
Das heißt, ich habe, ein klassisches

00:31:55.130 --> 00:31:57.070
Beispiel ist, ich addiere zwei

00:31:57.070 --> 00:31:59.210
Vektoren. Ich habe

00:31:59.210 --> 00:32:01.150
ein großes Array mit Zahlen

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

00:32:03.010 --> 00:32:04.890
eine andere, genauso lange Liste mit Zahlen.

00:32:05.430 --> 00:32:07.190
Wenn ich jetzt sage, addiere bitte mal

00:32:07.190 --> 00:32:09.230
die ersten beiden Elemente von jeder

00:32:09.230 --> 00:32:11.230
Liste und füge das als erstes

00:32:11.230 --> 00:32:13.410
neues Element in eine neue Liste und dann macht das

00:32:13.410 --> 00:32:15.410
mit dem zweiten Element und so weiter und so fort,

00:32:15.490 --> 00:32:17.050
dann ist das eine vektorisierbare Option,

00:32:17.670 --> 00:32:19.250
Operation. Ich glaube, das hat

00:32:19.250 --> 00:32:21.690
niemand verstanden, der nicht wusste, was vorher eine Vektor-Operation

00:32:21.690 --> 00:32:22.190
ist. Verdammt.

00:32:24.010 --> 00:32:25.450
Wenn du zwei Vektoren addierst, dann machst du

00:32:25.450 --> 00:32:27.330
irgendwie sowas, du erklärst irgendwie

00:32:27.330 --> 00:32:29.370
den Weg, den du per Luftlinie kennst

00:32:29.370 --> 00:32:31.450
und dem erzählst du, ja, musst du links,

00:32:31.550 --> 00:32:32.530
dann musst du rechts und dann kommst du irgendwann...

00:32:32.530 --> 00:32:35.010
Das ist nicht so sehr das, was es tut, sondern die Art, wie es passiert.

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

00:32:37.510 --> 00:32:39.410
Also das auch gleich für viele Sachen

00:32:39.410 --> 00:32:41.330
ist das so, Moment, jetzt muss ich es gerade

00:32:41.330 --> 00:32:42.110
richtig hinkriegen.

00:32:43.950 --> 00:32:44.790
Multiple Data,

00:32:45.370 --> 00:32:47.110
Multiple Input, Single

00:32:47.110 --> 00:32:49.310
Operation, Single

00:32:49.310 --> 00:32:50.310
Operation, Multiple Data.

00:32:51.570 --> 00:32:52.930
Also ich mache... Single Input,

00:32:53.190 --> 00:32:54.970
7D, irgendwas. Genau, also

00:32:54.970 --> 00:32:57.650
das Konzept ist auf jeden Fall

00:32:57.650 --> 00:32:59.150
klar. Der Begriff ist nicht der

00:32:59.150 --> 00:33:00.370
übliche wahrscheinlich, aber

00:33:00.370 --> 00:33:02.750
alle, die es kennen, wissen, worum es geht.

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

00:33:05.290 --> 00:33:06.210
und ich mache damit

00:33:06.210 --> 00:33:08.990
5000 Mal das Gleiche.

00:33:09.170 --> 00:33:11.250
wenn ich jetzt 5000 Elemente in meinem Datensatz habe.

00:33:12.530 --> 00:33:13.490
Oder der Datensatz

00:33:13.490 --> 00:33:14.150
wäre halt ein Array.

00:33:15.590 --> 00:33:17.290
Das ist ein Problem, was in vielen, vielen

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

00:33:20.850 --> 00:33:21.410
Und das kann man

00:33:21.410 --> 00:33:23.250
dann natürlich effizient mit solchen Sachen wie

00:33:23.250 --> 00:33:25.610
NumPy gut lösen. Also nicht 100%

00:33:25.610 --> 00:33:27.270
effizient, aber schon sehr nah dran.

00:33:28.030 --> 00:33:28.730
Da ich dann eben,

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

00:33:31.250 --> 00:33:32.230
funktioniert es eben so, dass

00:33:32.230 --> 00:33:35.290
der sagt, okay, ich erkenne, das ist jetzt eine Addition

00:33:35.290 --> 00:33:37.390
und dann geht er jetzt nicht für jedes einzelne Element

00:33:37.390 --> 00:33:39.490
dieses Arrays hin oder diese paarweisen

00:33:39.490 --> 00:33:40.930
Arrays und

00:33:40.930 --> 00:33:43.410
überlegt sich, oh, guck mal, was ist das

00:33:43.410 --> 00:33:45.330
für ein Objekt? Ist das eine Zahl?

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

00:33:47.770 --> 00:33:49.330
mit einer Zahl. Was passiert denn da? Ah, da kommt wieder

00:33:49.330 --> 00:33:51.270
eine Zahl raus. Und unter der Haube

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

00:33:53.570 --> 00:33:55.230
Das ist ja das, was im normalen Python passieren würde.

00:33:57.070 --> 00:33:57.390
Sondern

00:33:57.390 --> 00:33:58.830
der sagt, okay, ah, das ist ein Array.

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

00:34:01.810 --> 00:34:03.330
Und jetzt gehe ich mal

00:34:03.330 --> 00:34:05.450
unter der Haube hin, lasse eine effiziente

00:34:05.450 --> 00:34:07.530
Schleife da durchlaufen, die in C oder was

00:34:07.530 --> 00:34:09.410
auch immer geschrieben ist, multipliziert die

00:34:09.410 --> 00:34:11.110
alle elementweise miteinander oder addiert sie

00:34:11.110 --> 00:34:13.150
elementweise miteinander und da kriege ich das Ergebnis.

00:34:13.350 --> 00:34:15.270
Und das ist schnell. Und

00:34:15.270 --> 00:34:17.450
wenn ich jetzt mein Problem ausschließlich

00:34:17.450 --> 00:34:19.430
aus solchen Operationen beschreiben kann,

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

00:34:21.310 --> 00:34:23.370
schnell mit NumPy und Python

00:34:23.370 --> 00:34:25.250
lösen, ohne dass ich da irgendwie selbst

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

00:34:27.810 --> 00:34:28.850
Ja, ich glaube, also

00:34:28.850 --> 00:34:31.370
ich weiß jetzt auch nicht, ob ich mich da ganz

00:34:31.370 --> 00:34:32.950
komplett korrekt dran erinnere, aber ich meine,

00:34:33.310 --> 00:34:35.230
ich glaube, der Witz bei dem Vektorisieren ist eigentlich, dass man

00:34:35.230 --> 00:34:37.350
man hat ja mehrere Register irgendwie

00:34:37.350 --> 00:34:39.330
und dann kann man das halt sozusagen in gewisser Weise

00:34:39.330 --> 00:34:40.050
parallelisieren,

00:34:40.250 --> 00:34:43.270
diese Addition oder Multiplikation von

00:34:43.270 --> 00:34:44.810
Arrays, indem man das halt in

00:34:44.810 --> 00:34:47.430
so viele Teile zeigt und das dann halt alles irgendwie gleichzeitig

00:34:47.430 --> 00:34:48.850
macht. Oder diese Dinger sind irgendwie

00:34:48.850 --> 00:34:51.350
oder man kann mehrere Dinger in einen Register packen.

00:34:51.590 --> 00:34:53.370
Ja, das ist noch ein

00:34:53.370 --> 00:34:55.370
Vorteil bei Grafikkarten und irgendwie könnte ich das dann

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

00:34:58.470 --> 00:34:59.350
Also gerade dieses Rechnen auf

00:34:59.350 --> 00:35:01.430
Grafikkarten, wenn man das immer, was man

00:35:01.430 --> 00:35:03.390
immer wieder hört, das ist genau solche Sachen,

00:35:03.490 --> 00:35:06.370
wo man eben mehrfach die gleiche Operation rechnet.

00:35:08.630 --> 00:35:09.950
Aber das ist auch schon eine Sache,

00:35:10.170 --> 00:35:12.150
die, wenn ich jetzt mit reinem Python arbeiten möchte

00:35:12.150 --> 00:35:14.490
oder nicht irgendwas Neues programmieren möchte in Python,

00:35:15.330 --> 00:35:16.650
mir mein Leben deutlich einfacher mache,

00:35:16.710 --> 00:35:17.830
wenn ich sowas benutze wie NumPy.

00:35:17.950 --> 00:35:20.710
Denn das Hauptkonzept von NumPy ist eigentlich,

00:35:20.770 --> 00:35:22.950
wir haben vektorisierbare Operationen

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

00:35:24.870 --> 00:35:27.470
ohne dass der sich darüber kümmern muss.

00:35:27.570 --> 00:35:28.530
Also wir stellen sie zur Verfügung,

00:35:28.610 --> 00:35:30.230
wir stellen sie in effizienter Form zur Verfügung,

00:35:30.430 --> 00:35:31.870
ohne dass der Nutzer sich darum kümmern muss,

00:35:32.710 --> 00:35:34.630
da irgendwie in C, Fortran oder

00:35:34.630 --> 00:35:36.410
was auch immer von niedrigeren Sprachen das

00:35:36.410 --> 00:35:37.030
zu machen.

00:35:39.170 --> 00:35:40.650
Ja, ich glaube

00:35:40.650 --> 00:35:42.490
auch, ich habe mal gehört, dass das halt irgendwie der

00:35:42.490 --> 00:35:44.570
Grund ist, warum Fortran immer noch so eine große Rolle

00:35:44.570 --> 00:35:46.590
spielt, weil bei

00:35:46.590 --> 00:35:47.590
Fortran diese Geschichten halt

00:35:47.590 --> 00:35:50.110
die Schleifen, glaube ich, auch automatisch

00:35:50.110 --> 00:35:52.430
vektorisierbar sind, bei C halt nicht. Und das ist halt

00:35:52.430 --> 00:35:54.270
ein Problem, also man muss es dem Compiler halt sagen,

00:35:55.010 --> 00:35:56.570
weil man da so Seiteneffekte

00:35:56.570 --> 00:35:58.670
haben kann, dass das Ergebnis

00:35:58.670 --> 00:36:00.510
der, eine Addition von

00:36:00.510 --> 00:36:02.190
zum Beispiel zwei Vektoren kann halt wieder

00:36:02.190 --> 00:36:04.330
irgendwie Einfluss nehmen auf was davor

00:36:04.330 --> 00:36:05.030
und es ist halt

00:36:05.030 --> 00:36:08.430
ja, sozusagen nicht garantiert,

00:36:08.730 --> 00:36:10.430
dass man das halt

00:36:10.430 --> 00:36:12.270
vektorisieren kann oder dass man es irgendwie parallelisieren kann,

00:36:12.370 --> 00:36:14.170
sondern es kann halt an einem

00:36:14.170 --> 00:36:16.210
die Programmlogik kaputt machen, wenn man das halt nicht

00:36:16.210 --> 00:36:18.370
weiß, dass das geht und in Vortragen geht das

00:36:18.370 --> 00:36:20.430
halt nur so und daher, aber ja, keine Ahnung.

00:36:20.490 --> 00:36:22.050
Also mittlerweile stimmt das glaube ich nicht mehr,

00:36:22.550 --> 00:36:24.170
oder nicht mittlerweile, ich glaube seit 15,

00:36:24.270 --> 00:36:25.750
20 Jahren. Oh, das kann sein.

00:36:26.010 --> 00:36:28.190
Gibt es in C das... Man kann dem

00:36:28.190 --> 00:36:29.730
Compiler sagen. Restrict Keyword?

00:36:29.950 --> 00:36:31.110
Ich hoffe, ich mache es jetzt richtig.

00:36:32.190 --> 00:36:34.430
muss ich wahrscheinlich schämen, dass ich das nicht kenne, was eben genau

00:36:34.430 --> 00:36:36.550
das sagt, okay, also das klassische Problem

00:36:36.550 --> 00:36:38.510
ist ja, wenn ich

00:36:38.510 --> 00:36:40.310
oder um das, was du vorhin beschrieben hast, nochmal

00:36:40.310 --> 00:36:42.190
in anderen Worten zu beschreiben, dass

00:36:42.190 --> 00:36:44.350
der Compiler nicht weiß, wenn ich

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

00:36:47.410 --> 00:36:48.490
dass eventuell

00:36:48.490 --> 00:36:50.450
das B, was ich da addiere, vorher

00:36:50.450 --> 00:36:51.990
schon 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.350
Element der eigentlichen Schleife, also ich habe irgendwie

00:36:56.350 --> 00:36:57.670
mein, nehmen wir wieder Vektoren,

00:36:58.230 --> 00:37:00.450
es könnte sein, dass ich die erste Komponente zur ersten Komponente addiere

00:37:00.450 --> 00:37:02.390
und dann kriege ich eine Komponente raus. Es könnte aber sein, dass ich das

00:37:02.390 --> 00:37:04.370
in die zweite Komponente des Vektors

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

00:37:06.630 --> 00:37:08.010
Wenn ich C programmieren möchte, ist das anscheinend.

00:37:09.070 --> 00:37:09.430
Und

00:37:09.430 --> 00:37:12.190
der Compiler geht davon aus, dass er das nicht weiß und

00:37:12.190 --> 00:37:14.190
dass er sich das möchte und deswegen optimiert er es nicht weg.

00:37:14.530 --> 00:37:15.610
Wenn ich jetzt aber sage,

00:37:16.490 --> 00:37:18.310
dieses Array ist restricted oder

00:37:18.310 --> 00:37:20.050
restrict, dann

00:37:20.050 --> 00:37:21.290
passiert das nicht.

00:37:21.850 --> 00:37:24.050
Also man kann das mittlerweile in C lösen.

00:37:24.370 --> 00:37:25.710
Ja, genau, natürlich.

00:37:26.110 --> 00:37:28.330
Aber das ist auch wieder eine Wissenschaft für

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

00:37:29.950 --> 00:37:32.510
was man alles optimieren kann und wenn man es richtig schnell

00:37:32.510 --> 00:37:34.390
haben will, dann muss man sowieso ein Assembly schreiben

00:37:34.390 --> 00:37:34.730
und

00:37:34.730 --> 00:37:38.510
immer mit GoTo-Schleifen immer hin und her springen.

00:37:41.670 --> 00:37:42.230
Ja, aber

00:37:42.230 --> 00:37:42.870
Assembly doch.

00:37:44.870 --> 00:37:46.330
Nee, Assembly ist glaube ich noch schlimmer,

00:37:46.430 --> 00:37:47.830
da gibt es keine GoTo-Schleife, da gibt es

00:37:47.830 --> 00:37:49.810
Ja, da springst du zur Adresse oder sowas.

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

00:37:52.870 --> 00:37:53.270
Ja.

00:37:54.530 --> 00:37:55.470
Also auf jeden Fall,

00:37:56.950 --> 00:37:57.690
das ist ein,

00:37:58.370 --> 00:38:00.470
Ja, also auf die Weise kann man dann Python in vielen Sachen

00:38:00.470 --> 00:38:02.410
nutzen und jetzt

00:38:02.410 --> 00:38:04.570
wieder gesagt, die schamlose Überleitung, nächster Versuch

00:38:04.570 --> 00:38:06.450
zu meinen eigentlichen Sachen, die ich gemacht

00:38:06.450 --> 00:38:06.770
habe.

00:38:08.410 --> 00:38:10.430
Oder zu Sachen, die ich selbst gemacht habe, ist, dass

00:38:10.430 --> 00:38:12.250
es in vielen solchen Simulationssachen

00:38:12.250 --> 00:38:14.430
das Problem ist,

00:38:14.490 --> 00:38:16.550
dass man es eben nicht vektorisierbar

00:38:16.550 --> 00:38:18.330
machen kann. Also, was

00:38:18.330 --> 00:38:20.410
in meiner vorigen Arbeit

00:38:20.410 --> 00:38:22.410
sehr häufig aufgetaucht ist, ist zum Beispiel, dass

00:38:22.410 --> 00:38:24.530
wir uns komplizierte Netzwerke von

00:38:24.530 --> 00:38:26.090
man kann sich jetzt Neuronen vorstellen

00:38:26.090 --> 00:38:28.270
angeguckt haben, die irgendwie miteinander

00:38:28.270 --> 00:38:29.490
verknüpft sind und dann

00:38:29.490 --> 00:38:32.450
hat man das Problem, dass die Verbindungen

00:38:32.450 --> 00:38:34.270
zwischen diesen Knoten zufällig sind und dann

00:38:34.270 --> 00:38:36.270
ab dem Punkt kann ich es nicht mehr sinnvoll vektorisieren.

00:38:37.130 --> 00:38:38.430
Oder man kann sich

00:38:38.430 --> 00:38:40.570
auch vorstellen, man hat komplexe

00:38:40.570 --> 00:38:42.490
metabolische Modelle, wie irgendwelche

00:38:42.490 --> 00:38:44.330
Spezies irgendwelche Stoffe in

00:38:44.330 --> 00:38:46.450
andere Stoffe überführen und so weiter und das ist

00:38:46.450 --> 00:38:48.410
eben auch komplex und

00:38:48.410 --> 00:38:50.290
nicht vektorisierbar in vielen Fällen und das

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

00:38:52.870 --> 00:38:54.430
möchte man natürlich auch irgendwie effizient

00:38:54.430 --> 00:38:56.530
haben und das Interessante ist, nebenbei

00:38:56.530 --> 00:38:57.490
ist auch

00:38:57.490 --> 00:39:00.450
viele Leute haben sich vorher immer

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

00:39:02.950 --> 00:39:04.650
weil sie ja so schön einfach anzugucken

00:39:04.650 --> 00:39:06.470
sind, weil man sie ja schön einfach

00:39:06.470 --> 00:39:08.390
programmieren kann und viele

00:39:08.390 --> 00:39:10.590
Phänomene zeigen sich eben erst, wenn es nicht vektorisierbar

00:39:10.590 --> 00:39:12.310
ist oder wenn eben diese interessanten Fälle passieren

00:39:12.310 --> 00:39:14.610
und da habe ich dann eine Software

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

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

00:39:18.710 --> 00:39:22.470
irgendwelche komplizierten Gleichungen hinschreiben

00:39:22.470 --> 00:39:24.370
kann, die das System beschreiben und die werden

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

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

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

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

00:39:33.490 --> 00:39:34.570
Ja, das

00:39:34.570 --> 00:39:36.290
kam irgendwie...

00:39:36.290 --> 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.470 --> 00:39:42.390
das ist schöne, freie Software. Ich habe sie,

00:39:43.150 --> 00:39:44.050
also es ist eigentlich drei

00:39:44.050 --> 00:39:46.370
Software. Das erste ist JIT-Code,

00:39:46.370 --> 00:39:48.250
das steht für Just-in-Time-Compilation

00:39:48.250 --> 00:39:50.250
for Ordinary Differential Equations.

00:39:51.090 --> 00:39:52.310
Also Ordinary Differential Equations

00:39:52.310 --> 00:39:54.570
sind gewöhnliche Differenzialgleichungen. Just-in-Time-Compilation

00:39:54.570 --> 00:39:56.330
sagt eventuell dem neigten Hörer was.

00:39:56.430 --> 00:39:58.150
Das ist dieser Aspekt, dass

00:39:58.150 --> 00:40:00.370
man irgendeine Eingabe

00:40:00.370 --> 00:40:02.030
hat und die wird dann unter der Haube für den Nutzer

00:40:02.030 --> 00:40:04.270
kompiliert. Und das

00:40:04.270 --> 00:40:06.390
gibt es dann auch mal für sogenannte Delay-Differential

00:40:06.390 --> 00:40:08.270
Equations und Stochastic-Differential

00:40:08.270 --> 00:40:10.250
Equations, aber ich glaube, das ist

00:40:10.250 --> 00:40:11.690
ein Detail, auf den wir jetzt nicht rumreiten müssen.

00:40:13.890 --> 00:40:14.330
Ja, und

00:40:14.330 --> 00:40:16.330
das ist ein Werkzeug, was dann

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

00:40:18.790 --> 00:40:20.270
gut, ich habe es, als ich

00:40:20.270 --> 00:40:22.210
das gemacht habe, konnte ich das natürlich schon irgendwo absehen,

00:40:22.290 --> 00:40:23.810
dass das für viele Leute sehr nützlich ist.

00:40:24.810 --> 00:40:26.230
Insbesondere, da wir uns damals

00:40:26.230 --> 00:40:28.210
auch in der Forschung damit beschäftigt haben,

00:40:28.290 --> 00:40:29.510
genau solche Probleme zu lösen.

00:40:31.370 --> 00:40:31.770
Und

00:40:31.770 --> 00:40:34.090
ja, eine Sache, die vielleicht auch noch

00:40:34.090 --> 00:40:35.810
interessant ist, also man kann jetzt natürlich sagen,

00:40:35.870 --> 00:40:37.870
der Nutzer gibt mir irgendwelche Gleichungen und die werden

00:40:37.870 --> 00:40:39.770
umgesetzt. Das ist in Python

00:40:39.770 --> 00:40:41.830
auch mit

00:40:41.830 --> 00:40:43.830
SymPy, also das ist jetzt Symbolic Python,

00:40:44.270 --> 00:40:45.530
das wird jetzt wahrscheinlich noch ein Exkurs,

00:40:46.710 --> 00:40:47.890
eine schöne Möglichkeit gibt es, die Gleichung

00:40:47.890 --> 00:40:49.870
einzugeben. Also SymPy macht

00:40:49.870 --> 00:40:51.830
was denn? Also das ist jetzt wieder tatsächlich spannend, was

00:40:51.830 --> 00:40:53.670
für die Heure, die das noch nie gehört haben?

00:40:53.790 --> 00:40:55.290
Also normales Rechnen

00:40:55.290 --> 00:40:57.850
im Computer macht man ja klassischerweise mit Zahlen.

00:40:58.430 --> 00:40:59.470
Eins plus zwei

00:40:59.470 --> 00:41:01.530
ist drei, genau. Aber

00:41:01.530 --> 00:41:03.270
SymPy rechnet mit

00:41:03.270 --> 00:41:05.570
Symbolen, also ganz abstrakten

00:41:05.570 --> 00:41:07.570
Objekten wie X. Und das

00:41:07.570 --> 00:41:08.830
Schöne an SymPy ist, dass es,

00:41:09.350 --> 00:41:11.270
oder auch generell an symbolischen Rechnen, das hat jetzt

00:41:11.270 --> 00:41:12.090
SymPy nicht erfunden,

00:41:14.190 --> 00:41:15.070
aber das Schöne ist, dass es

00:41:15.070 --> 00:41:17.510
dann exakt gewisse Sachen lösen kann.

00:41:17.610 --> 00:41:19.070
Zum Beispiel, wenn man sagt X plus X,

00:41:19.250 --> 00:41:21.090
steht da nicht X plus X, sondern

00:41:21.090 --> 00:41:23.210
da steht da 2x. Oder wenn man sagt

00:41:23.210 --> 00:41:25.230
x minus x, dann steht da

00:41:25.230 --> 00:41:27.190
nicht 10 hoch minus 16 oder so,

00:41:27.490 --> 00:41:28.890
sondern 0.

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

00:41:32.650 --> 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:37.290
diese Library gibt es und die hat auch direkt

00:41:37.290 --> 00:41:39.170
Interfaces, um Sachen in

00:41:39.170 --> 00:41:40.990
C-Code zu übersetzen, wenn man wirklich Sachen schnell

00:41:40.990 --> 00:41:43.030
machen muss, was genau das ist, was ich brauchte.

00:41:44.450 --> 00:41:45.070
Und sie

00:41:45.070 --> 00:41:46.810
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.170 --> 00:41:50.930
solche Ausdrücke analysieren, welche Symbole

00:41:50.930 --> 00:41:52.890
tauchen da eigentlich auf. Damit

00:41:52.890 --> 00:41:54.890
rechnen natürlich und eventuell sogar

00:41:54.890 --> 00:41:56.810
Gleichungen lösen, wobei das eine Sache ist, die ich

00:41:56.810 --> 00:41:58.350
interessanterweise kaum mache.

00:41:58.970 --> 00:42:00.870
Auch wenn man sich irgendwie viele Leute vorstellt, dass das

00:42:00.870 --> 00:42:02.450
wichtigste ist, wenn man so ein symbolisches Rechnen

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

00:42:04.930 --> 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.710 --> 00:42:10.870
Aber man kann es auch als Werkzeug nutzen, um

00:42:11.630 --> 00:42:13.090
ganz stumpfe

00:42:13.090 --> 00:42:14.790
Routineaufgaben durchzurechnen

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

00:42:15.290 --> 00:42:19.010
es einfach als Eingabemaske zu nutzen

00:42:19.010 --> 00:42:20.850
oder einfach

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

00:42:22.870 --> 00:42:24.590
okay, ja, welche Variablen tauchen denn eigentlich

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

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

00:42:29.270 --> 00:42:30.570
Kann man die auch, ich meine, wenn man das,

00:42:30.690 --> 00:42:32.750
wenn es eine gute Methode gibt, die anzugeben, ich, das ist auch

00:42:32.750 --> 00:42:34.850
vielleicht ein bisschen, kann man

00:42:34.850 --> 00:42:36.050
dann auch irgendwie sowas sagen wie

00:42:36.050 --> 00:42:38.730
printe mal das nett raus oder

00:42:38.730 --> 00:42:40.770
latech dafür oder so,

00:42:40.890 --> 00:42:42.790
das wäre natürlich auch, weil das

00:42:42.790 --> 00:42:44.670
mache ich nämlich sonst immer total mühselig von Hand

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

00:42:47.290 --> 00:42:48.510
Nee, ich weiß nicht, ob ich sowas sagen würde,

00:42:48.510 --> 00:42:50.570
der x plus x gleich x Quadrat

00:42:50.570 --> 00:42:52.530
oder sowas, dass man

00:42:52.530 --> 00:42:53.890
dann tatsächlich einen LaTeX-Direktor irgendwie kriegt?

00:42:54.330 --> 00:42:55.990
Ja, der hat einen LaTeX-Printer.

00:42:58.190 --> 00:42:58.670
Ich habe

00:42:58.670 --> 00:43:00.490
damit noch nicht viel gearbeitet, insofern kann ich dazu nicht so viel

00:43:00.490 --> 00:43:02.450
sagen. Also existiert definitiv.

00:43:03.290 --> 00:43:04.470
Was man halt aufpassen muss, ist

00:43:04.470 --> 00:43:05.730
die Frage, ob man das dann wirklich

00:43:05.730 --> 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.470 --> 00:43:12.570
Die Sachen sind halt so sortiert,

00:43:12.650 --> 00:43:14.290
wie Sympa das gerade für richtig hält.

00:43:15.890 --> 00:43:16.510
Also man kann das

00:43:16.510 --> 00:43:17.630
wahrscheinlich modifizieren, aber dann

00:43:17.630 --> 00:43:20.590
macht man sich mehr Arbeit, als es selbst zu schreiben.

00:43:23.730 --> 00:43:24.850
Aber auch solche Sachen

00:43:24.850 --> 00:43:26.610
gehen ja. Man kann es auch ausgeben, wenn man

00:43:26.610 --> 00:43:27.270
unbedingt möchte.

00:43:28.690 --> 00:43:30.630
Aber was natürlich so die Sachen sind, die in vielen

00:43:30.630 --> 00:43:32.190
Anwendungen gar nicht auftauchen.

00:43:33.190 --> 00:43:34.670
In dem Zusammenhang von diesem

00:43:34.670 --> 00:43:36.570
Gleichung, da würde ich mich irgendwann mal über so ein Programm

00:43:36.570 --> 00:43:38.830
beschauen, das heißt irgendwie LP-Solver oder so was?

00:43:39.470 --> 00:43:40.850
Linear Programming oder so was?

00:43:41.650 --> 00:43:43.070
Achso, ja, lineare Optimierung.

00:43:43.490 --> 00:43:44.330
Da gibt es einige

00:43:44.330 --> 00:43:45.950
Software zum...

00:43:45.950 --> 00:43:47.350
Aber ich glaube, ich meine, da bin ich jetzt

00:43:47.350 --> 00:43:49.170
wenig der Experte, ich glaube, das ist dann wieder ein Fall, wo es

00:43:49.170 --> 00:43:50.650
numerisch gelöst wird, also mit Zahlen.

00:43:51.570 --> 00:43:53.150
Das Interessante hier ist, dass wir wirklich mit

00:43:53.150 --> 00:43:54.970
abstrakten Symbolen rechnen. Das ist ein bisschen was anderes.

00:43:55.070 --> 00:43:56.210
Also natürlich, ja.

00:43:57.990 --> 00:43:59.230
Okay, ja, vielleicht könnte man

00:43:59.230 --> 00:44:00.430
das dann kombinieren oder sowas.

00:44:02.790 --> 00:44:05.290
Ich weiß nicht, ich glaube, das Standardpaket

00:44:05.290 --> 00:44:07.290
so für so konvexe Optimierung ist CVX-Opt

00:44:07.290 --> 00:44:09.170
oder so, damit habe ich schon mal

00:44:09.170 --> 00:44:09.770
ein bisschen was gemacht.

00:44:10.990 --> 00:44:12.870
Es gibt dann noch so ein paar mehr Pakete, ja.

00:44:13.250 --> 00:44:15.210
Also, aber ich glaube, das ist

00:44:15.210 --> 00:44:16.050
nochmal eine andere

00:44:16.050 --> 00:44:19.170
Richtung wahrscheinlich,

00:44:19.270 --> 00:44:20.910
obwohl das auch wahrscheinlich alles in dem Scientific

00:44:20.910 --> 00:44:23.070
Umfeld irgendwie so

00:44:23.070 --> 00:44:24.530
existiert.

00:44:24.730 --> 00:44:27.110
Es gibt sehr viele Standardprobleme mit sehr vielen Lösungen dafür

00:44:27.110 --> 00:44:29.050
und schon allein die ganzen Probleme alle mit Namen

00:44:29.050 --> 00:44:31.230
hinzuführen, da ist man dann eine ganze

00:44:31.230 --> 00:44:32.190
Karriere mit beschäftigt.

00:44:34.270 --> 00:44:35.430
Ich weiß nicht, ob das

00:44:35.430 --> 00:44:36.970
bei dir noch eine Rolle spielt, aber ich habe da so mal früher,

00:44:37.310 --> 00:44:38.810
da gab es irgendwie sowas wie Sage oder so,

00:44:38.890 --> 00:44:41.090
das war so eine Distribution von ganz vielen Dingen.

00:44:41.630 --> 00:44:43.350
Ob das das heute noch gibt? Ich habe keine Ahnung.

00:44:43.770 --> 00:44:45.610
Es gibt es, glaube ich, noch. Ich habe auch damit gearbeitet.

00:44:46.050 --> 00:44:47.550
Also, ja, also was ist

00:44:47.550 --> 00:44:49.050
Sage? Ich kann sowas, also das ist,

00:44:49.810 --> 00:44:50.870
es ist sehr komisch.

00:44:51.330 --> 00:44:53.710
Es ist weitestgehend Python

00:44:53.710 --> 00:44:55.670
und

00:44:55.670 --> 00:44:57.470
ist speziell dafür gemacht, so ein Ersatz

00:44:57.470 --> 00:44:59.050
für so Sachen wie, ja,

00:44:59.330 --> 00:45:00.830
ich glaube, Mathematiker hauptsächlich.

00:45:01.830 --> 00:45:03.250
Mathematik und so weiter zu sein. Es ist

00:45:03.250 --> 00:45:05.490
ein großer Klotz, den man

00:45:05.490 --> 00:45:07.570
sich kompilieren oder runterladen

00:45:07.570 --> 00:45:09.350
muss. Der ist dann

00:45:09.350 --> 00:45:10.670
600 Megabyte groß oder so

00:45:10.670 --> 00:45:13.410
und funktioniert weitestgehend

00:45:13.410 --> 00:45:15.410
wie Python, aber nicht

00:45:15.410 --> 00:45:17.350
ganz. Also es gibt so

00:45:17.350 --> 00:45:19.270
eigenwillige

00:45:19.270 --> 00:45:20.710
Modifikationen, sage ich mal,

00:45:21.150 --> 00:45:23.310
die dazu dienen, das ansprechender zu machen.

00:45:23.590 --> 00:45:25.070
Ob das jetzt gut ist oder nicht,

00:45:25.570 --> 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.250
Potenzierung macht, statt

00:45:31.250 --> 00:45:33.230
Sternchen, Sternchen. Also Sternchen, Sternchen macht auch noch

00:45:33.230 --> 00:45:35.330
Potenzierung, aber man kann es jetzt auch

00:45:35.330 --> 00:45:37.390
mit... Okay, das wusste ich gar nicht, dass sie das geändert haben.

00:45:38.230 --> 00:45:39.210
Also solche

00:45:39.210 --> 00:45:41.430
Änderungen sind da drin. Es sind viele Sachen automatisch

00:45:41.430 --> 00:45:42.650
geladen als Pakete.

00:45:43.410 --> 00:46:08.250
Ähm, in so einem Standard-Namensraum, also es macht so ein paar Sachen, ja, wie soll ich sagen, komisch kaputt, die, nicht kaputt, aber so Sachen, die in Python eigentlich ganz gut sind, dass man den Standard-Namensraum eben nicht mit 10.000 Dingen vollgemüllt hat und die nicht einfach aus Versehen überschreiben kann und, ähm, weiß, wo die Dinge kommen, ähm, äh, wurden dann wieder zu nicht gemacht.

00:46:08.250 --> 00:46:10.010
warum man jetzt den

00:46:10.010 --> 00:46:11.810
Zirkum-Flex-Operator unbedingt brauchte,

00:46:12.130 --> 00:46:14.230
dafür, ja, ob das so

00:46:14.230 --> 00:46:15.270
wichtig ist, gut, ja.

00:46:16.670 --> 00:46:18.070
Weiß ich nicht. Also ich habe damit

00:46:18.070 --> 00:46:20.090
gearbeitet, es kann ein bisschen

00:46:20.090 --> 00:46:22.190
mehr, oder konnte zu dem Zeitpunkt ein bisschen mehr als

00:46:22.190 --> 00:46:24.090
simpel, andererseits eben

00:46:24.090 --> 00:46:25.290
Sachen Gleichung lösen.

00:46:26.010 --> 00:46:28.210
Was wie gesagt die Sache ist, die ich nicht mache, auch wenn

00:46:28.210 --> 00:46:30.170
sie irgendwie alle warten, sondern ich nutze es wirklich eben

00:46:30.170 --> 00:46:32.150
um Gleichung zu verarbeiten und damit

00:46:32.150 --> 00:46:34.070
einfache Sachen zu machen. Deswegen habe ich das

00:46:34.070 --> 00:46:35.510
letzten Endes nicht gebraucht.

00:46:36.810 --> 00:46:38.030
Und es ist wie gesagt dieser

00:46:38.030 --> 00:46:39.950
große monolithische Klotz, den man dann immer

00:46:39.950 --> 00:46:42.070
auch komplett updaten muss oder wo man

00:46:42.070 --> 00:46:44.170
ja, es war nicht sehr

00:46:44.170 --> 00:46:46.010
handhabbar,

00:46:46.130 --> 00:46:47.090
aber nicht schön, fand ich.

00:46:47.750 --> 00:46:49.850
Aber noch ein kurzer Rückbezug, ist super zum

00:46:49.850 --> 00:46:51.330
Code-Golfen, wie gesagt, alles wird in die,

00:46:51.690 --> 00:46:53.270
viele Dinge sind im Standard-Namensraum,

00:46:53.670 --> 00:46:56.070
das heißt, eine Lösung, ein Python-Programm

00:46:56.070 --> 00:46:58.190
kompakter zu machen in Code-Golfen

00:46:58.190 --> 00:46:59.350
ist dann, mach es in Sage.

00:47:01.010 --> 00:47:01.950
Auch nicht schlecht, ja.

00:47:01.970 --> 00:47:03.870
Ist natürlich keine Python-Lösung mehr, aber ja.

00:47:05.630 --> 00:47:06.030
Ja,

00:47:06.210 --> 00:47:20.330
Interessant. Also okay, aber SymPy scheint auf jeden Fall dann, wenn man irgendwie so Gleichungen symbolisch verarbeiten möchte, dann halt so das Mittel der Wahl zu sein. Was gibt es denn noch an Bibliotheken oder Software, die so regelmäßig benutzt werden und da eine wichtige Rolle spielen?

00:47:20.570 --> 00:47:22.450
Also ich glaube, NumPy ist

00:47:22.450 --> 00:47:24.490
klar, SciPy ist,

00:47:25.050 --> 00:47:25.750
stellt einem

00:47:25.750 --> 00:47:28.470
viele Simulations und Statistik

00:47:28.470 --> 00:47:29.750
und sonst was Tools zur Verfügung.

00:47:30.210 --> 00:47:32.250
Nutze ich zum Beispiel auch unter der Haube, um

00:47:32.250 --> 00:47:34.070
gewöhnliche Differenzialgleichungen zu integrieren.

00:47:34.190 --> 00:47:36.210
Für andere Differenzialgleichungen dann nicht mehr, weil das

00:47:36.210 --> 00:47:38.410
komplizierter ist. Da habe ich dann meine eigenen

00:47:38.410 --> 00:47:39.690
Integratoren implementiert.

00:47:42.910 --> 00:47:44.410
Ja, dann, gut,

00:47:44.450 --> 00:47:46.810
es gibt viele Sachen für Datenfahr,

00:47:47.230 --> 00:47:48.070
also um wirklich

00:47:48.070 --> 00:47:50.390
große Datenmengen und vor allem Daten zu verwalten,

00:47:50.390 --> 00:48:00.050
Ich glaube, ihr hattet schon mal eine Folge zu Pandas, insofern werde ich davon nicht so viel erzählen. Kann ich auch gar nicht, weil ich es in der Regel nicht so viel mit Daten zu tun habe, aber die Daten, die ich habe, sind einigermaßen überschaubar.

00:48:02.970 --> 00:48:27.090
Ja und dann eben ganz viele Bibliotheken, die gerade genau die Spezialanwendung machen, die man braucht und da ist eben das Schöne an Python, denke ich, dass es relativ einfach ist, erstmal irgendwas, wenn es nicht effizient sein soll, zu schreiben und zur Verfügung zu stellen, insbesondere auch Dinge zu nutzen und sie natürlich auch mit anderen Dingen zusammen zu nutzen, weil man am Ende eine vollwertige Programmiersprache dahinter hat.

00:48:27.590 --> 00:48:49.290
Was immer das Problem mit anderen Sachen ist, die, also, ja, dass man eben irgendwann an die Grenzen stößt, dass man, gut, viele, häufig braucht man die Sachen natürlich auch nicht, häufig braucht man nicht, also, wenn ich jetzt, was weiß ich, Leute, die Matlab oder was auch immer nutzen, ja, die wollen damit natürlich auch keinen Webserver betreiben oder was auch immer.

00:48:51.590 --> 00:48:54.030
ja, man kann halt auch

00:48:54.030 --> 00:48:55.970
immer, also ich glaube, der Vorteil ist eher

00:48:55.970 --> 00:48:58.010
nicht, also weniger, dass man solche

00:48:58.010 --> 00:48:59.830
Sachen wie Web-Server oder so weiter nutzen kann, sondern

00:48:59.830 --> 00:49:02.130
dass man sagen kann, das hier ist eine universelle

00:49:02.130 --> 00:49:03.910
Programmiersprache, die lernen wir jetzt mal bitte alle

00:49:03.910 --> 00:49:05.330
und dann können wir dann

00:49:05.330 --> 00:49:08.050
machen, was wir wollen und wenn man allgemeine

00:49:08.050 --> 00:49:09.970
Programmierkonzepte nutzt, kann man

00:49:09.970 --> 00:49:11.930
sie verwenden, ob man jetzt, also muss jetzt gar nicht

00:49:11.930 --> 00:49:13.930
in Python sein, aber wenn man

00:49:13.930 --> 00:49:15.670
sowas wie objektorientiertes Programmieren einmal

00:49:15.670 --> 00:49:17.950
verstanden hat, kann man das dann eben

00:49:17.950 --> 00:49:19.890
für Simulationen nutzen oder oder oder.

00:49:20.730 --> 00:49:22.630
Was ist so die häufigste andere Sprache, die du findest

00:49:22.630 --> 00:49:24.690
in deinem wissenschaftlichen Umfeld, mit der du

00:49:24.690 --> 00:49:26.430
dann auch arbeiten wollen würdest oder sagst,

00:49:26.830 --> 00:49:28.490
das gehört auch dazu? Also arbeiten wollen würden,

00:49:28.550 --> 00:49:30.610
das ist ja dahingestellt, ich musste

00:49:30.610 --> 00:49:32.930
sage ich mal

00:49:32.930 --> 00:49:34.410
einen Kurs

00:49:34.410 --> 00:49:36.790
Datenanalyse in MATLAB für Biologen unterrichten.

00:49:38.470 --> 00:49:39.050
Das heißt,

00:49:39.170 --> 00:49:40.770
ja, das ist so die andere Programmiersprache, mit der

00:49:40.770 --> 00:49:42.690
ich viel zu tun hatte. Ich habe es aber

00:49:42.690 --> 00:49:44.950
geschafft, das weitestgehend

00:49:44.950 --> 00:49:46.790
MATLAB nie anzurühren dazu für. Also es

00:49:46.790 --> 00:49:48.690
gibt ja eine freie Alternative namens Octave,

00:49:48.750 --> 00:49:53.170
das macht sich mal so für freundefreier Software etwas erträglicher aus,

00:49:53.230 --> 00:49:55.230
dem musste ich mich da nicht irgendwie rumschlagen, das zu installieren.

00:49:55.930 --> 00:49:58.590
Und ja, ich habe es tatsächlich weitestgehend geschafft,

00:49:58.650 --> 00:50:01.230
diesen Kurs zu lehren, ohne das jemals anzurühren.

00:50:03.050 --> 00:50:06.230
Und ja, also ich würde auch mit dieser Programmiersprache nicht arbeiten,

00:50:06.230 --> 00:50:08.890
weil es gibt Sachen, das Schöne ist,

00:50:08.910 --> 00:50:11.170
ich habe es irgendwie so dann zwei Monate vor dem Kurs mich hingesetzt

00:50:11.170 --> 00:50:15.790
und das gelernt und wirklich jede Sache, wo ich denke,

00:50:15.910 --> 00:50:16.910
okay, wer hat sich das ausgedacht,

00:50:16.970 --> 00:50:18.630
das kann doch nur zu tausenden von Fehlern

00:50:18.630 --> 00:50:19.830
und sonst was Problemen führen.

00:50:20.710 --> 00:50:22.170
Wird da auch zu tausenden von Fehlern und Problemen los?

00:50:22.170 --> 00:50:23.310
Ja, flog mir dann die Ohren, ja.

00:50:26.090 --> 00:50:28.150
Es passt wirklich zum Teil, wie die Voraussetzung war.

00:50:28.250 --> 00:50:30.450
Ich habe ja auch, ja gut, das kann man jetzt wieder nicht vorführen,

00:50:30.550 --> 00:50:33.050
aber so ein Beispiel, wo man an einer Stelle,

00:50:34.150 --> 00:50:35.630
ich hoffe, ich erzähle jetzt doch noch mal ein bisschen.

00:50:36.410 --> 00:50:38.010
Matap hat die großartige Idee gehabt,

00:50:38.070 --> 00:50:41.170
dass man das Leerzeichen als Elementtrennungsoperator

00:50:41.170 --> 00:50:42.290
in Arrays nutzt.

00:50:43.090 --> 00:50:43.970
Ja, ja, ja.

00:50:44.290 --> 00:50:45.110
Nämlich, da war doch was.

00:50:45.410 --> 00:50:47.930
Genau, also statt Kommata wie in Python.

00:50:48.430 --> 00:50:52.110
Und man kann auch Kommata nutzen, man kann auch Semikola nutzen,

00:50:52.190 --> 00:50:54.430
das ist dann eine neue Zeile, aber man kann auch Leerzeichen nutzen.

00:50:55.250 --> 00:50:59.430
Und dann gibt es jetzt das Problem, wenn ich jetzt was tippe wie eckige Klammer auf,

00:50:59.470 --> 00:51:00.110
was steht für Array?

00:51:00.330 --> 00:51:01.490
Okay, soweit so erwartet.

00:51:02.410 --> 00:51:06.590
Fünf Leerzeichen plus Leerzeichen drei, dann ist das natürlich acht.

00:51:07.510 --> 00:51:10.470
Wenn ich aber eintippe fünf Leerzeichen plus kein Leerzeichen,

00:51:10.470 --> 00:51:13.870
Achtung, drei, ist das natürlich das Array, was fünf und drei enthält.

00:51:14.310 --> 00:51:15.310
war das Leerzeichen, ja, der

00:51:15.310 --> 00:51:16.450
plus 3.

00:51:17.730 --> 00:51:19.430
Und das Plus gehört dann halt zu der Zahl

00:51:19.430 --> 00:51:21.810
und sagt einfach nur, das ist jetzt plus 5 und nicht minus.

00:51:21.870 --> 00:51:23.870
Genau, ja. Und das

00:51:23.870 --> 00:51:25.570
hört sich so noch

00:51:25.570 --> 00:51:27.610
okay, kann man noch verstehen. Das Problem ist, wenn jetzt

00:51:27.610 --> 00:51:29.810
die Arrays etwas größer und komplizierter werden und da komplizierte

00:51:29.810 --> 00:51:31.870
Ausdrücke drinstehen, was manchmal tatsächlich der Fall ist,

00:51:32.810 --> 00:51:33.730
dann kann einem

00:51:33.730 --> 00:51:35.570
die Formatierung dieses Arrays dann die Probleme

00:51:35.570 --> 00:51:36.710
machen. Also, ja.

00:51:37.390 --> 00:51:39.450
Das war der Fehler, wo wir wirklich eine halbe Stunde gesucht haben,

00:51:39.510 --> 00:51:40.850
um zu verstehen, was da überhaupt passiert.

00:51:41.110 --> 00:51:42.630
Ja, das habe ich mir gut verstanden.

00:51:44.010 --> 00:51:45.690
Man starrt da drauf und denkt sich so,

00:51:46.370 --> 00:51:46.610
ja.

00:51:47.430 --> 00:51:49.950
Und die Sprache ist halt jetzt voll davon.

00:51:50.510 --> 00:51:51.630
Das wurde halt in den

00:51:51.630 --> 00:51:53.930
80er Jahren entwickelt,

00:51:54.050 --> 00:51:55.390
oder so 1987, 86, keine Ahnung.

00:51:56.070 --> 00:51:57.970
Und seitdem gefühlt

00:51:57.970 --> 00:51:58.710
nicht mehr weiterentwickelt.

00:51:59.810 --> 00:52:01.230
Und ja, so bedient es sich auch.

00:52:01.410 --> 00:52:03.490
Das erinnert mich so ein bisschen an Python, wenn du das Tupel

00:52:03.490 --> 00:52:05.570
machen übergeben willst, dass du dahinter noch ein Komma machen willst,

00:52:05.610 --> 00:52:07.130
weil da sonst kein Tupel macht, wenn du da einfach

00:52:07.130 --> 00:52:08.390
ein Element nur drin hast.

00:52:09.310 --> 00:52:11.570
Ja, genau, das ist noch so,

00:52:11.570 --> 00:52:13.850
ja, aber das passiert halt andauernd.

00:52:14.010 --> 00:52:16.490
Ja, und da gibt es

00:52:16.490 --> 00:52:18.350
so zwischendrin gibt es R, das ist schon ein bisschen

00:52:18.350 --> 00:52:18.690
besser.

00:52:20.950 --> 00:52:22.470
Also erstens ist es frei, zweitens

00:52:22.470 --> 00:52:24.610
ist es nicht ganz so irrsinnig,

00:52:24.690 --> 00:52:26.570
es hält sich so ein bisschen an Programmierstandards,

00:52:26.730 --> 00:52:26.930
aber

00:52:26.930 --> 00:52:30.470
ja, damit habe ich noch nicht so

00:52:30.470 --> 00:52:32.210
viel zu tun gehabt. Und es gibt natürlich auch diverse

00:52:32.210 --> 00:52:34.370
andere Sparen. Das ist jetzt relativ

00:52:34.370 --> 00:52:35.690
ein Kombis für Simulationen oder

00:52:35.690 --> 00:52:37.970
Sachen, die schnell laufen müssen, ist Julia,

00:52:38.970 --> 00:52:40.650
wo ich dann mich

00:52:40.650 --> 00:52:42.590
immer noch frage, okay, wieso brauchen

00:52:42.590 --> 00:52:44.530
wir jetzt hier noch klammern, weil

00:52:44.530 --> 00:52:46.110
die Python ja zum Beispiel abgeschafft hat

00:52:46.110 --> 00:52:48.510
und insbesondere, dass ich eine Sprache ist, die sich

00:52:48.510 --> 00:52:50.670
in vielen Fällen, so wie ich es verstanden habe, an Python

00:52:50.670 --> 00:52:52.550
orientiert. Ja, aber

00:52:52.550 --> 00:52:54.650
sehr viel mache ich zur Zeit in Python und wenn es dann

00:52:54.650 --> 00:52:56.110
schnell gehen muss, mache ich es eigentlich in C.

00:52:56.610 --> 00:52:58.610
Also das sind so die Sprachen, mit denen ich

00:52:58.610 --> 00:52:59.890
direkt zu tun habe.

00:53:00.410 --> 00:53:02.830
Dann direkt tatsächlich als C-Extension

00:53:02.830 --> 00:53:04.490
oder nimmst du sowas wie Cytan

00:53:04.490 --> 00:53:04.950
und

00:53:04.950 --> 00:53:08.450
wandelst das dann halt um

00:53:08.450 --> 00:53:10.610
in C. Ich mache es tatsächlich

00:53:10.610 --> 00:53:12.530
als C-Extension, weil ich es einmal gelernt habe und mich

00:53:12.530 --> 00:53:14.670
auskenne. Zum einen und zum anderen

00:53:14.670 --> 00:53:16.710
jetzt, um auf meine eigene Software zurückzukommen,

00:53:17.330 --> 00:53:18.430
da ist ja wieder gerade das Problem,

00:53:18.530 --> 00:53:20.450
dass ich es dann wirklich möglichst schnell haben möchte

00:53:20.450 --> 00:53:22.490
und wenn ich den Nutzer dann

00:53:22.490 --> 00:53:24.470
Siphon-Code eingeben lasse, habe ich

00:53:24.470 --> 00:53:26.210
nicht so viel gewonnen.

00:53:26.610 --> 00:53:28.230
Ja, klar. Dann kann ich auch direkt

00:53:28.230 --> 00:53:30.350
C-Code machen und dann kann ich auch noch viele Sachen nutzen,

00:53:30.350 --> 00:53:32.350
die eben so

00:53:32.350 --> 00:53:33.770
in Siphon nicht drin sind.

00:53:34.210 --> 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.870 --> 00:53:42.310
Also, dann mache ich es schon

00:53:42.310 --> 00:53:44.350
einmal Hardcore und kann

00:53:44.350 --> 00:53:46.350
dann wenigstens die Sachen, die wirklich

00:53:46.350 --> 00:53:48.510
schnell sein müssen, auch radikal

00:53:48.510 --> 00:53:49.070
optimieren.

00:53:51.450 --> 00:53:52.410
Du sitzt dann am liebsten mit der

00:53:52.410 --> 00:53:53.530
Stoppuhr, timet und dann

00:53:53.530 --> 00:53:55.350
guckst du dir das dann wirklich an?

00:53:56.050 --> 00:53:58.250
Ja, also in einigen Fällen wirklich ja,

00:53:58.370 --> 00:54:00.250
zum anderen bilde ich

00:54:00.250 --> 00:54:02.370
mir ein, ein bisschen Erfahrung zu haben,

00:54:02.450 --> 00:54:04.090
wie man Dinge schnell macht. Also

00:54:04.090 --> 00:54:06.310
in vielen Fällen schreibe

00:54:06.310 --> 00:54:08.450
ich die Dinge dann hoffentlich auch direkt so, dass sie schnell sind.

00:54:09.170 --> 00:54:10.370
Also hintereinander direkt in den Speicher,

00:54:10.370 --> 00:54:12.490
dass ein Zeiger nicht so schnell oder so viel hin- und herspringen

00:54:12.490 --> 00:54:14.070
muss oder was es dann so ist. Ja, okay,

00:54:14.190 --> 00:54:16.290
auf der Ebene bin ich noch nicht, aber dass man sich halt schon mal

00:54:16.290 --> 00:54:16.870
überlegt,

00:54:18.730 --> 00:54:20.330
ja, dass das könnte ich

00:54:20.330 --> 00:54:20.790
jetzt,

00:54:23.050 --> 00:54:24.290
dass man eben hier

00:54:24.290 --> 00:54:26.370
diese gewisse Schleifen gar nicht braucht oder

00:54:26.370 --> 00:54:28.330
ja,

00:54:28.610 --> 00:54:30.410
mit Zeiger-Arithmetik arbeitet oder eben

00:54:30.410 --> 00:54:32.710
sich überlegt, okay, jetzt habe ich hier noch einen Funktionsaufruf

00:54:32.710 --> 00:54:34.410
und das kostet Zeit und

00:54:34.410 --> 00:54:36.310
wie kann ich das

00:54:36.310 --> 00:54:37.710
vermeiden oder wie kann ich hier die Suche,

00:54:37.710 --> 00:54:39.530
also irgendwelche Suchoperationen, ja.

00:54:40.030 --> 00:54:41.850
Okay, okay, das hört sich tatsächlich an, als wärt ihr tatsächlich

00:54:41.850 --> 00:54:43.830
von der schwachen Hardware, die ihr 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:48.290
schon weiter.

00:54:50.410 --> 00:54:51.670
Abhängig von dieser Komplexität,

00:54:51.770 --> 00:54:54.170
dieser unheimlich großen Berechnungen.

00:54:54.330 --> 00:54:55.890
Naja, also die Hardware kann

00:54:55.890 --> 00:54:56.870
ja nur so viel leisten.

00:54:57.930 --> 00:54:59.350
Also erstmal, wenn ich ja durch die,

00:55:00.090 --> 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.350
einen Faktor von 1000 oder so raus.

00:55:05.750 --> 00:55:06.030
Bei mir.

00:55:08.410 --> 00:55:09.470
Ja, da

00:55:09.470 --> 00:55:11.170
will ich jetzt nicht mehr mit der...

00:55:11.170 --> 00:55:12.410
Das klingt jetzt ziemlich viel.

00:55:14.230 --> 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.350
gerade solche Probleme habe ich eben.

00:55:23.550 --> 00:55:25.230
Das muss man ja auch. Also

00:55:25.230 --> 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:30.670
die ich und vielleicht noch

00:55:30.670 --> 00:55:33.610
ein paar kleinere Communities auf der Welt

00:55:33.610 --> 00:55:33.990
haben,

00:55:34.730 --> 00:55:37.350
wo das wirklich einen riesen Unterschied macht

00:55:37.350 --> 00:55:39.350
und wo ich dann eben auch Software geschrieben habe, die

00:55:39.350 --> 00:55:40.450
diesen Unterschied dann wegmacht, aber

00:55:40.450 --> 00:55:43.350
für Python-Nutzer rausholt.

00:55:45.890 --> 00:55:46.250
Die...

00:55:46.250 --> 00:55:47.090
So, jetzt war ich...

00:55:47.090 --> 00:55:49.430
Was war nochmal deine Frage?

00:55:49.530 --> 00:55:51.270
Ja, es geht so ein bisschen darum, also wie das dann hinterher

00:55:51.270 --> 00:55:53.210
aussieht, also warum du diese Geschwindigkeit

00:55:53.210 --> 00:55:55.110
dann über C rausholen musst, um das nicht

00:55:55.110 --> 00:55:57.170
irgendwie, weiß nicht, andere Ideen dafür noch...

00:55:57.170 --> 00:55:58.610
Großrechnung. Einfach mehr Hardware, ja.

00:55:59.070 --> 00:56:00.730
Genau, mehr Hardware draufschmeißen. Genau.

00:56:00.950 --> 00:56:03.130
Also natürlich kann man immer mehr Hardware draufschmeißen,

00:56:03.210 --> 00:56:04.990
aber diese Hardware muss ja dann auch erstmal, also gerade wenn ich

00:56:04.990 --> 00:56:07.270
einen Cluster habe, muss ich mich erstmal damit auseinandersetzen,

00:56:07.310 --> 00:56:08.550
wie ich meine Sachen clusterfähig mache.

00:56:09.230 --> 00:56:31.170
Und in vielen dieser Fälle ist es auch so, ich möchte das mal eben schnell laufen lassen, sofort das Ergebnis sehen und dann darauf basierend weiterdenken. Also ich habe viele Fälle, da habe ich eine Simulation, ich möchte jetzt verstehen, was passiert da, ich drehe an einem Parameter, ich möchte verstehen, was der Parameter macht und dann möchte ich sofort das Ergebnis sehen. Da hilft mir ein Großrechner nicht viel weiter, wenn ich das jetzt erstmal auf dem Großrechner lagen muss und so weiter und so fort.

00:56:31.170 --> 00:56:31.590
Mhm.

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.550 --> 00:56:42.850
Das zweite Problem ist, ja, auch der Großrechner kann die Sachen nur hintereinander ausführen.

00:56:44.030 --> 00:56:49.230
Viele Sachen, also gerade Simulationen, sind eben, ich habe ein großes System, ich simuliere das über die Zeit, es baut alles aufeinander auf.

00:56:49.610 --> 00:56:56.150
Ich kann einfach nicht diese 500 Zeitschritte parallelisieren, denn die brauchen die ersten Ergebnisse vom vorigen Zeitschritt.

00:56:57.730 --> 00:57:01.270
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.790 --> 00:57:08.270
sage, okay, ich möchte jetzt 500 Simulationen laufen lassen, die kann ich dann parallelisieren.

00:57:08.990 --> 00:57:10.510
Aber da bin ich natürlich aufgerufen, wenn es schneller geht,

00:57:10.570 --> 00:57:14.230
weil wenn es schneller geht, kann ich eben 500 Simulationen laufen lassen statt nur 5.

00:57:15.450 --> 00:57:19.090
Und ja, das macht dann halt in vielen Fällen auch schon wieder einen schönen Unterschied.

00:57:19.350 --> 00:57:21.550
Das klingt tatsächlich so, also wäre das ein großer Vorteil.

00:57:21.610 --> 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:26.070
weil ich hätte irgendwie gedacht, dass man die Sachen in Python

00:57:26.070 --> 00:57:28.130
dann irgendwie mit Zeissen oder

00:57:28.130 --> 00:57:30.150
was, dann irgendwie trotzdem so hinbiegt,

00:57:30.290 --> 00:57:32.410
dass das bewerbsfähig ist.

00:57:32.670 --> 00:57:34.030
Ich weiß nicht, wenn man sich jetzt hinsetzt

00:57:34.030 --> 00:57:36.270
und das mit Zeissen hinbiegt, dann hat man eventuell

00:57:36.270 --> 00:57:37.270
Faktor 10.

00:57:38.390 --> 00:57:39.550
Das hängt so ein bisschen vom Problem ab.

00:57:39.670 --> 00:57:41.610
Also ich habe wirklich Probleme, da habe ich,

00:57:42.010 --> 00:57:43.170
also was ich gemacht habe, ist,

00:57:43.590 --> 00:57:45.870
ich schreibe immer erst die Sache komplett in Python.

00:57:47.150 --> 00:57:48.250
Wenn ich meine eigenen Sachen baue,

00:57:49.310 --> 00:57:49.970
mache ich mir einen

00:57:49.970 --> 00:57:52.050
Kern aus Python, von dem

00:57:52.050 --> 00:57:54.010
ich weiß, was er tut, der lesbar und

00:57:54.010 --> 00:57:55.530
so weiter ist. Und

00:57:55.530 --> 00:57:57.830
wo ich erstmal lerne,

00:57:57.950 --> 00:57:59.870
den Algorithmus so ein bisschen zu optimieren und

00:57:59.870 --> 00:58:01.710
wie speichere ich Dinge und so weiter und so fort.

00:58:01.770 --> 00:58:03.930
Und dann gehe ich hin und schreibe das Ganze

00:58:03.930 --> 00:58:04.790
nochmal neu in C.

00:58:05.830 --> 00:58:08.050
Was auch sehr schön ist, dann habe ich irgendwie eine Testmöglichkeit.

00:58:08.130 --> 00:58:09.810
Ich habe einfach meine zwei Kerne, ich bombardiere

00:58:09.810 --> 00:58:11.690
die mit zufälligen Eingaben und gucke,

00:58:11.870 --> 00:58:13.150
ob sie das gleiche tun.

00:58:14.970 --> 00:58:15.610
Aber von dem,

00:58:15.710 --> 00:58:17.430
davor habe ich halt dann auch einen guten Vergleich.

00:58:18.030 --> 00:58:19.630
Weil ich habe das einmal in Python

00:58:19.630 --> 00:58:20.850
geschrieben, genau dasselbe.

00:58:21.610 --> 00:58:23.650
Vielleicht dann, ehrlicher gesagt, auch nicht

00:58:23.650 --> 00:58:25.550
optimiert darauf, dass es besonders schnell ist,

00:58:25.630 --> 00:58:27.530
sondern eben auch, dass es lesbar ist und vergleichbar und dass ich

00:58:27.530 --> 00:58:29.830
verstehe, was es tut und dass es gut testbar

00:58:29.830 --> 00:58:30.590
ist und so weiter und so fort.

00:58:31.150 --> 00:58:33.510
Das muss ich dann schon eingestehen, aber es ist

00:58:33.510 --> 00:58:35.570
trotzdem, je nach Aufgabenstellung wirklich,

00:58:35.850 --> 00:58:36.950
sind es solche großen Faktoren.

00:58:37.590 --> 00:58:39.110
Mit Cypher, ja,

00:58:39.530 --> 00:58:41.470
wenn ich das jetzt in Cypher programmieren könnte

00:58:41.470 --> 00:58:43.470
oder wollte oder meinen Nutzer

00:58:43.470 --> 00:58:45.430
das vermuten würde,

00:58:45.510 --> 00:58:46.930
dass er das in Cypher programmiert,

00:58:48.310 --> 00:58:49.450
ja, okay, dann

00:58:49.450 --> 00:58:51.610
wäre es vielleicht nur noch ein Faktor, keine Ahnung,

00:58:51.730 --> 00:58:52.750
10, 5, was auch immer,

00:58:53.490 --> 00:58:55.250
Aber dann geht natürlich auch sehr viel Programmierzeit

00:58:55.250 --> 00:58:55.550
drauf.

00:58:56.830 --> 00:58:58.950
Wenn du jetzt sagst, so deine Nutzer, das heißt, du

00:58:58.950 --> 00:59:00.950
stellst tatsächlich so ein Programmierinterface bereit

00:59:00.950 --> 00:59:02.930
und deine Nutzer machen ihre

00:59:02.930 --> 00:59:05.010
Dateneingabe oder die Schnittstelle

00:59:05.010 --> 00:59:05.950
dafür noch komplett selber?

00:59:06.730 --> 00:59:08.390
Also meine Nutzer sind Programmierer.

00:59:08.710 --> 00:59:10.990
Das muss ich auch immer unterscheiden. Das ist immer sehr

00:59:10.990 --> 00:59:12.530
lustig, wenn man dann auf diesem Python-Treffen

00:59:12.530 --> 00:59:14.750
sitzt mit allen möglichen Leuten

00:59:14.750 --> 00:59:16.990
und die aus dem Web-Bereich und so weiter

00:59:16.990 --> 00:59:18.870
kommen und erstmal deren Nutzer natürlich keine

00:59:18.870 --> 00:59:20.850
Programmierer sind und sich dann

00:59:20.850 --> 00:59:22.830
Gedanken und man ganz andere Vorstellungen

00:59:22.830 --> 00:59:24.230
wie man eine Fehlermeldung schmeißt.

00:59:25.750 --> 00:59:27.650
Meinen Benutzer schmeiße ich einfach eine Fehlermeldung

00:59:27.650 --> 00:59:29.030
und die können die dann hoffentlich auch lesen.

00:59:29.250 --> 00:59:29.710
Naja, manchmal.

00:59:32.030 --> 00:59:33.990
Also meine Nutzer sind Programmierer

00:59:33.990 --> 00:59:38.970
und die brauchen jetzt kein grafisches Interface zum Glück.

00:59:39.190 --> 00:59:41.970
Du visualisierst dann auch gar nichts von den Lösungen irgendwie,

00:59:42.090 --> 00:59:43.370
sondern das schmeißt du dann irgendwo rein

00:59:43.370 --> 00:59:44.090
und dann kann man...

00:59:44.090 --> 00:59:46.910
Ja, das kann der Nutzer dann mit einem Plotprogramm machen.

00:59:47.190 --> 00:59:49.870
Das ist der Plotprogramm der Wahl oder was auch immer.

00:59:50.310 --> 00:59:51.570
Gut, meistens ist da Matplotlib.

00:59:52.830 --> 01:00:01.990
Aber das ist ja in modularer Denkweise nicht meine Verantwortung, da irgendwas zu visualisieren, sondern mir geht es nur darum, die Lösung zu produzieren an der Stelle.

01:00:04.570 --> 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.950 --> 01:00:22.250
Und würdest du sagen, das, was du da machst, das hast du jetzt gesagt, das ist irgendwie sehr speziell auf so einer Insel, das kannst du auch übertragen oder könnte man übertragen auf andere Wissenschaften und andere Anwendungsfälle so ohne weiteres?

01:00:22.250 --> 01:00:23.310
oder ist das gar nicht möglich?

01:00:23.310 --> 01:00:24.890
Ja, also so klein ist die Insel nicht.

01:00:24.970 --> 01:00:26.670
Das Problem, gewöhnliche Differenzialgleichung

01:00:26.670 --> 01:00:28.750
oder retardierte Differenzialgleichung

01:00:28.750 --> 01:00:29.710
und so weiter und so fort zu lösen,

01:00:29.770 --> 01:00:32.630
das betrifft schon eine gewisse Menge,

01:00:32.890 --> 01:00:34.650
also schon nicht wenig Leute.

01:00:34.790 --> 01:00:36.570
Also ich könnte jetzt,

01:00:36.670 --> 01:00:38.490
es tut mir schwer, eine Zahl abzuschätzen,

01:00:38.570 --> 01:00:40.450
wie viele Wissenschaftler und andere Leute

01:00:40.450 --> 01:00:41.750
sich mit so einem Problem beschäftigen.

01:00:44.170 --> 01:00:45.830
Wir stinken halt nicht an gegen die Leute,

01:00:45.930 --> 01:00:47.190
die partielle Differenzialgleichung haben.

01:00:47.250 --> 01:00:48.890
Das sind diese klassischen vektorisierbaren Fälle,

01:00:50.170 --> 01:00:52.290
Was man so sieht, wenn Leute Wärmeleitungen

01:00:52.290 --> 01:00:53.890
simulieren oder irgendwie

01:00:53.890 --> 01:00:55.870
physikalische Verformung und solche Sachen.

01:00:56.190 --> 01:00:57.690
Die machen alle Parzelle von Zahlgleichen.

01:01:01.430 --> 01:01:02.270
Ja, also

01:01:02.270 --> 01:01:03.910
die Insel ist nicht so klein,

01:01:04.670 --> 01:01:05.830
aber sie ist, ja,

01:01:06.250 --> 01:01:08.170
kleiner als vielleicht andere größere Inseln.

01:01:09.350 --> 01:01:10.250
Was jetzt wahrscheinlich keine

01:01:10.250 --> 01:01:11.290
sinnvolle Aussage ist.

01:01:13.170 --> 01:01:14.290
Ja, also ich meine, gut,

01:01:14.650 --> 01:01:16.250
ich kenne jetzt vor allen Dingen halt

01:01:16.250 --> 01:01:18.250
den ganzen

01:01:18.250 --> 01:01:19.890
Data-Science-Bereich, da auch das

01:01:19.890 --> 01:01:21.730
das wissenschaftliche Umfeld. Da gibt es halt

01:01:21.730 --> 01:01:23.950
Differenzialgleichungen hat man da eigentlich nie so wirklich

01:01:23.950 --> 01:01:25.810
zu tun, auch nicht mit symbolischen. Da wird immer eher so,

01:01:25.910 --> 01:01:27.690
da packt man die große

01:01:27.690 --> 01:01:29.850
GPU aus und dann sucht man damit das

01:01:29.850 --> 01:01:31.910
Problem halt zu. Nee, aber das ist ja auch ein ganz anderer Ansatz.

01:01:32.070 --> 01:01:33.950
Ich habe Daten und ich will

01:01:33.950 --> 01:01:35.990
sie verstehen. Bei Simulationen geht es darum,

01:01:36.030 --> 01:01:37.950
ich habe eine Idee,

01:01:38.050 --> 01:01:39.830
wie Sachen funktionieren. Ich möchte jetzt mal gucken, was eigentlich

01:01:39.830 --> 01:01:41.510
passiert, wenn ich diese Idee in die Tat umsetze.

01:01:41.990 --> 01:01:43.790
Ganz doof gesagt. Ich habe mein Modell und

01:01:43.790 --> 01:01:46.010
jetzt lasse ich es mal laufen. Ja, aber da würde

01:01:46.010 --> 01:01:47.850
mich eigentlich auch mal interessieren, wie ist das denn?

01:01:47.890 --> 01:01:49.870
Wie kann man das denn dann verifizieren? Ich meine, woher

01:01:49.870 --> 01:01:51.710
weißt du, dass deine Simulation

01:01:51.710 --> 01:01:53.770
tatsächlich irgendwie das

01:01:53.770 --> 01:01:55.570
liefert, was

01:01:55.570 --> 01:01:57.870
du jetzt bekommen hättest, wenn du 500

01:01:57.870 --> 01:02:00.110
Gläser

01:02:00.110 --> 01:02:01.630
mit Nährflüssigkeit irgendwie

01:02:01.630 --> 01:02:03.230
auf den Fenster Sims gestellt hättest?

01:02:03.230 --> 01:02:05.730
Das ist eine große Frage.

01:02:05.850 --> 01:02:07.670
Da gibt es natürlich, also das ist

01:02:07.670 --> 01:02:09.770
dann wirklich, dass man sagt, okay, wir machen jetzt mal den gleichen Fall

01:02:09.770 --> 01:02:11.450
und lassen es laufen und vergleichen das wirklich

01:02:11.450 --> 01:02:13.410
jetzt mit der Nährflüssigkeit.

01:02:14.310 --> 01:02:15.590
Ich habe jetzt erstmal die Frage auf eine ganz

01:02:15.590 --> 01:02:17.450
andere Weise verstanden, die vielleicht auch interessant ist,

01:02:17.510 --> 01:02:19.230
nämlich, wie teste ich eigentlich solche Software?

01:02:19.590 --> 01:02:22.310
Ich habe häufig

01:02:22.310 --> 01:02:24.690
sehr komplexe Systeme.

01:02:24.710 --> 01:02:26.250
Ich kann die natürlich mit einer anderen Software

01:02:26.250 --> 01:02:27.530
laufen lassen, was ich auch nicht so möchte.

01:02:28.410 --> 01:02:29.810
Und ja, dann theoretisch

01:02:29.810 --> 01:02:32.050
zu bestimmen, was eigentlich rauskommt,

01:02:32.090 --> 01:02:33.630
das war auch sehr spaßig.

01:02:34.390 --> 01:02:36.050
Insbesondere ein Fall, den ich jetzt noch nicht so

01:02:36.050 --> 01:02:38.010
angeschaut habe, sind dann stochastische Differenzialgleichen.

01:02:38.110 --> 01:02:40.130
Das ist so, mehr oder weniger das Gleiche, ich packe noch

01:02:40.130 --> 01:02:40.730
Zufall drauf.

01:02:42.130 --> 01:02:43.890
Und dann muss man, ja,

01:02:44.490 --> 01:02:45.750
dann gibt es ja noch nicht mal eine richtige Lösung.

01:02:46.070 --> 01:02:48.390
Also jede Lösung, die ich prinzipiell kriegen könnte,

01:02:49.030 --> 01:02:50.830
könnte, oder die ich sehe, könnte richtig sein

01:02:50.830 --> 01:02:52.330
für den richtigen Zufall.

01:02:53.030 --> 01:02:55.030
Ich kann nur sagen, okay, diese Lösung ist jetzt eher unwahrscheinlich

01:02:55.030 --> 01:02:56.870
oder diese Lösung ist eher wahrscheinlich, aber

01:02:56.870 --> 01:02:59.070
ich kann ja gar nicht mal

01:02:59.070 --> 01:03:00.950
sagen, das ist eine falsche Lösung anhand einer Lösung.

01:03:01.150 --> 01:03:02.870
Du müsstest ja vor allem erstmal die Verteilung kennen

01:03:02.870 --> 01:03:04.890
deiner Zielfunktion, damit du weißt, ob das

01:03:04.890 --> 01:03:06.790
wahrscheinlich ist oder nicht. Genau, das, ja genau,

01:03:06.870 --> 01:03:08.750
das heißt, ich kann einfach nur, ich kann nicht mal eine Aussage über

01:03:08.750 --> 01:03:10.950
eine Lösung meiner Software machen, ich kann nur eine Aussage

01:03:10.950 --> 01:03:12.890
über ein Ensemble von Lösungen, also tausend

01:03:12.890 --> 01:03:14.890
Lösungen machen. Und ja,

01:03:15.030 --> 01:03:16.810
das sind dann die sehr, sehr langlaufenden

01:03:16.810 --> 01:03:18.730
Tests, wo ich erstmal tausend Lösungen berechne,

01:03:19.010 --> 01:03:20.830
dann irgendwelche statistischen Verfahren darüber.

01:03:21.190 --> 01:03:22.850
Ja, aber ich finde, das ist das Interessanteste.

01:03:23.070 --> 01:03:25.110
Also jetzt von meinem Gusto her,

01:03:25.190 --> 01:03:27.390
wenn du so eine Verteilungswolke irgendwo hast,

01:03:27.870 --> 01:03:29.670
die nähert sich ja dann oder verdichtet sich ja dann

01:03:29.670 --> 01:03:33.530
an den Stellen, wo dann doch die meisten Experimente

01:03:33.530 --> 01:03:35.710
irgendwo in derselben Richtung ausgehen.

01:03:36.150 --> 01:03:38.330
Und da hättest du, finde ich, so die höchste Treffgenauigkeit,

01:03:38.330 --> 01:03:40.170
als wenn du jetzt einfach so ein simuliertes Modell hast

01:03:40.170 --> 01:03:41.310
und sagst, oh, da kommt jetzt was.

01:03:41.770 --> 01:03:43.070
Also ich verstehe jetzt ohne Statistik,

01:03:43.370 --> 01:03:45.630
bei so Simulationen gar nicht, was dabei rauskommt,

01:03:45.750 --> 01:03:47.750
also wie die Validität einzuschätzen wäre.

01:03:48.090 --> 01:03:50.030
Wenn du jetzt sagst, du machst jetzt den Test dazu, dann finde ich das

01:03:50.030 --> 01:03:52.210
sehr spannend. Sorry, ich rede jetzt vom Software-Test.

01:03:52.450 --> 01:03:53.790
Ja, aber ich meine, klar,

01:03:54.470 --> 01:03:56.230
das hängt ja irgendwie zusammen.

01:03:57.290 --> 01:03:58.270
Also der Software-Test,

01:03:58.370 --> 01:04:00.010
der muss ja zwar dann, klar, da muss das Programm

01:04:00.010 --> 01:04:01.950
funktionieren, weil sonst ist der Test ja Quatsch, aber

01:04:01.950 --> 01:04:04.150
der ist ja dann auch irgendwie die Basis

01:04:04.150 --> 01:04:06.030
Voraussetzung dafür, dass das Modell, was du

01:04:06.030 --> 01:04:07.830
dir ausgedacht hast, dann wenigstens gerade läuft.

01:04:11.070 --> 01:04:11.910
Ich bin mir nicht sicher,

01:04:11.990 --> 01:04:13.890
ob ich das richtig verstanden habe. Also ja, natürlich muss

01:04:13.890 --> 01:04:16.070
das, also einerseits

01:04:16.070 --> 01:04:17.850
muss das Modell die Realität, oder am Ende wollen wir, dass

01:04:17.850 --> 01:04:19.210
das Modell die Realität beschreibt, klar.

01:04:19.730 --> 01:04:21.530
Aber die erste Schwierigkeit, ich habe jetzt

01:04:21.530 --> 01:04:22.810
irgendwas programmiert, was mir

01:04:22.810 --> 01:04:25.570
mein Modell löst, was es behauptet

01:04:25.570 --> 01:04:26.870
und die Frage ist, macht es

01:04:26.870 --> 01:04:29.310
wirklich die richtige Lösung?

01:04:29.950 --> 01:04:31.730
Also einfach wirklich nur einen Software-Test schreiben.

01:04:31.910 --> 01:04:33.350
Also einfach nur zu gucken, ich stecke das rein,

01:04:33.430 --> 01:04:34.230
kommt das Richtige raus.

01:04:35.030 --> 01:04:37.610
Und das ist halt, wenn es stochastisch ist, ein bisschen blöd,

01:04:37.710 --> 01:04:39.810
weil dann kommt halt jedes Mal was anderes raus.

01:04:39.810 --> 01:04:41.150
Und es könnte alles richtig sein.

01:04:42.110 --> 01:04:44.010
Das ist so wie ein Zufallszahn-Generat

01:04:44.010 --> 01:04:45.710
testen, geht je nachdem noch, weil ich

01:04:45.710 --> 01:04:48.470
einfach ganz viel, ganz schnelle Zufallszahlen

01:04:48.470 --> 01:04:50.330
ziehe und dann weiß ich genau, okay, die müssen dann vielleicht gleich

01:04:50.330 --> 01:04:51.550
verteilt sein oder so, aber

01:04:51.550 --> 01:04:54.470
bei, ja, dem Problem

01:04:54.470 --> 01:04:56.370
ist es dann eben nicht so einfach. Also letzten Endes

01:04:56.370 --> 01:04:58.270
sind da ganze wissenschaftliche Arbeiten draus

01:04:58.270 --> 01:04:59.010
entstanden, nur

01:04:59.010 --> 01:05:02.430
auf die Frage, wie, also aus der Frage

01:05:02.430 --> 01:05:04.090
heraus, wie teste ich das eigentlich richtig und

01:05:04.090 --> 01:05:05.930
so eine Differenz, wo wir feststellen, okay,

01:05:06.050 --> 01:05:08.530
die Theorie, die wir haben zu dem, was da rauskommen

01:05:08.530 --> 01:05:10.570
muss, stimmt nicht mit dem überein, was da rauskommt

01:05:10.570 --> 01:05:12.310
und können wir das... Entweder stimmt die Theorie

01:05:12.310 --> 01:05:13.590
nicht oder das Modell ist falsch.

01:05:14.550 --> 01:05:16.690
Ja, das ist wohl ein Fehler in der Experimentation.

01:05:16.950 --> 01:05:18.470
Also am Ende haben wir festgestellt,

01:05:19.350 --> 01:05:20.270
also erstens, ja,

01:05:20.490 --> 01:05:22.650
die Theorie könnten wir erweitern, das haben wir auch gemacht

01:05:22.650 --> 01:05:24.530
und da sind dann ganze Arbeiten und

01:05:24.530 --> 01:05:25.950
Paper draus entstanden, das war gut.

01:05:26.670 --> 01:05:28.150
Also Software testen ist was Gutes,

01:05:28.250 --> 01:05:29.190
produziert wissenschaftliche Paper.

01:05:30.910 --> 01:05:32.290
Die andere Sache ist, wir haben auf die Weise

01:05:32.290 --> 01:05:34.690
tatsächlich Fehler im veröffentlichten

01:05:34.690 --> 01:05:35.510
Algorithmus gefunden,

01:05:36.610 --> 01:05:38.290
wo irgendwie in der großen Tabelle, die

01:05:38.290 --> 01:05:40.230
diesen Algorithmus beschreibt, also solche Algorithmen

01:05:40.230 --> 01:05:41.650
werden mit Tabellen beschrieben, ist leider so,

01:05:42.150 --> 01:05:43.450
dann irgendwo ein Vorzeichenfehler war.

01:05:43.990 --> 01:05:47.850
Den haben wir damit gefunden.

01:05:48.390 --> 01:05:49.150
Also insofern, ja.

01:05:50.050 --> 01:05:51.590
Und den hätten wir wahrscheinlich sonst auch nicht gefunden,

01:05:51.670 --> 01:05:52.910
wenn wir uns diese Mühe nicht gemacht hätten.

01:05:55.190 --> 01:05:56.330
Und dann hätten wir jetzt wahrscheinlich

01:05:56.330 --> 01:05:57.550
eine ganze Menge fehlerhafter Rechnungen.

01:05:58.270 --> 01:05:58.970
Und wüssten es nicht.

01:06:00.190 --> 01:06:00.750
Wir auch.

01:06:00.750 --> 01:06:02.270
Wir würden alle für bare Münzen verkaufen,

01:06:02.350 --> 01:06:05.310
damit Geld verdienen und irgendwelchen großen Papern veröffentlichen.

01:06:05.550 --> 01:06:06.670
Alle Leute würden nicht zujubeln.

01:06:06.810 --> 01:06:07.850
Und irgendwann würde einer sagen so, hm.

01:06:08.790 --> 01:06:10.510
Ja, oder halt auch eben nie.

01:06:10.870 --> 01:06:13.130
Und das ist halt, dass es einem noch viel mehr Sorgen machen sollte.

01:06:13.290 --> 01:06:15.090
dass es eben einfach gar nicht schief geht,

01:06:15.190 --> 01:06:16.090
sondern die Leute einfach...

01:06:16.090 --> 01:06:18.750
Das passiert in der Wissenschaft leider viel zu häufig.

01:06:19.210 --> 01:06:20.990
Ich denke auch, dass das oft passiert, ja.

01:06:21.310 --> 01:06:22.570
Die Erde ist vielleicht doch eine Scheibe.

01:06:22.790 --> 01:06:23.750
Man weiß es nicht so genau.

01:06:23.950 --> 01:06:26.990
Ja, nee, also ganz so schlimm ist es nicht,

01:06:27.090 --> 01:06:27.950
aber ja.

01:06:28.270 --> 01:06:29.430
Naja, also so ein Paradigmenwechsel,

01:06:29.510 --> 01:06:30.250
bevor die mal passieren,

01:06:30.370 --> 01:06:32.670
da muss ja so ein bisschen schon Arbeit passieren,

01:06:32.730 --> 01:06:33.830
muss sich irgendjemand aus dem Turm stellen

01:06:33.830 --> 01:06:34.470
und was runterschmeißen.

01:06:35.430 --> 01:06:37.170
Aber ihr verwendet auch ganz normal

01:06:37.170 --> 01:06:38.970
Pytest oder so zum Testen

01:06:38.970 --> 01:06:41.470
oder habt ihr da noch speziellere Kniffe,

01:06:41.610 --> 01:06:42.510
die man da benutzen muss,

01:06:42.550 --> 01:06:43.650
wo man das irgendwie in den Griff kriegen würde.

01:06:43.650 --> 01:06:45.690
Also nee, als ich angefangen habe,

01:06:45.710 --> 01:06:47.070
habe ich glaube ich sogar noch mit Unitest gearbeitet.

01:06:48.150 --> 01:06:49.310
Schande über mein Haupt, ich weiß.

01:06:50.350 --> 01:06:52.310
Also wenn ihr jetzt gerade irgendwie lustig

01:06:52.310 --> 01:06:53.550
über Tests nochmal einsteigen wollt,

01:06:53.610 --> 01:06:55.250
dann können wir gleich gerne noch ein bisschen länger drüber reden,

01:06:55.370 --> 01:06:57.370
weil da sind noch einige Fragen eingetrudelt.

01:06:58.630 --> 01:07:00.650
Aber Entschuldigung, das ist vielleicht auch ein ganz anderes Thema.

01:07:00.650 --> 01:07:07.430
Aber nee, also ich glaube die klassischen Software-Test-Tools,

01:07:07.530 --> 01:07:09.470
das ist nicht so das Problem, die zu nutzen,

01:07:10.310 --> 01:07:11.570
wenn man sie nutzen kann.

01:07:11.630 --> 01:07:13.570
Das Problem ist eher die Frage, ich habe eben so

01:07:13.570 --> 01:07:14.870
eine, sowas wie

01:07:14.870 --> 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.650
machen, wie mache ich das eigentlich?

01:07:21.470 --> 01:07:23.410
Das ist dann eher eine wissenschaftliche Frage als eine

01:07:23.410 --> 01:07:24.450
Softwarefrage oder

01:07:24.450 --> 01:07:27.230
die Frage, eine Softwarelösung zu finden.

01:07:27.770 --> 01:07:29.370
Ja, du musst ein Stichproben ziehen und dann musst du gucken,

01:07:29.470 --> 01:07:31.450
ob die Stichproben irgendwie der erwarteten Verteilung

01:07:31.450 --> 01:07:33.370
sprechen, dann muss man wieder eine Fehlerwahrscheinlichkeit

01:07:33.370 --> 01:07:35.570
rausholen. Ja, genau, aber das ist

01:07:35.570 --> 01:07:37.670
nicht einfach, je nachdem, was man hat.

01:07:38.910 --> 01:07:39.390
Die andere

01:07:39.390 --> 01:07:41.470
Problematik, oder eine andere

01:07:41.470 --> 01:07:43.250
Beispielproblematik, wenn wir gerade dabei sind,

01:07:43.490 --> 01:07:45.250
ist sowas wie, ich habe ja gesagt, ich

01:07:45.250 --> 01:07:47.730
habe eine symbolische Eingabe, ich übersetze das in C-Code.

01:07:48.730 --> 01:07:49.770
Was ist jetzt eigentlich der richtige

01:07:49.770 --> 01:07:51.670
C-Code? Also ich kann ja nicht einfach

01:07:51.670 --> 01:07:53.610
sagen, okay, ich möchte genau diesen C-Code

01:07:53.610 --> 01:07:55.610
haben, der ist dann richtig, sondern ich könnte

01:07:55.610 --> 01:07:57.650
ja auch einfach mal, weiß ich was, A plus B oder B plus

01:07:57.650 --> 01:07:59.190
A ist in der Stelle gleich.

01:07:59.890 --> 01:08:00.870
In den allermeisten Fällen.

01:08:02.390 --> 01:08:03.670
Wie entscheide ich, was da richtig

01:08:03.670 --> 01:08:05.570
ist? Das kann ich eigentlich nur machen, indem ich

01:08:05.570 --> 01:08:07.570
die Ausrechnung wieder vergleiche.

01:08:08.190 --> 01:08:09.050
Ein solches Mädchen.

01:08:10.630 --> 01:08:13.210
Also das heißt, die Equivalenz von deinen Experimenten

01:08:13.210 --> 01:08:14.250
ist schon fraglich dann.

01:08:15.110 --> 01:08:16.890
Also wenn du die Experimente durchführst, dass sie halt

01:08:16.890 --> 01:08:18.010
gleich durchgeführt worden sind.

01:08:18.610 --> 01:08:20.570
Ich meine nicht bei Experimenten, ich meine erst bei Simulationen.

01:08:22.250 --> 01:08:23.490
Ist Simulation kein Experiment?

01:08:23.670 --> 01:08:24.090
Also okay, Entschuldigung.

01:08:25.090 --> 01:08:26.290
Begrifflich wahrscheinlich da gerade irgendwas verwechselt.

01:08:26.310 --> 01:08:28.410
Ist auch etwas, was ich gerade eben Experiment genannt habe

01:08:28.410 --> 01:08:30.530
oder als mathematisches Experiment beschrieben habe.

01:08:32.650 --> 01:08:33.310
Ja, das könnte

01:08:33.310 --> 01:08:34.990
fraglich sein, aber es geht jetzt erst darum, macht meine Software

01:08:34.990 --> 01:08:35.910
das, was sie soll.

01:08:36.750 --> 01:08:38.970
Also ich kann jetzt eben nicht hingehen und eine kleine

01:08:38.970 --> 01:08:40.070
eine Einheit von einem Code

01:08:40.070 --> 01:08:42.810
Produktion, also Code Drucker

01:08:42.810 --> 01:08:44.750
oder wie die heißen, also einfach eine

01:08:44.750 --> 01:08:46.910
Übersetzung von Symbolen in Code, die ich zum Beispiel

01:08:46.910 --> 01:08:49.010
nutze, kann ich, ist es gar nicht so einfach

01:08:49.010 --> 01:08:50.690
die zu testen, da ich eben keine

01:08:50.690 --> 01:08:53.110
ganz klare Aussage habe, was da rauskommen

01:08:53.110 --> 01:08:55.090
muss. Da ich eben nicht weiß, in welcher

01:08:55.090 --> 01:08:56.710
Reihenfolge zum Beispiel

01:08:56.710 --> 01:08:58.930
sind jetzt diese fünf Summanden in

01:08:58.930 --> 01:09:00.350
einer Addition.

01:09:01.170 --> 01:09:02.910
Da gibt es keine Vorschrift, was da

01:09:02.910 --> 01:09:05.010
richtig ist. Und wenn ich, kann ich

01:09:05.010 --> 01:09:06.750
natürlich mich drüber hinwegsetzen und sagen, ich

01:09:06.750 --> 01:09:08.990
zerteile das jetzt komplett und mache da irgendwie

01:09:08.990 --> 01:09:10.930
einen Symbolbaum oder was auch immer, aber dann

01:09:10.930 --> 01:09:12.510
muss ich natürlich wieder zerlegen, ist auch nicht schön.

01:09:14.670 --> 01:09:14.950
Also

01:09:14.950 --> 01:09:16.870
ein Problem mit der ganzen Software war, dass es eigentlich nicht

01:09:16.870 --> 01:09:17.910
sehr einfach zu testen war.

01:09:19.170 --> 01:09:21.030
Okay. Und aber dafür habt ihr

01:09:21.030 --> 01:09:22.670
was veröffentlicht, wo ihr sagt, hey, das ist so

01:09:22.670 --> 01:09:24.290
ein voller Fortschritt, das sollte man so tun.

01:09:25.350 --> 01:09:26.650
Also nicht zum Testen, also

01:09:26.650 --> 01:09:28.950
das habe gar nicht ich gemacht, das haben dann andere Leute

01:09:28.950 --> 01:09:29.950
haben darauf aufgebaut und haben

01:09:29.950 --> 01:09:31.690
wir haben, also

01:09:31.690 --> 01:09:33.850
die Geschichte ist eigentlich, wir haben

01:09:33.850 --> 01:09:36.650
ich habe dieses Problem entdeckt und dann haben wir irgendwann

01:09:36.650 --> 01:09:39.250
uns hingesetzt und eine Bachelorarbeit

01:09:39.250 --> 01:09:40.510
aufgesetzt

01:09:40.510 --> 01:09:42.450
machen lassen zu dem Thema, okay,

01:09:43.030 --> 01:09:44.930
vermessen wir das doch mal bitte, verstehen wir das

01:09:44.930 --> 01:09:46.890
ein bisschen besser und hatte dann auch

01:09:46.890 --> 01:09:48.930
noch andere Anwendungen, nicht nur den Test, muss man dazu

01:09:48.930 --> 01:09:50.670
gestehen. Und ja, das

01:09:50.670 --> 01:09:52.850
war, wir haben, da wurden neue Erkenntnisse

01:09:52.850 --> 01:09:54.650
gewonnen und veröffentlicht.

01:09:55.790 --> 01:09:56.850
Aber das war gar nicht so,

01:09:57.030 --> 01:09:58.930
also das war nur etwas, was ich angestoßen

01:09:58.930 --> 01:10:00.110
habe und insofern kann ich dir jetzt auch gar nicht

01:10:00.110 --> 01:10:02.370
so viel zu erzählen.

01:10:05.130 --> 01:10:06.610
Ja, klingt sehr spannend, also dass man tatsächlich

01:10:06.610 --> 01:10:08.390
so echte Experimente

01:10:08.390 --> 01:10:10.170
irgendwie begleitet und simuliert

01:10:10.170 --> 01:10:12.430
mit Python oder halt

01:10:12.430 --> 01:10:14.370
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.630
bauen kann, das ist natürlich schon spannend.

01:10:26.050 --> 01:10:28.450
Also das ganze Feld, so dynamische Systeme

01:10:28.450 --> 01:10:29.410
vorher sagen, ist

01:10:29.410 --> 01:10:32.070
sehr vielfältig in Anwendung.

01:10:32.830 --> 01:10:34.390
Was ich vorher gemacht habe, waren

01:10:34.390 --> 01:10:35.630
Probleme mit

01:10:35.630 --> 01:10:49.410
Und eine Frage, mit der sich meine frühe Arbeitsgruppe beschäftigt hat, war, wie sagen wir epileptische Anfälle voraus? Können wir das eventuell machen? Oder wie sagen wir Bevölkerung, plötzlich das Bevölkerungswachstum heraus?

01:10:49.410 --> 01:10:56.510
Also das Thema meiner vorigen Forschung war, wie sagen wir, extreme Ereignisse, also verstehen, wie passieren extreme Ereignisse.

01:10:56.570 --> 01:11:05.590
Und extreme Ereignisse kann dann so sein wie epileptischer Anfall, kann aber auch so was sein wie Überpopulation, Artensterben, Erdbeben, all solche verschiedenen Dinge.

01:11:06.030 --> 01:11:16.310
Also was war das Ergebnis? Gibt es so einen entscheidenden Punkt, den man irgendwie erreichen kann, wo dann bestimmte Faktoren identifizierbar sind, die sagen so, hey, jetzt macht's gleich peng?

01:11:17.310 --> 01:11:18.630
Nee, so weit sind wir

01:11:18.630 --> 01:11:19.410
leider nicht gekommen.

01:11:20.750 --> 01:11:22.530
Also das Ergebnis war dann sowas wie

01:11:22.530 --> 01:11:24.390
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.270 --> 01:11:30.350
Dann 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.170
dann die Leute, die ein konkretes System haben und

01:11:34.170 --> 01:11:36.290
mit einem konkreten System was vorhersagen, eventuell

01:11:36.290 --> 01:11:37.810
besser verstehen, wie sie das machen.

01:11:39.350 --> 01:11:40.270
Okay. Das ist leider nicht sehr

01:11:40.270 --> 01:11:42.270
befriedigend, aber

01:11:42.270 --> 01:11:43.590
das ist eben Grundlagenforschung.

01:11:43.590 --> 01:11:44.510
Das ist Wissenschaft.

01:11:45.550 --> 01:11:47.010
Ich fürchte, das ist halt irgendwie so

01:11:47.010 --> 01:11:49.270
eine der blöden

01:11:49.270 --> 01:11:50.750
Eigenschaften, die da halt so dabei sind,

01:11:50.890 --> 01:11:53.050
dass das extrem seltene

01:11:53.050 --> 01:11:54.910
Geschichten halt, sondern schlecht Statistik

01:11:54.910 --> 01:11:56.570
zu machen kann, weil es einfach nicht so häufig

01:11:56.570 --> 01:11:59.090
auftritt. Aber wenn die halt stark genug

01:11:59.090 --> 01:12:00.890
sind, dann haben sie halt einen großen Einfluss auf das, was

01:12:00.890 --> 01:12:02.270
passiert und dann ist es halt blöd.

01:12:02.610 --> 01:12:04.830
Also Statistik ist die eine Sache und die Phase

01:12:04.830 --> 01:12:06.590
können wir jetzt allein mit Statistik vorhersagen.

01:12:06.770 --> 01:12:08.850
Wahrscheinlich nicht. Wir müssen verstehen, was passiert da eigentlich.

01:12:09.830 --> 01:12:10.890
Und wie kommt es

01:12:10.890 --> 01:12:11.610
eigentlich dazu?

01:12:11.610 --> 01:12:13.490
Und dann geht das überhaupt.

01:12:13.630 --> 01:12:15.130
Es kann ja auch sein, dass man das einfach gar nicht...

01:12:15.130 --> 01:12:15.970
Und was ist wichtig?

01:12:16.710 --> 01:12:18.370
Und jetzt mal vielleicht auch nochmal ein Beispiel,

01:12:18.510 --> 01:12:19.470
wozu Simulationen gut sind.

01:12:20.070 --> 01:12:21.490
Was jetzt immer wieder die Frage war,

01:12:21.630 --> 01:12:23.290
ein früher Kollege von mir,

01:12:23.370 --> 01:12:26.750
der hat wahrscheinlich die erste Simulation geschrieben,

01:12:26.870 --> 01:12:29.790
die macht, was aussieht wie ein epileptischer Anfall.

01:12:30.770 --> 01:12:32.390
Ob es jetzt irgendwie wirklich das damit zu tun hat,

01:12:32.430 --> 01:12:33.810
muss man dann nochmal untersuchen.

01:12:34.010 --> 01:12:35.950
Aber was nicht darauf basiert,

01:12:35.950 --> 01:12:37.130
dass wir an irgendeinem Knopf drehen

01:12:37.130 --> 01:12:38.430
und irgendeinen Parameter ändern,

01:12:38.590 --> 01:12:42.050
also irgendwelche Neurochemikalien oder so im Gehirn ändern,

01:12:42.170 --> 01:12:44.270
sondern wir können eine einfache Simulation machen,

01:12:44.330 --> 01:12:46.030
die machen epileptischen Anfall, ohne dass wir

01:12:46.030 --> 01:12:46.710
was ändern müssen.

01:12:47.810 --> 01:12:50.110
Dann einfach, okay, was bringt das Ganze jetzt?

01:12:50.630 --> 01:12:51.830
Naja, die Leute, die

01:12:51.830 --> 01:12:53.930
ein paar Ebenen in der Anwendung

01:12:53.930 --> 01:12:56.070
höher sind, können jetzt hingehen

01:12:56.070 --> 01:12:58.050
und sagen, okay, wir haben uns bisher

01:12:58.050 --> 01:13:00.010
immer darauf gestützt, was ändert sich da chemikalisch

01:13:00.010 --> 01:13:02.190
und so weiter. Könnte es vielleicht was anderes

01:13:02.190 --> 01:13:04.090
sein? Könnte es vielleicht einfach

01:13:04.090 --> 01:13:06.030
sein, dass das Gehirn anders verknotet

01:13:06.030 --> 01:13:07.890
ist oder die Neuronen anders verbunden sind

01:13:07.890 --> 01:13:09.970
in Gehirnen, die epileptische Anfälle produzieren

01:13:09.970 --> 01:13:10.990
und das ist das Problem.

01:13:12.650 --> 01:13:13.910
Und die Frage ist noch offen,

01:13:14.230 --> 01:13:16.150
Aber solche Ansätze stößt man dann

01:13:16.150 --> 01:13:17.490
eventuell mit Simulationen hervor.

01:13:18.030 --> 01:13:19.170
Ja, schön, wenn man das dann heilen kann.

01:13:19.310 --> 01:13:21.070
Irgendwann dafür sorgt, dass es den Menschen besser geht.

01:13:21.930 --> 01:13:23.470
Genau, das ist natürlich das fairen Ziel,

01:13:23.610 --> 01:13:24.710
aber leider ist es

01:13:24.710 --> 01:13:27.790
nicht so ganz einfach.

01:13:28.570 --> 01:13:29.810
Ja, ich weiß halt, kann man

01:13:29.810 --> 01:13:31.850
aus diesem Elfenbeinturm, wenn ich das mal so nennen darf,

01:13:31.850 --> 01:13:33.510
irgendwie so runtersteigen, wieder auf die Straße

01:13:33.510 --> 01:13:35.630
und mit beiden Händen

01:13:35.630 --> 01:13:37.750
wieder so das ausschütten, was man da so fabriziert.

01:13:38.830 --> 01:13:40.130
Ja, manchmal passiert das ja einmal,

01:13:40.230 --> 01:13:41.230
sonst hätten wir ja keine Computer.

01:13:41.770 --> 01:13:43.730
Ja, genau, also manchmal ist da jemand

01:13:43.730 --> 01:13:44.950
so ein Magier irgendwo so in den Turm,

01:13:45.330 --> 01:13:47.490
irgendwann macht dann der Bumm oder diese Kugel leuchtet

01:13:47.490 --> 01:13:49.350
und auf einmal der Turm fängt an zu leuchten und dann

01:13:49.350 --> 01:13:51.650
gucken alle, oh, was ist das denn? Und dann, ah, guck mal hier,

01:13:51.730 --> 01:13:52.690
ich habe was Schönes gefunden.

01:13:53.010 --> 01:13:55.270
Ich glaube, ja, aber ich fürchte, das kann man nicht wirklich,

01:13:55.430 --> 01:13:57.550
ich fürchte, das ist bei Wissenschaft noch schlimmer

01:13:57.550 --> 01:13:59.510
als bei Firmen oder Startups,

01:13:59.590 --> 01:14:01.430
also es ist ja auch schon irgendwie so, dass man das eigentlich

01:14:01.430 --> 01:14:03.530
nicht wirklich voraussagen kann, weil

01:14:03.530 --> 01:14:05.550
naja, es hängt halt davon ab, wie sich die Zukunft

01:14:05.550 --> 01:14:07.270
entwickelt, die lässt sich schon mal nicht so gut voraussagen

01:14:07.270 --> 01:14:09.470
und dann sind so viele Faktoren dabei, die man

01:14:09.470 --> 01:14:10.430
nicht unter Kontrolle hat, dass

01:14:10.430 --> 01:14:13.470
und bei Wissenschaft hast du

01:14:13.470 --> 01:14:15.570
jetzt, das ist ja noch übler, du weißt ja, also

01:14:15.570 --> 01:14:17.430
Das ist alles Alchemie.

01:14:18.090 --> 01:14:19.470
Naja, oder so ein bisschen Glück auch.

01:14:19.590 --> 01:14:21.590
Also ich meine, natürlich ist es so, du kannst kein Glück haben,

01:14:21.670 --> 01:14:23.550
wenn das nicht auch irgendwie funktioniert oder wenn du nicht das Richtige

01:14:23.550 --> 01:14:25.650
tust, aber ob das, was du da tust, jetzt irgendwie

01:14:25.650 --> 01:14:27.610
eine sinnvolle,

01:14:27.610 --> 01:14:29.550
erfolgsversprechende Geschichte ist oder nicht, das hast

01:14:29.550 --> 01:14:31.550
du halt, würde ich sagen, zum großen Teil gar nicht unbedingt

01:14:31.550 --> 01:14:32.050
unter Kontrolle.

01:14:32.950 --> 01:14:35.570
Also andersrum, wenn wir es unter Kontrolle hätten, müssen wir

01:14:35.570 --> 01:14:37.430
es nicht machen. Wissenschaft geht ja darum, irgendwie,

01:14:37.530 --> 01:14:39.470
dass wir neue Sachen herausfinden und

01:14:39.470 --> 01:14:41.390
dass wir die Frage beantworten, funktioniert

01:14:41.390 --> 01:14:43.490
diese Methode oder so und wenn wir wissen, ob diese Methode

01:14:43.490 --> 01:14:44.490
funktioniert, müssen wir es nicht machen.

01:14:45.190 --> 01:14:47.590
Ich finde das immer wieder beeindruckend, wie man dann, also es ist ja

01:14:47.590 --> 01:14:49.550
schon, das ist, es hat ja so ein leicht, also ich

01:14:49.550 --> 01:14:51.590
würde da leicht

01:14:51.590 --> 01:14:53.190
in Defizitismus verfallen, glaube ich.

01:14:53.470 --> 01:14:55.470
Man muss ja da sehr motiviert sein, das dann zu tun,

01:14:55.550 --> 01:14:57.750
wenn man sich im Grunde ausrechnen

01:14:57.750 --> 01:14:59.530
kann, dass man wahrscheinlich

01:14:59.530 --> 01:15:01.330
Pech haben wird und das heißt, man

01:15:01.330 --> 01:15:03.510
gibt sich viel Mühe, aber es kommt nichts mehr raus. Obwohl auf der anderen

01:15:03.510 --> 01:15:05.270
Seite, das, was man tut, macht natürlich auch Spaß.

01:15:06.650 --> 01:15:07.390
Ja, aber ich meine, gut,

01:15:07.430 --> 01:15:09.510
es ist schon so dieses klassische Klischee,

01:15:09.630 --> 01:15:11.570
Die Hauptsache, die man mit einer

01:15:11.570 --> 01:15:12.770
Promotion kriegt,

01:15:13.730 --> 01:15:15.870
ist eine riesengroße

01:15:15.870 --> 01:15:18.270
Enttäuschungsresistenz.

01:15:22.750 --> 01:15:23.870
Was war das?

01:15:24.250 --> 01:15:25.650
Das ist, ich

01:15:25.650 --> 01:15:27.650
verwende Apple Hardware

01:15:27.650 --> 01:15:28.010
und

01:15:28.010 --> 01:15:31.530
es kommuniziert untereinander

01:15:31.530 --> 01:15:33.470
und mein Telefon hat gerade meinem Computer gesagt,

01:15:33.550 --> 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:37.470 --> 01:15:39.610
Manchmal kümmert sich auch noch

01:15:39.610 --> 01:15:40.910
vorher drum, dass er das alles abstellt.

01:15:41.550 --> 01:15:43.510
Ja, diesmal habe ich es irgendwie verpennt. Ich glaube,

01:15:43.550 --> 01:15:45.590
ich mache das gerade mal. Man kann nämlich auch sagen,

01:15:45.750 --> 01:15:47.430
irgendwie. Die ganzen wissenschaftlichen Probleme, wir kennen die

01:15:47.430 --> 01:15:48.470
Antwort doch eigentlich schon alle, oder?

01:15:49.250 --> 01:15:51.310
Ja, kennen wir die? Wie lange? 42.

01:15:52.150 --> 01:15:52.510
Achso.

01:15:53.970 --> 01:15:54.790
Stimmt, finde ich.

01:15:55.010 --> 01:15:57.690
Ja, aber

01:15:57.690 --> 01:15:58.110
das ist halt,

01:15:58.770 --> 01:16:00.810
es ist da so ein

01:16:00.810 --> 01:16:03.370
frustrierendes Potenzial dabei, das glaube ich auch immer,

01:16:03.790 --> 01:16:04.430
wenn man

01:16:04.430 --> 01:16:07.210
guckt, was die Politik da auch immer machen möchte,

01:16:07.550 --> 01:16:09.590
die versucht das dann zu ignorieren, dann macht man so Forschungsprogramme,

01:16:09.610 --> 01:16:12.710
Ich habe da von einem gehört, es gibt ein großes Forschungs...

01:16:12.710 --> 01:16:25.410
Also man macht das dann so, man glaubt irgendwie, was war das irgendwie, man kann irgendwie Chips bauen, also normalerweise belichtet man irgendwie Chips sozusagen top-down irgendwie, man überlegt sich eine Architektur, könnte man das nicht auch umgekehrt machen?

01:16:25.410 --> 01:16:39.410
Also man hat irgendwie so eine Lösung, irgendwie auch wieder, keine Ahnung, irgendeine Art Nährflüssigkeit, ja, und dann sorgt man dafür, dass die richtigen Bedingungen existieren und dann entstehen da Transistoren oder was auch immer für Schalter, man braucht gerade quasi dann so bottom-up automatisch.

01:16:39.610 --> 01:16:40.850
Das wäre ja voll gut, wäre viel billiger.

01:16:42.370 --> 01:16:43.810
Bräuchte man da nicht so super

01:16:43.810 --> 01:16:45.430
Ultra-Reihenräume und

01:16:45.430 --> 01:16:47.310
diese ganzen teuren Gerätschaften.

01:16:47.950 --> 01:16:48.950
Und da hat man irgendwie,

01:16:49.670 --> 01:16:51.730
die Idee hört sich wirklich total super an.

01:16:52.190 --> 01:16:53.250
Und dann gab es irgendein

01:16:53.250 --> 01:16:55.450
großes Forschungsprojekt,

01:16:56.370 --> 01:16:57.230
das da wurde auch 100,

01:16:57.350 --> 01:16:59.230
das sind glaube ich 100 Millionen

01:16:59.230 --> 01:17:01.870
Euro reingegangen. Und das Problem

01:17:01.870 --> 01:17:03.690
ist natürlich, wenn jetzt so viele Leute daran arbeiten,

01:17:03.690 --> 01:17:05.350
also das lief dann ganz lange

01:17:05.350 --> 01:17:07.890
und irgendwie musste immer noch ein Doktorand,

01:17:07.970 --> 01:17:09.550
ein Armer, der musste dann

01:17:09.550 --> 01:17:10.710
geopfert werden, diesem Drachen.

01:17:11.910 --> 01:17:13.590
Man hat gesagt, der muss tatsächlich an diesem Problem

01:17:13.590 --> 01:17:15.470
noch arbeiten, damit man sagen kann, dass man an diesem Problem

01:17:15.470 --> 01:17:17.430
arbeitet. Aber in Wirklichkeit wussten alle schon

01:17:17.430 --> 01:17:19.590
seit einigen Jahren, naja, das funktioniert

01:17:19.590 --> 01:17:21.530
aus prinzipiellen Gründen grundsätzlich nicht.

01:17:21.810 --> 01:17:23.590
Aber man kann ja auch nicht sagen, es funktioniert nicht, dann kriegt man

01:17:23.590 --> 01:17:24.930
kein Geld mehr, ist auch schlecht. Also

01:17:24.930 --> 01:17:27.830
haben halt die anderen inzwischen alle was anderes gemacht.

01:17:28.070 --> 01:17:28.390
Heimlich.

01:17:29.750 --> 01:17:30.410
Ja, okay.

01:17:31.090 --> 01:17:32.350
Die große Veröffentlichung schreiben.

01:17:33.370 --> 01:17:35.530
Einerseits natürlich auch das große Problem ist, dass man einfach nicht mal

01:17:35.530 --> 01:17:37.530
sagen kann, okay, wir haben herausgefunden,

01:17:37.530 --> 01:17:39.330
es funktioniert nicht und hier ist

01:17:39.330 --> 01:17:41.430
der Grund. Das ist ganz schön haarig.

01:17:41.550 --> 01:17:43.330
Also ich komme ja aus der VWL eigentlich

01:17:43.330 --> 01:17:45.150
und da waren dann so Experimente schon

01:17:45.150 --> 01:17:47.350
problematisch, weil da hat man

01:17:47.350 --> 01:17:49.230
irgendwelche Modelle gebaut, die dann irgendwelche Prognosen

01:17:49.230 --> 01:17:50.790
gemacht haben und dann ging

01:17:50.790 --> 01:17:53.310
dann vor allen Dingen sowas wie der Internationale Währungsfonds

01:17:53.310 --> 01:17:54.930
dann hin und hat dann diese

01:17:54.930 --> 01:17:57.210
Modelle ausprobiert

01:17:57.210 --> 01:17:59.370
mit irgendwelchen Entwicklungsländern, um zu gucken,

01:17:59.430 --> 01:18:01.230
klappt das mal? Und das hat dann ab und zu mal dazu geführt,

01:18:01.290 --> 01:18:03.490
dass dann irgendwie so ein Landesgesundheitssystem dann zusammenbrach

01:18:03.490 --> 01:18:05.150
oder sowas. Und das ist dann vielleicht

01:18:05.150 --> 01:18:06.970
so ein Mittelgut und das war aber eigentlich

01:18:06.970 --> 01:18:09.270
das Modell hat dann eigentlich vorhergesagt,

01:18:09.350 --> 01:18:11.130
das hätte gut funktionieren sollen. Die haben sich dann alle so ein bisschen

01:18:11.130 --> 01:18:13.290
die Haare gerauft. Die wollten eigentlich auch, dass es dem Land eher gut geht.

01:18:13.370 --> 01:18:15.210
Also es war jetzt nicht nur irgendwie so Weltbankdruck oder so.

01:18:15.710 --> 01:18:17.490
Und dann haben die gesagt, Mist, das haben wir jetzt ja falsch gemacht.

01:18:17.790 --> 01:18:19.550
Haben es beim nächsten Mal, dann haben wir anders ausprobiert.

01:18:19.890 --> 01:18:21.350
Und dann, ja, das ist halt das

01:18:21.350 --> 01:18:23.110
Problem, wenn du halt das so was ausprobierst,

01:18:23.150 --> 01:18:25.050
auf Systemen, die auch heterogen sind und

01:18:25.050 --> 01:18:27.410
ein bisschen chaotisch reagieren und du weißt nicht genau,

01:18:27.410 --> 01:18:28.710
was muss man da jetzt eigentlich genau tun.

01:18:29.110 --> 01:18:30.790
Und das ist schon, glaube ich, nicht so einfach.

01:18:31.410 --> 01:18:32.970
Ja, aber noch schlimmer ist es, wenn man das System

01:18:32.970 --> 01:18:35.290
selbst beeinflusst durch die Vorhersage. Also das klassische

01:18:35.290 --> 01:18:37.050
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:41.070
irgendeine neue Methode entwickeln, um

01:18:41.070 --> 01:18:42.790
Aktienkurse vorherzusagen.

01:18:42.810 --> 01:18:45.070
Du musst das nur gut verkaufen und die antityklische Strategie fahren.

01:18:46.910 --> 01:18:47.550
Ja, oder

01:18:47.550 --> 01:18:49.270
beziehungsweise der Problem ist, wenn sie

01:18:49.270 --> 01:18:50.610
die dann veröffentlichen,

01:18:51.430 --> 01:18:52.610
dann funktioniert es plötzlich nicht mehr.

01:18:53.030 --> 01:18:53.290
Ja, genau.

01:18:53.510 --> 01:18:56.250
Das ist doch super, dann kannst du antityklisch fahren,

01:18:56.250 --> 01:18:57.470
wenn du sowas raushaust.

01:18:57.970 --> 01:18:59.190
Du darfst es halt nicht veröffentlichen.

01:19:02.130 --> 01:19:02.530
Ja.

01:19:03.830 --> 01:19:05.070
Das ist, ja.

01:19:05.290 --> 01:19:10.050
Ja, schon interessant.

01:19:11.750 --> 01:19:14.290
Ja, ich finde das halt sehr, sehr spannend,

01:19:14.350 --> 01:19:15.610
wenn man irgendwie so Sachen digitalisiert,

01:19:15.690 --> 01:19:17.810
welche Parameter man überhaupt in diese Modelle einbauen müsste

01:19:17.810 --> 01:19:21.470
und wie man es schafft, so Reagenzglas-Bedingungen,

01:19:21.590 --> 01:19:23.650
selbst wenn es jetzt nur, in Anführungszeichen,

01:19:23.790 --> 01:19:27.090
so ein Glas mit einer Kultur auf einem Fensterbrett in der Sonne ist.

01:19:28.430 --> 01:19:28.670
Hui.

01:19:31.250 --> 01:19:34.010
Wobei, da musst du sagen, also ich bin auch eher die,

01:19:34.230 --> 01:19:36.170
es gibt zwei Spezies der Modellierung,

01:19:37.110 --> 01:19:38.290
Arten der Modellierung.

01:19:38.430 --> 01:19:39.950
Der erste ist der Ansatz, wir wollen es wirklich

01:19:39.950 --> 01:19:42.330
möglichst exakt und so weiter hinbiegen,

01:19:42.410 --> 01:19:43.930
um wirklich die genaue, perfekte

01:19:43.930 --> 01:19:45.930
Vorhersage für dieses Glas auf der Fensterbank zu treffen.

01:19:46.710 --> 01:19:47.750
Der andere Ansatz ist,

01:19:48.010 --> 01:19:50.210
okay, wir können

01:19:50.210 --> 01:19:50.830
das eh nicht,

01:19:51.370 --> 01:19:53.730
sondern die Frage ist, okay, wir sehen

01:19:53.730 --> 01:19:56.170
dieses Phänomen oder sowas, oder was sind die minimalen

01:19:56.170 --> 01:19:58.010
Sachen, die wir brauchen, um dieses Phänomen zu kriegen?

01:19:58.110 --> 01:19:59.490
Also das, was ich eben beschrieben habe, was ist das

01:19:59.490 --> 01:20:01.830
minimale System, was uns sowas produziert,

01:20:01.890 --> 01:20:03.590
wie einen epileptischen Anfall oder irgendwas?

01:20:04.230 --> 01:20:05.670
um daraus irgendwie zu verstehen,

01:20:05.790 --> 01:20:07.390
was sind eigentlich die Zutaten, die ich brauche.

01:20:07.890 --> 01:20:10.750
Und ich gehöre eher zu der letzten Spezies,

01:20:11.570 --> 01:20:15.730
weil ich denke, ja, man kriegt eher interessantere Erkenntnisse

01:20:15.730 --> 01:20:20.950
und es ist in vielen Fällen auch wahrscheinlich der gesündere Ansatz.

01:20:22.130 --> 01:20:23.690
Sozusagen, weil man da dann immer weiß,

01:20:23.770 --> 01:20:25.210
was man eigentlich getan hat sozusagen.

01:20:25.210 --> 01:20:28.030
Und das bei Phänomenen, die man beobachtet,

01:20:28.450 --> 01:20:29.930
da sieht man halt nur, was man halt sieht.

01:20:30.130 --> 01:20:30.630
Aber man weiß, was passiert.

01:20:30.630 --> 01:20:32.470
Ja, man kann es auch im Zweifelsfall einfach mal machen.

01:20:33.330 --> 01:20:35.170
Also ich mache mir gar nicht die Illusion,

01:20:35.290 --> 01:20:37.130
das Gehirn komplett zu simulieren zu können.

01:20:37.210 --> 01:20:38.370
Das kann ich nicht, das kann niemand.

01:20:39.210 --> 01:20:40.950
Und es gibt ja jetzt gewisse Projekte,

01:20:41.310 --> 01:20:46.770
aber ja, ich mache mir diese Illusion gar nicht,

01:20:46.850 --> 01:20:48.830
aber ich mache mir, eventuell kriege ich es hin,

01:20:49.130 --> 01:20:51.550
einen Teil davon, mal ein Konzept zu verstehen,

01:20:51.690 --> 01:20:54.390
welche Auswirkungen gewisse Strukturen haben.

01:20:54.390 --> 01:20:59.530
Oder ja, das ist so die größte Hoffnung da.

01:21:00.890 --> 01:21:30.030
Ja, aber wie ist das eigentlich mit dem Wissenschaftsbetrieb und der Digitalisierung? Das ist jetzt alles inzwischen, ich meine, im Grunde sollte man ja annehmen, wenn das Steuergelder sind und eigentlich ja schon auch irgendwie so gemeinwohlmäßig ausgerichtet sein sollte oder allen zugänglich sein sollte, vielleicht zumindest die, die das bezahlt haben, dass dann halt irgendwie alle Forschungsergebnisse digital veröffentlicht werden und dass das halt irgendwie, ja,

01:21:30.890 --> 01:21:45.410
Keine Ahnung, ich könnte mir das so vorstellen, dass halt die Wissenschaft so ein bisschen funktioniert wie so eine große freie Software-Community oder so, aber real existieren das so ein bisschen anders.

01:21:45.410 --> 01:21:57.570
Ja, also ich meine, man kann mittlerweile sagen, dass ein Großteil der wissenschaftlichen Software, zumindest in den Bereichen, in denen ich unterwegs bin, zum Glück frei ist, also auch frei verfügbar und die Leute sich das zunutze gemacht haben.

01:21:57.570 --> 01:21:59.430
Und mein großer Vorteil ist, kein Mensch hat

01:21:59.430 --> 01:22:00.690
irgendwas davon, ich habe nichts davon gehabt,

01:22:00.930 --> 01:22:02.670
ich würde nichts davon haben, meine Software zu verkaufen.

01:22:02.790 --> 01:22:05.330
Ich habe was davon, dass ich ein Paper über

01:22:05.330 --> 01:22:07.830
meine Software schreibe,

01:22:07.910 --> 01:22:09.190
Leute das zitieren und

01:22:09.190 --> 01:22:11.290
falls ihr das schon mal gehört habt, Zitate sind

01:22:11.290 --> 01:22:12.830
die wissenschaftliche Währung und

01:22:12.830 --> 01:22:15.430
das nützt dann eventuell, um meine Karriere voranzubringen.

01:22:16.750 --> 01:22:17.690
Das ist schon mal

01:22:17.690 --> 01:22:19.270
gut, aber auch da gibt es noch

01:22:19.270 --> 01:22:20.730
Bereiche, wo es Leute gibt, die

01:22:20.730 --> 01:22:23.370
ihre Software zwar

01:22:23.370 --> 01:22:25.310
gerne allen zur Verfügung stellen, aber schreibt

01:22:25.310 --> 01:22:27.270
mir bitte vor eine E-Mail und dann kriegt ihr die zugeschickt

01:22:27.270 --> 01:22:28.430
und zitiert mich bitte natürlich.

01:22:29.650 --> 01:22:30.130
So

01:22:30.130 --> 01:22:32.910
komplett irre Sachen zum Teil,

01:22:33.230 --> 01:22:35.270
dass es einfach extrem schwierig ist,

01:22:35.370 --> 01:22:37.110
da an sinnvolle Sachen ranzukommen.

01:22:38.290 --> 01:22:38.710
Und auch,

01:22:38.870 --> 01:22:41.210
ja, die Sachen, also ja,

01:22:41.270 --> 01:22:43.150
es ist digital, aber ist es

01:22:43.150 --> 01:22:44.030
vernünftig digital?

01:22:46.730 --> 01:22:47.210
Und

01:22:47.210 --> 01:22:48.270
das ist ja nur die Software-Ebene.

01:22:48.650 --> 01:22:51.390
Du hast noch die ganzen Formulare dazu, das kommt heiler oft dann noch dazu.

01:22:51.910 --> 01:22:52.550
Ja, nee, also

01:22:52.550 --> 01:22:54.390
Software ist die eine Sache,

01:22:54.390 --> 01:22:55.230
der Software-Ebene

01:22:55.230 --> 01:22:57.330
funktionieren

01:22:57.330 --> 01:22:59.150
die Teile der Wissenschaft vielleicht doch eher so wie eine

01:22:59.150 --> 01:23:01.810
große freie

01:23:01.810 --> 01:23:03.310
Software-Community? Ja,

01:23:03.970 --> 01:23:04.810
kann man so sagen.

01:23:05.230 --> 01:23:07.290
Es ist vielleicht nicht sehr wohl organisiert und durchdacht

01:23:07.290 --> 01:23:09.130
und so weiter. Es wäre gut, wenn die Leute

01:23:09.130 --> 01:23:11.110
vielleicht mal ein bisschen Ahnung davon hatten, wie man eigentlich Software baut.

01:23:13.690 --> 01:23:15.030
Statt nur programmieren zu können,

01:23:15.090 --> 01:23:15.450
so ein bisschen.

01:23:17.190 --> 01:23:19.130
Auf der anderen Seite, wenn jetzt die eigentliche Wissenschaft,

01:23:19.530 --> 01:23:21.370
also die Wissenschaft, wenn man jetzt um die Erkenntnisse

01:23:21.370 --> 01:23:22.250
in der Wissenschaft

01:23:22.250 --> 01:23:25.090
der Wissenschaft redet, ist es immer noch ein sehr

01:23:25.090 --> 01:23:27.370
großes, ja, mein Sandförmchen,

01:23:27.470 --> 01:23:28.530
dein Sandförmchen und

01:23:28.530 --> 01:23:31.270
großer Neid, dass man

01:23:31.270 --> 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.770 --> 01:23:39.190
Hängt so ein bisschen vom Feld ab, also

01:23:39.190 --> 01:23:41.450
gerade die Mathematik, Informatik,

01:23:41.570 --> 01:23:42.990
Physik sind da so ein bisschen besser, aber

01:23:42.990 --> 01:23:44.750
jetzt bin ich in der Biologie so ein bisschen

01:23:44.750 --> 01:23:47.090
und ja, da ist es

01:23:47.090 --> 01:23:47.530
immer noch,

01:23:49.770 --> 01:23:51.090
ja, da geht es

01:23:51.090 --> 01:23:52.730
Ja, auch wirklich darum, okay, ich habe diese Daten

01:23:52.730 --> 01:23:54.550
und wenn ich diese Daten habe, dann bin ich,

01:23:55.650 --> 01:23:57.110
ja, dann muss ich damit alles Mögliche

01:23:57.110 --> 01:23:58.770
machen, möglichst auf einmal und das

01:23:58.770 --> 01:24:00.730
große eine Ding landen,

01:24:00.850 --> 01:24:02.690
sonst funktioniert

01:24:02.690 --> 01:24:04.430
das nicht oder funktioniert es nicht für die Karriere.

01:24:05.250 --> 01:24:06.770
Also leider ist es wahrscheinlich auch richtig,

01:24:07.450 --> 01:24:08.830
dass es nur

01:24:08.830 --> 01:24:10.630
so geht, was

01:24:10.630 --> 01:24:11.450
natürlich dämlich ist.

01:24:12.970 --> 01:24:14.670
Obwohl aus der Physik habe ich das auch manchmal gehört,

01:24:14.670 --> 01:24:16.750
dass da die Leute dann in Vorträgen

01:24:16.750 --> 01:24:18.130
sitzen und Fotos machen von dem

01:24:18.130 --> 01:24:20.650
Experiment gehabt, sodass sie dann

01:24:20.650 --> 01:24:22.770
die ersten Theoretiker sein konnten, die dann die Theorie dazu

01:24:22.770 --> 01:24:24.730
zu einem Experiment oder so irgendwie

01:24:24.730 --> 01:24:26.750
Ja gut, aber dann machen sie

01:24:26.750 --> 01:24:28.330
zumindest nicht den Vortragenden den

01:24:28.330 --> 01:24:30.410
Ja, ja, ja, das ist, ja

01:24:30.410 --> 01:24:32.510
Also natürlich, das gibt es in allen Bereichen

01:24:32.510 --> 01:24:34.710
wahrscheinlich irgendwo, das wird man nicht vermeiden können, aber

01:24:34.710 --> 01:24:36.770
es gibt da schon große Unterschiede

01:24:36.770 --> 01:24:38.570
Also in der, gerade in der Physik und Mathematik gibt es ja

01:24:38.570 --> 01:24:40.130
diese Preprint-Kultur, also

01:24:40.130 --> 01:24:42.150
muss jetzt vielleicht für die Leute, die es nicht kennen, sagen

01:24:42.150 --> 01:24:43.290
In der Wissenschaft

01:24:43.290 --> 01:24:45.670
zählen hauptsächlich

01:24:45.670 --> 01:24:47.390
so

01:24:47.390 --> 01:24:49.320
sogenannte peer-reviewte Veröffentlichung,

01:24:49.420 --> 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.900
dauert

01:24:55.900 --> 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:01.660 --> 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:11.440 --> 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:16.300 --> 01:25:17.140
die Kultur,

01:25:17.220 --> 01:25:19.180
dass man sagt, okay, wir haben das Preprint-Server,

01:25:19.340 --> 01:25:21.560
das bekannteste ist das Archive,

01:25:22.320 --> 01:25:22.900
wo man sagt, okay,

01:25:23.020 --> 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.260 --> 01:25:31.400
ist auch, kann damit

01:25:31.400 --> 01:25:33.120
leben, dass ich das frei zur Verfügung stelle und

01:25:33.120 --> 01:25:34.820
sagt mir, nee, das hast du schon veröffentlicht, machen wir nicht.

01:25:36.380 --> 01:25:37.160
Und ja, das ist

01:25:37.160 --> 01:25:39.160
so langsam im Kommen, jetzt auch

01:25:39.160 --> 01:25:41.200
in der Biologie, das ist

01:25:41.200 --> 01:25:43.260
auch definitiv gut und

01:25:43.260 --> 01:25:45.220
das führt eigentlich auch so ein bisschen dazu, dass dieses,

01:25:46.360 --> 01:25:47.900
dass man die Sachen wirklich direkt

01:25:47.900 --> 01:25:48.880
nutzen kann. Aber

01:25:48.880 --> 01:25:51.740
andererseits in der Biologie dauert es halt auch einfach immer noch

01:25:51.740 --> 01:25:53.900
ewig, bevor man die Sachen überhaupt veröffentlicht.

01:25:54.320 --> 01:25:55.460
Und ja,

01:25:55.780 --> 01:25:57.800
egal, aber das ist jetzt vielleicht auch nicht so.

01:26:00.820 --> 01:26:01.580
Ja, du hast noch ein paar

01:26:01.580 --> 01:26:03.380
Teptermarks, glaube ich, unterlassen.

01:26:03.680 --> 01:26:04.860
Ja, das kann sein.

01:26:05.020 --> 01:26:06.760
Das war so eine spannende Geschichte.

01:26:08.120 --> 01:26:09.320
Was fällt euch noch dazu ein?

01:26:09.360 --> 01:26:11.860
Habt ihr noch was zu dem Thema zu erzählen?

01:26:13.560 --> 01:26:14.600
Ich kann auch was erzählen.

01:26:14.600 --> 01:26:17.620
Was Publikationen angeht.

01:26:17.940 --> 01:26:19.800
Genau, da haben wir noch gar nicht drüber gesprochen.

01:26:19.900 --> 01:26:21.880
Wie gesagt, ich habe eine wissenschaftliche Software

01:26:21.880 --> 01:26:23.240
geschrieben, okay, so weit so furchtbar.

01:26:23.780 --> 01:26:25.700
Das Hauptproblem ist natürlich jetzt, ich möchte auch

01:26:25.700 --> 01:26:27.580
weiterhin als Wissenschaftler bezahlt werden und das

01:26:27.580 --> 01:26:29.160
heißt, ich muss zitiert werden, wie ich gerade schon

01:26:29.160 --> 01:26:31.700
gesagt habe und dazu muss ich das Ganze veröffentlichen.

01:26:32.580 --> 01:26:33.580
Andersrum, Veröffentlichung

01:26:33.580 --> 01:26:35.640
und Zitate sind Geld, also muss ich

01:26:35.640 --> 01:26:36.120
veröffentlichen.

01:26:37.240 --> 01:26:39.420
Und ja, die meisten

01:26:39.420 --> 01:26:41.580
Veröffentlichungen in der Wissenschaft sind natürlich immer noch

01:26:41.580 --> 01:26:43.520
über eigentliche Forschung oder klassische

01:26:43.520 --> 01:26:45.200
Forschung und ich habe irgendwas herausgefunden.

01:26:45.920 --> 01:26:47.700
Hier ist es und nicht, ich habe

01:26:47.700 --> 01:26:49.460
hier eine neue Software geschrieben, die ich ihr erlaubt,

01:26:49.480 --> 01:26:50.000
das zu machen.

01:26:52.140 --> 01:26:52.880
Das war's.

01:26:54.900 --> 01:26:55.300
Und

01:26:55.300 --> 01:26:57.400
ja, diesen Prozess

01:26:57.400 --> 01:26:59.420
habe ich durchlaufen. Ich habe ihn erfolgreich durchlaufen. Ich habe es

01:26:59.420 --> 01:27:01.080
geschafft, dieses Paper zu veröffentlichen.

01:27:01.620 --> 01:27:03.260
Es war aber zum Teil sehr interessant.

01:27:05.540 --> 01:27:06.780
Ja, wo fange ich mal an?

01:27:07.060 --> 01:27:09.520
Höflich formuliert. Ja, höflich formuliert,

01:27:09.600 --> 01:27:11.400
genau. Also der erste Schritt ist

01:27:11.400 --> 01:27:13.460
erstmal, dass man ein Journal finden muss,

01:27:13.520 --> 01:27:15.860
was überhaupt sagt, okay, ich akzeptiere,

01:27:16.180 --> 01:27:17.760
wir akzeptieren solche Veröffentlichungen,

01:27:18.400 --> 01:27:19.280
wir finden das gut.

01:27:20.420 --> 01:27:22.420
Der zweite Schritt ist dann zu sagen,

01:27:22.680 --> 01:27:24.400
ein Journal, bei dem Journal auch,

01:27:24.620 --> 01:27:26.500
ja, etwas, natürlich das Ganze zusammenzuschreiben,

01:27:27.580 --> 01:27:29.800
was übrigens, also für die Leute,

01:27:29.900 --> 01:27:30.960
jetzt wirklich für die Wissenschaftler

01:27:30.960 --> 01:27:33.300
und den Zuhörern bedeutend einfacher war,

01:27:33.380 --> 01:27:35.720
als klassische Forschungsarbeit zusammenzuschreiben.

01:27:38.260 --> 01:27:38.780
Ukulele.

01:27:39.160 --> 01:27:39.480
Ja.

01:27:42.180 --> 01:27:56.460
Und ja, dann gab es, wie gesagt, diesen Peer-Review-Prozess, das heißt auch dieses Manuskript ging an andere Forscher, die dann sagen sollten, ist das schön oder nicht oder gut oder nicht.

01:27:57.880 --> 01:28:20.480
Und da hat dann erstmal einer der Reviewer, die nebenbei anonym sind, also ich weiß nicht, wer es war, gesagt, ja, das ist ja alles schön und gut, das ist auch besonders interessant für diese spezifische wissenschaftliche Community, aber das ist ja so irgendwie eigentlich kein richtiges Paper, also lehne ich es ab.

01:28:23.220 --> 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:27.240 --> 01:28:29.220
Und ja, ich weiß nicht genau, was da schiefgelaufen

01:28:29.220 --> 01:28:31.220
ist, ob das Journal dem Reviewer nicht gesagt hat,

01:28:31.380 --> 01:28:33.140
okay, guck mal, das ist okay, oder

01:28:33.140 --> 01:28:34.940
ob der Reviewer es nicht verstanden hat, oder

01:28:34.940 --> 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 hab,

01:28:39.160 --> 01:28:40.940
also man sagt dann natürlich nicht, okay,

01:28:41.040 --> 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:44.520 --> 01:28:45.780
sondern

01:28:45.780 --> 01:28:47.580
man

01:28:47.580 --> 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:56.700
ist doof, aber ich sage, es ist gut, weil.

01:28:58.500 --> 01:28:59.200
Und ja,

01:28:59.260 --> 01:29:00.680
mein Argument bestand dann daraus,

01:29:01.520 --> 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:07.300 --> 01:29:09.080
neben die Kriterien vom Journal zu

01:29:09.080 --> 01:29:11.000
stellen, dass er gesagt hat, ja, wir akzeptieren solche

01:29:11.000 --> 01:29:12.760
Paper, wenn. Und dann kam im Prinzip

01:29:12.760 --> 01:29:15.000
fast genau das Gleiche, was

01:29:15.000 --> 01:29:16.240
der Reviewer dann gesagt hat.

01:29:17.900 --> 01:29:18.740
Und am Ende

01:29:18.740 --> 01:29:20.880
hat es dann auch ohne große Probleme geklappt,

01:29:21.000 --> 01:29:22.780
aber es war irgendwie schon lustig.

01:29:23.100 --> 01:29:25.000
Dann kommt das nächste Problem, also wenn man das alles

01:29:25.000 --> 01:29:26.940
geschafft hat, also wenn quasi

01:29:26.940 --> 01:29:29.100
die Wissenschaftler sagen, das ist okay, dann muss das

01:29:29.100 --> 01:29:29.680
noch

01:29:29.680 --> 01:29:32.960
in eine druckbare Form gebracht werden,

01:29:33.760 --> 01:29:35.120
was sich jetzt erstmal ein bisschen albern

01:29:35.120 --> 01:29:36.880
anhört, denn ja gut, wir sind jetzt hier

01:29:36.880 --> 01:29:38.800
in der Physik, Mathematik und ähnlichem, da sprechen

01:29:38.800 --> 01:29:40.660
alle Leute latech und

01:29:40.660 --> 01:29:42.760
können in der Regel selbst sehr

01:29:42.760 --> 01:29:45.100
gute Sachen produzieren,

01:29:45.140 --> 01:29:46.000
die man auch drucken kann,

01:29:46.760 --> 01:29:48.800
aber ja, einige

01:29:48.800 --> 01:29:52.600
Wobei, kurze

01:29:52.600 --> 01:29:54.960
Abschweifung, ich glaube für diese

01:29:54.960 --> 01:29:56.940
Physics Review Letters oder so,

01:29:56.980 --> 01:29:58.860
das ist ganz wichtig in der Physik, da

01:29:58.860 --> 01:30:01.000
gibt es ein Word Template, das man benutzen muss,

01:30:01.120 --> 01:30:03.180
die... Nein, ziemlich sicher nicht.

01:30:03.260 --> 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:07.780 --> 01:30:08.880
Und auch, also es geht

01:30:08.880 --> 01:30:11.020
mittlerweile, es ist sehr weit verbreitet, man kann

01:30:11.020 --> 01:30:12.960
Latex einreichen, die Fahrerzeit wird es eins zu eins

01:30:12.960 --> 01:30:13.700
verwendet. Also

01:30:13.700 --> 01:30:16.780
das Einreichen ist die eine Geschichte,

01:30:16.920 --> 01:30:19.080
Die andere Sache ist, was macht das Journal

01:30:19.080 --> 01:30:21.080
dann, was machen am Ende die Schriftsetzer damit?

01:30:21.760 --> 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 brauchen wir 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.680
in den meisten Journalen,

01:30:30.940 --> 01:30:32.700
zumindest in meinem Feld. Und das heißt,

01:30:32.880 --> 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.660
setzen. Oh, diese blöden

01:30:40.660 --> 01:30:42.920
tabulatorischen Eindrückungen, das sieht aber doof

01:30:42.920 --> 01:30:44.440
aus. Ja,

01:30:45.000 --> 01:30:47.040
Also, das würde ja noch

01:30:47.040 --> 01:30:47.620
gehen.

01:30:49.180 --> 01:30:50.960
Also, ja, das wäre auch ein Problem,

01:30:51.180 --> 01:30:53.140
aber, also ja,

01:30:53.180 --> 01:30:54.920
der Code war an verschiedenen Eindrückungsebenen,

01:30:55.440 --> 01:30:57.260
unterschiedliche Codeblöcke waren an unterschiedlichen

01:30:57.260 --> 01:30:59.080
Eindrückungsebenen. Ja, das war auch ein Problem,

01:30:59.200 --> 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:03.320 --> 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.260
ein,

01:31:10.440 --> 01:31:13.140
das Resultat der Schriftsätze bekommen,

01:31:13.220 --> 01:31:14.880
ich habe gesagt, nee, das geht so nicht, die haben

01:31:14.880 --> 01:31:17.200
was Neues versucht, ich habe es bekommen, ich habe gesagt, nee, das geht so nicht

01:31:17.200 --> 01:31:19.040
und so weiter und so fort. Nach drei Iterationen

01:31:19.040 --> 01:31:20.960
hatte ich ungefähr raus, was da eigentlich

01:31:20.960 --> 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:29.660 --> 01:31:30.880
Und Formeln gibt es halt zum Beispiel solche,

01:31:31.100 --> 01:31:32.960
also für den Formelsatz gab es die Regel, wenn

01:31:32.960 --> 01:31:35.040
die erste, die innerste Klammer,

01:31:35.540 --> 01:31:36.380
die man macht, ist rund,

01:31:37.340 --> 01:31:38.980
die nächste Klammer ist eckig und danach

01:31:38.980 --> 01:31:39.640
kommt geschweift.

01:31:41.260 --> 01:31:42.800
Das haben die auch radikal

01:31:42.800 --> 01:31:44.920
auf den, ja, das ist

01:31:44.920 --> 01:31:46.980
eine Form, in der es sagt, okay, kann man drüber streiten,

01:31:47.080 --> 01:31:48.940
ja, das haben die aber radikal auf den Code

01:31:48.940 --> 01:31:50.340
angewendet. Tja.

01:31:51.060 --> 01:31:52.520
Und wenn dann, dann steht halt Sinus,

01:31:52.620 --> 01:31:54.120
eckige Klammer auf, F von I,

01:31:54.560 --> 01:31:55.260
eckige Klammer zu.

01:31:56.600 --> 01:31:56.800
Ja.

01:31:58.560 --> 01:32:00.040
Ja, das, ähm.

01:32:00.580 --> 01:32:02.540
Das wäre jetzt, das wäre jetzt natürlich dann auch wieder

01:32:02.540 --> 01:32:04.420
irgendwie eine Anwendung für, für, äh,

01:32:04.520 --> 01:32:06.560
CodeGolf, ob man das dann so transformieren

01:32:06.560 --> 01:32:08.700
könnte, dass es, äh, irgendwie

01:32:08.700 --> 01:32:10.860
am Schluss hat man dann halt noch so ein kleines CodeGolf-Ding,

01:32:10.940 --> 01:32:12.680
dass das eine wieder in die andere Form übersetzt

01:32:12.680 --> 01:32:15.400
sodass es halt dann irgendwie ausführbar wird.

01:32:15.620 --> 01:32:17.660
Oh, ich mache eine Exkursion.

01:32:17.740 --> 01:32:18.360
Ist das, glaube ich, okay?

01:32:19.780 --> 01:32:21.820
Das war jetzt nicht Code Golf,

01:32:21.880 --> 01:32:24.480
aber so eine Programmieraufgabe.

01:32:25.100 --> 01:32:27.200
Ich versuche es jetzt gerade aus dem Gedächtnis zu reproduzieren.

01:32:27.680 --> 01:32:30.460
Sagen wir es so wie A, Klammer auf, B plus C,

01:32:31.580 --> 01:32:35.480
gleich, gleich, A, B plus B, C.

01:32:35.480 --> 01:32:37.520
Also das Assoziativgesetz.

01:32:38.180 --> 01:32:40.620
Und zwar hingeschrieben, so wie man es auf Papier schreiben würde.

01:32:41.180 --> 01:32:42.560
Das heißt, ohne Malzeichen.

01:32:42.680 --> 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:49.560
und die Aufgabe ist jetzt

01:32:49.560 --> 01:32:51.660
davor etwas zu machen, dass

01:32:51.660 --> 01:32:53.900
dieser, dass das wahr ergibt

01:32:53.900 --> 01:33:01.720
man darf, ja, ich glaube mit der Bedingung, dass

01:33:01.720 --> 01:33:03.680
man ja A und B nicht einfach

01:33:03.680 --> 01:33:04.960
durch Nullen ersetzen darf oder so

01:33:04.960 --> 01:33:06.820
und ja, also

01:33:06.820 --> 01:33:09.780
mein Ansatz dafür, es war leider

01:33:09.780 --> 01:33:11.520
nicht der schnellste oder der kürzeste

01:33:11.520 --> 01:33:13.500
war, dass man sagt, okay, wir machen

01:33:13.500 --> 01:33:15.440
erstmal A, B und C zu Symbolen,

01:33:15.480 --> 01:33:17.360
dann funktioniert schon mal symbolisches Rechnen, also mit Zympai.

01:33:18.740 --> 01:33:19.380
Und dann

01:33:19.380 --> 01:33:21.020
überschreiben wir noch für A,

01:33:21.320 --> 01:33:22.780
oder fügen wir A, ein

01:33:22.780 --> 01:33:25.520
Call-Funktion hinzu,

01:33:26.380 --> 01:33:27.700
machen die Call-Methode für A

01:33:27.700 --> 01:33:29.380
und sagen halt, dass sie das

01:33:29.380 --> 01:33:30.920
macht, was dann rechnisch rauskommen müsste.

01:33:31.580 --> 01:33:33.220
Das heißt, dieses A Klammer auf B plus C

01:33:33.220 --> 01:33:35.220
würde wie ein Funktionsaufruf ähnlich

01:33:35.220 --> 01:33:37.440
interpretiert werden und dann funktionierte das.

01:33:38.460 --> 01:33:39.260
Was auch eine sehr schöne

01:33:39.260 --> 01:33:41.280
Sache in Python ist, wenn man das einfach mal

01:33:41.280 --> 01:33:43.420
weiß, dass man einfach alle Operatoren irgendwie

01:33:43.420 --> 01:33:45.180
beliebig definieren kann, wenn man möchte.

01:33:45.720 --> 01:33:47.340
Und das auch für sehr viele Sachen nutzen

01:33:47.340 --> 01:33:48.800
kann. Ja.

01:33:49.700 --> 01:33:51.440
Und eben, um die Historie zu lösen.

01:33:52.180 --> 01:33:53.500
Plus mit Ohr überschreiben

01:33:53.500 --> 01:33:55.680
oder sowas, hast du auch ein True, wenn du ein Bohl draufwirfst.

01:33:56.660 --> 01:33:57.320
Wenn du das

01:33:57.320 --> 01:33:59.380
Pluszeichen mit einem Ohr überschreibst

01:33:59.380 --> 01:34:00.900
oder sowas, also

01:34:00.900 --> 01:34:02.600
dann könnte das vielleicht funktionieren.

01:34:05.420 --> 01:34:05.740
Ja.

01:34:06.560 --> 01:34:07.320
Ich glaube, es musste

01:34:07.320 --> 01:34:09.200
für eine, man durfte irgendwie A, B und C nicht überschreiben.

01:34:09.280 --> 01:34:10.720
Ich müsste es nochmal raussuchen, was genau die...

01:34:10.720 --> 01:34:12.700
deswegen das Plus hier und dann den

01:34:12.700 --> 01:34:14.740
Bolian draufwerfen, dann stimmt das schon.

01:34:15.480 --> 01:34:15.600
Ja.

01:34:16.720 --> 01:34:18.780
Ja gut. Ja, ja. Ne, also ich hatte dann

01:34:18.780 --> 01:34:20.800
sehr viel Spaß mit den Schriftsetzern eben, um

01:34:20.800 --> 01:34:22.760
Ja, das ist auf jeden Fall schön.

01:34:22.980 --> 01:34:24.740
An die Klammern anpassen, Einrückungsebenen

01:34:24.740 --> 01:34:26.700
entfernen. Ja, genau. Sie haben auch irgendwie

01:34:26.700 --> 01:34:28.740
den Unterstrich per Hand gezeichnet, das heißt, wenn man den Code

01:34:28.740 --> 01:34:30.340
kopiert hat, war der Unterstrich plötzlich weg,

01:34:30.940 --> 01:34:32.300
weil es irgendwie kein Unterstrich war. Das Bild war

01:34:32.300 --> 01:34:33.860
innerhalb von dem PDF dann

01:34:33.860 --> 01:34:36.380
nicht mehr Text.

01:34:37.000 --> 01:34:38.440
Genau, es war Text

01:34:38.440 --> 01:34:40.100
und anstatt des Unterstrichs, die auch irgendwie

01:34:40.100 --> 01:34:42.420
unterschiedlich lang war, war da halt ein Leerzeichen

01:34:42.420 --> 01:34:44.280
und da war eine Linie.

01:34:44.500 --> 01:34:45.520
Also so per Hand

01:34:45.520 --> 01:34:47.280
reingehend sein.

01:34:48.220 --> 01:34:49.520
So ein Zeichenobjekt.

01:34:50.340 --> 01:34:52.700
Aber wenn man den Text kopiert hat, war das halt nicht da.

01:34:52.780 --> 01:34:54.560
Dann hat jemand die Taste auf der Tastatur nicht gefunden.

01:34:54.920 --> 01:34:56.760
Dann wurden die auch schön typografische

01:34:56.760 --> 01:34:58.360
Anführungszeichen im Code.

01:34:59.060 --> 01:35:00.480
Sieht einfach viel besser aus.

01:35:00.740 --> 01:35:02.700
Ja, ich meine, es sieht tatsächlich

01:35:02.700 --> 01:35:05.000
viel besser aus, es funktioniert leider halt auch nicht.

01:35:06.140 --> 01:35:06.720
Aber gut,

01:35:06.720 --> 01:35:08.460
da kann ich jetzt...

01:35:08.460 --> 01:35:09.680
Ja, aber das ist, ich meine,

01:35:09.860 --> 01:35:11.840
das ist halt, gut, das ist wahrscheinlich

01:35:11.840 --> 01:35:13.880
eben in der, je nach Community so unterschiedlich,

01:35:13.980 --> 01:35:15.700
weil jetzt so was in der Informatik oder so,

01:35:16.200 --> 01:35:17.840
da Pseudocode wird ja schon

01:35:17.840 --> 01:35:19.940
oft in Papers auch reingeschrieben, ne, aber

01:35:19.940 --> 01:35:22.000
Naja, ich war

01:35:22.000 --> 01:35:23.860
halt, das war, was heißt leider,

01:35:24.000 --> 01:35:25.340
ich meine, es war ja, es gab

01:35:25.340 --> 01:35:27.680
Sinn, dass ich mich in einer

01:35:27.680 --> 01:35:29.520
Community gewandert habe, die das nicht macht und

01:35:29.520 --> 01:35:31.460
die haben irgendwie so

01:35:31.460 --> 01:35:33.460
ein solches Paper pro Jahr

01:35:33.460 --> 01:35:35.900
und ja, das ist

01:35:35.900 --> 01:35:37.020
nicht viel.

01:35:38.000 --> 01:35:41.600
Naja, aber das ist, also

01:35:41.600 --> 01:35:43.660
ich weiß nicht, diese ganze Publikationspraxis, dass man

01:35:43.660 --> 01:35:45.900
halt Dinge halt nur publizieren

01:35:45.900 --> 01:35:47.680
kann, oder ich meine, in der Informatik ist es halt auch

01:35:47.680 --> 01:35:49.040
so, dass, oder

01:35:49.040 --> 01:35:51.640
ich meine, es gibt Ausnahmen, aber überwiegend zu

01:35:51.640 --> 01:35:53.560
der Zeit, wo ich viel Papers gelesen habe, war es halt so,

01:35:53.640 --> 01:35:54.900
dass die Leute,

01:35:56.580 --> 01:35:56.900
naja,

01:35:58.000 --> 01:35:59.360
also, dass man eigentlich nur

01:35:59.360 --> 01:36:01.620
mathematische Sachen veröffentlichen

01:36:01.620 --> 01:36:03.600
konnte, also Code und so, eigentlich eher nicht.

01:36:03.940 --> 01:36:05.720
Man kommt an den Code auf Anfrage

01:36:05.720 --> 01:36:07.340
dann immer ran, wenn man Leute einschreibt.

01:36:08.000 --> 01:36:10.300
aber ist es halt nicht Teil

01:36:10.300 --> 01:36:11.320
der Veröffentlichung und

01:36:11.320 --> 01:36:14.320
dann war halt, also ich meine

01:36:14.320 --> 01:36:16.340
es führt halt auch so ein bisschen dazu

01:36:16.340 --> 01:36:18.320
quasi, dass man

01:36:18.320 --> 01:36:20.340
da das eh niemand, ich meine an dem Paper

01:36:20.340 --> 01:36:21.900
ob das jetzt stimmt oder nicht, kann man

01:36:21.900 --> 01:36:24.320
den Paper halt nicht mehr ansehen, also wenn man nur das überprüft

01:36:24.320 --> 01:36:26.380
dann weiß man überhaupt nicht, ob das jetzt funktioniert

01:36:26.380 --> 01:36:27.740
oder nicht und

01:36:27.740 --> 01:36:30.380
wir haben dann halt da auch teilweise versucht Sachen

01:36:30.380 --> 01:36:32.560
ja halt

01:36:32.560 --> 01:36:34.240
sozusagen

01:36:34.240 --> 01:36:36.480
zu reproduzieren und die Quote

01:36:36.480 --> 01:36:37.680
der Sachen

01:36:37.680 --> 01:36:39.840
die so wirklich überhaupt gar nicht, also manchmal

01:36:39.840 --> 01:36:41.780
kann man vielleicht auch Sachen nicht richtig reproduzieren,

01:36:41.840 --> 01:36:43.820
weil man es nicht verstanden hat oder selber zu blöd ist,

01:36:43.880 --> 01:36:45.880
es hinzukriegen oder so. Aber manchmal ist es

01:36:45.880 --> 01:36:47.880
relativ offensichtlich, dass das nie funktioniert haben

01:36:47.880 --> 01:36:49.920
kann und die Quote von den Sachen

01:36:49.920 --> 01:36:51.800
war recht hoch. Also das war schon

01:36:51.800 --> 01:36:53.660
erschreckend. Und dann denkt man sich so schon, okay,

01:36:53.880 --> 01:36:55.080
ja, und das waren alles

01:36:55.080 --> 01:36:57.800
ordentlich peer-reviewte Sachen, die durchgegangen

01:36:57.800 --> 01:36:59.560
sind, die irgendwo veröffentlicht wurden und so. Also

01:36:59.560 --> 01:37:00.860
ja.

01:37:01.600 --> 01:37:03.880
Ja. Aber da muss

01:37:03.880 --> 01:37:05.780
man sagen, die Informatik hat es noch gut, wenn man einfach

01:37:05.780 --> 01:37:07.580
zu sagen, okay, ich habe hier das, man könnte

01:37:07.580 --> 01:37:09.020
zumindest mal hingehen und diesen Standard einführen,

01:37:09.120 --> 01:37:10.740
es gibt ja auch Tendenzen in die Richtung zum Glück,

01:37:11.280 --> 01:37:12.720
dass man sagt, okay, hier ist jetzt bitte die Software,

01:37:12.880 --> 01:37:15.200
ein Programm, was das macht und wenn ich das ausführe,

01:37:15.400 --> 01:37:16.100
dann kommt das halt raus.

01:37:17.260 --> 01:37:19.660
Und das Programm ist verständlich, dann kommt das raus.

01:37:19.960 --> 01:37:21.680
Mit anderen experimentellen Sachen

01:37:21.680 --> 01:37:22.360
geht das nicht.

01:37:23.280 --> 01:37:25.180
Du kannst halt eben nicht einfach mal ein Jahr

01:37:25.180 --> 01:37:27.520
ins Labor setzen, da rumpipitieren und

01:37:27.520 --> 01:37:29.800
welche Bakterien wachsen lassen

01:37:29.800 --> 01:37:30.940
und gucken, ob das gleiche rauskommt.

01:37:31.360 --> 01:37:32.200
Also kann man schon,

01:37:32.200 --> 01:37:34.600
das ist aber deutlich schwieriger.

01:37:34.880 --> 01:37:36.980
Stimmt, ja. Bei anderen ist es noch viel übler.

01:37:39.160 --> 01:37:40.400
Oder halt so, oh,

01:37:41.380 --> 01:37:42.280
das war jetzt das Land.

01:37:43.120 --> 01:37:44.140
Was machen wir jetzt?

01:37:44.740 --> 01:37:46.540
Wie viele Länder haben wir denn noch?

01:37:47.760 --> 01:37:49.020
Welche haben noch nie etwas von uns

01:37:49.020 --> 01:37:50.900
gehört in unseren bisherigen Ergebnissen?

01:37:51.020 --> 01:37:52.920
Wir lassen das Modell einfach nochmal rechnen.

01:37:54.320 --> 01:37:57.100
Ja, dann haben wir ein paar so Programme eingeführt.

01:37:57.220 --> 01:37:58.000
Das musste man dann so machen.

01:37:58.940 --> 01:38:00.760
Sie haben dann tatsächlich das Modell nicht geändert.

01:38:00.760 --> 01:38:02.740
Sie haben dann davon überzeugt, das Modell war richtig.

01:38:03.100 --> 01:38:04.520
Nur die Umstände waren falsch.

01:38:04.520 --> 01:38:06.760
Doch, zwei oder drei andere Projekte, die auch nicht funktionieren.

01:38:07.160 --> 01:38:08.800
Also ja, da war ein bisschen Resistenzgang

01:38:08.800 --> 01:38:10.300
gegen gute...

01:38:10.300 --> 01:38:12.500
Ja, das ist halt so, wenn man einmal weiß, dass man richtig liegt.

01:38:12.660 --> 01:38:14.680
Ich meine, dann muss man einfach nur das häufig genug probieren

01:38:14.680 --> 01:38:15.700
und irgendwann wird es schon funktionieren.

01:38:16.960 --> 01:38:18.100
So viel zählt das doch, oder?

01:38:18.220 --> 01:38:18.520
Ja, ja.

01:38:20.140 --> 01:38:22.660
SAP war das, das Structural Adjustment Program.

01:38:24.940 --> 01:38:25.300
Tja.

01:38:26.020 --> 01:38:26.420
Ja, ja.

01:38:29.300 --> 01:38:30.480
Aber sozusagen,

01:38:30.480 --> 01:38:32.520
also ich weiß nicht, wie arbeitest du

01:38:32.520 --> 01:38:34.260
üblicherweise? Also in Notebooks

01:38:34.260 --> 01:38:35.400
oder eher

01:38:35.400 --> 01:38:38.280
Ich versuche mir

01:38:38.280 --> 01:38:40.040
mittlerweile angewöhnt, so ein bisschen anzugewöhnt

01:38:40.040 --> 01:38:42.000
in Notebooks zu arbeiten, einfach weil es gerade für

01:38:42.000 --> 01:38:43.820
wenn man mit Plots zusammenarbeitet

01:38:43.820 --> 01:38:45.240
Es ist halt irgendwie einfach, ja

01:38:45.240 --> 01:38:47.820
Ganz praktisch. Also ich muss dazu sagen, ich komme

01:38:47.820 --> 01:38:49.820
ursprünglich, ich bin

01:38:49.820 --> 01:38:52.000
habe sehr früh genug Plot

01:38:52.000 --> 01:38:53.100
gelernt und das auch

01:38:53.100 --> 01:38:56.080
was jetzt ein Plotting-Programm

01:38:56.080 --> 01:38:57.460
ist, was nichts mit Python zu tun hat

01:38:57.460 --> 01:39:00.080
weil es eine eigene Programmiersprache ist und

01:39:00.080 --> 01:39:02.040
bin damit

01:39:02.040 --> 01:39:03.880
sehr zufrieden gewesen und beziehungsweise bin auch in der Lage

01:39:03.880 --> 01:39:05.480
gewesen, alles zu machen, ich kannte einfach alle Kniffe

01:39:05.480 --> 01:39:07.600
und hab mich deswegen sehr lange

01:39:07.600 --> 01:39:09.540
geweigert auf

01:39:09.540 --> 01:39:12.060
Python-Plots umzustellen,

01:39:12.140 --> 01:39:13.840
was natürlich gewisse Vorteile hat,

01:39:14.180 --> 01:39:15.860
da man eben nicht erstmal die Programmiersprache

01:39:15.860 --> 01:39:17.880
wechseln muss, um was zu plotten und nicht erstmal

01:39:17.880 --> 01:39:19.660
ein Interface schreiben muss und so weiter und so fort.

01:39:21.180 --> 01:39:21.920
Insofern, ja,

01:39:22.060 --> 01:39:23.280
hink ich da so ein bisschen hinterher,

01:39:24.000 --> 01:39:25.780
denke ich, aber mittlerweile, ja,

01:39:25.960 --> 01:39:27.860
ist mein, also

01:39:27.860 --> 01:39:29.800
ich schreibe die meisten, oder Sachen,

01:39:29.900 --> 01:39:32.060
die ich mehrfach verwende, definitiv ganz normal

01:39:32.060 --> 01:39:32.540
mit

01:39:32.540 --> 01:39:36.040
meiner

01:39:36.040 --> 01:39:37.740
Entwicklungsumgebung, die da Unix heißt.

01:39:38.140 --> 01:39:40.140
Also Text-Editor und Konsole und was auch immer.

01:39:40.260 --> 01:39:41.580
Genau, was für ein Editor bist du?

01:39:43.060 --> 01:39:43.820
Ich nutze

01:39:43.820 --> 01:39:44.580
NeoWim.

01:39:49.000 --> 01:39:49.400
Und

01:39:49.400 --> 01:39:53.640
dann, wenn die Sachen einigermaßen

01:39:53.640 --> 01:39:54.960
stehen und es wirklich nur darum geht,

01:39:56.500 --> 01:39:57.920
entweder schöne Plots zu produzieren

01:39:57.920 --> 01:39:59.780
oder rumzuspielen

01:39:59.780 --> 01:40:01.720
in dem, was man jetzt an Simulationen geschrieben

01:40:01.720 --> 01:40:03.820
hat, dann wechsle

01:40:03.820 --> 01:40:05.520
ich mittlerweile dann auch doch mal ins Notebook.

01:40:08.160 --> 01:40:09.600
Andererseits, also wenn es jetzt wirklich darum geht,

01:40:09.920 --> 01:40:11.880
Software zu schreiben, die andere nutzen sollen,

01:40:12.440 --> 01:40:13.660
findet das immer noch,

01:40:14.060 --> 01:40:15.700
ja, was heißt, findet das nicht im Notebook statt,

01:40:15.860 --> 01:40:17.600
aber dafür ist es, glaube ich, auch nicht gemacht.

01:40:17.880 --> 01:40:21.760
Ja, ja, das ist auch

01:40:21.760 --> 01:40:23.640
etwas, was man jetzt immer zunehmend hört, dass

01:40:23.640 --> 01:40:25.840
Leute das halt benutzen und

01:40:25.840 --> 01:40:27.520
ja, ich finde es eigentlich relativ

01:40:27.520 --> 01:40:29.800
einleuchtend, dass das jetzt sich so

01:40:29.800 --> 01:40:31.660
durchsetzt. Was ich halt noch schade finde,

01:40:31.740 --> 01:40:33.400
ist, dass es irgendwie noch immer keine so richtig

01:40:33.400 --> 01:40:35.100
schöne,

01:40:36.860 --> 01:40:37.700
schön bedienbare

01:40:37.700 --> 01:40:39.720
oder intuitive Plot-Umgebung

01:40:39.720 --> 01:40:41.500
irgendwie überhaupt gibt.

01:40:42.180 --> 01:40:43.660
Also es gibt ja so ein paar,

01:40:43.820 --> 01:40:45.140
die hast du bestimmt schon alle ausprobiert.

01:40:45.140 --> 01:40:46.340
Du hast ja selber schon gesagt,

01:40:46.400 --> 01:40:49.260
Alter ihr oder sowas. Mal reingeschaut

01:40:49.260 --> 01:40:50.940
für Python. Ich glaube, das ist für

01:40:50.940 --> 01:40:52.960
Scientific-Sachen gar nicht so verkehrt. Gerade für

01:40:52.960 --> 01:40:54.260
so statistische Plotting nochmal.

01:40:55.080 --> 01:40:56.320
Habe ich aber selber auch noch nicht so viel benutzt.

01:40:56.760 --> 01:40:58.180
Vielleicht muss ich da auch nochmal reingucken.

01:40:58.920 --> 01:40:59.720
Mich stört halt noch

01:40:59.720 --> 01:41:01.320
dieses, ich glaube, es wurde mal

01:41:01.320 --> 01:41:02.980
Plotting by Side-Effect genannt von

01:41:02.980 --> 01:41:03.800
Mudplotlib.

01:41:05.880 --> 01:41:06.860
Ja, das stimmt.

01:41:07.760 --> 01:41:09.160
Also wahrscheinlich, genau. Vielleicht gibt es

01:41:09.160 --> 01:41:11.120
mittlerweile, aber ich meine,

01:41:11.300 --> 01:41:12.940
ich habe noch nichts davon gehört, dass irgendwas

01:41:12.940 --> 01:41:14.380
eben die ganze,

01:41:15.600 --> 01:41:17.320
das ganze Repertoire mitbringt, was man

01:41:17.320 --> 01:41:18.600
eben auch braucht. Ich möchte halt,

01:41:19.280 --> 01:41:21.140
das Hauptproblem ist, wenn ich jetzt irgendeine

01:41:21.140 --> 01:41:23.520
Plotting-Sprache lerne oder irgendein Plotting-Interface

01:41:23.520 --> 01:41:25.100
lerne oder was auch immer, möchte ich, dass es

01:41:25.100 --> 01:41:26.840
wirklich alles kann.

01:41:27.700 --> 01:41:29.560
Irgendwann werde ich dazu kommen, dass ich das brauche,

01:41:29.640 --> 01:41:31.560
dass ich dieses Detail einstellen muss und wenn ich das

01:41:31.560 --> 01:41:33.820
nicht kann. Plotly Express, das ist, glaube ich, noch ganz nett.

01:41:35.100 --> 01:41:35.660
Und das

01:41:35.660 --> 01:41:37.540
heißt, das ist so ein bisschen auch

01:41:37.540 --> 01:41:39.840
ein Problem, dass natürlich normalerweise

01:41:39.840 --> 01:41:41.540
kann man irgendwie ein kleines Tool schreiben

01:41:41.540 --> 01:41:43.480
und dann wird das immer größer und so weiter, aber

01:41:43.480 --> 01:41:45.440
gerade bei Plot-Sachen,

01:41:45.520 --> 01:41:47.440
man muss eigentlich schon mit etwas anfangen, was fast

01:41:47.440 --> 01:41:49.620
alles kann, bevor man irgendwie eine Chance

01:41:49.620 --> 01:41:51.680
hat, was anderes sich durchzusetzen.

01:41:53.780 --> 01:41:55.440
Ja, es gibt da, ich weiß nicht,

01:41:55.820 --> 01:41:57.680
inwiefern Gnuplot das auch

01:41:57.680 --> 01:41:59.780
übernommen hat, es gab ja dieses sehr einflussreiche

01:41:59.780 --> 01:42:01.580
Wo, obwohl das ist glaube ich gar nicht so

01:42:01.580 --> 01:42:03.720
furchtbar alt, Grammar of

01:42:03.720 --> 01:42:04.600
Graphics irgendwie

01:42:04.600 --> 01:42:07.780
und unter R

01:42:07.780 --> 01:42:09.740
hat man ja mit ggplot2 irgendwie da so eine

01:42:09.740 --> 01:42:10.780
Umsetzung von im Grunde

01:42:10.780 --> 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.520
irgendwie

01:42:17.520 --> 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.280
wirklich genauso gut ist, weiß ich auch nicht und

01:42:25.280 --> 01:42:27.580
es ist immer noch aktiv irgendwie unter Entwicklung

01:42:27.580 --> 01:42:30.400
furchtbar schlecht ist, Matplotlib auch nicht.

01:42:30.940 --> 01:42:32.000
Nee, nee, es ist

01:42:32.000 --> 01:42:34.400
irgendwie, ich möchte jetzt

01:42:34.400 --> 01:42:35.540
einfach mal eine Parabel plotten.

01:42:36.860 --> 01:42:37.680
Und jetzt,

01:42:38.220 --> 01:42:40.420
sowas wie Gnuplot, was eine

01:42:40.420 --> 01:42:42.320
rein plot-orientierte Programmiersprache ist,

01:42:42.320 --> 01:42:43.240
ist das eine Zeile.

01:42:44.320 --> 01:42:46.020
Und ja, Matplot muss ich,

01:42:46.240 --> 01:42:47.720
ich weiß gar nicht, wie ich das

01:42:47.720 --> 01:42:49.160
am schnellsten hinbekommen würde.

01:42:50.100 --> 01:42:50.460
Dotplot?

01:42:52.160 --> 01:42:54.020
Ja, den müssen wir schon ein bisschen rumbasteln, glaube ich, aber

01:42:54.020 --> 01:42:55.700
wenn du es einmal definiert hast,

01:42:55.780 --> 01:42:57.540
Also ich glaube wahrscheinlich, wenn mir irgendjemand

01:42:57.540 --> 01:42:59.460
einfach für fünf Jahre Geld geben sollte oder so,

01:42:59.540 --> 01:43:00.780
würde ich mich daran setzen, dass

01:43:00.780 --> 01:43:02.760
ein komplett neuer Nightmare Day sieht.

01:43:04.460 --> 01:43:04.860
Cool.

01:43:06.620 --> 01:43:07.360
Ja, wir haben noch

01:43:07.360 --> 01:43:08.740
den Lieblingspick natürlich,

01:43:08.960 --> 01:43:10.720
der Pick der Folge oder sowas.

01:43:11.860 --> 01:43:13.160
Was wäre denn deine Wahl,

01:43:13.240 --> 01:43:15.060
dein bester Pick für Alt-Weißen-Modul?

01:43:18.060 --> 01:43:19.360
Ich glaube, eigene Module sind wahrscheinlich

01:43:19.360 --> 01:43:19.900
ausgeschlossen.

01:43:21.000 --> 01:43:23.260
Wenn du so dein eigenes Modul da

01:43:23.260 --> 01:43:24.100
ein bisschen umschmachst.

01:43:24.980 --> 01:43:26.560
Also. Jetzt musst du das aber kurz

01:43:26.560 --> 01:43:27.760
erzählen, was ist denn dein eigenes Modul?

01:43:27.920 --> 01:43:28.980
Nee, nee, nee, mach ich nicht.

01:43:29.700 --> 01:43:31.980
Ich hab ja auch schon die ganze Zeit drüber geredet.

01:43:32.320 --> 01:43:36.540
ja, ich glaube also, das Lieblingsmodul

01:43:36.540 --> 01:43:38.180
ist wahrscheinlich immer noch NumPy, weil es einfach

01:43:38.180 --> 01:43:39.980
enorm

01:43:39.980 --> 01:43:42.500
mächtig die Sachen

01:43:42.500 --> 01:43:43.200
bringt, die

01:43:43.200 --> 01:43:45.580
gerade, ja,

01:43:46.260 --> 01:43:48.480
in Rechen von großen

01:43:48.480 --> 01:43:50.420
Datenmengen und auch ansatzweise

01:43:50.420 --> 01:43:52.420
also nicht mal sehr großen Datenmengen,

01:43:52.520 --> 01:43:54.380
aber auch kleineren Datenmengen

01:43:54.380 --> 01:43:55.640
Dinge hinbringt, die

01:43:55.640 --> 01:43:57.700
Standard Python nicht hat und

01:43:57.700 --> 01:43:59.740
das, ja, ich kann mir

01:43:59.740 --> 01:44:01.640
glaube ich kaum, es gibt

01:44:01.640 --> 01:44:03.420
sehr wenige Fälle, wo ich es nicht importiere.

01:44:05.200 --> 01:44:05.760
Und was

01:44:05.760 --> 01:44:06.540
wäre denn Pick der Woche?

01:44:07.820 --> 01:44:09.360
Ist das auch ein Pie, oder?

01:44:09.580 --> 01:44:11.760
Was ist der Pick der Woche? Ich weiß es auch nicht.

01:44:12.000 --> 01:44:13.680
Dann müssen wir doch eigentlich eine wöchentliche Sendung machen.

01:44:13.840 --> 01:44:14.560
Ja, ja, fast.

01:44:14.980 --> 01:44:17.420
Ja, aber ich würde mir so eine kleine Kategorie einführen.

01:44:17.520 --> 01:44:18.780
Pick der Folge oder sowas.

01:44:20.520 --> 01:44:21.580
Also was

01:44:21.580 --> 01:44:23.540
macht es für mich zum Pick der Folge? Das ist das, was ich diese

01:44:23.540 --> 01:44:25.460
Woche genutzt habe oder was ich diese Woche neu gelernt habe.

01:44:25.460 --> 01:44:26.980
Ja, oder vielleicht irgendwas Aktuelles. Das wäre

01:44:26.980 --> 01:44:29.040
was, was in letzter Zeit als cool aufgefallen ist.

01:44:29.320 --> 01:44:31.080
Das wusste ich gar nicht. Aktuell kann doch was ganz Altes sein.

01:44:31.220 --> 01:44:32.960
Einfach was nochmal so. Irgendwas Neues.

01:44:33.200 --> 01:44:34.160
Was soll es der Standard-Tipp sein?

01:44:37.160 --> 01:44:37.980
Ihr stellt Fragen.

01:44:39.560 --> 01:44:40.720
Deshalb kann ich mir doch schon mal überlegen.

01:44:41.340 --> 01:44:42.800
Ja, ich habe nämlich auch noch nicht dran gedacht.

01:44:43.740 --> 01:44:45.180
Also, was ich neulich zum ersten Mal

01:44:45.180 --> 01:44:46.540
verwendet habe, was ich

01:44:46.540 --> 01:44:49.320
und was ich dann wieder nicht

01:44:49.320 --> 01:44:51.360
verwendet habe, weil es mich dann doch nicht glücklich gemacht hat,

01:44:51.400 --> 01:44:53.240
war Name-Touple. Ich habe aber gehört, es gibt

01:44:53.240 --> 01:44:54.200
jetzt Dataclasses

01:44:54.200 --> 01:44:56.860
und muss mich dazu unbedingt einlesen.

01:44:57.340 --> 01:44:59.240
Ja. Kann wenig dazu sagen,

01:44:59.560 --> 01:45:01.260
aber es ist

01:45:01.260 --> 01:45:02.440
wahrscheinlich genau das, was ich

01:45:02.440 --> 01:45:03.600
Ja, ich glaube schon.

01:45:04.700 --> 01:45:07.240
Ja, beziehungsweise es gibt halt für ältere Python-Versionen

01:45:07.240 --> 01:45:09.080
auch ein Modul,

01:45:09.160 --> 01:45:11.120
das man einfach so installieren kann. Also es ist jetzt natürlich in der

01:45:11.120 --> 01:45:13.180
Standard-Bibliothek mit drin oder beziehungsweise

01:45:13.180 --> 01:45:14.400
in Python selber, aber

01:45:14.400 --> 01:45:17.100
das

01:45:17.100 --> 01:45:18.680
Ding heißt Atris oder so

01:45:18.680 --> 01:45:21.140
und das kann sogar noch deutlich

01:45:21.140 --> 01:45:22.840
mehr als die

01:45:22.840 --> 01:45:24.760
Dataclasses. Aber ich glaube auch, dass

01:45:24.760 --> 01:45:26.480
das Dataclasses, da gab es auch die letzten paar

01:45:26.480 --> 01:45:28.940
DDF-Treffen

01:45:28.940 --> 01:45:30.840
und Talks zu, wo halt auch von der

01:45:30.840 --> 01:45:32.500
Geschwindigkeit wurde gesagt, das ist halt

01:45:32.500 --> 01:45:34.380
deutlich besser als Name-Toppel und so.

01:45:35.920 --> 01:45:36.780
Im Grunde gibt es

01:45:36.780 --> 01:45:38.600
keinen wirklich tollen Grund mehr,

01:45:38.880 --> 01:45:40.840
außer man braucht jetzt die Indizierbarkeit oder so

01:45:40.840 --> 01:45:42.300
noch Name-Toppel zu verwenden,

01:45:42.840 --> 01:45:44.800
weil man das mit Dataclasses oder Atos halt

01:45:44.800 --> 01:45:45.620
deutlich besser hinkriegt.

01:45:47.220 --> 01:45:47.380
Ja,

01:45:48.720 --> 01:45:50.240
das ist auf jeden Fall eine interessante Geschichte.

01:45:51.140 --> 01:45:52.400
Und dein Weg auch?

01:45:52.640 --> 01:45:53.860
Ja, ich würde tatsächlich,

01:45:54.400 --> 01:45:56.320
also was ich in letzter Zeit noch mal

01:45:56.320 --> 01:45:57.180
angeguckt habe aus

01:45:57.180 --> 01:46:00.280
unterschiedlichen Gründen und dann doch wieder

01:46:00.280 --> 01:46:02.200
gar nicht so schlecht fand, ist

01:46:02.200 --> 01:46:02.980
Django Guardian.

01:46:04.880 --> 01:46:06.320
Ist halt weg mit Entwicklung, was völlig

01:46:06.320 --> 01:46:06.740
anderes.

01:46:09.400 --> 01:46:10.640
Ich kann nicht mitreden.

01:46:11.700 --> 01:46:12.680
Also da geht's

01:46:12.680 --> 01:46:14.560
einfach darum, dass man halt häufig das Problem

01:46:14.560 --> 01:46:16.280
hat, dass man Berechtigungen

01:46:16.280 --> 01:46:18.140
verwalten möchte auf

01:46:20.540 --> 01:46:21.020
bestimmte

01:46:21.020 --> 01:46:22.420
Zeilen in der Datenbank und

01:46:22.420 --> 01:46:25.040
auf Tabellenebene gibt es das in Django schon

01:46:25.040 --> 01:46:27.260
eingebaut, dass man da halt Berechtigungen vergeben kann

01:46:27.260 --> 01:46:29.180
und dann halt auch diese Berechtigung

01:46:29.180 --> 01:46:31.100
benutzen kann, um irgendwie Zugriff darauf zu

01:46:31.100 --> 01:46:31.600
regeln, aber

01:46:31.600 --> 01:46:35.280
für Objekte,

01:46:36.060 --> 01:46:37.280
Einzelobjekte oder Zeilen

01:46:37.280 --> 01:46:39.140
geht das halt nicht und Django

01:46:39.140 --> 01:46:41.140
Guardian erweitert halt das Django Permissions

01:46:41.140 --> 01:46:43.040
Modell darum, dass das halt dann doch geht,

01:46:43.540 --> 01:46:44.840
indem da zwei zusätzliche Tabellen

01:46:44.840 --> 01:46:46.980
eingeführt werden, das, ja, der rammt sich dann

01:46:46.980 --> 01:46:48.860
relativ wüst aus, wenn man das macht, aber es ist

01:46:48.860 --> 01:46:51.920
also man denkt zuerst, das kann nicht gehen oder das ist halt

01:46:51.920 --> 01:46:54.040
furchtbar, aber nee, es funktioniert tatsächlich

01:46:54.040 --> 01:46:55.880
und zwar sieht es ziemlich gut aus.

01:46:56.360 --> 01:46:57.920
Und ja, genau, also

01:46:57.920 --> 01:46:59.900
wenn man dieses Problem hat, sollte man sich vielleicht

01:46:59.900 --> 01:47:01.940
das mal genauer angucken, weil das sieht

01:47:01.940 --> 01:47:03.820
doch nach einer halbwegs vernünftigen Lösung aus.

01:47:04.300 --> 01:47:05.660
Cool, kann man so permission in dem Webtoon

01:47:05.660 --> 01:47:07.720
lösen, dass irgendwie jeder darauf

01:47:07.720 --> 01:47:09.660
zugreifen kann, was er will. Ja, ich picke

01:47:09.660 --> 01:47:12.000
Bandit, das habe ich irgendwie zwischendurch

01:47:12.000 --> 01:47:13.700
entdeckt, das ist so ein Anfänger, glaube ich,

01:47:13.720 --> 01:47:15.900
Security-Hinweis, was so alles

01:47:15.900 --> 01:47:17.880
sicherheitsrelevant sein könnte in dem Code,

01:47:17.960 --> 01:47:18.940
wenn man so einen Python geschrieben hat.

01:47:19.600 --> 01:47:21.560
Da habe ich noch eine Sache, die mich überhaupt nicht interessiert.

01:47:21.820 --> 01:47:23.840
Nicht ganz viel

01:47:23.840 --> 01:47:25.800
zu machen, das ist auch nicht so, glaube ich,

01:47:25.820 --> 01:47:27.780
so ganz tiefgehend, aber so für die ersten Sachen, dass man so ein bisschen

01:47:27.780 --> 01:47:30.060
was versteht, was man da tut, fand ich das ganz spannend.

01:47:31.080 --> 01:47:31.860
Erst mal so reinzugucken.

01:47:34.160 --> 01:47:35.060
Ja, cool.

01:47:35.860 --> 01:47:37.240
Ich weiß nicht, haben wir noch irgendwas?

01:47:37.780 --> 01:47:39.060
Ja, das Wissenschaftler muss ja auch nicht.

01:47:39.340 --> 01:47:40.520
Das ist ja ein bisschen einem geschlossen.

01:47:40.880 --> 01:47:41.880
Ich kann noch was erzählen.

01:47:41.880 --> 01:47:42.580
Ich kann auch noch was erzählen.

01:47:43.500 --> 01:47:45.280
Wahrscheinlich, wenn ihr mich lasst,

01:47:45.660 --> 01:47:47.100
rede ich einfach fünf Stunden lang.

01:47:47.260 --> 01:47:50.380
Ja, richtig schlecht.

01:47:50.500 --> 01:47:52.400
Aber vielleicht noch eine lustige Sache zum Thema,

01:47:52.480 --> 01:47:54.400
was kann man alles, ich glaube, ich habe mein Mikrofon

01:47:54.400 --> 01:47:56.160
vorgestellt, sorry. Kann das sein, dass ich

01:47:56.160 --> 01:47:58.560
irgendwie lauter bin oder so?

01:47:58.720 --> 01:47:59.040
Okay, gut.

01:48:02.340 --> 01:48:04.400
Genau, was ich auch noch gemacht

01:48:04.400 --> 01:48:05.300
habe, was vielleicht so,

01:48:05.980 --> 01:48:08.260
weil es jetzt furchtbar schwer zu erklären sein wird, ist,

01:48:08.960 --> 01:48:10.060
ich habe mich ja auch mit der Frage

01:48:10.060 --> 01:48:12.360
beschäftigt, also wir bauen Ökosystemmodelle,

01:48:12.360 --> 01:48:14.120
habe ich ja schon geredet, und

01:48:14.120 --> 01:48:15.620
irgendwann bin ich auf die Frage gekommen,

01:48:15.860 --> 01:48:18.080
wie macht man das eigentlich

01:48:18.080 --> 01:48:20.040
richtig, beziehungsweise

01:48:20.040 --> 01:48:22.340
wir sind auf ein Problem

01:48:22.340 --> 01:48:24.360
gestoßen mit einem Modell,

01:48:24.480 --> 01:48:26.620
dass wenn ich jetzt, ich habe meine Spezies,

01:48:26.840 --> 01:48:28.120
die da irgendwas machen, also von

01:48:28.120 --> 01:48:29.880
Tieren oder Bakterien oder was auch immer

01:48:29.880 --> 01:48:32.220
und es ist keines passiert,

01:48:32.380 --> 01:48:34.200
also nehmen wir mal an, wir haben Elefanten und Giraffen

01:48:34.200 --> 01:48:36.000
und was auch immer, was da einfach hervorzustellen ist

01:48:36.000 --> 01:48:37.260
und

01:48:37.260 --> 01:48:38.860
jetzt

01:48:38.860 --> 01:48:42.180
mein Modell sagt immer, eine Spezies

01:48:42.180 --> 01:48:44.120
ist eine Variable, also

01:48:44.120 --> 01:48:45.520
die Menge an

01:48:45.860 --> 01:48:48.060
Individuen einer Spezies.

01:48:50.180 --> 01:48:50.740
Und darauf

01:48:50.740 --> 01:48:52.300
baue ich ein ganzes Modell auf und

01:48:52.300 --> 01:48:54.080
einfach, weil ich diese

01:48:54.080 --> 01:48:56.160
Vereinfachung, die ich mache, dass ich sage,

01:48:56.280 --> 01:48:58.340
alle Elefanten sind gleich,

01:48:58.420 --> 01:48:59.240
alle Giraffen sind gleich.

01:49:00.680 --> 01:49:02.320
Und ja,

01:49:02.520 --> 01:49:04.680
eine Sache, die wir dann festgestellt haben,

01:49:04.720 --> 01:49:06.260
ist, dass gewisse Modelle die Eigenschaften haben,

01:49:06.340 --> 01:49:08.540
dass wenn ich jetzt irgendwie aus Versehen

01:49:08.540 --> 01:49:10.460
es nicht hinkriege, alle Elefanten korrekt

01:49:10.460 --> 01:49:11.760
in einer Spezies zuzuordnen,

01:49:12.560 --> 01:49:14.540
angenommen, die Hälfte davon sind blau und rot

01:49:14.540 --> 01:49:15.900
angemalt. Nashörner.

01:49:16.920 --> 01:49:18.600
Ja, nee, also Nashörner auch,

01:49:18.700 --> 01:49:20.580
aber eigentlich sind es wirklich alles Elefanten. Sie haben genau die

01:49:20.580 --> 01:49:22.680
gleichen Eigenschaften, es sind nur die Hälfte von denen sind halt rot.

01:49:23.120 --> 01:49:24.500
Oder rosa. Nehmen wir rosa Elefanten.

01:49:24.580 --> 01:49:25.780
Ist immer gut, über rosa Elefanten zu reden.

01:49:28.540 --> 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.780 --> 01:49:34.660
wenn wir das machen. Also wenn wir irgendwie

01:49:34.660 --> 01:49:36.460
eine Spezies nehmen und die aufteilen

01:49:36.460 --> 01:49:37.400
künstlich.

01:49:38.600 --> 01:49:40.520
Was nicht gut ist, denn ich möchte

01:49:40.520 --> 01:49:41.960
natürlich, dass ein Modell, wenn ich

01:49:41.960 --> 01:49:44.300
dieselbe Situation zweimal beschreibe, da soll er auch

01:49:44.300 --> 01:49:45.580
tun, ist dasselbe, rauskommen.

01:49:47.520 --> 01:49:47.880
Und

01:49:47.880 --> 01:49:50.020
okay, was hat das jetzt mit Python zu tun?

01:49:51.020 --> 01:49:52.540
Ich bin dann irgendwann hingegangen

01:49:52.540 --> 01:49:54.340
und habe, gut, wir haben festgestellt,

01:49:54.400 --> 01:49:56.240
wir haben dieses Problem, jetzt mal verstehen, wann taucht dieses Problem

01:49:56.240 --> 01:49:57.940
auf? Und dann habe ich mit

01:49:57.940 --> 01:50:00.220
Python und SymPy automatisierte Tests

01:50:00.220 --> 01:50:02.240
geschrieben für Modelle.

01:50:03.780 --> 01:50:04.260
Das heißt,

01:50:04.320 --> 01:50:06.080
ich konnte ihm einfach ein Modell geben, hatte einige

01:50:06.080 --> 01:50:08.100
Rechnungen gemacht, hatte dann eben die Hälfte der Elefanten

01:50:08.100 --> 01:50:10.280
blau 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.420
und das ist ein schlechtes Modell.

01:50:14.300 --> 01:50:16.260
Das ist auch eine etwas

01:50:16.260 --> 01:50:18.060
exotischere Sache, die ich dann mit Python

01:50:18.060 --> 01:50:20.300
oder mit Genöst

01:50:20.300 --> 01:50:21.980
habe, wo man auch sowas wie Sympa

01:50:21.980 --> 01:50:24.160
eben benutzen kann, dass man solche Rechnungen

01:50:24.160 --> 01:50:25.640
automatisieren kann, die man sonst

01:50:25.640 --> 01:50:27.980
sonst würde ich wahrscheinlich heute noch da sitzen

01:50:27.980 --> 01:50:29.980
und das Ganze auf dem Papier durchrechnen.

01:50:32.220 --> 01:50:33.580
Dann stapeln sich dann die Blöcke irgendwann.

01:50:34.320 --> 01:50:34.740
Ja.

01:50:36.600 --> 01:50:37.960
Und ich habe jetzt

01:50:37.960 --> 01:50:39.700
immer noch trotzdem einen Block nur

01:50:39.700 --> 01:50:41.240
vollgeschrieben mit irgendwelchen Formeln.

01:50:44.300 --> 01:50:50.820
Tja, aber ist denn dann sozusagen rausgekommen, woran das lag?

01:50:50.940 --> 01:50:53.420
Oder ist das irgendwie, das liegt dann am Modell selber wahrscheinlich?

01:50:53.700 --> 01:50:58.000
Ja, also am Ende habe ich eine Regel gefunden für Modelle, die genau das machen.

01:50:58.700 --> 01:51:00.520
Das ist jetzt auch so gerade meine aktuelle Arbeit,

01:51:00.640 --> 01:51:04.060
wo ich noch irgendwie gucken muss, dass ich das veröffentlicht kriege

01:51:04.060 --> 01:51:05.660
oder beziehungsweise, dass die Leute das wertschätzen.

01:51:06.200 --> 01:51:07.800
Und dann am Ende braucht man den Test nicht mehr.

01:51:08.800 --> 01:51:10.320
Eigentlich wäre es natürlich lustig gewesen, wenn man sagt,

01:51:10.400 --> 01:51:12.160
wir finden es nicht heraus, verdammt, scheiße.

01:51:12.460 --> 01:51:14.320
aber hier ist eine Software, die euch diese Frage

01:51:14.320 --> 01:51:15.300
annähernd beantwortet.

01:51:18.220 --> 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.420 --> 01:51:26.160
aber natürlich hat es enorm geholfen,

01:51:26.160 --> 01:51:28.100
irgendwie ein Gefühl dafür zu kriegen, wann das passiert

01:51:28.100 --> 01:51:30.040
und unter welchen Bedingungen

01:51:30.040 --> 01:51:30.880
und warum und

01:51:30.880 --> 01:51:33.980
das erstmal so da ein bisschen rumzuspielen.

01:51:36.160 --> 01:51:37.560
Das war irgendwie

01:51:37.560 --> 01:51:39.840
eine Sache, wo ich dann

01:51:39.840 --> 01:51:42.080
Zympa wirklich gelernt habe, wertzuschätzen.

01:51:42.460 --> 01:51:48.240
Ja, aber würde ich sagen,

01:51:48.320 --> 01:51:49.720
dann sind wir doch schon so quasi durch, ne?

01:51:49.740 --> 01:51:51.680
Ja, ich würde auch sagen, dann sind wir doch mal tatsächlich durch.

01:51:51.740 --> 01:51:52.660
Vielen Dank, dass du da warst, Gerrit.

01:51:54.080 --> 01:51:56.680
Ja, Gerrit, vielen Dank, dass du da warst.

01:51:56.860 --> 01:51:57.840
Ja, vielen Dank.

01:51:57.940 --> 01:51:59.200
Hat mich auch gefreut, hier zu sein.

01:52:00.500 --> 01:52:01.820
Einfach über mich selbst reden,

01:52:01.940 --> 01:52:03.280
zwei Stunden lang, nein, nicht ganz.

01:52:04.780 --> 01:52:05.340
Ja, ja.

01:52:07.040 --> 01:52:07.360
Fast.

01:52:07.840 --> 01:52:10.140
Ja, es scheint auch hier auch eine längere

01:52:10.140 --> 01:52:11.980
Zeit. Und wir haben es tatsächlich geschafft,

01:52:12.080 --> 01:52:13.880
ein bisschen wieder Luft. Der Wind ist gerade aufgekommen.

01:52:14.000 --> 01:52:15.340
Vielleicht konnte ich erinnern, wenn wir es heute aufgenommen haben.

01:52:15.360 --> 01:52:17.640
Ich bin sehr gespannt, wie das mit den, ja, also es ging nicht.

01:52:17.880 --> 01:52:19.380
Wir mussten Ventilatoren aufstellen.

01:52:20.700 --> 01:52:21.980
Nachdem wir in der letzten

01:52:21.980 --> 01:52:23.420
Episode das Audio schon versaut haben.

01:52:23.840 --> 01:52:25.080
Vielleicht können wir noch einen draufsetzen.

01:52:26.520 --> 01:52:27.860
Nicht alle die Verzweiflung treiben

01:52:27.860 --> 01:52:29.460
mit Ventilatoren-Geräusch, aber hoffentlich

01:52:29.460 --> 01:52:32.040
wird das

01:52:32.040 --> 01:52:33.480
irgendwie einer der

01:52:33.480 --> 01:52:35.800
Post-Processing-Algorithmen

01:52:35.800 --> 01:52:37.520
irgendwie magisch beseitigen.

01:52:37.940 --> 01:52:39.520
Ja, wir werden sie sonst beschwert euch bei uns.

01:52:39.960 --> 01:52:41.340
Ja, wisst ihr, ihr könnt immer E-Mails schreiben an

01:52:41.340 --> 01:52:43.360
hallo-at-pison-podcast.de und

01:52:43.360 --> 01:52:45.040
ihr könnt auch gerne kommentieren.

01:52:45.260 --> 01:52:47.360
Auf der Webseite gibt es eine schöne Kommentarfunktion.

01:52:47.880 --> 01:52:49.680
Ihr könnt uns überall abonnieren, wenn ihr gerade lustig

01:52:49.680 --> 01:52:51.380
seid, bleibt uns gewogen, erzählt weiter, was es uns gibt.

01:52:52.340 --> 01:52:53.540
Ja, wo ihr auch immer gerade seid,

01:52:53.620 --> 01:52:55.580
was auch immer die Tageszeit ist, auch Tagesnachtzeit.

01:52:55.600 --> 01:52:56.680
Stopp nicht an Hitzschlag.

01:52:56.680 --> 01:52:58.760
Ja, bisschen warm.

01:52:59.700 --> 01:53:00.400
Ja, wir hören uns.

01:53:00.800 --> 01:53:02.420
Viel Spaß und bis später. Tschüss.
