Transcript: Python in der Wissenschaft

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Ja, hallo liebe Hörerinnen und Hörer, willkommen zum Python-Podcast.

Wir haben die elfte Episode heute und sind heute wieder in Jochens Winter-Sommergarten.

Wir haben gerade Sommer.

Ja, hey Jochen, und wir haben heute wieder einen tollen Gast dabei, das ist der Gerrit.

Heute ist unser Thema Scientific Python.

Ja, vielleicht darf er erst mal hallo, Gerrit, kurz, und dann...

Oder so Python in der Wissenschaft.

Hallo, Python in der Wissenschaft.

Genau, weil Scientific Python ist ja ein Paket und das wollen wir nicht verwechseln.

Wir reden eventuell auch über Scientific Python, aber...

Ja, vielleicht sag doch kurz auch deinen Hörern, wer du bist.

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.

Mikrobeller-Analyst habe ich mir aufgeschrieben.

Das hast du dir aber ausgedacht.

Ja.

Wenn überhaupt, Mikrobiell.

Okay, Mikrobieller-Analytiker.

Ja, also.

Und, ja, nutze dafür Python, um Sachen zu simulieren, um Daten zu analysieren und manchmal auch, um ganz komische Sachen mit symbolischem Rechnen zu machen.

Und du spielst Golf.

Und ich spiele, ja, also zurzeit eigentlich nicht mehr so viel, aber ich habe Golf gespielt und, ja.

Ja, negativ.

Da reden wir mal, also, keine Ahnung, wollen wir direkt darüber, über Golf reden?

Die Code-Golf, ja, kommen wir gleich noch dazu.

Wir machen einmal kurz so ein bisschen News wieder, verpeisen, wie wir das irgendwie so kennen und dann kommen wir irgendwie so zum Topic.

Ja, ja, auf jeden Fall, weil dann mache ich hier schon mal die...

Erste Kapitel-Markt.

Erste Kapitel-Marke, äh, äh, alles klar.

Ähm, ja, was gab es denn so, also irgendwas wie PyOxidizer oder sowas, vorgestern so eine News raus.

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

Und das halt auch, äh, auf unterschiedlichen Plattformen, das heißt auf Unix ganz genauso wie auf, äh, Windows.

Und, ähm, das ganze Ding ist irgendwie so Rust-basiert, also das, äh, packt den Python-Interpreter halt irgendwie in, äh, in, äh, in, in ein Rust-Programm.

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

Ähm, und, ähm, ja, man kann alle möglichen Dinge noch mit dazu, man kann auch Rust-Code mit dazu...

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

Und dann läuft das dann direkt, oder auf Windows oder sowas, ne, für irgendwelche Nutzer, die halt damit nichts zu tun haben wollen, die...

Genau.

...können dann dieses PyOxygen aus und sind dann direkt...

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

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

Also das wäre wie so ein Black Swan, also eine der großen Bedrohungen.

Wie so der Python-Community.

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

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

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

Ja, der will vielleicht gar nicht wissen, was für eine Sprache dahinter steckt, oder was?

Genau, dem interessiert das nicht, ob das Python ist oder nicht.

Ob das ganz funktioniert, machen wir schneller.

Genau, genau, der möchte einfach nur irgendein Problem gelöst haben und gar nicht, äh, ein Problem bekommen, zusätzlich.

Und das ist natürlich, äh, momentan so ein bisschen doof.

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

PyRun.

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

Ja, ist noch ein 90er schon, kann man sagen.

Äh, und...

Und Python 1, was war das?

Und, äh, das ist ziemlich nett, äh, das ganze, äh...

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

Ja, das hört sich jetzt gerade ein bisschen kompliziert an, also...

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

Ah, ja, cool, also, also unsere eigenen Pakete und, und so.

Ja, weil das, äh, weil halt das Binary...

...irgendwie selbst hinten dran irgendwie schon Zip ist oder ich weiß es nicht mehr genau.

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

Ja, und, ähm, ich weiß jetzt nicht, hab hier...

Ja, aber jetzt kriegst du eine nette Alternative, das hört sich ganz nett an, ne?

Genau.

Dieses Hinterlohn-Single-File.

Der, der, genau, der Vorteil bei PyOxidizer ist halt, dass das auf Windows halt auch funktioniert.

Was sind PyRun halt?

Dass jemand von euch von der PyCon 2019, äh, irgendwelche Talks gehört, Talks gesehen, irgendwie was Interessantes noch mitgebracht.

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

Ähm, ja, und...

Den hast du aber dann gesehen quasi tatsächlich, äh...

Ja, ja, ich hab irgendwie aber nur kurz reingeguckt, ich muss das immer noch auf meiner Liste zu Ende schauen, das gibt ja da irgendwie auf YouTube so ein bisschen.

Ja, und ich hab gehört, äh, Pinterest ist jetzt bald Python 3 oder so.

Ach, ich dachte, die werden schon längst irgendwie umgeschaltet.

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

Hab ich auch nicht gesehen, aber ich...

Aber bei Pinterest, dass die auf Python 3 umsteigen, ist natürlich jetzt irgendwie so ein bisschen...

So wirklich angeben kann man damit jetzt...

Ja, ne, oder?

Ja, ja, klar.

Ich bin da für.

Äh, ja, irgendwas...

Wie lädt es an, die so umsteigen?

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

3 veröffentlicht, das fand ich, äh, sehr lustig.

Ah.

Ja, und auch diese Woche.

Ja.

Ne, aber ansonsten hab ich auch tatsächlich im Grunde nix wirklich, was, äh, irgendwie an tollen Dingen passiert wäre.

Hm.

Ja.

Ja, dann...

Aber immerhin ist das schon so ein bisschen was.

Ja, so ein kleines bisschen.

Ja.

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

Oder wollen wir erst mal was mit dem Golf spielen?

Also spielst du auch richtig Golf oder nur Code-Golf?

Ne, ich spiele, wenn überhaupt, Code-Golf.

Ja, okay, okay.

Ähm, zur Zeit auch ehrlich gesagt nicht mehr so viel.

Irgendwann, wenn man das so ein paar Jahre gemacht hat, hat man alles gesehen, was es zu sehen...

Jetzt erst mal für, für, für die, äh, ungewöhnliche Hörer, was ist das denn überhaupt, Code-Golf?

Also Code-Golf ist die Aufgabe, dass man versucht, irgendeine Programmieraufgabe, zum Beispiel Programmiere die Fakultät oder was auch immer,

mit möglichst wenig Zeichen zu lösen in einer gegebenen Programmiersprache in der Regel.

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

Und ja, ohne Rückschlüsse.

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

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

Irgendwas funktionierte da und dann irgendwie, ja, okay, warum machen wir das jetzt? Keine Ahnung, ja.

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

drüber nachdenkt, gewisse Probleme mit ganz neuen Algorithmen zu lösen, zum Beispiel rekursive Algorithmen statt irgendwelchen Schleifen oder, oder, oder.

Und, ähm, ja, das macht einfach sehr viel Spaß, wenn man das ab und zu macht und man lernt auch viel.

Da gibt es auch so Wettbewerbe oder sowas, ne? Also richtig mit 18 Löchern oder wie? Wie spielt man das?

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

Hast du da eine Schonnot für uns?

Für, für eine Webseite?

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

Ja.

Ähm, es gibt andere Seiten, aber da muss ich ehrlich gesagt sagen, weiß ich gar nicht so viel drüber.

Okay.

Und, jetzt schau doch mal mit Stack-Exchange vorbei für CodeGolfen.

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

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

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

Das ist in der Regel aber kürzer, wenn man das Ganze in komplexen Zahlen löst.

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

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

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

Ähm, ähm, ähm, ähm, ähm, ähm, ähm.

Ähm, ähm, ähm, ähm, ähm, ähm.

Ähm, ähm, ähm, ähm, ähm.

Ähm, ähm, ähm, ähm.

Ja, ist auch wirklich geil, es gibt diesen klassischen Sortieralgorithmus, ich, äh, nehme meine Daten, ich mische sie, ich gucke, ob sie sortiert sind, wenn nicht, mische ich sie nochmal.

Ja, ja, ja.

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

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

Ja, war an der gewissen Wahrscheinlichkeit.

Ja, war an der gewissen Wahrscheinlichkeit, ist das dann sofort fertig.

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

Ja, muss man natürlich, wartet man halt.

So, das ist auch sehr, sehr cool.

Also, mein Lieblings-Algorithmus ist der LSD Radix.

Das ist so schön, der hört sich auch besonders toll an, wenn man den so visualisiert.

Äh, auch defiziliert, wie nennt man das?

Wenn man so einen Algorithmus, es gibt ja so...

Vertont.

Ja, ja, ja, wahrscheinlich.

Vertont.

Gut.

Ja, wir vertonen für euch ja wieder heute eine neue Folge.

Ja, jetzt hab ich keine Ahnung, was LSD Radix macht, aber gut.

Ähm, der baut so Buckets auf.

Und sortiert dann die ganzen Sachen immer in so Buckets rein und gibt die dann immer wieder auseinander und dann...

Ah, okay.

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

Eine Sache, die mir jetzt noch gerade eingefallen ist, wo wir sagen, wir warten auf die Eingabe und wie lange es dauert.

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

Äh, wir versuchen jetzt mal eine Programmieraufgabe möglichst schlecht zu lösen, also nicht schnell oder kurz oder was auch immer, sondern einfach schlecht.

Und dann haben wir die Aufgabe hinzufügen.

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

Und wenn sich das Bit ändert, durch Höhenstrahlung oder was auch immer, dann nehmen wir die Zeit und dann haben wir unsere Zufallszahl.

Das erinnert mich so ein bisschen an deinen Wart-Sortier-Algorithmus.

Ja, das klingt gut.

In einer besonders chaotischen Umgebung könnte das relativ schnell passieren.

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

Ja, also die machen auch andere Sachen.

So Quines zum Beispiel oder, äh, also Programme, die sich selbst ausgeben.

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

Aber verwenden im ganzen Code keine einzige Zahl.

Dann muss man erstmal die Zahlen irgendwie in römische Zahlen darstellen, also so i, i, i, i, i, ja, ist dann halt fünf.

Und dann kann man da auf Basis, basiert natürlich multiplizieren und am Ende kommt dann halt wieder eine Zahl raus.

Man muss halt irgendwie auch gucken, wie sieht man das mit der Darstellung macht, dass man das dann regelkonform macht, aber, ja.

I, i, i, i, i, i ist fünf, i, i, i, i.

Ja, römische Ziffern, Rechner mit römischen Ziffern, sehr, sehr böse.

Ja, ja, x, x, x.

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

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

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

Ja, genau.

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

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

Ja, ja.

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

Warum ist das so nett oder doch nicht, oder?

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

Also quantitative Analyse und keine qualitative Analyse, würdest du jetzt sagen, ist die wahre Kunst der Wissenschaft, oder?

Ja, also ich glaube, gibt es so richtig qualitative, rein qualitative Arbeit.

Gibt es zumindest in meinem Bereich kaum.

Ich kenne noch die alte Philosophische Fakultät an meiner Universität, die hat sich durchaus damit hervorgetan, mit qualitativ.

Ja, ja, gut, aber das ist ja auch nicht mein Bereich.

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

Okay, also ein ZDF, das ist Scientific Python, also Zahlen, Daten, Fakten.

Ja.

Ja, okay.

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

Also viele Sachen, die ich gemacht habe, würde ich als Experimentalmathematik bezeichnen.

Also ich stelle experimentell mathematische Aussagen.

Ja.

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

Zum anderen natürlich manchmal geht es auch um Geschwindigkeit und da sind viele, viele Aufgaben, die man hart macht.

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 schweißen.

Ja, ja, ich wollte gerade noch auf die Experimentalmathematik, also ich weiß nicht genau, ob ich das jetzt irgendwie falsch assoziiere.

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

Also das kenne ich jedenfalls, da habe ich mal gehört, dass Leute so experimentieren.

Oh, da war ein Ding.

Ist wahrscheinlich auch nicht unzutreffend, weil der Begriff Experimentalmathematik ist nicht Kopiergeschütze oder Trademark von irgendwem, der sagt, das ist jetzt genau das.

Die Sachen, die ich mache, sind da schon gemacht habe oder auch noch mache, sind auch schon anders.

Da geht es dann eben um die Frage, wie verhält sich jetzt dieses Modell, wenn ich das lange laufen lasse.

Und dann hat man eben, also so klassische Beispiele für die Modelle, die meisten Modelle, Aufstellungen, kann man als Gleichung formulieren, das ist eine Differenzierung.

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

Das wäre die Lösung für meine Gleichung.

Und diese Lösung kann man in aller Regel nicht mit Stift und Papier finden, so wie was Leute normalerweise tun.

Man kann es schon machen, aber das dauert dann ein bisschen.

Also auch das ist dann nur eine Annäherung.

Auch die richtige Intuition für die Bewegung der Funktion.

Nee, im Zeitfall geht es wirklich nicht.

Wir haben zumindest seit 100 Jahren keinen Weg gefunden, das zu machen.

Man kann eben höchstens in Nährungsweise Lösungen machen und auch das will man nicht mit Stift und Papier machen.

Das ist dann sehr automatisiert.

Das macht man dann mit dem Computer und natürlich dann wieder mit Programmierung.

Und ja, dann kann man eben herausfinden, okay, wenn ich diese Sachen habe, dann verhält sich dieses System so und so.

Ich kriege so eine Lösung raus, das ist ein klassisches Beispiel, das ist chaotisch.

Und das ist meine Aussage.

Und die habe ich dann experimentell gefunden, in gewissem Maße, über Simulationen.

Und diese Aussage ist auch nicht so in Stein gemeißelt, wie es normale mathematische Aussagen sind,

sondern das kann immer noch schiefgegangen sein, weil ich gerade ganz komisch mein Programm laufen lasse,

habe mit genau den falschen Strafbedingungen oder was auch immer und mein Algorithmus.

Ja, weil man in irgendwelche numerischen Geschichteninstabilitäten gelaufen ist.

Ja, also das kann man sogar noch lösen, aber weil man einfach ganz, ganz viel Pech hatte zum Beispiel.

Natürlich, also.

Die meisten Aussagen, wenn man sagt, das ist jetzt Chaos, als Beispiel, sind schon sehr, sehr hieb- und stichfest.

Aber es ist kein formeller Beweis, wie Mathematiker ihn führen, in den meisten Fällen.

Natürlich gibt es dann auch die Leute, die sich hingesetzt haben und das mal für einen Fall wirklich bewiesen haben.

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.

Also diesen ganzen Absatzionslayer noch nicht so ganz begriffen.

Also man hat jetzt ganz komplexe, große, komplizierte Systeme.

Und wenn ich jetzt irgendwie das vorstelle, du sagst irgendwas von Chaos, du sagst sowas über Zeitstrahlen und Funktionen, die da irgendwie durchläuft.

Da denke ich irgendwie immer an sowas wie eine Häufigkeitsverteilung oder sowas, was da irgendwie rauskommt.

Was hat das, also wie kann ich das so real beschreiben, wenn ich jetzt irgendwie Mikrobialen...

Machen wir mal ein Beispiel.

Also ich habe, genau, ich habe Bakterien zum Beispiel.

Also ja, ich mache mal ein bakterielles Ökosystem.

Also ich habe meinen Topf, da schmeiße ich, da habe ich Nährstoffe drin.

Das heißt, Bakterien können da leben.

Genau, da schmeiße ich jetzt, was weiß ich was, fünf Escherichia coli oder zehn Pneumokokken oder was auch immer mir einfällt rein.

Irgendwelches ungesunde Zeug, genau, ja.

Haben wir aber übrigens überall nebenbei.

Also wir tragen mehrere Kilo Bakterien mit uns im Darm rum.

Und noch dreimal Karies.

Ich weiß gar nicht, ob das ein Bakterium ist, was ich gesagt habe.

Oder was das ist.

Karies.

Karies.

Ein Pulbaktus oder wie?

Ich habe keine Ahnung.

Das sah einmal bei einem Zahnarzt früher so aus.

Dann gab es dann diese Zahnarzt-Schiff.

Dann liefen dann irgendwelche Dinge.

Das sah so aus, wie ich mir Bakterien vorstelle.

Genau, ja.

Also die laufen dann auf jeden Fall da rum.

Und jetzt kann ich natürlich das einfach hinstellen und warten und gucken.

Aber das kann ich nur begrenzt häufig machen, da das Zeit kostet.

Und ich kann auch, habe dann Messfehler und Rauschen und so weiter und so fort.

Aber ich möchte das eventuell einfach mal allgemein verstehen.

Wie entwickeln sich solche Bakterienpopulationen?

Das hört sich jetzt doof an.

Also du hast das 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 dem Balkon in die Hitze

und guckt, was da so passiert.

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 einen Backpakt Pakterien rein.

Das rühren wir dauerhaft um.

Und dann gucken wir mal, was passiert.

Also das ist schon sehr, sehr häufig.

Und danach macht ihr irgendeine Analyse.

Ihr klebt das Ganze auf Papier, kommt euch die Farbe an.

Oder zählt irgendwas mit irgendwelchen Sensoren.

Und packt das in eine Datenbank.

Und daraus schmeißt ihr dann einen Algorithmus.

Nein, das wäre das, was wir eigentlich modellieren wollen.

Also das ist unser reales System.

Da wissen wir, was passiert.

Da können wir das messen.

Das Problem ist, das hat natürlich diverse Nachteile.

Wie gesagt, wir können nicht alles messen.

Das ist nur ein Glas und nicht eine echte Haut oder sowas.

Ja, das ist der andere Nachteil.

Aber der Nachteil ist, wir müssen eben wirklich dieses Glas auf die Fensterbank stellen.

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.

Virtuelle Bakteriengläser, schön.

Genau.

Das heißt, wir haben die ganzen Bugs hergekommen.

Ja, genau.

Deswegen, ich bastle virtuelle Bakteriengläser.

Und diese virtuellen Bakteriengläser werden dann beschrieben durch Gleichung.

Zum Beispiel bei Differenzialreichen wäre die Frage,

okay, ich habe jetzt meine Bakterien, meinen Zustand.

Mein Zustand ist dann 5 von der Sorte, 6 von der Sorte, 7 von der Sorte,

so viel Nährstoff und so weiter und so fort.

Und die Frage ist, wenn ich jetzt eine Sekunde,

in die Zukunft gehe, wie sieht mein Zustand aus?

Vermehren sich einige von diesen Bakterien?

Werden einige Nährstoffe gefressen und so weiter?

Das kann ich dann machen oder ausrechnen.

Und dann mache ich das nochmal und nochmal und nochmal und nochmal.

Und die Frage, wie man das richtig macht, ist,

ja, da haben sich Menschen schon 100 Jahre lang mit beschäftigt

und gute Wege herausgefunden, das zu machen.

Und die kann man dann natürlich auch implementieren und das nutzen.

Also die haben quasi das Rezept, den Algorithmus schon entwickelt

und den wird dann in Python irgendwie übertragen,

auf das Modell angewandt und dann gibt es eine zufällige Verteilung,

die rauskommt.

Oder hast du dann immer konkrete Ergebnisse?

Es könnte zum Beispiel rauskommen, okay, diese Population schluckt aus

und diese Population geht auf genau diesen Wert und bleibt da.

Und du hast eine Zeit, in der das passiert ist.

Und ich habe die Zeit, in der das passiert ist.

Ja, das ist in vielen Fällen gar nicht mal so das Interessante,

aber es ist auch interessant.

Die andere Sache, die halt rauskommen kann, ist zum Beispiel,

okay, es geht nicht einfach auf irgendeinen festen Wert,

sondern es oszilliert wild rum, zum Beispiel chaotisch.

Und dann können wir eben das feststellen.

Okay, es oszilliert.

oder es ist was anderes, als wenn es konstant bleiben würde.

Und ja, wir können uns dann die Frage stellen,

okay, unter welchen Bedingungen oszilliert es rum?

Welch viele Bakterien-Spezies überleben?

Unter welchen Bedingungen?

Wovon hängt das ab?

Wie beeinflussen die Bakterien-Spezies einander?

Und ja, wie verhalten sich eben solche Systeme im Allgemeinen?

So ein geschlossener Game-of-Life-Kreislauf.

Ja, und ein bisschen realistischer.

Aber ja, Game-of-Life ist auch durch.

Echte zelluläre Automaten.

Ja, also zelluläre Automaten sind halt ein Typ von Simulation,

Differenzialgleichungen sind ein anderer Typ.

Dann können wir noch diverse andere Typen durchsprechen,

wie wir es lösen können, aber ja.

Und dann kann ich am Ende sagen,

ich weiß, wenn ich Bakterien so und so zusammen packe,

dann passiert wahrscheinlich sowas.

Das ist das Fernziel dieser ganzen Forschung.

Dass man eben besser versteht, wie sich solche Systeme entwickeln.

Und dann natürlich auch die Frage,

reagieren sie auf Aumwelteinflüsse?

Eine häufige Frage ist zum Beispiel Antibiotika.

Ich habe ein klassischer Fall,

wo wir kein Ökosystem haben im Körper.

Was die Ausnahme ist, ist die Blase.

Das ist normalerweise bakterienfrei,

soweit man das bisher weiß.

Steril.

Steril, ja, genau.

Aber wenn da was reinkommt, hat man ein Problem.

Und manchmal kommen da mehrere Dinge rein.

Und dann ist die Frage, begünstigen die einander?

Bekämpfen die einander?

Sind da verschiedene Bakterien,

die Fressfeinde oder was auch immer sind?

Fressfeinde.

Die Fressfeinde sind in dem Fall das falsche Wort eigentlich.

Also die umgleichen Währstoffe von Kurieren.

Und die Frage ist jetzt,

wenn ich ein Antibiotikum dazu kippe, was passiert?

Kann ich natürlich wieder im Reagenzglas austesten?

Dauert dann genauso lange wie im echten Menschen?

Ist ein Problem.

Also ein Fernziel der Anwendung wäre zum Beispiel,

dass man eben eine Probe hat,

feststellt, welche Spezies sind da drin,

wie verhalten die sich und dann direkt simuliert,

welches Antibiotikum muss ich geben

oder in welchem Takt, mit welchen Bedingungen,

damit ich diese Handwerksinfektion

möglichst effektiv wegkriege.

Also das heißt, ihr könnt tatsächlich auch sowas,

chemische Verbindungen tatsächlich simulieren,

da reinschießen und dann sagen, hey, vielleicht kommt da was raus.

Also wir simulieren nicht die chemische Verbindung

in dem Sinne, sondern wir wissen halt,

dass das Antibiotikum hat die Auswirkungen

auf das Bakterium, ganz grob.

Aber auch das ist alles nur das Fernziel.

Also wir sind eben, solche Ökosysteme

zum Beispiel zu simulieren, ist

verdammt schwierig.

Hört sich sehr nützlich an.

Ja, deswegen versuchen wir es ja auch.

Und deswegen gibt es hoffentlich Leute, die uns dafür bezahlen, das zu machen.

Ähm, ja.

Und das ist so eine...

Hier wird jetzt ein großer Sponsorenaufruf,

weil du falsch irgendwie...

Naja, aber ich meine, das klingt halt schon so ein bisschen danach,

wie man hat irgendwo einen umgekippten Weiher

und dann geht man da halt mit drei Gläsern

unterschiedliche Bakterien im Socken hinten,

füttert das da rein, wartet zwei Tage

und dann hat man eine Blümchenwiese da.

Oder so, das wäre schon gut.

Ja, das wäre schon nicht schlecht.

Wenn man das ausfinden könnte, wie das geht.

Ja, aber...

Und das geht alles mit Python, das ist ja wie das sollte.

Also mit der schönen Schlange mit der Abenteuer.

Naja.

Also, genau.

Und wie?

Genau, 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.

Ich habe auch Simulationswerkzeuge mal gebaut

aus so Nebenkriegsschauplätzen,

die wirklich rein in Python laufen

und auch da einigermaßen effizient sind noch.

Ein Hauptproblem mit vielen komplexen Simulationen

und jetzt mache ich jetzt wieder eine eigensinnige Überleitung

zu dem, was ich wirklich gemacht habe,

ist,

dass es,

nicht so einfach und schnell in Python geht

und dass es insbesondere auch nicht so schnell

und einfach mit NumPy geht,

weil es nicht vektorisierbar ist.

Jetzt muss ich wahrscheinlich kurz erklären,

was vektorisierbar ist.

Ja.

Das heißt, ich habe,

ein klassisches Beispiel ist,

ich addiere zwei Vektoren.

Ich habe ein großes Array mit Zahlen

oder Liste oder was auch immer man sich vorstellen möchte.

Ich habe eine andere, genauso lange Liste mit Zahlen.

Wenn ich jetzt sage,

addiere bitte mal die ersten beiden Elemente

und von jeder Liste

und füge das als erstes neues Element

in eine neue Liste

und dann mache ich das.

Dann mache ich das mit den zweiten Elementen

und so weiter und so fort.

Dann ist das eine vektorisierbare Operation.

Ich glaube, das hat jetzt niemand verstanden,

der nicht wusste, was vorher eine Vektoroperation ist.

Wenn du zwei Vektoren addierst,

dann machst du irgendwie sowas,

du erklärst irgendwie den Weg,

den du per Luftlinie kennst

und dem erzählst du,

ja, musst du links, dann musst du rechts

und dann kommst du irgendwann...

Nenn es nicht so sehr das, was es tut,

sondern die Art, wie es passiert.

Also es ist immer das Gleiche.

Ich mache einfach,

also das auch gleich für viele Sachen ist das so,

Moment, jetzt muss ich es gerade richtig hinkriegen.

Äh, Multiple Data,

Moment, Multiple Input, Single Operation,

Single Operation, Multiple Data.

Also ich mache...

Single Input, 7D, irgendwas?

Genau, also da geht...

Ja, also das Konzept ist auf jeden Fall klar.

Der Begriff ist nicht der übliche wahrscheinlich,

aber alle, die es kennen, wissen, worum es geht.

Also ich habe einen Datensatz

und ich mache damit 5000 Mal das Gleiche,

wenn ich jetzt 5000 Elemente in meinem Datensatz habe.

Und, oder der Datensatz,

der Datensatz wird halt ein Array.

Und das ist ein Problem,

was in vielen, vielen Simulationen auftaucht

und das ist auch alles schön und gut.

Und das kann man dann natürlich effizient

mit solchen Sachen wie NumPy gut lösen.

Also nicht 100% effizient,

aber schon sehr nah dran.

Da ich dann eben,

wenn ich mit NumPy zwei Arrays addiere,

funktioniert es eben so,

dass der sagt,

okay, ich erkenne,

das ist jetzt eine Addition

und dann geht er jetzt nicht

für jedes einzelne Element dieses Arrays hin

oder dieser paarweisen Arrays

und überlegt sich,

oh, guck mal,

was ist das für ein Objekt?

Ist das eine Zahl?

Aha, eine Zahl kann ich jetzt multiplizieren

mit einer Zahl.

Was passiert denn da?

Ah, da kommt wieder eine Zahl raus.

Und unter der Haube

findet dann die tatsächliche Multiplikation statt.

Das ist ja das,

was im normalen Python passieren würde.

Sondern der sagt,

okay, ah, das ist ein Array.

Das ist aus Zahlen.

Das ist noch ein Array aus Zahlen.

Und jetzt gehe ich mal unter der Haube hin,

lasse eine effiziente Schleife da durchlaufen,

die in C oder was auch immer geschrieben ist,

multipliziere die alle Elementweisen miteinander

oder addiere sie Elementweisen miteinander

und dann kriege ich das Ergebnis.

Und das ist schnell.

Und wenn ich jetzt mein Problem

ausschließlich aus solchen Operationen beschreiben kann,

dann kann ich das auch

schnell mit NumPy und Python lösen,

ohne dass ich da irgendwie selbst

in C programmieren muss oder so.

Ja, ich glaube,

ich weiß jetzt auch nicht,

ob ich mich da ganz komplett korrekt dran erinnere,

aber ich glaube, der Witz bei dem Vektorisieren ist eigentlich,

dass man, man hat ja mehrere Register

irgendwie und dann kann man das halt sozusagen

in gewisser Weise parallelisieren,

diese Additionen oder Multiplikationen

von Arrays, indem man das halt in

so viele Teile zackt und das halt alles

irgendwie gleichzeitig macht oder diese Dinger sind irgendwie

oder man kann mehrere Dinge in einen Register packen.

Ja, das ist noch ein Vorteil

bei Grafikkarten und in dem könnte ich das

dann tatsächlich parallelisieren. Stimmt.

Also gerade dieses Rechnen

auf Grafikkarten, wenn man das immer,

was man immer wieder hört, das ist genau solche

Sachen, wo man eben, ja, mehrfach

die gleiche Operation rechnet.

Aber das ist

auch schon eine Sache, die, wenn ich jetzt mit

reinem Python arbeiten möchte oder nicht,

wenn ich irgendwas Neues programmieren möchte in Python,

mir mein Leben deutlich einfacher mache, wenn ich

sowas nutze wie NumPy, denn NumPy,

das Hauptkonzept von NumPy ist eigentlich, wir haben

vektorisierbare Operationen

und stellen sie dem Python-Nutzer zur Verfügung,

ohne dass der sich darüber

kümmern muss. Also wir stellen sie zur Verfügung, wir stellen sie

in effizienter Form zur Verfügung, ohne dass der Nutzer

sich darum kümmern muss, da

irgendwie in C vortragen oder was auch

immer für niedrigeren Sprachen das zu machen.

So.

Ja, ja, ich glaube auch, ich habe

mal gehört, dass das halt irgendwie der Grund

ist, warum vortragen immer noch so eine große Rolle spielt,

weil vortragen, bei vortragen

diese Geschichten halt, die

Schleifen, glaube ich, auch automatisch vektorisierbar sind,

bei C halt nicht, weil, und das ist halt ein Problem,

also man muss es dem Compiler halt sagen,

weil man da so Seiteneffekte haben kann,

dass das Ergebnis

der, eine Addition von zum Beispiel

zwei Vektoren kann halt wieder irgendwie

Einfluss nehmen auf was davor und es ist halt

ja,

sozusagen nicht garantiert, dass

man das halt vektorisieren kann

oder sonst irgendwie parallelisieren kann, sondern das kann halt

dann an, das kann halt dann einem die Programmlogik

kaputt machen, wenn man das halt nicht

weiß, dass das geht und in Vortragen geht das halt nur so

und daher, aber ja, keine Ahnung.

Also mittlerweile stimmt das, glaube ich, nicht mehr,

oder nicht mittlerweile, ich glaube seit 15, 20 Jahren.

Oh, das kann sein.

Man kann dem Compiler sagen.

Restrict Keyword, ich hoffe, ich mache das jetzt

richtig.

Muss mich wahrscheinlich schämen, dass ich das nicht kenne, was eben genau das sagt,

okay, also das klassische Problem ist ja,

wenn ich,

um das, was du vorhin beschrieben hast, nochmal zu,

in anderen Worten zu beschreiben, dass der

Compiler nicht weiß, wenn ich

A und B addiere,

dass eventuell das

B, was ich da addiere, vorher schon

in einem vorigen Durchlauf

anders beschrieben wurde, an einem vorigen

Element der eigentlichen Schleife, also ich habe irgendwie mein,

nehmen wir wieder Vektoren, also es könnte sein,

dass ich die erste Komponente zur ersten Komponente addiere und dann kriege ich

eine Komponente raus, es könnte aber sein, dass ich das in die

zweite Komponente des Vektors schreibe

und das auch tatsächlich möchte, warum auch immer,

wenn ich C programmieren möchte, ist das anscheinend,

und

der Compiler geht davon aus, dass er das nicht weiß

und dass er sich das möchte,

und deswegen optimiert er es nicht weg,

wenn ich jetzt aber sage,

dieses Array ist restricted oder restrict,

dann passiert

das nicht, also man kann

das mittlerweile in C lösen,

aber

das ist auch wieder eine Wissenschaft für sich,

wie man das dann genau,

was man alles optimieren kann und wenn man es richtig schnell haben will,

dann muss man sowieso ein Assembly schreiben und

immer mit

GoTo-Schleifen immer hin und her springen.

Ja,

aber Assembly doch,

so.

Nee, Assembly ist glaube ich noch schlimmer, da gibt es

keine GoTo-Schleifen, da gibt es...

Ja, springe zur Adresse oder sowas.

Genau.

Ja.

Also auf jeden Fall,

das ist einem, ja,

auf die Weise kann man dann Python in vielen Sachen nutzen

und jetzt wieder gesagt,

die schamlose Überleitung nächster Versuch

zu meinem eigentlichen Sachen, die ich gemacht habe,

oder zu Sachen,

die ich selbst gemacht habe, ist, dass es

in vielen solchen Simulationssachen,

das Problem ist, dass man es eben

nicht vektorisierbar machen kann.

Also, was in meiner

vorigen Arbeit sehr häufig aufgetaucht ist,

ist zum Beispiel, dass wir uns komplizierte

Netzwerke von, man kann sich jetzt Neuronen

vorstellen, angeguckt haben,

die irgendwie miteinander verknüpft sind und

dann hat man das Problem,

dass die Verbindungen zwischen diesen

Knoten zufällig sind und dann ab dem Punkt kann ich es

nicht mehr sinnvoll vektorisieren.

Oder man kann sich auch vorstellen,

man hat komplexe metabolische

Modelle, wie irgendwelche Spezies,

irgendwelche Stoffe in andere Stoffe

überführen und so weiter und das ist

eben auch komplex und nicht vektorisierbar

in vielen Fällen und das

muss man dann,

möchte man natürlich auch irgendwie effizient haben

und das Interessante ist, nebenbei ist

auch, viele

Leute haben sich vorher immer die

vektorisierbaren Fälle angeguckt,

weil sie ja so schön einfach anzugucken sind,

weil man sie ja schön einfach programmieren

kann und viele Phänomene

zeigen sich eben erst, wenn es nicht vektorisierbar ist

oder wenn eben diese interessanten Fälle passieren.

Und da habe ich dann eine Software

geschrieben, die gerade das

für den Nutzer macht, dass man

irgendwelche komplizierten Gleichungen hinschreiben kann,

die das System beschreiben und die werden dann

für den Nutzer unter der Haube kompiliert,

nicht vektorisiert

oder nicht vektorisierbar und

trotzdem schnell in Python.

Ja, das

kam irgendwie...

Wo gibt es das zu finden oder ist das alles

private? Das gibt es zu finden,

das ist schöne, freie Software. Ich habe sie

also es ist eigentlich drei

Software, das erste ist JIT-Code, das steht für

Just-in-Time-Compilation for Ordinary

Differential Equations.

Also Ordinary Differential Equations sind gewöhnliche

Differenzialgleichungen. Just-in-Time-Compilation sagt

eventuell dem neigten Hörer was, das ist

dieser Aspekt, dass wir

irgendeine Eingabe hat und die wird

dann unter der Haube für den Nutzer kompiliert.

Und das gibt es dann auch mal

für sogenannte Delay Differential Equations

und Stochastic Differential Equations, aber

ich glaube, das ist ein Detail, auf den wir

jetzt nicht rumreiten müssen.

Ja, und das ist

ein Werkzeug, was dann

sich herausgestellt hat,

gut, ich habe es, als ich das gemacht habe,

konnte ich das natürlich schon irgendwo absehen, dass das für viele

Leute sehr nützlich ist.

Insbesondere, als wir uns damals

von der Forschung damit beschäftigt haben, genau solche

Probleme zu lösen.

Und ja,

eine Sache, die vielleicht auch noch interessant ist, also man

kann jetzt natürlich sagen, der Nutzer gibt

mir irgendwelche Gleichungen und die werden umgesetzt.

Das ist in Python

auch mit SymPy, also

Symbolic Python, das wird jetzt wahrscheinlich

noch ein Exkurs.

Eine schöne Möglichkeit gibt es, die Gleichung einzugeben.

Also SymPy macht was denn? Also das ist jetzt

wieder tatsächlich spannend, was für die Heurer, die das

noch nie gehört haben, was macht das? Also normales

Rechnen im Computer macht man ja

klassischerweise mit Zahlen.

Eins plus zwei ist drei.

Aber SymPy rechnet

mit Symbolen, also ganz

abstrakten Objekten wie X.

Und das Schöne an SymPy ist, dass es

oder auch generell an symbolischem Rechnen,

das hat jetzt SymPy nicht erfunden,

aber das Schöne ist, dass

es dann exakt gewisse Sachen

lösen kann. Zum Beispiel, wenn man sagt X plus

X, steht da nicht X plus X,

sondern steht da 2X. Oder wenn

man sagt X minus X, dann

steht da nicht 10 hoch minus 16

oder so, sondern 0.

Und das ist dann auch exakt 0.

Und

ja, es hat sich herausgestellt, dass

diese Library gibt es und die hat auch

direkt Interfaces, um Sachen

in C-Code zu übersetzen, wenn man wirklich Sachen

schnell machen muss, was genau das ist, was ich

brauchte.

Und sie kann auch viele Sachen, die ihnen jetzt noch

für mich wichtig waren, automatisieren,

solche Ausdrücke analysieren, welche Symbole

tauchen da eigentlich auf,

damit rechnen natürlich und eventuell

sogar Gleichungen lösen, wobei das eine Sache ist,

die ich interessanterweise kaum mache.

Auch wenn man sich irgendwie viele Leute vorstellt,

dass das Wichtigste ist, wenn man so ein symbolisches Rechnen

hat, dass man tatsächlich...

Ja, genau. Man kann irgendwelche komplizierten

Gleichungen lösen. Ja, kann man,

aber man kann es auch als Werkzeug nutzen,

um ganz schnell

dumpfe Routineaufgaben durchzurechnen

und

es einfach als Eingabe-Maske

zu nutzen oder

einfach auch solche Ausdrücke zu analysieren und zu gucken,

okay, ja, welche Verben tauchen dann eigentlich

auf? Also nichts, was ein Mensch nicht

auch könnte, aber eben automatisiert.

Kann man die auch... Ich meine, wenn man das

eine gute Methode gibt, die anzugeben,

das ist auch vielleicht ein bisschen...

Kann man dann auch irgendwie sowas sagen wie

printe mal das nett raus

oder latech dafür oder so?

Das wäre natürlich auch...

Ja, also...

Weil das mache ich nämlich sonst immer total mühselig von der Hand

und muss mir dann die Syntax zusammenklauben irgendwoher.

Das ist ja scheiße, wenn ich irgendwie sowas sage,

wo der x plus x gleich x²

oder sowas, dass man dann tatsächlich

ein latech-Rechte irgendwie kriegt.

Ja, ja, der hat einen latech-Printer.

Ich habe damit noch

nicht viel gearbeitet, insofern kann ich dazu nicht so viel sagen.

Ich bin ziemlich... Also, er existiert definitiv.

Was man halt aufpassen muss, ist die Frage,

ob man das dann wirklich

so dem geneigten Leser

verkaufen möchte, wie es da ausgegeben wird.

Die Sachen sind halt so sortiert,

wie Sympy das gerade für richtig hält.

Also, man kann das

wahrscheinlich modifizieren, aber dann

macht man sich mehr Arbeit, als es selbst zu schreiben.

Aber auch solche

Sachen gehen ja. Man kann es auch ausgeben,

wenn man ja unbedingt möchte.

Aber was natürlich so die Sachen sind, die

in vielen Anwendungen gar nicht auftauchen.

In dem Zusammenhang von

diesem Gleichung, du hast nämlich irgendwann mal über so ein

Programm gesprochen, das heißt irgendwie LP-Solver

oder sowas? Linear Programming

oder sowas?

Lineare Optimierung. Da gibt es

einige Softwarezungen.

Ich meine, da bin ich jetzt wenig der Experte. Ich glaube,

das ist dann wieder ein Fall, wo es numerisch gelöst wird.

Also mit Zahlen. Das Interessante

hier ist, dass wir wirklich mit abstrakten Symbolen

rechnen. Das ist ein bisschen was anderes. Also natürlich,

ja.

Okay, vielleicht könnte man das dann kombinieren

oder sowas.

Ich weiß nicht.

Ich glaube, das Standardpaket für so

konvexe Optimierung ist CVX-Opt

oder so. Da habe ich schon mal ein bisschen was gemacht.

Es gibt dann noch so ein paar mehr

Pakete, ja. Also, aber

ich glaube, das ist nochmal eine andere

Richtung.

Wahrscheinlich, obwohl das auch wahrscheinlich

alles in dem Scientific-Umfeld

irgendwie so existiert.

Es gibt sehr viele Standardprobleme

mit sehr vielen Lösungen dafür und schon allein die ganzen Probleme

alle mit Namen hinzuführen,

da ist man dann eine ganze Karriere mit beschäftigt.

Ich weiß nicht,

ob das bei dir noch eine Rolle spielt, aber ich habe

da so mal früher, da gab es irgendwie sowas wie Sage

oder so. Das war so eine Distribution von ganz

vielen Dingen. Ja, das ist

das, was heute noch gibt. Ich habe keine Ahnung.

Es gibt es, glaube ich, noch. Ich habe auch damit gearbeitet.

Also, ja, also was ist Sage?

Ich kann sowas, also das ist,

es ist sehr komisch. Es ist

weitestgehend Python

und ist speziell

dafür gemacht, so ein Ersatz für so Sachen

wie, ja, ich glaube, Mathematiker

hauptsächlich. Mathematik

und so weiter zu sein. Es ist ein

großer Klotz, den man

sich kompilieren oder runterladen muss.

Der ist dann 600 Megabyte

groß oder so.

Und funktioniert weitestgehend wie

Python, aber nicht

ganz. Also es gibt so

eigenwillige Modifikationen,

sage ich mal, die dazu

dienen, das ansprechender zu machen.

Ob das jetzt gut ist oder nicht,

sei dahingestellt. Also zum Beispiel ist

das, der Zirkum-Flex-Operator

Potenzierung macht, statt Sternchen,

Sternchen. Also Sternchen, Sternchen macht auch noch Potenzierung,

aber man kann es jetzt auch mit...

Okay, das wusste ich gar nicht, dass sie das geändert haben.

Also solche Änderungen

sind da drin. Es sind viele Sachen automatisch

geladen als Pakete

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 weiß, woher

die Dinge kommen,

wurden

dann wieder zu nicht gemacht. Warum der ein...

Warum man jetzt den Zirkum-Flex-Operator unbedingt

brauchte, dafür...

Ja, ob das so wichtig ist, gut, ja.

Weiß ich nicht.

Also ich habe damit gearbeitet, es

kann ein bisschen mehr, oder konnte

zu dem Zeitpunkt ein bisschen mehr als Sympathie,

andererseits eben Sachen Gleichung lösen.

Was, wie gesagt, die Sache ist,

die ich nicht mache, auch wenn sie irgendwie alle warten,

sondern ich nutze es wirklich eben, Gleichung zu verarbeiten

und damit einfache Sachen zu machen.

Deswegen habe ich das letzten Endes

nicht gebraucht.

Und es ist, wie gesagt, dieser große monolithische

Klotz, den man dann immer auch komplett updaten

muss oder wo man, ja...

Es war nicht sehr

handhabbar, aber nicht schön, fand ich.

Wo wir, aber noch ein kurzer Rückbezug,

ist super zum Code-Golfen, wie gesagt,

alles wird in die... Viele Dinge sind im Standard-Nahmensraum.

Das heißt, eine Lösung, ein

Python-Programm kompakter zu

machen in Code-Golfen, ist dann

mach es in Sage.

Auch nicht schlecht, ja. Ist natürlich keine Python-Lösung

mehr, aber, ja.

Ja, interessant. Also,

okay, aber SymPy scheint auf jeden Fall

dann, wenn man irgendwie so, ja,

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?

Also, ich glaube, NumPy ist

klar, SymPy ist,

stellt einem viele

Simulations und Statistik und sonst

was Tools zur Verfügung. Nutze ich

zum Beispiel auch unter der Haube, um gewöhnliche

Differenzialgleichungen zu integrieren. Für andere

Differenzialgleichungen dann nicht mehr, weil das komplizierter

ist. Da habe ich dann meine eigenen

Integratoren implementiert.

Ja, dann, gut, es gibt

viele Sachen für Datenfahr,

also, um wirklich große Datenmengen

und vor allem Daten zu verwalten. Ich glaube,

ihr hattet schon mal eine Folge zu Pandas, insofern werde ich

davon nicht zu viel erzählen. Kann ich auch gar nicht,

weil ich jetzt in der Regel nicht so viel mit Daten

zu tun habe, aber die Daten, die ich habe,

sind einigermaßen überschaubar.

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. Was immer

das Problem mit anderen Sachen ist,

die, also,

ja, dass man eben

irgendwann an die Grenzen stößt,

dass man, gut, häufig braucht man

die Sachen natürlich auch nicht, häufig braucht man nicht

also, wenn ich jetzt, was ich leute,

die Matlab oder was auch immer

nutzen, ja, die wollen damit natürlich auch keinen

Webserver betreiben, oder

was auch immer,

aber, ja,

man kann halt auch immer,

also, ich glaube, der Vorteil ist eher nicht, also weniger,

dass man solche Sachen wie Webserver

oder so weiter nutzen kann, sondern dass man

sagen kann, das hier ist eine universelle Programmiersprache,

die lernen wir jetzt mal bitte alle, und dann

können wir dann machen,

was wir wollen, und wenn man allgemeine Programmierkonzepte

nutzt, kann man sie verwenden,

ob man jetzt, also, muss jetzt gar nicht in Python sein,

aber, wenn man so etwas wie

objektorientiertes Programmieren einmal verstanden hat,

kann man das dann eben für Simulationen

nutzen, oder, oder, oder.

Was ist so die häufigste andere Sprache, die du

findest, dann in deinem wissenschaftlichen Umfeld,

mit der du dann auch arbeiten wollen würdest, oder sagst,

das gehört auch dazu? Also, arbeiten wollen würden,

das ist ja da so hingestellt, ich, ich musste,

sage ich mal,

äh, einen Kurs

Datenanalyse in Matlab für Biologen

unterrichten, ähm,

das heißt, ja, das ist so die andere Programmiersprache,

mit der ich viel zu tun hatte,

ich habe es aber geschafft, das

weitestgehend Matlab nie anzurühren,

also, es gibt ja eine freie Alternative namens

Octave, das macht schon mal, so für

freundefreie Software, äh,

etwas erträglicher, aus dem muss ich mich dann nicht irgendwie rumschlagen,

das zu installieren, und, ja,

ich habe es tatsächlich weitestgehend

geschafft, diesen Kurs zu lehren, ohne

das jemals anzurühren, ähm,

und, ja, also,

ich würde auch mit der Programmiersprache nicht arbeiten,

weil es gibt Sachen, das,

das Schöne ist, ich habe es irgendwie so dann zwei Monate vor

dem Kurs mich hingesetzt und das gelernt, und

wirklich

jede Sache, wo ich denke, okay, wer hat

sich das ausgedacht, das kann doch nur zu tausenden von

Fehlern und sonst was Problemen führen,

führte auch zu tausenden von Fehlern und Problemen.

Ja, gut, wenn dann, ja, okay, super, ja.

Also, es, ja,

es ist, es passt wirklich zum Teil, wie die Voraussetzung,

ich meine, ich habe ja auch, ja gut, das kann man jetzt wieder nicht

vorführen, aber so ein Beispiel, wo man

an einer Stelle,

also, ich hoffe, ich erzähle es doch nochmal ein bisschen,

äh, Matlab hat die großartige Idee gehabt,

dass man das Leerzeichen als Element,

Trennungsoperator in Arrays nutzt,

oder Lüften, ja, ja, ja,

genau, also, statt

Kommata, wie in Python,

und man kann auch

Kommata nutzen, man kann auch Semikola nutzen,

das ist dann eine neue Zeile, aber man kann auch Leerzeichen

nutzen, ähm, und dann gibt es

jetzt das Problem, wenn ich jetzt was tippe,

wie, eckige Klammer auf, was steht für Array,

okay, soweit so erwartet,

5 Leerzeichen plus Leerzeichen

3, dann ist das natürlich

8, wenn ich aber eintippe

5 Leerzeichen plus, kein Leerzeichen

Achtung, 3, ist das natürlich

das Array, was 5 und 3 enthält,

weil das Leerzeichen ja der

plus 3, ja, und das plus

gehört dann halt zu der Zahl und sagt einfach nur,

das ist jetzt plus 5 und nicht minus, genau,

ja, und das

hört sich so noch okay,

kann man auch verstehen, das Problem ist, wenn jetzt die Arrays etwas

größer und komplizierter werden und da komplizierte Ausdrücke

drinstehen, was manchmal tatsächlich der Fall ist,

dann kann einem die Formatierung

dieses Arrays dann die Probleme machen, also,

ja, das war der Fehler, wo wir

wirklich eine halbe Stunde gesucht haben, um zu verstehen, was

da überhaupt passiert ist.

Man startet da drauf und denkt sich so,

ja,

die Spare ist halt jetzt voll davon,

das wurde halt in den

80er Jahren entwickelt,

1987, 1986, keine Ahnung,

und seitdem gefühlt nicht mehr

weiterentwickelt.

Und ja, so bedient es sich auch.

Das erinnert mich so ein bisschen an Python, wenn du das Tupel machen

übergeben würdest, dass du dahinter noch ein Komma machen würdest, weil da sonst kein Tupel

macht, wenn du die Klammer einfach, ein Element nur drin hast.

Ja,

genau, das ist noch so, ja,

aber das passiert halt andauernd.

Bäh.

Und dann gibt es so zwischendrin gibt es R, das ist schon

ein bisschen besser.

Also, erstens ist es frei,

zweitens ist es nicht ganz so

irrsinnig, es hält sich noch ein bisschen an Programmierstandards,

aber

ja, damit habe ich noch

nicht so viel zu tun gehabt. Und es gibt natürlich auch diverse

andere Sparen, es ist

relativ ein Kompass für Simulationen oder

Sachen, die schnell laufen müssen, ist Julia,

wo ich

dann mich immer noch frage, okay,

wieso brauchen wir jetzt hier noch Klammern,

weil die Python ja zum Beispiel abgeschafft hat.

Und insbesondere, dass es hier eine Sprache ist,

die sich in vielen Fällen, so wie ich es verstanden habe,

an Python orientiert. Ja,

aber sehr viel mache ich zur Zeit in Python und wenn

es dann schnell gehen muss, mache ich es eigentlich in C.

Also das sind so die Sprachen, mit

denen ich direkt zu tun habe.

Dann direkt tatsächlich als

C-Extension oder nimmst du sowas wie

Saiten und

wandelt das dann halt

um in C?

Ich mache es tatsächlich als C-Extension, weil ich es einfach gelernt habe

und mich da auskenne. Zum einen

und zum anderen jetzt, um auf meine eigene Software

zurückzukommen, da ist ja wieder gerade das Problem,

dass ich es dann wirklich möglichst schnell haben möchte

und wenn ich den Nutzer

dann Siphon-Code eingeben lasse, habe ich

nicht so viel gewonnen.

Ja, klar. Dann kann ich auch direkt

C-Code machen und dann kann ich auch noch viele Sachen nutzen,

die eben so

in Siphon nicht drin sind.

Also doppelt verlinkte Listen

oder so, glaube ich, würden

Siphon nicht funktionieren.

Also, dann mache ich es

schon einmal Hardcore und

kann dann wenigstens die Sachen, die

wirklich schnell sein müssen, auch

radikal optimieren.

Du sitzt dann

mit der Stoppuhr-Time mit und dann

guckst du es dann wirklich an?

Ja, also in einigen Fällen wirklich

ja, zum anderen

bilde ich mir ein, ein bisschen Erfahrung

zu haben, wie man Dinge schnell macht.

Also, in vielen Fällen

schreibe ich die Dinge dann hoffentlich auch direkt so, dass sie

schnell sind. Also hintereinander direkt

den Speicher, dass der Teig ja nicht so schnell oder so

viel hin- und herspringen muss oder was es dann so ist.

Ja, okay, auf der Ebene bin ich noch nicht, aber dass man sich halt

schon mal überlegt,

ja, das könnte

ich jetzt,

dass man eben

hier diese gewisse Schleifen gar nicht braucht

oder

mit Zeiger-Arithmetik arbeitet

oder eben sich überlegt, okay, jetzt habe ich hier noch

einen Funktionsaufruf und das kostet Zeit

und

wie kann ich das vermeiden oder wie kann ich hier die Suche

also irgendwelche Suchoperationen, ja,

Okay, okay, das hört sich tatsächlich an, das wird ja tatsächlich

von der schwachen Hardware, die er noch zur Verfügung

stellt, in den Forschungsinstitutionen

so ein bisschen abhängig, aber ich dachte, die wären eigentlich

schon weiter. Ja, aber das ist

abhängig von dieser Komplexität,

dieser unheimlich großen Berechnungen.

Naja, also die Hardware kann

ja nur so viel leisten, wenn ich,

also erstmal, weil ich ja durch die,

in vielen Fällen gehe ich, indem ich von

Python auf C gehe, hole ich

einen Faktor von 1000 oder so raus

bei mir. Das,

ja,

da will ich jetzt nicht mehr mit der...

Das klingt jetzt ziemlich viel. Ja.

Natürlich, also ich könnte das in Python

wahrscheinlich auch noch, wenn ich mich wirklich, wirklich stark

hinsetze, besser machen, dass es

nur noch ein Faktor 100 ist, aber

gerade solche Probleme habe ich eben.

Das muss man ja auch, also das

für viele andere Probleme gilt das übrigens nicht. Also ich habe

jetzt schon meine exotischen Spezialprobleme,

die ich und vielleicht noch, ja, so

ein paar kleinere Communities auf der Welt

haben,

wo das wirklich einen riesen Unterschied macht

und wo ich dann eben auch Software geschrieben habe, die diese

Unterschiede dann weg macht, aber

für Python-Nutzer rausholt,

die,

so jetzt war ich, ja,

was war nochmal deine Frage?

Ja, es geht so ein bisschen darum, also wie das dann hinterher

aussieht, also warum du diese Geschwindigkeit dann

über C rausholen musst, warum das nicht irgendwie,

weiß nicht, andere Ideen dafür noch...

Großrechnung. Einfach mehr Hardware, ja.

Genau, mehr Hardware draufschmeißen. Genau, also

natürlich kann man immer mehr Hardware draufschmeißen,

aber diese Hardware muss ja dann auch erstmal, also gerade wenn ich einen Cluster

habe, muss ich mich erstmal damit auseinandersetzen,

wie ich meine Sachen clusterfähig mache.

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 dem

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.

und dann irgendwann am Wochenende nachts gibt es dann mal Rechenzeit, wo man das dann durchläuft.

Das zweite Problem ist, ja, auch der Großrechner kann die Sachen nur hintereinander ausführen.

Viele Sachen, also gerade die Simulationen, sind eben, ich habe ein großes System,

ich simuliere das über die Zeit, es baut alles aufeinander auf.

Ich kann einfach nicht diese 500 Zeitschritte parallelisieren,

denn die brauchen die ersten Ergebnisse vom vorigen Zeitschritt.

Also das heißt, da kann ich auch mit dem Großrechner unbedingt viel rausholen.

Was ich natürlich machen kann, ist, ich kann diese ganzen Simulationen, die ich habe,

sage, okay, ich möchte jetzt 500 Simulationen laufen lassen, die kann ich dann parallelisieren.

Aber da bin ich natürlich aufgerufen, wenn es schneller geht,

weil wenn es schneller geht, kann ich eben 500 Simulationen laufen lassen statt nur 5.

Und ja, das macht halt in vielen Fällen auch schon wieder einen schönen Unterschied.

Also das klingt tatsächlich so, also wäre das ein großer Vorteil.

Also ich hätte jetzt nicht gedacht, dass man irgendwie das 100-fache da auch mit rausziehen kann,

weil ich hätte irgendwie gedacht, dass man die Sachen in Python dann irgendwie mit Python oder was,

dann irgendwie trotzdem so hinbiegt, dass das...

Ja, ich weiß nicht, wenn man sich jetzt hinsetzt und das mit Python hinbiegt,

dann hat man eventuell, keine Ahnung, Faktor 10.

Das hängt so ein bisschen vom Problem ab.

Aber ich habe, also ich habe wirklich Probleme, da habe ich, also was ich gemacht habe,

ist, weil ich bei diesen Sachen mache, ich schreibe immer erst die Sache komplett in Python.

Wenn ich meine eigenen Sachen baue, mache ich mir einen Kern aus Python,

von dem ich weiß, was er tut, der lesbar und so weiter ist.

Und wo ich erstmal lerne, den Algorithmus so ein bisschen zu optimieren und wie speichere ich Dinge

und so weiter und so fort.

Und dann gehe ich hin und schreibe das Ganze nochmal neu in C.

Was auch sehr schön ist, dann habe ich irgendwie eine Testmöglichkeit.

Ich habe einfach meine zwei Kerne, ich bombardiere die mit zufälligen Eingraben

und gucke, ob sie das gleiche tun.

Aber von dem, dafür habe ich halt dann auch einen guten Vergleich,

weil ich habe das einmal in Python geschrieben, genau dasselbe.

Vielleicht dann, ehrlicher gesagt, auch nicht optimiert darauf, dass es besonders schnell ist,

sondern eben auch, dass es lesbar ist und vergleichbar und dass ich verstehe, was es tut

und dass es gut testbar ist und so weiter und so fort.

Das muss ich dann schon eingestehen.

Aber es ist trotzdem, je nach Aufgabenstellung wirklich, sind es solche großen Faktoren.

Mit Python, ja, wenn ich das jetzt in Python programmieren könnte oder wollte

oder meinen Nutzer das vermuten würde, dass er das in Python programmiert,

ja, okay, dann wäre es vielleicht nur noch ein Faktor, keine Ahnung, 10, 5, was auch immer.

Aber dann geht natürlich auch sehr viel Programmierzeit drauf.

Wenn du jetzt sagst, so deine Nutzer, das heißt, du stellst tatsächlich so ein Programmierinterface

bereit und deine Nutzer machen ihre Dateneingabe oder die Schnittstelle dafür noch komplett selber oder also irgendwie...

Also meine Nutzer sind Programmierer.

Ja.

Das muss ich auch immer unterscheiden.

Das ist immer sehr lustig, wenn man dann auf diesem Python-Treffen sitzt mit allen möglichen Leuten,

die aus dem Web-Bereich und so weiter kommen und erstmal deren Nutzer natürlich keine Programmierer sind

und sich dann Gedanken und man ganz andere Vorstellungen darauf hat, wie man eine Fehlermeldung schmeißt.

Meinen Benutzer schmeiße ich einfach eine Fehlermeldung und die können die dann hoffentlich auch lesen.

Naja, manchmal.

Ja, also meine Nutzer sind Programmierer und die brauchen jetzt kein grafisches Interface zum Glück.

Du visualisierst dann auch gar nichts von den Lösungen irgendwie, sondern das schmeißt du dann irgendwo rein und dann kann man...

Ja, das kann der Nutzer dann mit einem Plotprogramm machen, das ist der Plotprogramm der Wahl oder was auch immer.

Gut, meistens ist es ein Matplotlib.

Aber das ist ja in modularer Denkweise nicht meine Verantwortung, da irgendwas zu visualisieren,

sondern mir geht es nur darum, die Lösung zu programmieren.

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.

Und ich würde 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 oder ist das...

Also so klein ist die Insel nicht, das Problem gewöhnliche Differenzialgleichung oder retardierte Differenzialgleichung und so weiter und so fort zu lösen.

Das ist jetzt...

Betrifft schon eine gewisse Menge, also nicht schon nicht wenig Leute, also ich könnte jetzt, es tut mir schwer eine Zahl abzuschätzen, wie viele Wissenschaftler und andere Leute sich mit so einem Problem beschäftigen.

Wir stinken halt nicht angegen die Leute, die partielle Differenzialgleichung machen, das sind diese klassischen vektorisierbaren Fälle,

was man so sagt, wenn Leute Wärmeleitungen simulieren oder irgendwie physikalische Verformung und solche Sachen, die machen alle partielle Differenzialgleichung.

Ja, also die Insel ist nicht so klein, aber sie ist kleiner als vielleicht andere größere Inseln, was jetzt wahrscheinlich keine sinnvolle Aussage ist.

Naja, also ich meine gut, ich kenne jetzt vor allen Dingen halt den ganzen Data-Science-Bereich da auch, das wissenschaftliche Umfeld, da gibt es halt, also mit Differenzialgleichung hat man da eigentlich nie so wirklich zu tun, auch nicht mit symbolischen, da wird immer eher so, da nimmt man halt, da packt man die große GPU aus und dann versucht man damit das Problem zu lösen.

Nee, aber das ist ja auch ein ganz anderer Ansatz, bei der heißt es nicht, ich habe Daten und ich will sie verstehen, bei Simulationen geht es darum, ich habe eine Idee, wie Sachen funktionieren, ich möchte jetzt mal gucken, was eigentlich passiert, wenn ich diese Idee in die Daten umsetze, ganz doof gesagt, weil ja, ich habe mein Modell und jetzt lasse ich es mal laufen.

Ja, aber da würde mich eigentlich auch mal interessieren, wie ist das denn, wie kann man das denn dann verifizieren, ich meine, woher weißt du, dass deine Simulation tatsächlich irgendwie das liefert, was du jetzt bekommen hättest, wenn du 500...

Also ich meine, das ist eine große Frage, da gibt es natürlich, also das ist dann wirklich, dass man sagt, okay, wir machen jetzt mal den gleichen Fall und lassen es laufen und vergleichen das wirklich, jetzt mit der Nährflüssigkeit, ich habe jetzt erstmal die Frage auf eine ganz andere Weise verstanden, die vielleicht auch interessant ist, nämlich, wie teste ich eigentlich solche Software?

Ja, zu bestimmen, was eigentlich rauskommt, das war auch sehr spaßig, insbesondere ein Fall, den ich jetzt noch nicht so angeschaut habe, das sind dann stochastische Differenzialgleichen, das ist so, ja, werden wir jetzt gleich, ich packe noch Zufall drauf und dann muss man, ja, dann gibt es ja noch nicht mal eine richtige Lösung, also jede Lösung, die ich prinzipiell kriegen könnte, könnte, oder die ich sehe, könnte richtig sein, für den richtigen Zufall, ich kann nur sagen, okay, diese Lösung ist jetzt eher unwahrscheinlich oder diese Lösung ist eher wahrscheinlich, aber ich kann ja gar nicht mal sagen, dass es eine

falsche Lösung anhand einer Lösung, ich kann also

Du müsstest ja vor allem erstmal die Verteilung kennen, deiner Zielfunktion,

damit du weißt, ob das wahrscheinlich ist oder nicht.

Genau, das, ja, genau, das heißt, ich kann

einfach nur, ich kann nicht mal eine Aussage über eine Lösung meiner

Software machen, ich kann nur eine Aussage über ein Ensemble

von Lösungen, also tausend Lösungen machen

und, ja, das sind dann

die sehr, sehr langlaufenden Tests, wo ich

erstmal tausend Lösungen berechne, dann irgendwelche

statistischen Verfahren darüber.

Ja, aber ich finde das jetzt das Interessanteste, ne, also jetzt

von meinem Gusto her, wenn

du so eine Verteilungswolke irgendwo hast,

die nähert sich ja dann oder verdichtet sich

ja dann an den Stellen, wo dann

doch, ne, die meisten Experimente

irgendwo in derselben Richtung

ausgehen und da hättest du, finde ich, so

die höchste Treffgenauigkeit, als wenn du jetzt einfach so

dieses Modell hast und sagst, oh, da kommt das

Also ich verstehe jetzt ohne Statistik,

ne, bei so Simulationen gar nicht, was dabei

rauskommt, also wie die Validität einzuschätzen

wäre. Wenn du jetzt sagst, du machst jetzt der Test

dazu, dann finde ich das sehr spannend.

Sorry, ich will jetzt vom Software-Test.

Ja, klar, aber ich meine, klar, aber

das hängt ja irgendwie zusammen, ne,

also der Software-Tester muss ja zwar dann

klar, dann muss das Programm funktionieren, weil sonst ist der Test ja Quatsch,

aber der ist ja dann auch irgendwie

die Basisvoraussetzung dafür, dass

das Modell, was du dir ausgedacht hast, dann wenigstens

gerade läuft.

Ich bin mir nicht sicher, ob ich das richtig verstanden habe, also ja,

natürlich muss das,

also einerseits muss das Modell die Realität,

am Ende wollen wir, dass das Modell die Realität beschreibt, klar,

aber die erste Schwierigkeit ist erstmal,

ich habe jetzt irgendwas programmiert, was mir

mein Modell löst, was es

behauptet und die Frage ist, macht es

wirklich die richtige

Lösung? Ja, ja. Also einfach wirklich nur

einen Software-Test schreiben, also einfach nur zu gucken, ich stecke

das rein, kommt das Richtige raus?

Und das ist halt, wenn es stochastisch ist,

ein bisschen blöd, weil dann kommt halt jedes Mal

was anderes raus. Genau, es könnte alles richtig

sein, also das ist so wie

Zufallszahlen-Generat-Testen, geht je nachdem

noch, weil ich einfach ganz

viel, ganz schnelle Zufallszahlen ziehe und dann weiß

ich genau, okay, die müssen dann vielleicht gleich verteilt sein

oder so, aber

bei, ja, dem Problem ist es dann

eben nicht so einfach, also letzten Endes sind da ganze

wissenschaftliche Arbeiten daraus entstanden, nur

auf die Frage

wie, also aus der Frage heraus, wie teste

ich das eigentlich richtig und so eine Differenz,

wo wir feststellen, okay, das, die

Theorie, die wir haben, zu dem, was da rauskommen muss, stimmt

nicht mit dem überein, was da rauskommt

und können wir das... Entweder stimmt die Theorie nicht oder das

Modell ist falsch. Ja, oder

das ist wohl ein Fehler, ne? Ja, genau.

Also am Ende haben wir festgestellt,

also erstens, ja, die

Theorie könnten wir erweitern, das haben wir auch gemacht und

da sind dann ganze Arbeiten und Paper

daraus entstanden, das war gut, also

Software-Testen ist was Gutes, produziert wissenschaftliche

Paper.

Die andere Sache ist, wir haben auf die Weise auch tatsächlich

Fehler im veröffentlichten Algorithmus

gefunden, wo

irgendwie in der großen Tabelle, die diesen Algorithmus

beschreibt, also solche Algorithmen werden mit Tabellen

beschrieben, ist leider so, dann irgendwo ein

Vorzeichenfehler war.

Den

haben wir damit gefunden und das, also insofern

ja, und hätten wir wahrscheinlich

sonst auch nicht gefunden, wenn wir uns diese Mühe nicht gemacht hätten

und dann hätten wir jetzt wahrscheinlich eine ganze Menge

fehlerhafter Rechnungen und wüssten es nicht

was.

Wir würden alles für bare Münzen verkaufen, wir würden damit

Geld verdienen und wir würden sich irgendwelchen großen

Papern veröffentlichen, alle Leute würden nicht zujubeln

und irgendwann würde einer sagen so, hm.

Ja, oder halt auch eben nie.

Und das ist halt, dass man noch viel mehr Sorgen

machen sollte, dass es eben einfach gar

nicht schief geht, sondern die Leute einfach...

Das passiert in der Wissenschaft leider viel zu häufig.

Ich denke auch, dass das oft passiert, ja.

Ja, die Erde ist vielleicht doch anscheinend

bei einem, man weiß es nicht so genau, ja.

Ja, nee, also ganz so schlimm ist es

nicht, aber, ja. Naja, also so ein paar

Paradigmen wechseln, bevor die mal passieren,

da muss ja so ein bisschen schon Arbeit passieren,

muss sich irgendjemand aus dem Turm stellen und was runterschmeißen.

Aber ihr verwendet auch

ganz normal PyTest oder so zum Testen

oder habt ihr da noch

speziellere Kniffe, die man da benutzen muss,

wenn man das irgendwie in den Griff kriegen will?

Also nee, als ich angefangen habe, habe ich glaube ich noch mit Unitest

gearbeitet. Achso, ja. Schande über

mein Haupt, ich weiß.

Wenn ihr jetzt gerade irgendwie lustig über

Tests nochmal einsteigen wollt, dann können wir gleich gerne noch ein bisschen

länger drüber reden, weil da sind noch einige

Fragen eingetrudelt.

Das ist vielleicht auch ein ganz anderes Thema, aber

nee, also

ich glaube, die

klassischen Software-Test-Tools,

das ist nicht so das Problem, die zu nutzen,

wenn man sie nutzen kann.

Das Problem ist eher die Frage, ich habe eben

so eine, sowas wie

eine stochastische Sache

und kann nur eine Aussage über das Ensemble

machen, wie mache ich das eigentlich?

Das ist dann eher eine wissenschaftliche Frage, als

eine Software-Frage oder

die Frage, eine Software-Lösung zu finden.

Ja, du musst mal so Stichproben ziehen.

Du musst ja gucken, ob die Stichproben irgendwie der

erwarteten Verteilung...

Ja, genau, aber das ist

nicht einfach, je nachdem, was man hat.

Die andere

Problematik,

eine andere Beispielproblematik, wenn wir gerade dabei sind,

ist sowas wie, ich habe ja gesagt,

ich habe eine symbolische Eingabe, ich übersetze das

in C-Code. Was ist jetzt

eigentlich der richtige C-Code? Also ich kann ja nicht

einfach sagen, okay, ich möchte genau diesen

C-Code haben, der ist dann richtig,

sondern ich könnte ja auch einfach mal, weiß ich was,

A plus B oder B plus A ist in der Stelle

gleich, in den allermeisten Fällen.

Wie entscheide ich,

was da richtig ist? Das kann ich

eigentlich nur machen, indem ich es ausrechnunglich

vergleiche.

Ein solches Späßchen.

Also das heißt, die Equivalenz von deinen

Experimenten ist schon fraglich dann.

Also wenn du die Experimente durchführst,

dass sie halt gleich durchgeführt worden sind.

Ich meine nicht bei Experimenten, wir sind jetzt bei Simulation.

Ist Simulation kein Experiment?

Also okay, Entschuldigung.

Ja, ist auch etwas, was ich gerade eben

Experiment genannt habe.

Als mathematisches Experiment beschrieben habe.

Ja, das könnte fraglich sein, aber es geht jetzt erst mal darum,

macht meine Software das, was sie soll.

Also ich kann jetzt eben nicht hingehen

und eine kleine Einheit von einem Code

Produktion, also Code-Drucker

oder wie die heißen, also einfach

eine Übersetzung von Symbolen in Code,

die ich zum Beispiel nutze, kann ich,

es ist gar nicht so einfach, die zu testen, da ich eben keine

ganz klare Aussage habe, was

da rauskommen muss. Da ich eben nicht

weiß, in welcher Reihenfolge zum Beispiel

sind jetzt diese fünf so

Mandeln in einer Addition.

Da gibt es keine Vorschrift,

was da richtig ist. Und wenn ich,

kann ich natürlich mich drüber hinwegsetzen und

sagen, ich zerteile das jetzt komplett und

mache da irgendwie einen Symbolbaum oder was auch immer,

aber dann muss ich es natürlich wieder zerlegen, ist auch nicht schön.

Also ein Problem mit der ganzen Software war, dass

es eigentlich nicht sehr einfach zu testen war.

Okay.

Und aber dafür habt ihr was veröffentlicht, wo sagt ihr, hey,

das ist so ein voller Fortschritt, das sollte man so tun.

Also nicht zum Testen,

also ja doch, nee, also das habe gar nicht ich gemacht, das haben

nur andere Leute, haben darauf aufgebaut und haben

wir haben, also

die Geschichte ist eigentlich, wir haben

ich habe dieses Problem entdeckt und dann haben wir

irgendwann uns hingesetzt und

eine Bachelorarbeit aufgesetzt

und machen lassen zu dem Thema,

okay, vermessen wir das doch mal bitte,

verstehen wir das ein bisschen besser und

hatte dann auch noch andere Anwendungen, nicht nur den Test,

muss man dazu gestehen. Und ja,

das war, wir haben, da wurden

neue Erkenntnisse gewonnen und

veröffentlicht. Aber das war

gar nicht so, also das war nur etwas, was ich, das ich

angestoßen habe, insofern kann ich dir jetzt auch recht

so viel zu erzählen.

Ja, klingt sehr spannend, also dass man

tatsächlich so echte Experimente

irgendwie begleitet und simuliert

mit Python oder

halt ein bisschen C, aber halt dann so in die Zukunft

damit ein bisschen gucken kann, was könnte denn dabei rauskommen

oder welche Lösung für

wirklich Probleme, also weiß nicht, ob das nur Medikamente

angeht oder kann man

andere denken, genau, damit

bauen kann, das ist natürlich schon spannend.

Also das ist das ganze Feld, so dynamisches System,

wie wir vorher sagen, ist

sehr vielfältig in Anwendung.

Was ich vorher gemacht habe, waren

Probleme mit,

oder 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

Bevölkerungswachstumsheraus,

das Thema meiner, also meine

vorigen Forschungen war, wie sagen wir, extreme Ereignisse

heraus, oder verstehen, wie passieren extreme

Ereignisse, und extreme Ereignisse kann dann so sein, wie

epileptische Anfälle, kann dann auch so was sein, wie

Überpopulation, Artensterben, Erdbeben,

ähm,

all solche verschiedenen Dinge, und

Was war das Ergebnis? Gibt es so

einen entscheidenden Punkt,

den man irgendwie erreichen kann, die dann bestimmte Faktoren

identifizierbar sind, die sagen so,

hey, jetzt macht's gleich peng?

Äh, nee, so weit

sind wir leider nicht gekommen.

Also das Ergebnis war dann so was,

wie wir können, wir haben einen neuen Mechanismus

gefunden, wie solche Sachen entstehen können

in der Dynamik eines Systems.

Den können wir in einigen Fällen, hilft uns das ein bisschen

was vorherzusagen, aber insbesondere können

dann die Leute, die ein konkretes System haben,

mit einem konkreten System was vorhersagen, eventuell

besser verstehen, wie sie das machen.

Okay. Das ist leider nicht sehr

befriedigend für, aber

das ist eben Grundlagenforschung.

Das ist Wissenschaft.

Ich fürchte, das ist halt irgendwie so eine der

der blöden Eigenschaften, die da halt

so dabei sind, dass das extrem

seltene Geschichten halt, sondern

schlecht Statistik zu machen kann, weil es einfach nicht

so häufig auftritt, aber wenn die halt,

äh, stark genug sind, dann haben sie halt einen großen

Einfluss auf das, was passiert und dann ist es halt blöd.

Also Statistik ist die eine Sache und

die Faser können wir jetzt allein mit Statistik

vorhersagen. Wahrscheinlich nicht. Wir müssen verstehen, was

passiert da eigentlich. Ja.

Und wie kommt es eigentlich dazu?

Und dann geht das überhaupt. Das kann ja auch sein,

dass man das einfach gar nicht... Und was ist wichtig?

Also, und jetzt mal vielleicht auch nochmal

ein Beispiel, wozu Simulationen gut sind.

Was jetzt immer wieder die Frage war, ein

früher Kollege von mir, der hat

bei der ersten, hat wahrscheinlich die erste

Simulation geschrieben, die macht,

was aussieht wie ein epileptischer

Anfall. Ob es jetzt irgendwie

wirklich das damit zu tun hat, müssen wir dann nochmal

untersuchen. Aber was nicht

darauf basiert, dass wir an irgendeinem Kopf drehen und

irgendeinen Parameter ändern, also irgendwas,

irgendwelche Neurochemikalien oder so

im Gehirn ändern, sondern wir können

eine einfache Simulation machen, die macht einen epileptischen Anfall,

ohne dass wir was ändern müssen.

Was dann einfach, okay, was bringt

das Ganze jetzt? Naja, die

Leute, die ein paar Ebenen

in der Anwendung höher sind,

können jetzt hingehen und sagen, okay,

wir haben uns bisher immer darauf gestürzt, was ändert sich

da chemikalisch und so weiter, könnte

es vielleicht was anderes sein? Könnte es vielleicht

einfach sein, dass das Gehirn anders

verknotet ist, weil die Neuronen anders

verbunden sind in Gehirn, die epileptische

Anfälle produzieren und das ist das Problem.

Und die Frage ist

noch offen, aber solche Ansätze

stößt man dann eventuell mit Simulationen hervor.

Ja, fühlt man, dass man heilen kann,

dass man dafür sorgt, dass man irgendwie den Menschen besser geht.

Genau, das ist natürlich das fairen Ziel,

aber ja, leider ist es

ja, ich suche

es einfach, ja. Ja, ich weiß

halt, kann man aus diesem Elfenbeinturm, wenn ich das

mal so nennen darf, irgendwie so runtersteigen, wieder auf die

Straße und mit beiden

Händen wieder so das ausschütten, was man da so

fabriziert. Ja, ich meine,

manchmal passiert das ja einmal, sonst hätten wir ja keine Computer

und... Ja, genau, also manchmal ist da

jemand, so ein Magier irgendwo so in den Turm

und macht dann da bumm oder diese Kugel

leuchtet und auf einmal der Turm fängt an zu leuchten und dann

gucken alle, oh, was ist das denn? Und dann, ah,

guck mal hier, ich habe was Schönes gefunden.

Ich glaube, ja, aber ich fürchte, das kann man nicht wirklich

weil, ich würde nicht fürchten, dass es bei Wissenschaft noch

schlimmer als bei Firmen oder Startups

ist. Es ist ja auch schon irgendwie so, dass man das eigentlich

nicht wirklich voraussagen kann,

weil, naja, es hängt halt davon ab, wie sich

die Zukunft entwickelt, die lässt sich schon mal nicht so gut voraussagen

und dann sind so viele Faktoren dabei,

die man nicht unter Kontrolle hat, dass

und bei Wissenschaft

hast du jetzt, das ist ja noch übler, du weißt ja,

also... Das ist alles Alchemie.

Naja, oder so ein bisschen Glück

auch. Also ich meine, natürlich ist es so, du kannst kein Glück

haben, wenn das nicht auch irgendwie funktioniert oder wenn du nicht

das Richtige tust, aber ob das, was du da tust,

jetzt irgendwie eine sinnvoll

erfolgsversprechende Geschichte ist oder nicht,

das hast du halt, würde ich sagen, zum großen Teil

gar nicht unbedingt unter Kontrolle.

Also andersrum, wenn wir es unter Kontrolle hätten,

müssten wir es nicht machen. Wissenschaft geht ja darum,

irgendwie, dass wir neue Sachen herausfinden

und dass wir die Frage beantworten,

funktioniert diese Methode oder so und wenn wir wissen,

ob diese Methode funktioniert, müssen wir es nicht machen.

Jaja, ich finde das immer wieder beeindruckend, wie man dann,

also es ist ja schon, das hat ja so ein leicht,

also ich würde

da leicht in Defizitismus verfallen, glaube ich.

Man muss ja da sehr motiviert sein, das dann zu tun,

wenn man sich im Grunde

ausrechnen kann, dass man

wahrscheinlich Pech haben wird und das heißt,

man gibt sich viel Mühe, aber es kommt nichts mehr raus.

Obwohl, auf der anderen Seite, das, was man tut, macht natürlich auch

Spaß.

Ja, aber gut, es ist schon dieses klassische

Klischee, dass die Hauptsache, die man

mit einer Promotion kriegt,

ist eine riesengroße

Enttäuschungsresistenz

und

das ist so.

Was war das?

Das ist, ich verwende Apple

und

es kommuniziert untereinander

und mein Telefon hat gerade meinem Kugel gesagt,

das war Klingeln, was manchmal gut ist,

in diesem Fall war es nicht so toll.

Manchmal kümmert sich Jochen auch

vorher darum, dass er das alles abstellt.

Ja, diesmal habe ich es irgendwie verpennt.

Ich glaube, ich mache das gerade mal.

Die ganzen wissenschaftlichen Probleme, wir kennen die Antwort

doch eigentlich schon alle, oder?

Ja, kennen wir die?

42.

Ach so, stimmt natürlich.

Ja, aber das ist halt,

es ist da so ein

frustrierendes Potenzial dabei, das glaube ich

auch immer, wenn man

guckt, was die Politik da auch mal machen möchte,

die versucht das dann zu ignorieren, da macht man so

Forschungsprogramme. Ich habe da von einem gehört,

es gibt ein großes Forschungsprogramm,

man macht das dann so, man glaubt,

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, also man hat irgendwie so eine Lösung,

irgendwie auch für, 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,

Schalter, man braucht gerade quasi dann so bottom-up

automatisch, das wäre ja voll gut, wäre viel billiger.

Bräuchte man da

nicht so super ultra-Reihenräume

und diese ganzen teuren

Gerätschaften und da hat man irgendwie,

die Idee hört sich

wirklich total super an und dann gab es

irgendein großes Forschungsprojekt,

das da, wo da auch

hundert, das sind, glaube ich, hunderte

Millionen irgendwie Euro reingegangen

und das Problem ist natürlich, wenn jetzt so viele

Leute daran arbeiten, also das lief

dann ganz lange und irgendwie musste immer

noch ein Doktorand, ein Armer,

der musste dann geopfert werden, diesem Drachen,

der sagte, der muss tatsächlich

an diesem Problem noch arbeiten, damit man sagen kann,

dass man an diesem Problem arbeitet, aber in Wirklichkeit

wussten alle schon seit einigen Jahren,

naja, das funktioniert aus prinzipiellen Gründen

grundsätzlich nicht, aber man kann ja auch nicht sagen,

es funktioniert nicht, dann kriegt man kein Geld mehr, ist auch schlecht.

Also haben halt die anderen inzwischen,

also was anderes gemacht.

Heimlich.

Ja, okay.

Das große Problem ist, dass man einfach

nicht mal sagen kann, okay, wir haben

herausgefunden, es funktioniert nicht und hier

ist der Grund. Das ist manchmal ganz schön

haarig, also ich komme ja aus der VWL

eigentlich und da waren dann so Experimente schon

problematisch, weil

da hat man irgendwelche Modelle gebaut, die dann irgendwelche

Prognosen gemacht haben und dann ging

dann vor allen Dingen sowas wie der internationale

Währungsfonds dann hin und hat dann diese

Modelle ausprobiert,

mit irgendwelchen Entwicklungsländern

und so, guck, klappt das mal? Und das hat dann ab und zu mal

dazu geführt, dass dann irgendwie so in so einem Land das Gesundheitssystem

dann zusammenbrach oder sowas.

Ist das vielleicht so ein Mittelgut? Und das war aber eigentlich

das Modell hat dann eigentlich

vorhergesagt, das hätte gut funktionieren sollen. Die haben sich dann alle

so ein bisschen die Haare gerauft, die wollten eigentlich auch, dass

dem Land eher gut geht, also es war jetzt nicht nur irgendwie so Weltbankdruck

oder so. Und dann haben die gesagt, Mist, das haben die jetzt

ja falsch gemacht, haben es beim nächsten Mal

anders ausprobiert. Und dann, ja,

das ist halt das Problem, wenn du halt das so was

ausprobierst auf Systemen, die auch heterogen sind

und ein bisschen chaotisch reagieren und

du weißt nicht genau, was muss denn da jetzt eigentlich genau tun?

Und das ist schon, glaube ich, nicht so einfach.

Ja, und noch schon was ist, wenn man das System

selbst beeinflusst durch die Vorhersage.

Also das klassische Beispiel ist, ich kann Aktienkurse vorhersagen

und es gibt immer irgendwelche Leute, die

irgendeine neue Methode entwickeln, um

Aktienkurse vorherzusagen.

Du musst das nur gut verkaufen und die antitypische Strategie

fahren.

Ja, oder beziehungsweise,

wenn sie die dann veröffentlichen,

dann funktioniert es plötzlich nicht mehr.

Ja, genau, aber alle, die vorher sagen,

das ist doch super, dann kannst du antitypisch fahren.

So was raus, raus.

Ja, das ist, ja.

Schon interessant.

Ja, ja.

Ich finde das halt sehr, sehr spannend, wenn man

so Sachen digitalisiert, welche Parameter man überhaupt

in diese Modelle einbauen müsste und wie man

es schafft, so

Reagenzglasbedingungen, selbst wenn es jetzt nur

in Anführungszeichen so ein Glas mit einer

Kultur auf einem Fensterbrett in der Sonne

ist.

Hui.

Wobei, da musst du sagen, also

ich bin auch eher die, es gibt ja, also

es gibt zwei Spezies der Modellierung,

Arten der Modellierung. Der erste ist

der Ansatz, wir wollen es wirklich möglichst exakt

und so weiter hinbiegen, um wirklich

die genaue, perfekte Vorhersage für dieses Glas

auf der Fensterbank zu treffen.

Der andere Ansatz ist, okay,

wir können das eh nicht,

sondern die Frage ist,

okay, wir sehen dieses Phänomen oder so was

oder was sind die minimalen Sachen,

die wir brauchen, um dieses Phänomen zu kriegen. Also das, was ich eben

beschrieben habe, was ist das minimale System,

was uns sowas produziert, wie in einem epileptischen

Anfall oder irgendwas, um daraus

irgendwie zu verstehen, was sind eigentlich die Zutaten,

die ich brauche. Und

ich gehöre eher zu der letzten Spezies,

weil es,

ich denke, ja, man kriegt eher

interessantere Erkenntnisse und es ist

in vielen Fällen auch wahrscheinlich der

gesündere Ansatz.

Sozusagen, weil man

da dann immer weiß, was man eigentlich getan hat

sozusagen und das bei,

Phänomenen, die man beobachtet, da

sieht man halt nur, was man halt sieht.

Ja, man kann es auch im Zweifelsfall einfach mal machen.

Also ich mache mir gar nicht

die Illusion, das Gehirn komplett

zu demolieren zu können. Das kann ich nicht, das kann niemand.

Und, na gut, es gibt ja jetzt gewisse

Projekte, aber

ja, ich mache mir diese Illusionen

gar nicht, aber ich mache mir, eventuell kriege ich

es hin, einen Teil davon,

mal ein Konzept zu verstehen,

welche Auswirkungen gewisse Strukturen haben

oder, ja.

Das ist so die

größte Hoffnung da.

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 das bezahlt haben, dass dann halt

irgendwie alle Forschungsergebnisse digital veröffentlicht

werden und dass das halt irgendwie

ja,

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.

Also 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,

die sich das zu Nutzen gemacht haben,

der große Vorteil ist, kein Mensch hat irgendwas,

ich habe nichts davon gehabt, ich würde nichts davon haben,

meine Software zu verkaufen, ich habe

was davon, dass ich ein Paper über meine Software

schreibe,

Leute das zitieren und

falls ihr schon mal gehört habt, Zitate sind die wissenschaftliche

Währung und das nützt dann

eventuell, um meine Karriere voranzubringen.

Das ist schon mal

gut, aber auch da gibt es noch Bereiche, wo

es Leute gibt, die ihre

Software zwar gerne

allen zur Verfügung stellen, aber schreibt mir bitte vor,

eine E-Mail-Authentikette, die zugeschickt und zitiert

mich bitte natürlich.

So komplett

irre Sachen zum Teil, dass

es einfach extrem schwierig ist, da

an sinnvolle Sachen ranzukommen

und auch

die Sachen, also ja, es ist

digital, aber ist es vernünftig

digital?

Und das ist ja nur

die Software-Ebene. Du hast noch die ganzen Formulare

dazu, das kommt halt auch dann noch dazu.

Ja, nee, also das,

die eine Sache, der Software-Ebene funktioniert

funktionieren

Teile der Wissenschaft vielleicht doch eher so wie eine große

wissenschaftliche oder eine große

freie Software-Community. Ja,

kann man so sagen.

Es ist vielleicht nicht sehr wohl organisiert und durchdacht

und so weiter. Es wäre gut, wenn die Leute vielleicht

mal ein bisschen Ahnung davon hatten, wie man eigentlich Software baut.

Statt nur programmieren zu können, so ein bisschen.

Auf der anderen Seite, wenn jetzt die eigentliche Wissenschaft,

also die Wissenschaft, wenn man jetzt um die Erkenntnisse

der Wissenschaft

der Wissenschaft redet, ist es immer noch ein sehr großes

mein Sandförmchen,

dein Sandförmchen und

großer Neid, dass man

versucht, die eigenen Erkenntnisse

möglichst, die eigenen Daten

möglichst auszuschlachten und all solche Sachen.

Hängt so ein bisschen vom Feld ab, also

gerade die Mathematik, Informatik,

Physik sind da so ein bisschen besser, aber

in der Biologie so ein bisschen.

Und ja, da ist es immer noch

ja, da geht es ja auch

wirklich darum, okay, ich habe diese Daten und wenn ich

diese Daten habe, dann bin ich

ja, dann muss ich damit alles Mögliche

machen, möglichst auf einmal und das große

eine Ding landen, sonst

funktioniert es nicht.

Oder funktioniert es nicht für die Karriere.

Also leider ist es wahrscheinlich auch richtig,

dass es nur so geht.

Was natürlich dämlich ist.

Obwohl aus der Physik

habe ich das auch manchmal gehört, dass da

die Leute dann in Vorträgen sitzen und

Fotos machen von dem Experiment

gehabt, sodass sie dann die ersten Theoretiker

sein konnten, die dann die Theorie dazu, zu einem

Experiment oder so,

also irgendwie.

Ja gut, aber dann machen sie jetzt zumindest nicht

den Vortragenden den

Ja, also natürlich,

das gibt es in allen Bereichen wahrscheinlich irgendwo,

das wird man nicht vermeiden können, aber

es gibt da schon große Unterschiede. Also gerade

in der Physik und Mathematik gibt es ja diese

Preprint-Kultur, also man muss jetzt vielleicht für die Leute,

die es nicht kennen, sagen, in der Wissenschaft

zählen hauptsächlich

so

sogenannte Peer-Reviewed-Veröffentlichung,

also Veröffentlichungen, die andere Wissenschaftler

für einigermaßen gut befunden

haben. Das ist ein gewisser Prozess. Dieser Prozess

dauert

in einigen Feldern oder Fächern

und je nachdem, was man macht, bis zu Jahre.

Also vom Einreichen

des fertigen Manuskripts bis zur

Veröffentlichung. Und in der

Zeit kann natürlich alles Mögliche passieren und andere

Leute können das Gleiche erfinden und so weiter und so fort.

Und da gibt es zumindest, gerade

in Mathe, Physik, Informatik und so weiter,

die Kultur,

dass man sagt, okay, wir haben das Preprint-Server,

das bekannteste ist das

Archive, wo man sagt, okay,

ich reiche das jetzt ein und gleichzeitig

stelle ich das schon mal frei zur Verfügung und

das Journal, bei dem ich das einreiche,

ist auch, kann

damit leben, dass ich das frei zur Verfügung stelle

und sage mir, nee, das hast du schon veröffentlicht, machen wir nicht.

Und ja,

das ist so langsam im Kommen,

jetzt auch in der Biologie,

das ist auch definitiv gut

und das führt natürlich auch so ein bisschen dazu,

dass man

die Sachen

wirklich direkt nutzen kann, aber

andererseits in der Biologie dauert es halt auch

einfach immer noch ewig, bevor man die Sachen überhaupt

veröffentlicht und

ja, wird egal, aber das ist jetzt

vielleicht auch nicht so.

Ja, du hast noch ein paar

Tab-Termines, glaube ich, unterlassen.

Ja, das kann sein.

Das war so eine spannende Geschichte.

Ja. Was fällt euch noch dazu ein?

Habt ihr noch was zu dem Thema

zu erzählen?

Ich kann auch was erzählen, natürlich.

Ja, du wenn du noch was auf dem Herzen hast.

Was die Situation angeht.

Genau, wir haben, wir haben, genau,

da haben wir noch gar nichts zu bescheuen.

Wie gesagt, ich habe eine wissenschaftliche Software geschrieben.

Okay, soweit zu furchtbar.

Das Hauptproblem ist natürlich jetzt, ich möchte auch weiterhin

als Wissenschaftler bezahlt werden und das heißt,

ich muss zitiert werden, wie ich gerade schon gesagt habe

und dazu muss ich das Ganze veröffentlichen.

Andersrum, Veröffentlichung und Zitate sind Geld,

also muss ich veröffentlichen.

Und ja,

die meisten Veröffentlichungen in der Wissenschaft

sind natürlich immer noch über eigentliche Forschung

oder klassische Forschung.

Ich habe irgendwas herausgefunden,

hier ist es und nicht,

ich habe hier eine neue Software geschrieben,

die ich ihr erlaubt, das zu machen.

Das war's.

Und ja,

diesen Prozess habe ich durchlaufen,

ich habe ihn erfolgreich durchlaufen,

ich habe es geschafft, dieses Paper zu veröffentlichen.

Es war aber zum Teil sehr interessant.

Ja, wo fange ich mal an?

Höflich formuliert.

Ja, höflich formuliert, genau.

Also der erste Schritt ist erstmal,

dass man ein Journal finden muss,

das überhaupt sagt, okay, ich akzeptiere,

wir akzeptieren solche,

solche Veröffentlichungen,

wir finden das gut.

Der zweite Schritt ist dann zu sagen,

ein Journal, bei dem Journal auch,

ja, etwas, natürlich das Ganze zusammenzuschreiben,

was übrigens,

also für die Leute, jetzt wirklich für die Wissenschaftler

unter den Zuhörern, bedeutend einfacher war,

als klassische Forschungsarbeit zusammenzuschreiben.

Ukulele.

Ja.

Und ja, dann,

gab es, wie gesagt, den 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.

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,

kein richtiges Paper,

also lehne ich es ab.

Obwohl das Journal sagt, genau solche Dinge

würden wir auch gerne haben.

Und ja, ich weiß nicht genau, was da schiefgelaufen ist,

ob das Journal dem Reviewer nicht gesagt hat,

guck mal, das ist okay,

oder ob der Reviewer es nicht verstanden hat, oder

ja, es war auf jeden Fall

ganz komisch, also am Ende bin ich hingegangen und habe,

also man sagt dann natürlich nicht, okay,

ich akzeptiere das, ich werde abgelehnt worden, ich gehe woanders hin

oder so,

sondern,

man

kann dann

erst mal das Ganze erwidern

und sagen, ja, du sagst, mein Paper

ist doof, aber ich sage, es ist gut, weil...

Und ja,

mein Argument bestand dann daraus,

dieses Urteil

von diesem Reviewer, der halt

gesagt hat, ja, es ist relevant für die Community,

neben die Kriterien vom Journal

zu stellen, dass er gesagt hat, ja, wir akzeptieren solche

Paper, wenn, und dann kam

fast genau das Gleiche, was

der Reviewer dann gesagt hat, und ja,

und am Ende ist es, hat es

dann auch ohne große Probleme geklappt, aber

es war irgendwie schon lustig.

Dann kommt das nächste Problem, also wenn man das alles

geschafft hat, also wenn quasi die

Wissenschaftler sagen, das ist okay, dann muss das

noch

in eine druckbare Form gebracht werden,

was sich jetzt erstmal ein bisschen albern

anhört, denn ja, gut, wir sind jetzt hier in

der Physik, Mathematik und ähnlichem, da sprechen alle

Leute latech und können

in der Regel selbst sehr gute

Sachen produzieren,

die man auch drucken kann, aber

ja, einige

ähm

Wobei, kurze

Abschweifung, ich glaube, für die, für diese

Physics Review Letters oder so, das ist

irgendwie ganz wichtig in der Physik, da gibt's

ein Word Template, das man benutzen muss,

die, äh... Nein, ziemlich sicher.

Also für Physical Review Letters

kann man definitiv auch Technik einreichen.

Und auch, also es geht

mittlerweile, es ist schon, es ist sehr weit verbreitet, man kann

latech einreichen, die Fahre ist halt, wird es eins zu eins

verwendet, also

das Einreichen ist die eine Geschichte, die

andere Sache ist, was macht das Journal

dann, was machen am Ende die Schriftsetzer damit?

Sie könnten natürlich, also im Prinzip könnte man

eigentlich hinsehen, wir haben einen Standardstil und den

wenden wir einfach an und dann braucht man gar keine Schriftsetzer

mehr. Das ist aber nicht der Fall.

In den meisten Journalen,

zumindest in meinem Feld, und das heißt,

irgendein Schriftsetzer hatte dann zum ersten Mal

in seinem Leben Computercode vor sich

und musste den

setzen. Oh, diese blöden

tabulatorischen Eindrückungen, das sieht aber doof aus.

Ja, also

das würde ja noch,

das würde ja noch, das würde ja noch, das würde ja noch,

das würde ja noch, das würde ja noch, das würde ja noch,

das würde ja noch, das würde ja noch, das würde ja noch,

das würde ja noch, das würde ja noch,

das würde ja noch, das würde ja noch,

das würde ja noch, das würde ja noch,

also, ja, das wäre auch ein Problem,

aber, also ja,

der Code war an verschiedenen Eindrückungsebenen,

unterschiedliche Codeblöcke waren an unterschiedlichen

Eindrückungsebenen, ja, das war auch ein Problem,

aber das war nur der Anfang, das hätte man noch

über, oder darüber hätte man noch hinwegsehen können.

Da gab es auch zum Beispiel, also was,

nach so drei Iterationen,

also, ich habe

ein,

das Resultat der Schriftsetzer

bekommen, ich habe gesagt, nee, das geht so nicht,

die haben es neu versucht, ich habe es bekommen, ich habe gesagt, nee, das geht so nicht,

und so weiter und so fort, nach drei Iterationen

hatte ich ungefähr raus, was da eigentlich

vor sich geht, und zwar haben die

versucht, meinen Code wie

Formeln zu interpretieren, und den

nach Formelregeln gesetzt.

Und Formeln gibt es halt zum Beispiel solche,

also für den Formelsatz gab es die Regel,

wenn die erste, die innerste Klammer,

die man macht, ist rund,

die nächste Klammer ist eckig, und danach

kommt geschweift.

Das haben die auch

radikal auf den,

das ist ein Formelsatz,

das kann man drüber schreiben,

das haben die aber radikal auf den Code angewendet.

Tja.

Und dann steht halt Sinus, eckige Klammer auf,

F von I, eckige Klammer zu.

Ja.

Ja, das

wäre jetzt

natürlich dann auch wieder irgendwie eine Anwendung

für CodeGolf,

ob man das dann so transformieren könnte,

dass es irgendwie,

am Schluss hat man dann halt noch so ein kleines CodeGolf-Ding,

dass das eine wieder in die andere Form

übersetzt wird, dass es halt dann

irgendwie ausführbar wird.

Ich mache eine Exkursion, ist das glaube ich okay?

Das war auch,

das war jetzt nicht CodeGolf, aber so eine

Programmieraufgabe,

das war, ich versuche es jetzt gerade aus dem Gedächtnis

zu reproduzieren, sagen wir es so wie

A, Klammer auf, B plus C

gleich, gleich

AB plus

BC, also das

Assoziativgesetz, und zwar

hingeschrieben, so wie man es auf Papier schreiben würde.

Das heißt, ohne mal,

mal Zeichen.

So, also man hat jetzt

diesen Code, das könnte man ja in Python machen,

und die Aufgabe ist jetzt, davor

etwas zu machen, dass dieser

Code, dass das wahr ergibt.

Okay.

Und man darf,

ja, ich glaube mit der Bedingung, dass man

ja A und B nicht einfach durch Nullen

ersetzen darf oder so,

und ja, also

mein Ansatz dafür, es war leider nicht

der schnellste oder der kürzeste,

war, dass man sagt, okay, wir machen erst mal

A, B und C zu Symbolen, dann funktioniert

schon mal symbolisches Rechnen, also mit Symbol.

Und dann überschreiben

wir noch für A, oder fügen wir

A eine

Call-Funktion hinzu,

die Call-Methode für A,

und sagen halt, dass sie das macht, was dann

rechnisch rauskommen müsste. Das heißt,

dieses A, Klammer auf, B plus C würde wie ein

Funktionsaufruf ähnlich interpretiert werden,

und dann funktioniert so das.

Was auch eine sehr schöne Sache in Python

ist, wenn man das einfach weiß, dass man

einfach alle Operatoren irgendwie beliebig

definieren kann, wenn man möchte,

und das auch für sehr viele Sachen nutzen kann,

ja,

und eben um die Säse zu lösen.

Plus mit O überschreiben oder so,

was machst du auch mit True, wenn du ein Bohl draufwirfst?

Wenn du das Pluszeichen

mit einem O überschreibst oder sowas,

also dann

könnte das vielleicht funktionieren.

Ja,

ich glaube, es musste vereinigt,

man durfte irgendwie A, B und C nicht überschreiben.

Ich müsste es nochmal raussuchen, was genau die...

Ja, deswegen das Plus.

Und dann den Bolian draufwerfen, dann

stimmt das schon.

Ja, gut.

Also ich hatte dann sehr viel Spaß mit den Schriftziffern eben.

Ja, das war auf jeden Fall schön.

Die Klammern anpassen,

einrücken, eben entfernen.

Ich habe auch irgendwie den Unterstrich per Hand gezeichnet,

das heißt, wenn man den Code kopiert hat, war der Unterstrich plötzlich weg.

War es irgendwie kein Unterstrich.

Das Bild war innerhalb von dem PDF dann

nicht mehr Text.

Genau, es war Text,

und anstatt des Unterstrichs, der auch irgendwie

unterschiedlich lang war, war da halt...

ein Leerzeichen, und da war eine Linie.

Also so per Hand

reingeseinigt.

Ein Wörter- und Zeichenobjekt.

Ja, genau. Aber wenn man den Text kopiert hat,

war das halt nicht da.

Dann hat jemand die Taste auf der Tastatur nicht gefunden.

Dann wurden die auch schön typografische Anführungszeichen

im Code.

Sieht einfach viel besser aus.

Ja, ich meine, es sieht tatsächlich viel besser aus,

es funktioniert leider halt auch nicht.

Aber gut, da kann ich jetzt...

Ja, aber das ist...

Das ist halt gut.

Das fand ich eben je nach Community so unterschiedlich,

weil jetzt so was in der Informatik oder so,

Pseudocode wird ja schon oft

in Papers auch reingeschrieben, aber...

Naja, ich war halt...

Was heißt leider?

Ich meine, es war ja...

Es gab Sinn, dass ich mich in eine Community

gewandert habe, die das nicht macht,

und die haben irgendwie so

ein solches Paper pro Jahr.

Und ja, das ist

nicht viel.

Ja.

Naja, aber das ist...

Also, ich weiß nicht, diese ganze Publikationspraxis,

dass man halt Dinge halt nur publizieren kann.

Oder ich meine, in der Informatik ist es halt auch so,

dass...

Ich meine, es gibt Ausnahmen, aber überwiegend zu der Zeit,

wo ich viel Papers gelesen habe, war es halt so,

dass die Leute...

Naja,

dass man eigentlich nur

mathematische Sachen veröffentlichen konnte.

Also Code und so eigentlich eher nicht.

Man kommt an den Code auf Anfrage

dann immer ran, wenn man die Leute anschreibt.

Aber

ist es halt nicht Teil der Veröffentlichung.

Ähm, dann

war halt... Also, ich meine, es führt halt

auch so ein bisschen dazu,

quasi, dass man...

Ich meine, an dem Paper, ob das jetzt stimmt oder nicht,

kann man den Paper halt nicht mehr ansehen.

Also, wenn man nur das überprüft, dann weiß man überhaupt nicht,

ob das jetzt funktioniert oder nicht.

Und wir haben dann halt auch teilweise

versucht, Sachen

ja, halt

sozusagen zu reproduzieren.

Und die Quote der Sachen,

die so wirklich überhaupt gar nicht...

Also, manchmal kann man vielleicht auch Sachen nicht richtig

reproduzieren, weil man es nicht verstanden hat oder selber

zu blöd ist, es hinzukriegen oder so.

Aber manchmal ist es relativ offensichtlich, dass das nie

funktioniert haben kann. Und die Quote

von den Sachen war recht hoch. Also, das war

schon erschreckend. Und dann denkt man sich so schon,

okay, ja, und das waren alles

ordentlich peer-reviewte Sachen,

die durchgegangen sind, die irgendwo veröffentlicht wurden und so.

Also, ja.

Ja.

Aber da muss man sagen, die Informatik hat es noch gut,

wenn man einfach so sagt, okay, ich hab hier das...

Man könnte zumindest mal hingehen und diese Standard-Einführung,

es gibt ja auch Tendenzen in die Richtung zum Glück,

dass man sagt, okay, hier ist jetzt bitte die Software,

ein Programm, was das macht, und wenn ich das ausführe,

das Programm verstehe,

und das Programm ist verständlich, dann

kommt das raus. Mit anderen

experimentellen Sachen geht das nicht.

Du kannst halt eben nicht einfach mal

ein Jahr ins Labor sitzen, da rumpipitieren

und welche Bakterien

wachsen lassen und gucken, ob das gleich rauskommt.

Also, kann man schon.

Das ist aber deutlich schwieriger.

Stimmt, ja. Stimmt, bei anderen ist es noch viel übler.

Ja, oder hat er O.

Das war jetzt das Land.

Hm, was machen wir jetzt?

Nächstes Mal.

Welche Länder haben wir denn noch?

Welche haben noch nie etwas von uns gehört?

Und was sind unsere bisherigen Ergebnisse?

Wir lassen das Modell einfach nochmal rechnen.

Ja.

Ja, dann haben wir ein paar so Programme eingeführt.

Das musste man dann so machen.

Sie haben dann tatsächlich das Modell nicht geändert.

Sie waren davon überzeugt, das Modell war richtig,

nur die Umstände waren bei zwei oder drei anderen

Informatikern auch nicht funktionieren.

Also, ja, da war ein bisschen Resistenzgang

gegen gute...

Ja, das ist halt...

Das ist halt so, wenn man einmal weiß, dass man richtig liegt,

ich meine, dann muss man einfach nur das häufig genug probieren

und irgendwann wird es schon funktionieren.

So viel zählt das doch, oder?

Ja, ja, ja.

Ja, SAP war das, aber das Structural Adjustment Program.

Tja.

Ja, ja.

Ja.

Aber sozusagen, also,

ich weiß nicht, wie arbeitest du

üblicherweise? Also in Notebooks oder

eher...

Ich versuche mir mittlerweile

angewöhnt, so ein bisschen anzugewöhnt in Notebooks zu arbeiten,

einfach, weil es gerade für, wenn man mit

Plots zusammenarbeitet, ist es halt

irgendwie einfach, ja, ganz praktisch.

Also, ich muss dazu sagen, ich komme ursprünglich,

ich bin, habe

sehr früh genug Plot gelernt und

das auch, was jetzt ein

Plotting-Programm ist, was nichts

mit Python zu tun hat, weil es

eine eigene Programmiersprache ist und

bin damit sehr zufrieden gewesen

und beziehungsweise bin auch in der Lage gewesen, alles zu machen.

Ich kannte einfach alle Kniffe und

habe mich deswegen sehr lange

geweigert auf Python,

Plots umzustellen, was natürlich

gewisse Vorteile hat, da man eben

nicht erstmal die Programmiersprache wechseln muss, um was

zu plotten und nicht erstmal ein Interface

schreiben muss und so weiter und so fort.

Insofern, ja, hink ich da so

ein bisschen hinterher, denke ich,

aber mittlerweile, ja, ist mein...

Also, ich schreibe die meisten

oder Sachen, die ich mehrfach verwende,

definitiv ganz normal mit

ja...

meiner Entwicklungsumgebung,

die da Unix heißt, also

Text-Editor und Konsole und was auch immer.

Genau, was für ein Editor bist du?

Ich nutze NeoWim.

Ja, ja, ein Wim hat auch immer rum.

Und, ja.

Und dann, wenn

die Sachen einigermaßen stehen und es wirklich nur noch darum geht,

entweder

schöne Plots zu produzieren oder

rumzuspielen in dem, was man jetzt

an Simulationen geschrieben hat,

dann wechsle ich mittlerweile dann auch

doch mal ins Notebook.

Andererseits,

also wenn es jetzt wirklich darum geht, Software

zu schreiben, die andere nutzen sollen,

findet das immer noch...

Ja, was heißt, findet das nicht im Notebook statt, aber

dafür ist es, glaube ich, auch nicht gemacht.

Ja.

Ja, ja, das ist auch etwas, was man

jetzt immer zunehmend hört, dass Leute das

halt benutzen. Und, ja,

ich finde es eigentlich relativ

einleuchtend, dass das jetzt sich so durchsetzt.

Was halt auch schade finde, ist, dass es irgendwie noch

immer keine so richtig

schöne,

schön bedienbare oder intuitive

Plot-Umgebung irgendwie

überhaupt gibt.

Also, es gibt ja so ein paar, die hast du

bestimmt schon alle ausprobiert. Also, in Matplot, du hast ja selber schon gesagt,

Alter, ihr oder sowas.

Mal reingeschaut, für Python.

Ich glaube, das ist für Scientific-Sachen gar nicht so

verkehrt, gerade für so statistische Plotting nochmal.

Habe ich aber selber auch noch nicht so viel benutzt.

Ja, gut. Vielleicht muss ich da auch nochmal reingucken.

Also, mich stört halt noch so dieses,

ich glaube, das wurde mal Plotting by Side-Effect

genannt von Matplotlib.

Ja, das stimmt.

Also, wahrscheinlich,

ja, vielleicht gibt es mittlerweile,

aber ich meine, ich habe noch nichts

davon gehört, dass irgendwas eben die

ganze, das ganze

Repertoire mitbringt, was man eben auch braucht.

Ich möchte halt, das Hauptproblem ist, wenn ich

jetzt irgendeine Plotting-Sprache

lerne oder irgendein Plotting-Interface lerne oder was auch immer,

möchte ich, dass es wirklich alles

kann. Irgendwann werde ich

dazu kommen, dass ich das brauche, dass ich

dieses Detail einstellen muss und wenn ich das nicht kann...

Plotly Express, das ist, glaube ich, noch ganz nett.

Und das heißt,

das ist so ein bisschen auch ein Problem,

dass natürlich normalerweise,

kann man irgendwie ein kleines Tool schreiben und dann

wird das immer größer und so weiter, aber

gerade bei Plot-Sachen, man muss

eigentlich schon mit etwas anfangen, was fast alles kann,

bevor man irgendwie eine Chance hat,

was anderes sich durchzusetzen.

Ja.

Ja, es gibt da, ich weiß nicht,

inwiefern Gnuplot das auch

übernommen hat, das gab ja dieses sehr einflussreiche

Wort, obwohl das, glaube ich, gar nicht so

furchtbar alt, Grammar of Graphics

irgendwie.

Und unter R

hat man ja mit ggplot2 irgendwie da so eine

Umsetzung von im Grunde.

Und das ist eigentlich ja schon sehr nett, aber ich

fürchte auch, in Python gibt es da nichts, was

irgendwie...

Es gibt

irgendwie Adaptionen davon

in Python, aber ob das jetzt

wirklich genauso gut ist, weiß ich auch nicht.

Es ist immer noch aktiv irgendwie unter Entwicklung.

Ich meine, so furchtbar schlecht ist

Matplotlib auch nicht, aber...

Nee, nee, nee, es ist...

Ich möchte jetzt einfach mal eine Parabel plotten.

So. Und jetzt...

Ja, und so hast du

die Gnuplot, was eine rein plot-orientierte

Programmiersprache ist, ist das eine Zeile.

Und ja, Matplot

muss ich... Ich weiß gar nicht, was ich...

Wie ich das am schnellsten hinbekommen würde.

Plotplot?

Ja, den müssen wir schon ein bisschen rumbasteln,

glaube ich, aber wenn du es einmal definiert hast,

so dann ist das auch so.

Wenn mir irgendjemand einfach für fünf Jahre Geld geben sollte oder so,

würde ich mich daran setzen, dass

ich einen komplett neuen Album in der Sitzung habe.

Cool.

Ja, wir haben noch

den Lieblingspick natürlich, der Pick,

der Folge oder sowas.

Was wäre denn deine Wahl,

dein bester Pick für ein zweites Modul?

Ich glaube, eigene Module sind wahrscheinlich

ausgeschlossen.

Oh, wenn du so dein eigenes Modul da

ein bisschen umschmachst, würde ich...

Jetzt musst du das aber kurz erzählen, was ist denn dein

eigenes Modul? Nee, nee, nee, mach ich nicht.

Das war jetzt...

Ich habe ja auch schon die ganze Zeit darüber geredet.

Ja, ich glaube,

das Lieblingsmodul ist wahrscheinlich immer noch

Numpal, weil es einfach...

enorm mächtig

die Sachen bringt, die

gerade

ja, in

Rechnen von großen Datenmengen

und auch ansatzweise, also nicht mal

sehr großen Datenmengen, aber auch kleineren Datenmengen

Dinge bringt, die

Standard Python nicht hat

und das, ja,

ich kann mir, glaube ich, kaum...

Es gibt sehr wenige Fälle, wo ich es nicht importiere.

Mhm.

Und was wäre dein Pick der Woche?

Ist das auch Numpal?

Ja, oder?

Was ist der Pick der Woche?

Ich weiß es auch nicht.

Ja, ja, fast.

Ja, aber ich wollte mir so eine kleine Kategorie einführen.

Pick der Folge oder sowas, ja.

Pick der Folge, ja.

Also, was macht es für mich zum Pick der Folge?

Das ist das, was ich diese Woche genutzt habe oder was ich diese Woche neu gelernt habe?

Ja, oder vielleicht irgendwas Aktuelles.

Das ist ja irgendwas, was so in letzter Zeit als cool aufgefallen ist.

Du musst nicht gar nichts Aktuelles, da kann doch was ganz Altes sein.

Einfach was so nochmal so.

Irgendwas Neues, aber...

Was soll der Standard-Tipp sein?

Ihr stellt Fragen.

Ich kann doch schon mal überlegen.

Ja, ja, ich habe nämlich auch noch nicht gefragt.

Also, was ich neulich zum ersten Mal verwendet habe, was ich dann wieder nicht verwendet habe,

weil es mich dann doch nicht glücklich gemacht hat, war NameTupel.

Ich habe aber gehört, es gibt jetzt Data Classes.

Da muss ich mich dazu unbedingt einlesen.

Ja.

Ich will nicht dazu sagen, aber es ist wahrscheinlich genau das, was ich...

Ja, ich glaube schon.

Ja, beziehungsweise es gibt halt für ältere Python-Versionen auch ein Modul,

das man einfach so installieren kann.

Also, es ist jetzt natürlich in der Standard-Python-Bibliothek mit drin,

beziehungsweise in Python selber, aber das Ding heißt Atris oder so.

Und das kann sogar noch deutlich mehr als die Data Classes.

Aber ich glaube auch, dass das Data Classes, da gab es auch in den letzten paar PDF-Treffen einen Talk zu,

wo halt auch von der Geschwindigkeit wurde gesagt,

das ist halt alles deutlich besser als NameTupel und so.

Im Grunde gibt es keinen wirklich tollen Grund mehr,

außer man braucht jetzt die Indizierbarkeit oder so,

um NameTupel zu verwenden,

weil man das mit Data Classes oder Atris halt deutlich besser hinkriegt.

Ja.

Ja, das ist auf jeden Fall eine interessante Geschichte.

Und dein Weg dahin?

Ja, ich würde tatsächlich...

Also, was ich in letzter Zeit nochmal angeguckt habe aus unterschiedlichen Gründen

und dann doch wieder gar nicht so schlecht fand,

ist Django Guardian.

Ist halt eine Weckentwicklung, was völlig anders ist.

Also, da geht es einfach darum, dass man halt häufig das Problem hat,

dass man Berechtigungen verwalten möchte auf bestimmte Zeilen in der Datenbank.

Und auf Tabellenebene ist es in Django schon eingebaut,

dass man da halt Berechtigungen vergeben kann

und dann halt auch diese Berechtigungen benutzen kann,

um irgendwie Zugriff darauf zu regeln.

Aber für Objekte, Einzelobjekte oder Zeilen geht das halt nicht.

Und Django Guardian erweitert halt das Django-Permissions-Modell darum,

dass das halt dann doch geht.

In dem da zwei zusätzliche Tabellen eingeführt werden.

Ja, der rammt sich dann relativ wüst aus, wenn man das macht.

Aber es ist...

Also, man denkt zuerst, das kann nicht gehen oder das ist halt furchtbar.

Aber nee, es funktioniert tatsächlich.

Und zwar sieht es ziemlich gut aus.

Und ja, genau.

Also, wenn man dieses Problem hat, sollte man sich vielleicht das mal genauer angucken.

Weil das sieht doch nach einer halbwegs vernünftigen Lösung aus.

Cool, kann man die Permission in dem Webzug endlich lösen.

Das ist irgendwie jeder darauf zugreifen, was er will.

Ja, ich picke Embedded.

Das habe ich irgendwie zwischendurch entdeckt.

Das ist so ein Anfänger-Security-Hinweis, was so alles sicherheitsrelevant sein könnte

in einem Code, den man so in Python geschrieben hat.

Da habe ich noch eine Sache, die mich überhaupt nicht interessiert.

Nicht ganz viel zu machen.

Das ist auch nicht so, glaube ich, so ganz tiefgehend.

Aber so für die ersten Sachen, dass man so ein bisschen was versteht, was man da tut.

Fand ich das ganz spannend.

Erst mal so reinzugucken.

Ja, cool.

Ich weiß nicht.

Haben wir noch irgendwas?

Ich weiß ja auch nicht.

Es ist ja ein Geschlossener.

Ich kann noch was erzählen.

Ich kann immer noch was erzählen.

Also ich meine, wahrscheinlich, wenn ihr mich lasst,

wir gehen nicht einfach fünf Stunden lang an die Schule.

Ja, klar.

Das ist ja richtig schlecht.

Aber vielleicht noch eine lustige Sache zum Thema, was kann man alles...

Ich glaube, ich habe mein Mikrofon vorgestellt.

Sorry.

Kann das sein, dass ich irgendwie lauter bin oder so?

Okay, gut.

Super das.

Genau.

Was ich auch noch gemacht habe, was vielleicht so,

weil es jetzt furchtbar schwer zu erklären sein wird, ist,

ich habe mich ja auch mit der Frage beschäftigt.

Also wir bauen Ökosystemmodelle, haben wir ja schon geredet.

Und irgendwann bin ich auf die Frage gekommen,

wie macht man das eigentlich richtig,

beziehungsweise wir sind auf ein Problem gestoßen mit einem Modell,

dass wenn ich jetzt, ich habe meine Spezies,

die da irgendwas machen, also von Tieren oder Bakterien oder was auch immer.

Und es ist keines passiert.

Also nehmen wir mal an, wir haben Elefanten und Giraffen

oder was auch immer, was da einfach vorzustellen ist.

Und, ähm,

jetzt,

mein Modell sagt immer, eine Spezies ist eine Variable,

also die Menge an Individuen einer Spezies.

Ähm,

und darauf baue ich ein ganzes Modell auf.

Und, ähm,

einfach weil ich diese Vereinfachung,

die Vereinfachung, die ich mache, dass ich sage,

alle diese, alle Elefanten sind gleich,

alle Giraffen sind gleich, was auch immer.

Und, ähm,

ja, eine Sache, die wir dann festgestellt haben,

ist, dass gewisse Modelle die Eigenschaften haben,

dass ich jetzt irgendwie aus Versehen,

es nicht hinkriege, alle Elefanten korrekt

in eine Spezies zuzuordnen.

Angenommen, die Hälfte davon sind blau und rot angemalt.

Nashörner.

Ja, nee, also Nashörner auch,

aber eigentlich sind es wirklich alles Elefanten.

Sie haben genau die gleichen Eigenschaften,

es sind nur die Hälfte von ihnen sind halt rot.

Rosa, nehmen wir rosa Elefanten,

ist immer gut, über rosa Elefanten zu reden.

Ähm,

und dann haben wir festgestellt, dass gewisse Modelle

dann andere Ergebnisse produzieren,

wenn wir das machen.

Also wenn wir irgendwie eine Spezies nehmen und die aufteilen,

künstlich.

Was nicht gut ist, denn ich möchte natürlich,

dass ein Modell, wenn ich dieselbe Situation

zweimal beschreibe, da soll auch tunlich dasselbe

rauskommen.

Und, ähm, okay,

was hat das jetzt mit Python zu tun?

Ich bin dann irgendwann hingegangen und habe

festgestellt, wir haben dieses Problem,

jetzt wollen wir verstehen, wann taucht dieses Problem auf?

Und dann habe ich mit Python und SymPy

automatisierte Tests

geschrieben für Modelle.

Ähm, das heißt, ich konnte eben einfach

ein Modell geben, hatte einige Rechnungen gemacht,

hatte dann eben die Hälfte der Elefanten blau,

angemalt und

mir automatisch gesagt, das ist jetzt ein gutes Modell

und das ist ein schlechtes Modell.

Also das ist auch eine, ja, eine etwas

exotischere Sache, die ich dann mit Python oder mit

genöst habe,

wo man auch sowas wie SymPy eben

benutzen kann, dass man solche Rechnungen

automatisieren kann, die man sonst,

sonst würde ich wahrscheinlich heute noch da sitzen

und das Ganze auf dem Papier durchrechnen.

Dann starten sich dann die Blöcke irgendwann, ja.

Ja, also das ist,

ich meine, und ich habe jetzt immer noch,

ich habe trotzdem einen Block nur vollgeschrieben

mit irgendwelchen Formeln.

Tja.

Ja, aber ist

dann sozusagen rausgekommen, woran das

lag, oder ist das irgendwie, das liegt

dann am Modell selber wahrscheinlich irgendwie?

Ja, also am Ende habe ich eine Regel gefunden für Modelle,

die genau das machen.

Das ist jetzt auch so gerade meine aktuelle

Arbeit, wo ich noch irgendwie gucken muss,

dass ich das veröffentlicht kriege,

oder beziehungsweise, dass die Leute das wertschätzen.

Und dann am Ende braucht man den Test nicht mehr.

Das,

eigentlich wäre es natürlich lustig gewesen,

wenn man sagen würde, wir finden es nicht heraus, verdammt, scheiße.

Aber hier ist eine Software, die euch zur Frage

annähernd beantwortet.

Hätte was für sich gehabt, aber nein, wir haben am Ende

eine Regel gefunden, wann genau es der Fall ist

und jetzt braucht man es dann nicht mehr.

Aber natürlich hat es enorm geholfen,

irgendwie ein Gefühl dafür zu kriegen, wann das passiert.

Ja, klar. Unter welchen Bedingungen,

warum und, ja.

Das erstmal so da ein bisschen rumzuspielen.

Ja.

Das war irgendwie...

Ja, eine Sache, wo ich dann simpel

wirklich gelernt habe, wertzuschätzen.

Ah.

Cool.

Ja, würde ich sagen,

dann sind wir doch schon so quasi durch, ne?

Ja, ich würde auch sagen, dann sind wir doch mal tatsächlich durch.

Vielen Dank, dass du da warst, Gerrit.

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

Ja, vielen Dank.

Hat mich auch gefreut, hier zu sein.

Einfach über mich selbst reden,

zwei Stunden lang, nenn ich ganz...

Ja, ja.

Fast.

Ja.

Ja.

Das schaut doch hier aus, auch in längeren Sachen, ja.

Und wir haben es tatsächlich geschafft, so ein bisschen wie der Luft,

der Wind ist gerade aufgekommen, vielleicht könnt ihr euch erinnern,

wenn wir uns heute aufgenommen haben.

Ich bin sehr gespannt, wie das mit den...

Ja, also es ging nicht. Wir mussten Ventilatoren aufstellen.

Nachdem wir in der letzten Episode das Audio schon versaut haben,

dachte ich mir so, gut, vielleicht können wir noch einen draufsetzen.

Ja, ja.

Nicht alle die Verzweiflung treiben mit Ventilatoren-Geräusch,

aber hoffentlich...

Ich kann noch mal fächern.

Hoffentlich wird das irgendwie einer der Post-Processing-Algorithmen

irgendwie magisch beseitigen.

Ja, wenn sie sonst beschwert euch bei uns und...

Ja, wisst ihr, ihr könnt immer E-Mails schreiben an

hallo-at-pison-podcast.de

und ihr könnt auch gerne kommentieren.

Auf der Webseite gibt es eine schöne Kommentarfunktion.

Ihr könnt uns überall abonnieren,

wo ihr gerade lustig seid, bei uns gewogen,

erzählt weiter, was es uns gibt und...

Ja, wo ihr auch immer gerade seid, was auf der Tageseite ist auch,

Tagessnachtzeit...

Schnappt nicht an Hitzschlag.

Ja, bisschen warm.

Ja, wir hören uns. Viel Spaß und bis später.

Tschüss.