Transkript: Python in der Wissenschaft
Vollständiges Transkript der Episode. Zeitstempel beziehen sich auf die Audiowiedergabe.
Ja, hallo liebe Hörerinnen und Hörer, willkommen zum Python Podcast.
Wir haben die 11.
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.
Hi.
Heute ist unser Thema Scientific Python.
Ja, vielleicht sagt er erstmal Hallo Gerrit
kurz und dann 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 dann hören, 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.
Mikrobieller Analyst habe ich mir aufgeschrieben.
Das hast du dir aber ausgedacht.
Wenn überhaupt Mikrobiell.
Okay, Mikrobielle Analytiker.
Ja, alles klar.
Und ja, nutze dafür Python, um Sachen zu simulieren, um Daten zu analysieren und manchmal auch um ganz komische Sachen mit symbolischem Rechner zu machen.
Und du spielst Golf.
Und ich spiele versetzt zur Zeit eigentlich nicht mehr so viel, aber ich habe Golf gespielt und ja.
Da reden wir wahrscheinlich, also keine Ahnung, wollen wir direkt darüber über Golf reden.
Die Code-Golf, ja, kommen wir gleich noch.
Ich wollte dann, wir machen einmal kurz ein bisschen News wieder beißen, wie wir das irgendwie so kennen und dann kommen wir irgendwie zum Topic.
Ja, auf jeden Fall.
Weil da mache ich hier schon mal die
erste Kapitelmarke.
Alles klar.
Ja, was gab es denn so?
Also wie irgendwas wie Pi Oxidizer oder sowas vorgestern so eine News raus.
Ja, das, äh, genau.
PyOxidizer ist irgendwie so eine Software, mit der es möglich sein soll, so eine Python-Applikation, ein Stand-Alone-Executable zu verwandeln, das man dann einfach irgendwo hinschütten kann und dann läuft das da.
Und das halt auch auf unterschiedlichen Plattformen, das heißt auf Unix ganz genauso wie auf Windows.
Und das ganze Ding ist irgendwie so Rust-basiert.
Also das packt den Python-Interpreter halt irgendwie in ein Rust-Programm.
Also das ganze Ding ist sozusagen irgendwie hinterher das, was auch dabei rausfallen würde, wenn man einfach ein Rust-Programm kompiliert.
Und ja, man kann alle möglichen Dinge noch mit dazu.
Man kann auch Rust.
Also kann man tatsächlich das Python irgendwo mithin schippen.
Also man braucht halt Python mitmachen, wenn man irgendwo was deliveren will, bei Enzybuild oder sowas, irgendwo auf dem Server gehen, hat man das dabei und dann läuft das einfach direkt oder auf Windows oder sowas, ne, für irgendwelche Nutzer, die halt damit nichts zu tun haben wollen, die können dann die Spy Oxygen auch so ein Direkt.
Ja, also das ist, das hatten wir letztes Mal auch schon und auch darauf nimmt auch quasi dieses Announcement, der Announcement-Blog-Post, den ich da heute gesehen habe, Bezug, dass es für Python keine so richtig konsistente Story dazu gibt, wie das denn jetzt irgendwie installiert wird auf einer Maschine.
Das wäre ja wie so ein Black Swan, also eine der großen Bedrohungen, die so der Python-Community
vorstellen soll.
Das ist tatsächlich genau.
Und da gab es einen Vortrag, also das war die Keynote von der diesjährigen PyCon irgendwie US von Russell Keys McGee, der sagte, naja, das ist halt eine potenziell fatale Bedrohung eigentlich für Python als Sprache, dass das irgendwann mal den Zugang halt abschneiden kann zu allem.
Also auf mobilen Geräten ist es ja jetzt schon im Grunde so, da kommt man halt mit Python nicht drauf.
Und 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 nicht so einen Unterschied, ne?
Das ist ja auch die Hauptzielgruppe, da ist dann egal.
Da macht man sich sein Virtual Environment und benutzt Pip und vielleicht noch ein paar andere Tools und so und hat damit kein Problem.
Aber für man jetzt einen Endanwender hätte draußen, der ist ja auch nicht mehr.
Ja, der will vielleicht gar nicht wissen, was kommt hinterstellt.
Genau, den interessiert das nicht auf das Python.
Genau, genau.
Der möchte einfach nur irgendein Problem gelöst haben und gar nicht ein Problem bekommen zusätzlich.
Und das ist natürlich momentan so ein bisschen doof.
Gerade für Windows.
Also für Unix gibt es da ja schon was.
Also ehrlich gesagt weiß ich davon auch nur, weil derjenige, der das entwickelt hat, hier auch in Disteldor, oder Pyran, die Disteldorfer Python User Group irgendwie gegründet hat oder betreut irgendwie Mark André Lemberg und der hat, genau, das ist uralt, das hat es irgendwie schon 20 Jahre alt oder so.
Ja, schon in den 90er schon.
Python 1, was war das?
Ja, ich weiß es nicht mehr genau, aber es ist auf jeden Fall schon sehr alt und war halt, er hatte das irgendwann mal geschrieben um damals die ganzen Hoster konnten nur Pearl, irgendwie da.
Pearl war davor installiert und aber man konnte mit CGI auch beliebige Programme sozusagen hochladen per FTP irgendwie auf seinen Webspace.
Und wenn das halt ausführbar war, dann hat das halt auch funktioniert und er hatte dann halt ein ganzes Python und seine komplette Applikation halt in ein Executable reingepackt und das dann halt als CGI-Ding laufen lassen können und konnte dann dann halt auch auf einem Hoster, der eigentlich nur Perl konnte oder so, halt seinen Python, seine Python-Skripte hosten.
Und ja, das hat auf Unix schon immer super funktioniert.
Ist jetzt auch inzwischen irgendwie läuft das auf aktuellen Python-Versionen, also ich glaube, seit dem letzten PyTDF-Sprint auch auf 3.7.
Und das ist ziemlich nett.
Das Ganze man kann da sogar noch so nette Dinge machen wie da das, es beruht irgendwie darauf, dass man, glaube ich, das Modul, was irgendwie ausgeführt wird, oder der Entry Point ist halt irgendwie in einem ZIP-File, das halt.
Ja, das wird sich jetzt gerade ein bisschen kompliziert an.
Also was man tun kann, ist, man kann halt 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 unsere eigenen Pakete und so.
Ja, weil das, weil halt das Binary irgendwie selbst hinten dran irgendwie schon ZIP ist, oder ich weiß es nicht mehr genau.
Aber man kann damit sehr, sehr lustigen Dingen tun.
Und von der Größe her, wenn man das irgendwie so ein bisschen optimiert, dann ist das, glaube ich, irgendwie so knapp 5 MB groß oder sowas dabei rausfällt normalerweise.
Und da ist halt die Standardbibliothek nicht komplett drin, aber zum großen Teil.
Ja, und ich weiß jetzt nicht,
aber jetzt gehst du eine nette Alternative, da hört man auch ganz nett an, ne?
Dieses Tentalone-Singlefile.
Genau, der Vorteil bei PyOxidizer ist halt, dass es auf Windows halt auch funktioniert.
Was mit PyRun halt nicht geht.
Hast jemand von euch von der PyCon 2019 irgendwelche Talks gehört, Talks gesehen, irgendwie was Interessantes noch mitgebracht?
Also die hat einige Sachen gesehen, die ich mich natürlich wieder interessierte, war irgendetwas ein bisschen Musik wieder, was dabei war mit Foxtot von Jessica Garso und war ganz nett.
Den hast du aber dann gesehen, quasi tatsächlich.
Ja, ja, ich habe irgendwie aber nur kurz reingeguckt, ich muss das immer noch auf meiner Liste zu Ende schauen.
Das gibt es ja da irgendwie auf YouTube so ein bisschen.
Ja, und ich habe gehört, Pinterest ist es bei Python 3 oder so.
Ach, ich dachte, die wären schon längst irgendwie umgestiegen, aber das war dann wahrscheinlich irgendwie Instagram oder so.
Da gab es so eine Riesendun, die auch viel zu veröffentlicht, glaube ich, wie sie da umgestiegen sind.
Aber bei Pinterest, dass sie auf Python 3 umsteigen, ist natürlich jetzt irgendwie so ein bisschen angeben, kann man damit jetzt irgendwie mehr, ne?
Ja, irgendwas lässt an dies umsteigen.
Ja, ich habe gehört, also Python 2, also der Nickdas, der war jetzt auch schon 2.
Mai mal bei uns hier.
Die haben jetzt ein Tutorial für Python 2.7 und der Python 3 veröffentlicht.
Das fand ich sehr lustig.
Ja, und auch diese Woche.
Ja.
Ne, aber ansonsten habe ich auch tatsächlich im Grunde nichts wirklich, was irgendwie an tollen Dingen passiert wäre.
Aber immerhin ist ja schon so ein bisschen was.
Ja, so ein kleines bisschen.
Sonst machen wir dann nächstes Mal einfach wieder eine große Newssection und fangen jetzt einfach an mit unserem Scientific-Thema.
Oder wollen wir erstmal mit dem Golf spielen?
Spielst du auch richtig Golf oder nur Code Golf?
Nee, ich spiele, wenn überhaupt Code-Golf.
Zurzeit auch ehrlich gesagt nicht mehr so viel.
Irgendwann, wenn man das so ein paar Jahre gemacht hat, hat man alles gesehen, was es zu tun hat.
Erstmal für die Untergebieter.
Was ist das denn überhaupt, Codegolf?
Also Codegolf 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 interessante, es in einer Programmiersprache zu machen.
Und ja, ohne Rücksicht auf irgendwelche Regeln.
Und das kann Spaß machen, offensichtlicherweise, dass man einfach mal alle Regeln fallen lassen kann und wildböse programmieren kann.
Ich kann mich noch
erinnern, da saß mal so ein Talk von dir, da war ich immer noch ein absoluter Anfänger und ich habe nichts verstanden von dem, was vielleicht.
Irgendwas funktionierte da, aber irgendwie, ja, okay, warum machen wir das jetzt?
Keine Ahnung.
Und ja, also die zweite Sache, warum man es macht, wenn wir mal dabei bleiben, ist, dass man auch wirklich was über die Programmiersprache lernt oder über das Programmieren im Allgemeinen.
Weil man eben auch darüber nachdenkt, gewisse Probleme mit ganz neuen Algorithmen zu lösen, zum Beispiel rekursive Algorithmen statt irgendwelchen Schleifen oder oder oder.
Und 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?
Ist das so richtig mit 18 Löchern oder wie schrieb man das?
Nee, 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 Shownote für uns, für eine Webseite?
Es gibt eine StackExchange Seite zum Thema Codegolf.
Das ist auch die, wo ich hauptsächlich aktiv bin oder war.
Es gibt andere Seiten, aber da muss ich ehrlich gesagt sagen, weiß ich gar nicht so viel drüber.
Okay.
Jetzt schaut doch mal bei StackEnchange vorbei für Codegolfen.
Ja, wie gesagt, ich packe den Link dann einfach dazu.
Und was sind so deine.
Hast du vielleicht Lieblingsaufgaben oder so?
Oder wo es was besonders irgendwie einen interessanten Lösungsweg hatte?
Ja, also interessante Lösungswege.
Ja, gut, ich komme aus der Physik-Mathematik-Ecke, also finde ich immer froh, wenn ich Sachen mit komplexen Zahlen oder so lösen kann.
Also klassisch sind irgendwelche Aufgaben wie, was ich weiß, irgendein Objekt bewegt sich in irgendeinem Raum oder irgendeinen Roboter oder was auch immer und man muss ihn steuern.
Und das kann man natürlich machen, indem man zweidimensionale Koordinaten speichert.
Das ist in der Regel aber kürzer, wenn man das Ganze in komplexen Zahlen löst.
Und ja, da gibt es dann einige Aufgaben, wo man das sehr lustig lösen kann und am Ende natürlich überhaupt nicht mehr, wenn man nicht eingeweihtes versteht, was da eigentlich passiert.
Und ja, also ansonsten, keine Ahnung.
Ich glaube, das Interessanteste, was man jetzt so auf 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 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 Semikola getrennt, mal fünf oder so, weil ich das fünfmal ausführen möchte und dann ein Exec darüber zu jagen.
Also genau, die ersten Jochen hängen sich schon die Fußnägel hoch.
Und ja, das ist dann, genau solche Sachen passieren dann andauernd, dass man irgendwie feststellt, wie wenig Leerzeichen man eigentlich in Python braucht, wenn man denn unbedingt möchte.
Also es gibt so Späßchen, dass man, wenn man hinter irgendwo eine Klammer aufhört und dahinter kommt ein Keyword oder so, dann kann man die einfach direkt aneinander schreiben oder Zahlen oder eigentlich irgendwas.
Ich glaube, die einzige Unterschied, ich muss immer aufpassen, wenn es mit E anfängt, weil das könnte ja 1E8 wäre dann 10 hoch 8.
Das darf man dann nicht machen, aber alles andere kann man einfach wild aneinander klatschen in vielen Fällen und es wird richtig interpretiert.
Dann gibt es so schön, ich weiß nicht, ich glaube in Python 3 funktioniert das nicht mehr.
In Python 2 funktioniert das noch, dass man verschiedene Einrückungsebenen mit Tab und Leerzeichen hat.
Also die erste Einrückungsebene wäre ein Leerzeichen, die zweite Eindrückungsebene war ein Tab und dann kam irgendwie ein Tab und ein Leerzeichen als Eindrücken und so weiter.
Aber gut, wenn man dreimal einrücken muss, dann ist es in der Regel kein Codegolf mehr.
Ja, genau, muss man dann überhaupt einrücken.
Ich meine, es gibt auch Semikolon, das ist doch auch gut.
Man muss es manchmal schon machen.
Also manchmal ist es schon das Beste.
Aber zwei Einrückungsebenen sind schon sehr, das sind dann schon wirklich ausgefallenen Programme.
Da kann man dann schon die ganze Fakultät mit abbinden.
Und ich meine ich jetzt nicht das mathematische Problem, sondern das, was man in der Uni dann so besucht.
Ja, okay.
Und das heißt, du machst dann sowieso nur einnamige Weihnachten.
Also lesen kann man das dann wahrscheinlich nicht mehr.
Nur es geht tatsächlich darum, wie viel Byte passt denn dann so ein Algorithmus.
Also lesen ist die eine Sache, die man nicht mehr kann.
Manchmal hört das auch gar nicht auf.
Also auch so die klassischen Ansätze für viele Sachen sind, dass man jetzt sagen kann, okay, ich kann jetzt meine Daten, ich kann jetzt einen interessanten Algorithmus entwickeln, der das die richtige Lösung für irgendwas findet.
Ich kann aber auch, jetzt weiß ich gar nicht, ob es Bogus Sort oder Stupid Sort oder eher ist auch wirklich geil, es gibt diesen klassischen Sortieralgorithmus, ich nehme meine Daten, ich mische sie, ich gucke, ob sie sortiert sind.
Wenn nicht, mische ich sie nochmal.
Solche Ansätze.
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 ein Lieblingsansatz, dass man sagt, okay, wir versuchen das jetzt schön in Brute Force zu lösen, statt, weil
in der gewissen Wahrscheinlichkeit ist er dann sofort fertig.
Ja, ich habe letztens auch irgendwo einen neuen, es gibt ja diverse lustige Sortierverfahren.
Ich habe letztens eins gesehen, das fand ich auch wieder sehr cool.
Sehr schön, das besteht einfach darin, ich glaube, das nennt sich irgendwie Sleep Sort.
Und wenn man halt Zahlen hat, dann macht man das mit Async-Await-Notation halt, man awaitet einfach die Zahl.
Und das ist dann halt sortiert, weil naja, je größer die Zahl, desto länger muss man natürlich, wartet man halt.
Also das ist auch sehr, sehr cool.
Mein übrigens Sortieralgorithmus ist der LSD Radix.
Das ist immer schön, der hört sich auch besonders toll an, wenn man den so visualisiert.
Audi fiseliert, wie nennt man das?
Wenn man so einen Algorithmus, es gibt ja so ein.
Vertont.
Ja, ja, ja, wahrscheinlich.
Vertont.
Gut.
Ja, wir verdonen für euch ja wieder heute eine neue Folge.
Ja, jetzt habe ich keine Ahnung, was LSD Radix macht, aber gut.
Der baut so Buckets auf und so zählt dann die ganzen Sachen immer in so Buckets rein und kippt die dann immer wieder auseinander und dann.
Ah, okay.
Ja, also von bis 1,9 oder sowas und dann kippt ihr die auseinander.
Und dann funktioniert das
ganz gut.
Eine Sache, die mir jetzt noch gerade angefangen ist, wir warten auf die Eingabe und wie lange es dauert.
Also auf CodeCoff Stack Exchange gab es dann auch zwischendrin mal so eine Kategorie von Fragen, die haben es auch ganz schnell aus Gute.L abgeschafft.
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 die Aufgabe, einen Zufallszahlengenerator zu bauen.
Und ja, meine Lösung war dann, 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 Wartsortier-Algorithmus.
Ja, das klingt gut.
In einer besonders chaotischen Umgebung könnte das relativ schnell passieren.
Ja.
Wie ist das eigentlich bei so Codegolf-Community macht die nur Codegolf?
Es gibt ja noch so andere lustige Programmier, weiß ich nicht, was soll man sagen, so Knobel-Ecken.
Ja, also die machen auch andere Sachen.
Quins zum Beispiel oder also Programme, die sich selbst ausgeben.
Oder auch Codegolf mit Einschränkungen.
Also man kann natürlich immer Codegolf machen, aber auch so lustige Sachen war, das war noch eine Aufgabe, multipliziere jetzt mal bitte zwei Zahlen, aber verwend dem ganzen Code keine einzige Zahl.
Da muss man erstmal die Zahlen irgendwie in römische Zahlen darstellen, also so I, I, I, I, I, ja, sind 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.
Und man muss halt irgendwie auch gucken, wie man das mit der Darstellung macht, dass man das dann regelkonform macht, aber.
I, I, I, I, I ist fünf.
I, I, I.
Ja, römische Ziffern, rechnen mit römischen Ziffern sehr, sehr böse.
Ja, ja, XXX.
Ich habe irgendwann mal auch, glaube ich, im Blogpost dazu gesehen, wie jemand irgendwie mit römischen Ziffern schriftlich dividiert hat oder es war echt so das.
Also, sagen wir mal so, es ist nicht so unmittelbar einleuchtend, wie das funktioniert.
Ja.
Aber ja.
Ja, der Gutköpf ist im Prinzip so eine Abstraktionsebene, um mit der Sprache Schabernang zu treiben.
Also um wegen die Komplexität von Algorithmen zu ergründen und um vielleicht so ein bisschen die Geschwindigkeit da so rauszuholen und vielleicht auch sowas.
Ja, oder auch die gerade, also sich einfach mit so Gedanken zu machen.
Also sowas wie Slow Sort oder Sleep Sort oder was auch immer sind ja Sachen, die einfach mal existieren, dass man sich, dass man überhaupt erstmal sieht, wie gut man es hat.
Und mit so echten Sortieralgorithmen und auch einfach das Konzept eines Algorithmus besser versteht.
Und ja, 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 ähnlichen.
Ich habe tatsächlich einen Algorithmus, den ich 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, also du hast jetzt gerade das Thema direkt fast schon wieder mit aufgemacht und ich glaube, wir zeigen den nächsten Chaptermarkt.
Wenn du sagst, du hast den jetzt Scientific in der wissenschaftlichen Arbeit eingesetzt, was ist denn jetzt so Scientific Python?
Also jetzt nicht SciPy oder was, eben sagt das, sondern was bedeutet das und warum macht man das?
Was macht man da und warum ist das so nett oder doch nicht?
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?
Es ist die wahre Kunst der Wissenschaft.
Ja, also ich glaube, gibt es so richtig qualitative, rein qualitative Arbeiten 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.
Ja, ja gut, aber das ist ja auch nicht mein Bereich.
Also klar, es gibt natürlich Bereiche, in denen das gibt und es auch sinnvoll ist und schön und gut, aber also ich hab, ich glaube nicht, dass ich jemals hier irgendwas beruflich begegnet bin, das rein qualitativ war.
Okay, also ein TTF, Scientific Pi, 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 oder theoretisch zumindest, 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 fest.
Ja, und dazu muss man natürlich programmieren und das macht man natürlich gerne in Python.
Also zumindest ich.
Andere natürlich nicht.
Das muss man auch 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 hat mit solchen Tools wie NumPy lösbar, die die entscheidenden Sachen, die dann wirklich schnell laufen müssen, in einer hartgecodeten, schnell laufenden Variante machen.
In einigen Fällen gibt es da nicht und das gab dann auch bei mir der Grund, warum ich so eine Sache dann selbst geschrieben habe.
Um nochmal irgendwie so eine Überleitung in den Raum zu einem gewissen Thema zu schmeißen.
Ja, ja, ich wollte gerade noch auf die experimentalen Mathematik.
Also ich weiß nicht genau, ob ich das jetzt irgendwie falsch assoziiere, wenn ich experimentelle Mathematik fand ich auch immer sehr interessant, weil ich fand, das war immer so eines der besten Argumente dafür, dass Mathematik unabhängig davon existiert, also nicht wirklich erfunden wird von demjenigen, der sie betreibt, sondern eher so auch entdeckt wird, dass man da halt, also wenn 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, oder habe ich mal gehört, dass Leute so experimentelle Mathematik nennen.
Oh, da weiß man.
Man sucht halt einfach quasi in dem Baum aller oder in dem Graphen aller Umformungen, die man halt irgendwie machen kann, halt nach einem Pfad von Sachen, die man schon bewiesen hat, zu einer Geschichte, die man halt beweisen möchte oder so.
Dann sieht es halt dann doch eher so aus, als ob man das entdeckt halt, wie mit einem Mikroskop oder so und nicht so sehr irgendwie konstruiert.
Ich glaube, das fällt dann unter Computerbeweise.
Das ist noch nicht mal das, was ich jetzt, also das ist wahrscheinlich auch nicht unzutreffend, wenn der Begriff Experimentalmathematik ist nicht Kopiergeschütze oder beziehungsweise Trademark von irgendwem, der sagt, das ist jetzt genau das.
Die Sachen, die ich mache, gehen da, 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 Modelle, die meisten Modelle, Aufstellungen oder die kann man als Gleichung formulieren, das ist eine Differenzialgleichung 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.
Also man kann es schon machen, aber auch das ist dann nur eine Augen.
Nee, also im Zweifel geht es wirklich nicht.
Wir haben zumindest seit 100 Jahren keinen Weg gefunden, das zu machen.
Man kann eben höchstens eine Näherungsweise Lösungen machen und auch das will man nicht mit Stift und Papier machen, denn 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 diese Funktion oder 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 meinen Programm laufen lassen habe mit genau den falschen Startbedingungen oder was auch immer und mein Algorithmus.
Ja, weil man in irgendwelche numerischen Geschichten in Stabilitäten gelaufen ist oder weil.
Ja, oder einfach, also gut, 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, wenn man 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.
Ich habe jetzt diesen ganzen Adaptationslayer noch nicht so ganz begriffen.
Also man hat jetzt ganz komplexe, große, komplizierte Systeme und wenn ich jetzt das irgendwie jetzt vorstelle, sagst du irgendwas von Chaos, sagst du was über Zeitstrahlen und Funktion, die da irgendwie durchdrücken, 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 jetzt in einem Mikrobial bialen.
Mach mal ein Beispiel.
Also ich hab, genau, ich, ich hab Bakterien, zum Beispiel, also ja, ich mache mal bakterielle Ökosysteme, also ich habe meinen Topf, da schmeiß ich, da habe ich Nährstoffe drin, das heißt Bakterien können da leben und dann schmeiße ich.
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 Kilobakterien mit unserem Darm rum und so.
Und um drei Mal Karies.
Ich weiß gar nicht, ob das ein Bakterium gesagt hat oder was das, was da ist.
Das war immer so aus, ein Kumpelbaktus oder wie von so.
Ich habe keine Bantanas früher so aus, da gab es dann diese Entschieben, die liefen dann irgendwelche Dinger, die sah 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, hab 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.
Also hört euch jetzt doof an, also du hast das gerade gesagt, es gibt irgendwelche 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.
Also ja, das wäre so die Karikatur des Ganzen, aber es ist gar nicht so falsch.
Also es viel ist wirklich, wir haben einen Top-Flüssigkeit, da sind Nährstoffe drin, da schicken wir einen Backparakterien 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 mit, weiß ich nicht, ihr gebt das Ganze auf Papier, guckt euch die Farbe an oder zählt irgendwas mit irgendwelchen Sensuren 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 so ein Glas und nicht in das 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.
Zeit für die ganzen Bugs herkommen.
Ja, ja.
Genau, deswegen, ich bastel virtuelle Bakteriengläser.
Und diese virtuellen Bakteriengläser werden dann beschrieben durch Gleichungen.
Die zum Beispiel bei Differenzialgleichen wird die Frage, okay, ich habe jetzt meine Bakterien, mein Zustand, mein Zustand ist dann fünf von der Sorte, sechs von der Sorte, sieben von der Sorte, so viele Nährstoffe 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 hundert 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 ja 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 stirbt 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 es 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 rum.
Das ist eine Antwort.
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?
Welche Bakterien, Spezies überleben?
Unter welchen Bedingungen?
Wovon hängt das ab?
Wie beeinflussen die Bakterienspezies einander?
Und ja, wie verhalten sich eben solche Systeme im Allgemeinen?
Also ein geschlossener Game-of-Life-Kreislauf.
Ja, und ein bisschen realistischer.
Aber ja, Game of Life ist auch durchgeführt.
Echte zelluläre Automaten, ja.
Ja, nur dass wir halt nicht mehr.
Ja, also zelluläre Automaten sind halt ein Typ von Simulation, der von Zahlgleichung 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 zusammenpacke, 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, wie reagieren sie auf Umwelteinflüsse.
Also eine häufige Frage ist zum Beispiel Antibiotika.
Ich habe einen 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.
Und Fressfeinde hat sich toll angefangen.
Fressfeinde ist in jeden Fall das falsche Wort eigentlich.
Also die umgleich Erdstoffe konkurrieren.
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 Fernseher 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 konnte 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 Fernsehen.
Also wir sind eben, solche Ökosysteme zum Beispiel zu simulieren, ist verdammt schwierig.
Aber es hört sich sehr nützlich an.
Also mal so.
Ja, deswegen versuchen wir es ja auch.
Und deswegen gibt es hoffentlich Leute, die uns dafür bezahlen, das zu machen.
Ja, und das ist so einig.
Je wieder diese
große Sponsurenaufrufe freiheit sich irgendwie in so.
Nee, aber ich finde, das klingt halt schon so ein bisschen danach, wie man hat irgendwo einen ungekippten Weiher und dann geht man da halt mit drei Gläsern irgendwie unterschiedliche Bakteriensocken hin, schü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 so rausfinden könnte, wie das geht.
Ja, aber ja.
Und das geht alles mit Python, das ist ja wie das sollte.
Also mit der schönen Schlange der Abenteuer.
Also, genau, ja.
Also.
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 jeden Fall.
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 meinem, 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.
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 macht das bitte mit den zweiten Elementen und so weiter und so fort, dann ist das eine vektorisierbare Option, Operation.
Ich glaube,
das hat niemand verstanden, der nicht wusste, was woher eine Vektoroperation ist.
Verdammt.
Vielleicht nochmal wie du kurz.
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 ihm wegen, ja, musst du links, dann musst du rechts, dann kommst du irgendwann.
Nennt 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 gerade richtig hinkriegen.
Multiple Data, nee, Moment.
Multiple Input, Single Operation.
Single Operation, Multiple Data.
Also ich mache.
Single Input, SIM D, irgendwas insgesamt.
Genau, also da ging.
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.
Oder der Datensatz wäre 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 der 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 elementweise miteinander oder addiere sie elementweise miteinander und dann kriege 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, also ich weiß jetzt auch nicht, ob ich mich da ganz komplett korrekt daran erinnere, aber ich meine, ich glaube, der Witz bei dem Vektorisieren ist eigentlich, dass man, man hat ja mehrere Register irgendwie und man kann man das halt sozusagen in gewisser Weise parallelisieren, diese Addition oder Multiplikation von Arrays, indem man das halt in so viele Teile zeigt und dass man halt alles irgendwie gleichzeitig macht.
Oder diese Dinger sind irgendwie, oder man kann halt mehrere Dinge in ein Register packen, weil die nicht mehr so ein bisschen mehr.
Naja, das kommt noch, ist noch ein Vorteil.
Bei Grafikkarten und ähnlichem könnte ich das dann tatsächlich paralysieren, stimmt.
Also gerade dieses Rechnen auf Grafikkarten, wenn man das immer, was man immer wieder gehört, das sind 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 irgendwas Neues programmieren möchte in Python, mir das 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 den Python-Nutzer zur Verfügung, ohne dass der sich darüber kümmern muss.
Also wir stellen sie nicht so 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 Fortran oder was auch immer von niedrigen Sprachen das zu machen.
Ja, ich glaube auch, ich habe mal irgendwie gehört, dass das halt irgendwie der Grund ist, warum Fortran immer noch so eine große Rolle spielt, weil Fortran, bei Fortran 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 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 dass man es irgendwie parallelisieren kann, sondern es kann halt an einem die Programmlogik kaputt machen, wenn man das halt nicht weiß, dass das geht und in Vortrang geht das halt nur so und daher.
Aber ja, keine Ahnung.
Also mittlerweile stimmt das glaube ich nicht mehr.
Mittlerweile, oder nicht mittlerweile, ich glaube seit 15, 20 Jahren.
Gibt es in C,
dass man dem Compiler sagen, Restrict-Keyword,
ich hoffe, ich mache es jetzt richtig.
Muss ich wahrscheinlich schämen, dass ich nicht kenne, was eben genau das sagt, okay, also das klassische Problem ist ja, wenn ich, um das, was du bei mir 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, in einem vorigen Element der eigentlichen Schleife.
Also ich habe irgendwie mein, nehmen wir wieder Vektoren.
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 Vektor ausschreibe und das auch tatsächlich möchte, warum auch immer, welch C-Programmiere möchte ich sonst anscheinend.
Und der Compiler geht davon aus, dass er das nicht weiß und dass er nicht das möchte und deswegen optimiert das nicht weg.
Wenn ich jetzt aber sage, dieses Array ist restricted oder restrict, dann passiert das nicht.
Ja, ja, klar.
Also man kann das mittlerweile in C lösen.
Ja, genau, natürlich.
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 in Assembly schreiben und
immer mit Goto-Schleifen immer hin und her springen.
Da war Assembly doch.
Nee, Assembly ist, glaube ich, noch schlimmer, da gibt es keine Goto-Schleife.
Ja, also springst du Adresse oder sowas.
Genau, das.
Ja.
Also auf jeden Fall, ja, also 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, ich gemacht habe.
War jetzt Sachen, die ich selbst gemacht habe, ist, dass es in vielen solchen Simulationssachen das Problem ist, dass man es eben nicht vektorisieren 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 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 und nicht vektorisierbar und trotzdem schnell in Python.
Ja, das kam irgendwie.
Wo gibt es das zu finden?
Oder ist das alles private oder PowerPoint?
Das gibt es zu finden, das ist schöne freie Software.
Ich habe sie, also es sind eigentlich drei Software.
Das erste ist JIT-Cody, das steht für Just-in-Time Compilation for Ordinary Differential Equations.
Also Ordinary Differential Equations sind gewöhnliche Differentialgleichungen.
Just in Time Compilation sagt eventuell dem neigten Hörer was.
Das ist dieser Aspekt, dass wir, man 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, was gut, ich habe es, als ich das gemacht habe, weil konnte ich das natürlich schon irgendwo absehen, dass das für viele Leute sehr nützlich ist.
Insbesondere als da wir uns damals auch in 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 Sympai, also das ist jetzt Symbolic Python, das wird jetzt wahrscheinlich noch ein Exkurs.
Eine schöne Möglichkeit gibt es diese Gleichung einzugeben.
Also Sympai 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 es.
Also normales Rechnen im Computer macht man ja klassischerweise mit Zahlen.
Eins plus zwei, genau, aber Sympai rechnet mit Symbolen, also ganz abstrakten Objekten wie X.
Und das Schöne an Sympai ist, dass es oder auch generell an Symbolischen rechnen, das hat jetzt Sympai nicht erfunden.
Also das Schöne ist, dass es dann exakt gewisse Sachen lösen kann.
Zum Beispiel, wenn man sagt x plus x, kommt da nicht, 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 sich das, 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 Rechnending 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 dumpfe Routine, Aufgaben durchzurechnen und es einfach als Eingabemaske zu nutzen oder einfach auch solche Ausdrücke zu analysieren und zu gucken, okay, ja, welche Variablen 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, wenn man das dann 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.
Weil das mache ich nämlich sonst immer total mühselig von der Hand und muss mir den Syntax zusammenklauben, irgendwo her.
Nee, das
scheiße, ich sogar sagen würde, der x plus x gleich x Quadrat oder sowas.
Dann, dass man dann tatsächlich ein Latech-Drech irgendwie kriegt.
Ja, ja, der hat einen Latech-Printer.
Ich habe damit noch nicht viel gearbeitet, insofern kann ich dazu nicht so viel sagen.
Also 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 Simpai 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.
Ja.
Aber auch solche Sachen gehen ja.
Man kann es auch ausgeben, wenn man 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 nämlich irgendwann mal über so ein Programm beschrieben, das heißt irgendwie LP-Solver oder sowas?
Linear Programming oder sowas.
Achso, ja, lineare Optimierung.
Da gibt es einige Software zu.
Ich glaube, ich meine, da bin ich jetzt wenig Experter, 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, aber vielleicht konnte man das dann kombinieren oder sowas.
Es hat fetch, ja.
Ich weiß nicht, ich glaube, das Standardpaket so viel so Konvexoptimierung ist CVX-Opt oder so, damit habe ich schon mal ein bisschen was gemacht.
Es gibt dann auch 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 nennen zu findest, da ist man dann eine ganze Karriere mit beschäftigt.
Ich weiß nicht, ob das bei dir 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.
Das ist, was es 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 kenne 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, Mathematik.
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, sag ich mal, die dazu dienen, das ansprechender zu machen, ob das jetzt gut ist oder nicht.
Sei dahingestellt.
Aber zum Beispiel ist, dass der Zirkumflexoperator Potenzierung macht, statt Sternchen, Sternchen.
Also Sternchen-Sternchen macht auch noch Potenzierung, aber man kann es jetzt auch.
Okay, das wusste ich gar nicht, dass sie das geändert haben.
Genau, also solche Änderungen sind da drin, es sind viele Sachen automatisch geladen als Pakete in so einem Standardnamensraum.
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 Standardnamensraum 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 einen, war man jetzt den Zirkumflexoperator 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 Sympai.
Andererseits eben Sachen Gleichung lösen.
Was wie gesagt die Sache ist, die ich nicht mache, auch wenn sie irgendwie alle erwarten, sondern ich nutze es wirklich eben, um 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 kurz zurückbezug, ist super zum Codegolfen.
Wie gesagt, alles wird in die, aber viele Dinge sind im Standardnamensraum.
Das heißt, eine Lösung, ein Python-Programm kompakter zu machen in Codegolf, ist dann, mach es in Sage.
Auch nicht schlecht, ja.
Das ist natürlich keine Python-Lösung mehr, aber ja.
Ja, interessant.
Also, okay, aber Symphy scheint auf jeden Fall dann, wenn man, wenn man irgendwie so Gleichung 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 SciPy 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 da nicht mehr, weil das komplizierter ist.
Da habe ich dann meine eigenen Integratoren implementiert.
Ja, dann, gut, es gibt viele Sachen für Datenfahrer, 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 so viel erzählen.
Kann ich auch gar nicht, weil ich in der Regel nicht so viel mit Daten zu tun habe.
Oder 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, mal erstmal irgendwas, ist immer, 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 zusammenzunutzen, weil man am Ende eine vollwertige Programmiersprache dahinter hat.
Was immer so das Problem mit anderen Sachen ist, die also ja, dass man eben irgendwann an die Grenzen stößt, dass man gut viele häufig braucht man die Sachen natürlich auch nicht, häufig braucht man nicht.
Also, wenn ich jetzt, was weiß ich, Leute, die MATLAB oder was auch immer nutzen, ja, die wollen damit natürlich auch keinen Webserver betreiben.
Oder was auch immer.
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 ein Python sein.
Aber wenn man uns sowas 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, hast du.
Also arbeiten wollen würden, das ist dahingestellt, ich musste, sage ich mal, einen Kurs Datenanalyse in MATLAB für Biologen unterrichten.
Das heißt, ja, das ist so die andere Programmiersprache, mit der ich viel zu tun hatte.
Ich habe es aber geschafft, dass weitestgehend MATLAB nie anzurühren dazu.
Also es gibt ja eine freie Alternative namens Octave, das mache ich mal so für freunde freier Software etwas erträglicher.
Außerdem musste 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.
Und ja, also ich würde auch mit dieser Programmiersprache nicht arbeiten, weil es gibt Sachen, 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, wird da auch zu Tausenden von Fehlern und Führen.
Ja, Programme direkt überhaupt.
Es passt wirklich zum Teil wie die Forst.
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 jetzt doch nochmal ein bisschen, Matha hat die großartige Idee gehabt, dass man das Leerzeichen als Elementtrennungsoperator in Arrays nutzt oder Listen.
Ja, ja, ja.
Nämlich dabei doch was.
Genau, also statt Kommata wie in Python.
Man kann auch Kommata nutzen, man kann auch Semikola nutzen, das ist dann eine neue Zeile, aber man kann auch Leerzeichen nutzen.
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.
Fünf 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.
Und das Plus gehört dann halt zu der Zahl und sagt einfach nur, das ist jetzt plus fünf 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.
Man startet drauf und denkt sich so, ja,
die Sparre ist halt jetzt voll davon.
Also das wurde halt in den 80er Jahren entwickelt oder so, 1987, 86, 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 willst, dass er hinter noch ein Komma machen willst, weil er sonst kein Tupel macht, wenn du die Klammern einfach ein Element nur drin hast oder so.
Ja, genau, das ist noch so, ja.
Aber das passiert halt andauernd.
Ja, genau.
Und da gibt es dazwischen R, das ist schon ein bisschen besser.
Also erstens ist es frei, zweitens ist es nicht ganz so irrsinnig, es hält sich auch ein bisschen an Programmierstandard, aber ja.
Damit habe ich noch nicht so viel zu tun gehabt.
Und es gibt natürlich auch diverse andere Sprachen, das jetzt relativ entkommen ist für Simulationen oder für 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 ich eine Sprache ist, die sich in vielen Fällen, so wie ich es verstanden habe, an Python orientiert.
Ja.
Aber sehr viel mache ich zurzeit in Python und wenn es dann schnell gehen muss, mache ich es eigentlich in C.
Also das sind so die Sprachen, mit den ich direkt zu tun habe.
Dann direkt tatsächlich als C-Extension oder nimmst du sowas wie Seiten und wandelst das dann halt um in Case.
Ich mache es tatsächlich als C-Extension, weil ich es einmal 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, ja, klar, dann.
Dann kann ich auch direkt C-Code machen und dann kann ich auch noch viele Sachen nutzen, die eben so in
Zeiten nicht drin sind, ja, klar.
Also doppelt verlinkte Listen oder so, glaube ich, würden Siphon nicht funktionieren.
Also da mache ich es schon einmal hardcore und kann dann wenigstens die Sachen, die wirklich schnell sein müssen, auch radikal optimieren.
Du siehst ja lieben, wenn der Stop-Uhr timet 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 ein Tiger nicht so schnell oder so viel hin und her springen muss oder was ist dann so.
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 Zeigerarithmetik 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, als 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 dann irgendwie schon weiter.
Abhängig von dieser Komplexität dieser unheimlich großen Berechnungen da.
Ne, also die Hardware kann da ja nur so viel leisten.
Wenn ich, also erstmal, wenn ich halt 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 ein paar kleinere Communities auf der Welt haben, wo das wirklich einen Riesenunterschied macht und wo ich dann eben auch Software geschrieben habe, die diesen Unterschied dann wegmacht, aber für Python-Nutzer rausholt.
Die, so jetzt war ich, ja, jetzt habe ich vergessen mal.
Was war nochmal der Frage?
Ja, es geht so ein bisschen darum, also wie das dann hinter aussieht, also warum du diese Geschwindigkeit dann über C rausholen musst.
Ah ja, genau, genau.
Warum das nicht irgendwie, weiß ich nicht, andere Ideen dafür noch.
Großrechnet.
Einfach mehr Hardware, ja.
Genau, mehr
Hardware draufschmeißen.
Genau.
Also natürlich kann man immer mehr Hardware draufschmeißen.
Diese Hardware muss ich dann auch erstmal, also gerade wenn ich ein 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, dass man 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 den 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 den 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 den Job dann durchläuft.
Das zweite Problem ist, ja, auch der Großrechner kann die Sachen nur hinterein 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 ja erstmal die Ergebnisse vom vorigen Zeitschritt.
Also das heißt, da kann ich auch mit dem Großrechner nur bedingt 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 auch froh, wenn es schneller geht, weil wenn es schneller geht, kann ich eben 500 Simulationen laufen lassen statt nur fünf.
Und ja, das macht dann halt in vielen Fällen auch schon wieder einen schönen Unterschied.
Das klingt tatsächlich so, also wäre das ein großer Vorteil.
Also ich hätte jetzt nicht gedacht, dass man irgendwie das Hunterwache da und auch mit rausziehen kann, weil ich hätte irgendwie gedacht, dass man die Sache in Python dann irgendwie dann, wie mit Zeissen oder was, dann irgendwie trotzdem so hinbiegt, dass das wettbewerbsfähig ist.
Ich weiß nicht, wenn man sich jetzt hinsetzt und das mit Zeifen 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, und was ich bei diesen Sachen mache, ich schreibe immer erst die Sache komplett in Python.
Wenn ich meine eigenen Sachen baue, mache ich einen Kern aus Python, den ich, äh, 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 nämlich eine Testmöglichkeit.
Ich habe einfach meine zwei Kerne, ich bombardiere die mit zufälligen Eingaben und gucke, ob sie tun nicht 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.
Das ist dann, muss ich dann schon eingestehen, aber es ist trotzdem, je nach Aufgabenstellung wirklich, sind es solche großen Faktoren.
Mit Seiphen, ja, wenn ich das jetzt in Seiphen programmieren könnte oder wollte oder meinen Nutzer das macht zumuten würde, dass er das in Seiphen 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.
Das muss ich auch immer unterscheiden.
Das ist immer sehr lustig, wenn man dann auf diesem Python-Treffen sitzt mit allen möglichen Leuten und die aus dem Webbereich und so weiter kommen und erstmal der Nutzer natürlich keine Programmierer sind und sich dann Gedanken und man eine ganz andere Vorstellung darauf hat, wie man eine Fehlermeldung schmeißt.
Weil meinen Benutzer schmeißt sich einfach eine Fehlermeldung, die können die dann hoffentlich auch lesen.
Naja, manchmal.
Ja, also nee, also meine Nutzer sind Programmierer und die kriegen die ja, 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 macht das kann der Nutzer dann mit einem Plotprogramm machen.
Das ist das Plotprogramm der Wahl oder was auch immer.
Gut, meistens ist es dann Matplot-Dip.
Aber das ist ja in modularer Denkweise nicht meine Verantwortung, da irgendwas zu visualisieren, sondern mir geht es nur darum, die Lösung zu produzieren.
An der Stelle.
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 würdest du sagen, das, was du da machst, das hast du jetzt gesagt, das ist irgendwie sehr speziell auf so eine Insel, das kannst du auch übertragen oder könnte man übertragen auf andere Wissenschaften und andere Anwendungsfälle, so ohne weiteres oder ist das so.
Also so klein ist die Insel nicht, das Problem gewöhnliche Differenzialgleichung oder retardierte Differentialgleichung 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, keine Ahnung, ich könnte jetzt, es ist schwer eine Zahl abzuschätzen, wie viele Wissenschaftler und andere Leute sich mit so einem Problem beschäftigen.
Wir stinken halt nicht an gegen die Leute, die Partielle Differenzialgleich machen.
Also es sind diese klassischen vektorisierbaren Fälle.
Was man so, wie wenn Leute Wärmeleitung simulieren oder irgendwie physikalische Verformung und solche Sachen, die machen alle Partielle Differenzialgleicher.
Ja, also die Insel ist nicht so klein, aber sie ist kleiner als vielleicht andere größere Inseln.
Was jetzt wahrscheinlich keine sensliche Aussage ist.
Ja, also ich meine, gut, ich kenne jetzt vor allen Dingen halt den ganzen Data Science-Bereich, da auch das wissenschaftliche.
Da gibt es halt mit Differenzialgleichungen hat man da eigentlich nie so wirklich zu tun, auch nicht mit symbolischen, da wird immer eher so, dann nimmt man halt, da packt man die große GPU aus und dann muss man damit das Problem halt tun.
Nee, aber das ist ja auch ein ganz anderer Ansatz.
Man denkt jetzt nicht, ich habe Daten und ich will sie verstehen.
Weil Simulation 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 Tat umsetze.
Ganz doof gesagt.
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 Gläser mit Nährflüssigkeit irgendwie aufs ganze Sims
gestellt hätst.
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 einer ganz anderen Weise verstanden, die vielleicht auch interessant ist, nämlich, wie teste ich eigentlich solche Software?
Ja, das ist natürlich.
Ich habe häufig sehr komplexe Systeme.
Ich kann die natürlich mit einer anderen Software laufen lassen, was ich auch nicht so möchte.
Und ja, dann theoretisch zu bestimmen, was da eigentlich rauskommt, das war auch sehr spaßig.
Insbesondere ein Fall, den ich jetzt noch nicht so angesprochen habe, sind dann stochastische Differenzialgleichen.
Das ist so, ja.
Wäre mir jetzt leicht, 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, das ist eine falsche Lösung anhand einer Lösung.
Du müsstest ja vor allem erstmal die Verteilung kennen, deiner Zielfunktion, damit du weißt, ob das wahrscheinlich ist oder nicht.
Genau, 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 lang laufenden 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 so von meinem Gusto her, wenn jetzt du so eine Verteilungswolke irgendwo hast, die nähert sich ja dann oder verdichtet sich ja dann an den Stellen, wo dann doch 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 ein simuliertes Modell hast und sagst du, ach, da kommt jetzt.
Also ich verstehe jetzt ohne Statistik, 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 würde ich das erstmal.
Sorry, ich will jetzt vom Softwaretest.
Ja, ja, ja, klar.
Aber ich meine, klar, aber auch da das hängt ja irgendwie zusammen.
Also der Softwaretest, der muss ja zwar dann, klar, da 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 richtig verstanden habe.
Also ja, natürlich muss das, also einmal muss das Modell die Realität, oder 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 behauptet.
Und die Frage ist, macht es wirklich die richtige Lösung?
Ja, ja.
Also einfach wirklich nur einen Softwaretest 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.
Das könnte alles richtig sein.
Also das ist so wie ein Zufallszahlen-Generator testen, geht je nachdem noch, weil ich einfach ganz schnelle Zufallszahlen ziehe und dann weiß ich genau, okay, die müssen halt vielleicht gleich verteilt sein oder so.
Aber bei 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 aus so einer Differenz, wo wir feststellen, okay, die Theorie, die wir haben, zu dem, was da rauskommen muss, stimmt nicht mit dem überein, was da rauskommt.
Entweder stimmt die Theorie nicht oder das Modell ist falsch.
Ja, oder das ist wohl ein Fehler, ne?
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 draus 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 diesen Algorithmus beschreibt, also solche Algorithmen, das wäre mit Tabellen beschrieben, ist leider so, dann irgendwo ein Vorzeichenfehler war.
Oh, ja.
Den haben wir damit gefunden.
Also insofern, ja.
Und den 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.
Wir auch.
Ihr würdet einfach Münzen verkaufen, sich damit Geld verdienen und sich irgendwelchen großen Papern veröffentlichen.
Hallo, da wird nicht zujubeln und irgendwann würde sagen so, hm, ja.
Oder halt auch eben nie.
Und dass es halt einem noch viel mehr Sorgen machen sollte, dass es eben einfach gar nicht schief geht, sondern die Leute einfach.
Das passiert in der Wissenschaft leider häufig.
Ich denke auch, dass es oft passiert, ja.
Ja, die Erde ist vielleicht doch eine Scheibe.
Man weiß es nicht so genau.
Ja, nee, also ganz so schlimm ist es nicht, aber ja,
naja, also so ein Paradigmenwechsel, bevor die mal passieren?
Das muss ja so ein bisschen von Arbeit passieren.
Man muss sich irgendwie aus dem Turm stellen und was runterschmeißen.
Aber ihr verwendet auch ganz normal Pi-Test 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, also ich meine erstmal, als ich angefangen habe, glaube ich, sogar noch mit Unitest gearbeitet.
Achso, ja, Schande über mein Haupt, ich weiß.
Also, wenn es ja jetzt gerade irgendwie lustig über Tests nochmal einsteigen wollt, da können wir gleich gerne noch ein bisschen länger drüber reden, weil da sind noch einige Fragen zu eingetrudelt.
Aber Entschuldigung, ich wollte jetzt nicht.
Das ist vielleicht auch ein ganz anderes Thema.
Ich glaube, die klassischen Softwaretest-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 Softwarefrage oder die Frage, die eine Softwarelösung zu finden.
Ja, dann muss man Stichproben ziehen und dann musst du ja gucken, ob die Stichproben irgendwie der erwarteten Verteilung hergenommen muss, ob man wieder nimmt jeder Wahrscheinlichkeit irgendwie rausholen.
Ja, genau, aber das ist nicht einfach, je nachdem, was man hat.
Die andere Problematik, oder 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 nicht, A plus B oder B plus A ist in der Stelle gleich.
In allermeisten Fällen.
Wie entscheide ich, was da richtig ist?
Das kann ich eigentlich nur machen, indem ich es Ausrechnung wieder vergleiche.
An solchen Schmäßchen.
Also das heißt also die Leine die Äquivalenz von deinen Experimenten ist schon fraglich dann.
Also wenn du die Experimente durchführst, dass sie ja gleich durchgeführt worden sind.
Nee, ich bin ja nicht bei Experimenten, wir sind jetzt bei Simulation.
Ist Simulation kein Experiment?
Also okay, natürlich.
Ja, okay, ja.
Das ist auch etwas, was ich gerade eben Experiment genannt habe oder als mathematisches Experiment beschrieben habe.
Ja, es könnte fraglich sein, aber es geht jetzt erst darum, macht meine Software das, was sie soll.
Also ich kann jetzt eben nicht hingehen und eine kleine Einheit von einem Code produzieren, also Codetoker oder wie die heißen, also einfach eine Übersetzung von Symbolen in Code, die ich zum Beispiel nutze, kann ich, ist es 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 Summanden in einem, äh, 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 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 du sagtest, hey, das ist so ein voll der Vortrag, das sollte man so tun.
Also nicht zum Testen?
Also ja doch, nee, also das habe gar nicht ich gemacht, das haben dann andere Leute darauf aufgebaut und haben wir haben, also die Geschichte ist eigentlich, wir haben dieses, ich habe das Problem entdeckt und dann haben wir uns irgendwann uns hingesetzt und einen Bachelorarbeit aufgesetzt zu machen lassen zu dem Thema, okay, ja, 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 neue, da wurden neue Erkenntnisse gewonnen und veröffentlicht.
Aber das war gar nicht so, also das war nur etwas, was ich angestoßen habe.
Insofern kann ich da jetzt auch gar nicht so viel zu erzählen.
Ja, klingt ja spannend, also dass man tatsächlich so echte Experimente irgendwie begleitet und simuliert mit Python oder halt ein bisschen C, aber halt, ne, dann so in die Zukunft damit ein bisschen gucken kann, was könnte denn dabei rauskommen oder welche Lösungen für wirklich Probleme.
Also weiß nicht, ob das nur Medikamente angeht oder ne, kann man andere denken, genau.
Da man damit bauen kann, das ist natürlich schon spannend.
Also dass es das ganze Feld, so dynamische Systeme vorhersagen, ist ja sehr vielfältig in Anwendung.
Also, 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ölkerungswachstums heraus?
Das Thema meiner meiner vorigen Forschung war, wie sagen wir extreme Ereignisse raus oder verstehen, wie passieren extreme Ereignisse.
Extreme Ereignisse kann dann sowas sein wie epileptischer Anfall, kann aber auch sowas sein wie Überpopulation, Arten sterben, Erdbeben, all solche verschiedenen Dinge.
Also was war das Ergebnis?
Gibt es so einen entscheidenden Punkt, den man irgendwie erreichen kann, der bestimmte Faktoren identifizierbar sind, die sagen so, hey, jetzt macht's gleich Peng?
Nee, so weit sind wir leider nicht gekommen.
Also das Ergebnis war dann sowas 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 hilfreich uns, das ein bisschen was vorherzusagen, aber insbesondere können dann die Leute, die ein konkretes System haben und mit dem konkreten System was vorhersagen, eventuell besser verstehen, wie sie das machen.
Okay.
Ist leider nicht sehr befriedigend, aber das ist eben Grundlagenforschung.
Das ist Wissenschaft.
Ich fürchte, das ist halt irgendwie so eine 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 auftritt.
Aber wenn die halt stark genug sind, dann haben sie halt einen großen Einfluss auf das, was passiert und dann ist halt blöd.
Also Statistik ist der eine Sache und die Fahrzeug können wir jetzt allein mit Statistik vorhersagen.
Wahrscheinlich nicht.
Wir müssen verstehen, was passiert da eigentlich.
Und wie kommt es eigentlich dazu?
Und dann geht das überhaupt.
Es kann ja auch sein, dass man das einfach gar nicht.
Und was ist wichtig?
Also, oder 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 was macht, was aussieht wie ein epileptischer Anfall.
Ob es jetzt irgendwie wirklich das damit zu tun hat, muss man dann nochmal untersuchen.
Aber was nicht darauf basiert, dass wir an irgendeinem Kopf drehen und irgendeinen Parameter ändern, also 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ützt, 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 oder die Neuronen anders verbunden sind in Gehirn, die eptische 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, dass man sagen kann.
Ja, schön, wenn man das dann heilen kann, ne?
Man dafür sorgt, dass man irgendwie die Menschen besser geht.
Genau, das ist natürlich das Fernziel, aber ja, leider ist es
nicht so ganz einfach.
Ja, also 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, immer manchmal passiert das ja.
Ich meine, sonst hätten wir keine Computer.
Ja, genau.
Also manchmal jemand so ein Magier irgendwo so einen Turm macht dann eine Bombe oder diese Kugel leuchtet, dann auf einmal der Turm fängt an zu leuchten und dann gucken an der, oh, was ist das denn?
Und dann, ah, guck mal hier, ich habe was Schönes gefunden.
Ich glaube, ich fürchte, das kann man nicht wirklich, weil ich fürchte, es ist bei Wissenschaft noch schlimmer als bei Firmen oder Startups.
Also 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.
Und bei Wissenschaft hast du jetzt, das ist ja noch übler.
Du weißt ja, also.
Das ist alles Alchemie.
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 pust, jetzt irgendwie eine sinnvolle, erfolgsversprechende Geschichte ist oder nicht, das hast du halt, würde ich sagen, zum großen Teil gar nicht unbedingt unter Kontrolle.
Das hat es.
Also andersrum, wenn wir es unter Kontrolle hätten, müssen wir es nicht machen.
Wissenschaft geht ja darum, 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.
Ja, ja, ja.
Ich finde das immer wieder beeindruckend, wie man dann, also es ist ja schon so, das ist, es hat ja so ein leicht, also ich würde da leichter Defetismus verfallen, glaube ich.
Man muss ja da sehr motiviert sein, das dann zu tun, weil 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 damit raus.
Obwohl auf der anderen Seite, das, was man tut, macht natürlich auch Spaß.
Ja, aber ich meine, gut, es ist schon eine so dieses klassische Klischee, dass die Hauptsache, die man mit einer Promotion kriegt, ist eine riesengroße Enttäuschungsresistenz und das.
Was war das?
Das ist, ich verwende Apple-Hardware und es kommuniziert untereinander und mein Telefon hat gerade meinem Computer gesagt, das war klingeln.
Was manchmal gut ist, in diesem Fall war es nicht so toll.
Manchmal kümmert sich auch noch vorher drum, dass sie das alles abstellen.
Ja, diesmal habe ich es irgendwie verpennt.
Ich glaube, ich mache das gerade mal.
Man kann nämlich auch sagen.
Die ganzen wissenschaftlichen Probleme, wir kennen die Antwort doch eigentlich schon alle, oder?
Ja, kennen wir die.
42.
Achso, ja.
Stimmt natürlich.
Ja, aber das ist halt, es ist da so ein so ein frustrierendes Potenzial dabei, das glaube ich auch immer, wenn man, also wenn man guckt, was die Politik da auch mal machen möchte, die versucht das dann zu ignorieren, dann macht man so Forschungsprogramme.
Ich habe da von allem gehört, dass da es gibt ein großes Forschungs- also man macht das dann so, man glaubt irgendwie, was war das?
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 wieder, keine Ahnung, irgendeine Art mehr Flüssigkeit, ja, und dann sorgt man dafür, dass die richtigen Bedingungen existieren und dann entstehen da Transistoren oder was auch immer für Schalter man da braucht, gerade quasi dann so bottom-up automatisch.
Das wäre ja voll gut, wäre viel billiger.
Dann bräuchte man da nicht so super Ultra-Reinrä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 wurde auch, glaube ich, 100 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 einen Doktoranden armer, der musste dann geopfert werden, diesem Drachen, gesagt hat, 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, 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 alle was anderes gemacht.
Eigentlich.
Ja, okay, das ist das große für
öffentliche Schreiben.
Einerseits ist auch das große Problem, 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 habe ja komme ja aus der VWL eigentlich und da waren dann so Experimente schon problematisch, weil dann hat man irgendwelche Modelle gebaut, die dann irgendwelche Prognosen gemacht haben und dann ging dann vor allen Dingen sowas wie der internationale Währungsfonds hin und hat dann diese Modelle ausprobiert mit irgendwelchen Entwicklungsländern, um zu gucken, 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.
Und das ist dann vielleicht so ein Mittelgut und das war aber eigentlich das Modell hat dann eigentlich vorher gesagt, das hätte gut funktionieren sollen.
Und die haben das ja alle so ein bisschen Jahre gerauft.
Die wollten eigentlich auch, dass es dem Land eher gut geht, also das weiß nicht nur, irgendwie so Weltbankdruck oder so.
Und haben dann gesagt, Mist, das haben wir denn jetzt ja falsch gemacht, haben sie beim nächsten Mal anders ausprobiert.
Und dann, ja, das ist halt das Problem, wenn du halt 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 weiß ich, ich kann Aktienkurse vorhersagen und du gibt es immer irgendwelche Leute, die irgendeine neue Methode entwickeln, um Aktienkurse vorherzusagen.
Du musst das nur gut verkaufen und die antetyglische Strategie fahren.
Ja, oder beziehungsweise der Problem ist, das ist, wenn sie die dann veröffentlichen, dann funktioniert es plötzlich nicht mehr.
Ja, genau, aber dann alle, die vorher sagen,
das ist doch super, dann kannst du antetyklisch fahren, wenn denen du was raushaust.
Und du darfst es halt nicht veröffentlichen.
Ja, das ist.
Ja, genau.
Ich finde das halt sehr, sehr spannend, wenn man irgendwie so Sachen digitalisiert, welche Parameter man überhaupt nicht so Modelle einbauen müsste und wie man es schafft.
So Reagenzglasbedingungen, selbst wenn es jetzt mal was nur in Anführungszeichen so ein Glas mit einer Kultur auf einem Fensterbrett in der Sonne ist.
Hui.
Wobei, dann musst du sagen, also ich bin auch eher die, es gibt ja, also es gibt zwei Spezies der Modellierung oder Arten der Modellierung.
Der erste ist der Ansatz, wir wollen es wirklich möglichst exakt und so weiter hinbiegen, um wirklich die genau perfekte Vorhersage für dieses Glas auf der Fensterbank zu treffen.
Der andere Ansatz ist, okay, ausprobieren.
Wir können das eh nicht, sondern die Frage ist, okay, wir sehen dieses Phänomen oder sowas 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, ja, was eigentlich die Zutaten ich brauche.
Und ich gehöre eher zu der letzten Spezies.
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, aber man weiß ja nicht.
Auf jeden Fall, man kann es auch im Zweifel einfach mal machen.
Man hat eben, also ich mache mir gar nicht die Illusion, das Gehirn komplett zu simulieren zu können.
Das kann ich nicht, das kann niemand.
Und 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, zu verstehen, welche Auswirkungen gewisse Strukturen haben.
Oder ja, das ist so die größte Hoffnung da.
Ja.
Ja, aber wie ist das eigentlich mit dem, eben, wie ist das mit dem Wissenschaftsbetrieb und der Digitalisierung?
Ist jetzt alles inzwischen irgendwie, 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, eben, ich könnte mir das so vorstellen, dass halt die Wissenschaft so ein bisschen funktioniert wie so eine große freie Software-C
ommunity oder so, aber nein, nein.
Real existieren das so ein bisschen anders.
Also ich meine, man kann mittlerweile sagen, dass ein Großteil der wissenschaftlichen Software, zumindest in den Bereichen, die ich unterwegs bin, zum Glück frei ist.
Also auch frei verfügbar und die Leute sich das zunutze gemacht haben.
Der große Vorteil ist, kein Mensch hat irgendwas davon, ich habe nichts davon gehabt, meine Software zu verkaufen.
Ich habe was davon, dass ich ein Paper über meine Software schreibe, Leute das zitieren und falls ich es nicht schon mal gehört habe, 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-Antitel die zugeschickt und zitiere mich bitte natürlich.
Also 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 es ist vernünftig digital.
Und das ist ja nur die Software-Ebene.
Du hast auch die ganzen Formulare dazu, das kommt einer oft dann noch dazu.
Ja, nee, also das, ich meine, Software ist die eine Sache.
Auf der Software-Ebene funktioniert funktionieren ja 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.
Und es wäre gut, wenn die Leute vielleicht mal ein bisschen Ahnung darauf hatten, wie man eigentlich Software baut.
Anstatt nur programmieren zu können, so ein bisschen.
Auf der anderen Seite, wenn man 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, ja, mein Sandförmchen, dein Sandförmchen und großer Neid, dass man versucht, die eigenen Erkenntnisse möglichst oder die eigenen Daten möglichst auszuschlachten und all solche Sachen.
Hängt so ein bisschen vom Feld ab.
Also die gerade die Mathematik, Informatik, Physik sind da so ein bisschen besser, aber jetzt bin ich 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, da muss ich damit alles Mögliche machen, möglichst auf einmal und das große eine Ding landen, sonst funktioniert das nicht.
Oder funktioniert es nicht für die Karriere?
Wahrscheinlich, also leider ist es wahrscheinlich auch richtig, dass es nur so geht.
Was natürlich nämlich ist.
Ja, obwohl aus der Physik habe ich das auch manchmal gehört, dass da die Leute dann in Vorträgen sitzen und dann Fotos machen von einem Experiment gab, sodass sie dann die ersten Theoretiker sein konnten, die dann die Theorie dazu zu einem Experiment oder so irgendwie.
Ja, gut, aber dann machen sie ja zumindest nicht den Vortragenden den Streitig.
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ß Unterschied.
Also gerade in der Physik und Mathematik gibt es ja diese Preprint-Kultur, also muss jetzt vielleicht für die Leute, die es nicht kennen, sagen, in der Wissenschaft zählen hauptsächlich sogenannte peer-reviewed-Vöffentlichungen, 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 sagt 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 dieses, 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, gut, wird egal, aber das ist jetzt vielleicht auch nicht so.
Ja, du hast noch ein paar Chaptermarks, glaube ich, unterlassen.
Ja, was kann man.
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 noch was erzählen, natürlich.
Ja, wenn du noch was auf
das Publikation angeht.
Genau, wir haben, wir haben da haben wir noch gar nicht drüber gesprochen.
Wie gesagt, ich habe eine wissenschaftliche Software geschrieben, okay, soweit es wie 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.
Oder andersrum, Veröffentlichungen, 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 erlaube, 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 Veröffentlichungen.
Wir finden das gut.
Der zweite Schritt ist dann zu sagen, oh, 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 und den Zuhörern bedeutend einfacher war, als klassische Forschungsarbeit zusammenzuschreiben.
Ukulele.
Und ja, dann gab es, wie gesagt, diesen Peer-Review-Prozess, das heißt auch dieses Manuskript ging an andere Forscher, die dann sagen sollten, ist das schön oder nicht, oder gut oder nicht.
Und da hat dann erstmal einer der Reviewer, die nebenbei anonym sind, also ich weiß nicht, wer es war, gesagt: Ja, das ist ja alles schön und gut, das ist auch besonders interessant für diese spezifische wissenschaftliche Community.
Aber das ist ja so irgendwie eigentlich kein richtiges Paper.
Also lehne ich es ab.
Obwohl das Journal sagt, genau, solche Dinge würden wir auch gerne haben.
Und ja, ich weiß nicht genau, was da schief gelaufen ist, ob das Journal dem Reviewer nicht gesagt hat, okay, 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 hab, also man sagt dann natürlich nicht, okay, ich akzeptiere das, ich bin abgelehnt worden, ich gehe woanders hin oder so.
Sondern man kann dann erstmal 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 sagt, ja, es ist relevant für die Community, neben die Kriterien vom Journal zu stellen, dass gesagt hat, ja, wir akzeptieren solche Paper wenn?
Und dann kam im Prinzip, also fast genau das Gleiche, was der Reviewer dann gesagt hat.
Und ja.
Und am Ende hat es dann auch ohne große Probleme geklappt, aber es war irgendwie schon lustig.
Und 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 ähnlich, da sprechen alle Leute Latech und können in der Regel selbst sehr gute Sachen produzieren, die man auch drucken kann.
Aber ja, einige,
kurze 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 es ein Word-Template, das man benutzen muss, die.
Nein, ziemlich sicher.
Also für Physical Review Letters kann man definitiv auch technisch reichen.
Und auch, also es geht mittlerweile, ist es schon, es ist sehr weit verbreitet, man kann Late nicht einreichen.
Die Frage ist halt, wird es eins zu eins verwendet?
Also das eine Reichen 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 brauchen wir 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.
Diese blöden tabulatorischen Einrückungen, das sieht aber doof aus.
Ja, also das würde ja noch gehen.
Also, ja, das wäre auch ein Problem, aber also ja, der Code war in verschiedenen Einrückungsebenen.
Unterschiedliche Code-Blöcke waren in unterschiedlichen Einrü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 das Resultat der Schriftsetzer bekommen, ich habe gesagt, nee, das geht so nicht, die haben was Neu versucht, ich habe es bekommen, ich habe gesagt, nee, das geht so nicht und so.
Nach drei Iterationen at 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 Formel 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 Code.
Ja, das ist ein Formelsatz, okay, kann man drüber schreiten.
Das haben die aber radikal auf den Code angewendet.
Tja.
Und wenn dann, dann steht halt Sinus eckige Klammer auf, F von I, eckige Klammer zu.
Ja, das
wäre jetzt, 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 und dass es halt dann irgendwie ausführbar wird.
Oh, jetzt, ich mache eine Exkursion, ist es, 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 so wie A, Klammer auf, B plus C gleich AB plus B C.
Also das Assoziativgesetz.
Und zwar hingeschrieben, so wie man es auf Papier schreiben würde.
Das heißt, ohne Mahlzeichen.
Also man hat jetzt diesen Code, das könnte man in Python machen, und die Aufgabe ist jetzt davor etwas zu machen, das wahr ergibt.
Okay.
Und man darf, ja, und ich glaube mit der Bedingung, dass man 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 erstmal A, B und C zu Symbolen, dann funktioniert schon mal ein symbolisches Rechnen, also mit Symphy.
Und dann überschreiben wir noch VA oder fügen wir A ein Call-Funktion hinzu, die Call-Methode VA 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 das.
Was auch eine sehr, sehr schöne Sache in Python ist, wenn man das einfach mal 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 die Fall eben, um die Slayse zu lösen.
Plus mit OR überschreiben oder sowas, hast du auch ein True mit einem Bool drauf wirfst.
Wenn du das Pluszeichen mit einem OR überschreibst oder sowas, also dann könnte das eigentlich funktionieren.
Ja.
Ich glaube, es musste vereinigen, man durfte irgendwie A, B und C nicht wahrscheinlich.
Ich müsste es nochmal raussuchen, was genau die.
Ja, deswegen
das Plus mit dem Boolian draufwerfen.
Stimmt das schon.
Ja.
Ja, gut.
Nee, also ich hatte dann sehr viel Spaß mit den Schriftsetzern eben, um.
Ja, das war auf jeden Fall schön.
An die Klammern anpassen, einrückend eben wegen entfernen.
Ja, genau, also.
Ich habe auch irgendwie den Unterstrich per Hand gezeichnet, das heißt, wenn man den Code kopiert hat, war der Unterstrich plötzlich weg.
Das war innerhalb von dem PDF dann oder nicht mehr Text.
Genau, also es war Text und anstatt des Unterstrichs, der auch irgendwie immer unterschiedlich lang war, war da halt ein Leerzeichen und da war eine Linie.
Also so per Hand.
Reingezeichen.
Wird ein Zeichenobjekt.
Ja, das heißt, aber wenn man den Text kopiert hat, war das halt nicht da.
Da hat jemand die Taste auf der Tastatur nicht gefunden.
Da wurden die auch schön typografische Anführungszeichen im Code.
Ja, sieht einfach viel besser aus.
Ja, es sieht tatsächlich viel besser aus, es funktioniert leider halt auch nicht.
Also gut, da kann ich jetzt.
Ja, aber das ist, ich meine, das ist halt, äh, gut, das ist wahrscheinlich eben nach Community so unterschiedlich, weil jetzt so was in der Informatik oder so, da Pseudocode wird ja schon oft in Papers auch reingeschrieben, ne?
Aber.
Naja, ich war halt leider, das war, was heißt leider?
Ich meine, es war ja nicht.
Es gab Sinn, dass ich mich an eine Community gewandt habe, die das nicht macht.
Und die haben, keine Ahnung, 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.
Oder ich meine, in Informatik ist es halt auch so, dass oder ich meine, es gibt Ausnahmen, aber überwiegend zu der Zeit, wo ich viel Papers gelesen habe, war es halt so, dass die Leute, naja, also 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 dann die Leute anschreibt.
Aber es ist halt nicht Teil der Veröffentlichung.
Und dann war halt, also ich meine, es ist führt halt dann auch so ein bisschen dazu, quasi, dass man, da das eh niemand, ich meine, an dem Paper, ob das jetzt stimmt oder nicht, kann man den Paper halt nicht mehr ansehen.
Also wenn nur das überprüft, dann weiß man überhaupt nicht, ob das jetzt funktioniert oder nicht.
Und wir haben dann halt da auch teilweise versucht, Sachen halt so zu reproduzieren.
Und die Quote der Sachen, die so wirklich überhaupt gar nicht, also manchmal kann man ja sonst auch vielleicht auch Sachen nicht richtig reproduzieren, wenn 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, und das waren alles ordentlich peer-reviewed-Sachen, die durchgegangen sind, die irgendwo veröffentlicht wurden und so.
Also ja.
Ja.
Aber da muss man sagen, die Informatik hat sich noch gut, wenn man einfach so sagt, ich habe hier das.
Man könnte zumindest mal hingehen und diesen Standard Einführung, es gibt ja auch Tendenzen in die Richtung zum Glück, dass man sagt, okay, hier ist jetzt bitte die Software, die ein Programm, was das macht.
Und wenn ich das ausführe, dann kann ich das so schön.
Dann kommt das Programm raus, ja.
Und das Programm ist verständlich, dann kommt das raus.
Mit anderen experimentellen Sachen geht das nicht.
Du kannst halt nicht eben nicht einfach mal ein Jahr ins Labor setzen, da rumpipitieren und irgendwelche Bakterien wachsen lassen und gucken, ob das gleich rauskommt.
Also kann man schon.
Das macht normal deutlich schwieriger.
Stimmt, ja, stimmt.
Bei anderen ist es noch viel übler.
Ja, oder hat er O.
Das war jetzt das Land.
Du sagst hier so, hm, was machen wir jetzt?
Wie viele Länder haben wir denn noch?
Wir haben noch nie etwas von uns gehört unter unseren bisherigen Ergebnissen.
Wir lassen das Modell einfach nochmal rechnen.
Ja, dann haben wir das Programm eingeführt.
Das musste man also machen.
Sie haben da tatsächlich das Modell nicht geändert, Sie haben dann davon überzeugt, das Modell war richtig.
Und die Umstände waren, weil dann doch zwei oder drei anderen probiert, hat er auch nicht funktioniert.
Also ja, da war ein bisschen Resistenzgun, genau, gegen gute.
Ja, 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 man wird es schon funktionieren.
So funktioniert das doch, oder?
Ja, ja, hier SAP, ja.
SAP war das Structural Adjustment Program.
Tja, ja, ja.
Ja.
Aber sozusagen, also ich weiß nicht, wie arbeitest du üblicherweise?
Also in Notebooks oder eher weil das.
Ich versuche mir mittlerweile so ein bisschen anzugewöhnt in Notebooks zu arbeiten, einfach weil es gerade für, wenn man mit Plots zusammenarbeitet, ist
halt irgendwie einfach, ja.
Ganz praktisch ist.
Also muss dazu sagen, ich komme ursprünglich, ich 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 damit bin ich damit sehr zufrieden gewesen und beziehungsweise bin auch in der Lage gewesen, alles zu machen.
Ich kannte davon 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 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 meiner Entwicklungsumgebung, die da Unix heißt.
Also Texteditor und Konsole und was auch immer.
Genau, was für ein Editor nutzt du, da was mal unsere.
Ich nutze NeoWim.
Ah, ja, noch ein Wimmer, einen Jochenwimmer auch immer rum.
Und ja.
Und dann, wenn die Sachen einigermaßen stehen und es wirklich nur 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.
Das heißt, es findet das nicht im Notebook statt, aber dafür ist es, glaube ich, auch nicht gemacht.
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 ich 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 meist nicht so ein paar, die hast du bestimmt schon alle ausprobiert.
Also Matplot, du hast ja sehr schon gesagt, alter Ihr oder sowas.
Mal reingeschaut für Python.
Ich glaube, dass es für Scientific-Sachen gar nicht so verkehrt, gerade für so statistische Plotting nochmal.
Aber ich habe selber auch noch nicht so viel bedruckt.
Ja, gut, vielleicht muss ich da auch nochmal reingucken.
Also mich stört halt noch so dieses, ich glaube, es wurde mal Plotting-by-Side-Effekt genannt von Matplotlib.
Ja, das ist.
Also wahrscheinlich, keine Ahnung, vielleicht gibt es mittlerweile, aber ich meine, ich habe noch nichts davon gehört, dass irgendwas eben das ganze Repertoire mitbringt, was man eben auch braucht.
Ich möchte halt, das Hauptproblem ist, wenn ich jetzt irgendein 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.
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, es gibt da, ich weiß nicht, inwiefern Gnuplot das auch übernommen hat.
Es gab ja dieses sehr einflussreiche Wurf, obwohl das ist, glaube ich, gar nicht so furchtbar alt.
Grammar of Graphics irgendwie.
Und unter R hat man ja mit ggplot 2 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.
Und naja, es ist immer noch aktiv irgendwie unter Entwicklung.
Ach, ich meine, so furchtbar schlecht ist Matplottip auch nicht.
Nee, nö, es ist irgendwie, ich möchte mich ja nicht sagen, ich möchte jetzt einfach mal eine Parabel plotten.
Und jetzt, ja, und in sowas wie Gnuplot, was eine rein plot-orientierte Programmiersprache ist, ist das eine Zeile.
Und ja, in Matplot muss ich, ich weiß gar nicht, was ich, wie dich das am schnellsten hinbekommen würde.
Dotplot.
Ja, der müssen wir schon ein bisschen rumbasteln, glaube ich, aber wenn du es einmal definiert hast oder so.
Ich glaube, wahrscheinlich, wenn mir irgendjemand einfach für fünf Jahre Geld geben sollte oder so, würde ich mich daran setzen, dass ein komplett neuer Leibnis.
Cool.
Ja, wir haben noch den Lieblingspick natürlich, den Pick der Folge oder sowas.
Was wäre denn deine Wahl, dein bester Pick als beißen Modul?
Ich glaube, eigene Modul sind wahrscheinlich ausgeschlossen.
Dein eigenes Modul da ein bisschen klar.
Nee.
Du musst das aber kurz erzählen, was ist denn dein eigenes Modul im Modul?
Nee, nee, nee, mach ich nicht.
Dann finden wir es in den Schiffspieler.
Ich habe ja auch schon
sowieso nicht geredet.
Ja, ich glaube also, das Lieblingsmodul ist wahrscheinlich immer noch NumPy, weil es einfach enorm mächtig die Sachen bringt, die weil gerade, ja, im Rechen 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 kenne mir, glaube ich, kaum, es gibt sehr wenige Fälle, wo ich es nicht importiere.
Und was wäre der ein Pick der Woche?
Ist das auch ein Ampai?
Was ist der Pick der Woche?
Ich weiß es auch nicht.
Ja, ja, fast das Pik.
Ja, aber ich finde, wir so eine kleine Kategorie einführen, dass Pick der Folge
oder sowas.
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 wäre eigentlich was, was in letzter Zeit als cool aufgefallen ist.
Muss ich gar nicht so aktuell kann noch was ganz Altes sein, einfach warst du nochmal so.
Irgendwas Neues, aber.
Was soll das der Standardtipp sein?
Also.
Ihr stellt Fragen.
Deshalb kann ich doch schon mal überlegen.
Jaja, ich habe nämlich auch noch nicht drauf gedacht.
Also, was ich neulich zum ersten Mal verwendet habe, was ich und was ich dann wieder nicht verwendet habe, weil es mich dann doch nicht glücklich gemacht hat, war NameTuple.
Ich habe aber gehört, es gibt jetzt Data Classes und muss mich dazu unbedingt einlesen.
Ja.
Kann wenig dazu sagen, aber es ist wahrscheinlich genau das, was ich von.
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 Standardbibliothek mit drin oder beziehungsweise in Python selber, aber das Ding heißt Atis 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 die letzten Py-DDF-Treffen einen Talk zu, wo halt auch von der Geschwindigkeit wurde gesagt, ah ja, das ist halt alles deutlich besser als NameTuple und so.
Im Grunde gibt es keinen wirklich tollen Gründen mehr, außer man braucht jetzt die Indizierbarkeit oder so, noch NameToppel zu verwenden, weil man das mit Data Classes oder Adresse halt deutlich besser hinkriegt.
Ja, das ist auf jeden Fall eine interessante Geschichte.
Und dein Weg auch um.
Ja, ich würde tatsächlich, also was ich jetzt in letzter Zeit nochmal angeguckt habe aus unterschiedlichen Gründen und dann doch wieder gar nicht so schlecht fand, ist Django Guardian.
Ist halt Wegentwicklung was völlig anderes.
Das kann ich mitreden.
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 gibt, ist es in Django schon eingebaut, dass man da halt Berechtigungen vergeben kann und dann halt auch diese Berechtigung 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, indem da zwei zusätzliche Tabellen eingeführt werden, dass der Ramm sieht dann relativ wüst aus, wenn man das macht, aber es ist, also man denkt zuerst, das kann nicht gehen oder es ist halt furchtbar, aber nee, es ist, 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 mit der Permission in dem Web-Tool endlich lösen, dass irgendwie.
Jeder darf zureffen, was er will.
Ja, ich picke Bendit.
Das habe ich irgendwie zwischendurch entdeckt, das ist so ein Anfänger, glaube ich, Security-Hinweis, was so alles sicherheitsrelevant sein könnte in einem Code, den man in so einem Python geschrieben hat.
Das ist, glaube ich, ein Nachbarn.
Da habe ich noch eine Sache, die mich überhaupt nicht interessiert.
Nicht ganz viel zu gemacht.
Das ist auch nicht so, glaube ich, so ganz tief gehen, aber so für die ersten Sachen, dass man so ein bisschen was versteht, was man da tut.
Fand ich das ganz spannend.
Erstmal so reinzugucken.
Ja.
Ja, cool.
Ich weiß nicht.
Haben wir noch irgendwas?
Ja, das Wissenschaftler muss ja auch nicht, oder?
Es ist ein bisschen einem geschlossen.
Ich kann noch was erzählen.
Ich kann auch noch was erzählen.
Also ich möchte, wahrscheinlich, wenn ihr mich lasst, rede ich einfach fünf Stunden lang am Schluss.
Das ist echt nicht schlecht.
Aber vielleicht noch eine lustige Sache zum Thema, was kann man alles.
Ich glaube, ich habe mein Mikrofon verstellt.
Sorry.
Kann das sein, dass ich irgendwo lauter bin oder so?
Okay, gut.
Sieht gut aus.
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 Ökosystem-Modelle, habe ich 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, das, wenn ich jetzt, ich habe meine Spezies, die da irgendwas machen, also von Tieren oder Bakterien oder was auch immer.
Und es kann jetzt passieren, also nehmen wir mal an, wir haben Elefanten und Giraffen und was auch immer, weil es einfacher vorzustellen ist.
Und jetzt, mein Modell sagt immer, eine Spezies ist eine Variable, also die Menge allen Individuen einer Spezies.
Und darauf vorher brauche ich ein ganzes Modell auf und einfach weil ich diese Verein, die Vereinfachung, die ich mache, dass ich sage, alle diese, alle Elefanten sind gleich, alle Giraffen sind gleich, was auch immer.
Und ja, eine Sache, die wir dann festgestellt haben, ist, dass gewisse Modelle, die Eigenschaften haben, dass ich jetzt irgendwie aus Versehen ist, nicht hinkriege, alle Elefanten korrekt in einer Spezies zuzuordnen.
Das war angenommen, die Hälfte davon sind blau und rot angemalt.
Nashörner.
Ja, nee, also Nashörner auch, aber angenommen, es sind wirklich alles Elefanten.
Sie haben genau die gleichen Eigenschaften, es ist nur die Hälfte von ihnen sind halt rot.
Oder rosa.
Nehmen wir rosa Elefanten.
Ist mal gut über rosa Elefanten zu reden.
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 die dasselbe Situation zweimal beschreibe, dann soll auch du nicht dasselbe rauskommen.
Und okay, was hat das jetzt mit Python zu tun?
Ich bin dann irgendwann hingeschrieben gegangen und habe, wir haben festgestellt, wir haben dieses Problem, jetzt wollen wir verstehen, wann taucht dieses Problem auf.
Und dann habe ich mit Python und Simpai automatisierte Tests geschrieben für Modelle.
Das heißt, ich konnte ihm einfach ein Modell geben und hatte einige Rechnungen gemacht, hatte dann eben die Hälfte der Elefantenblau angemalt und mir automatisch gesagt, das ist jetzt ein gutes Modell und das ist ein schlechtes Modell.
Also das ist auch eine etwas exotischere Sache, die ich dann mit Python oder mit genöst habe, wo man auch sowas wie Sympai 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, also es ist.
Und ich habe jetzt immer noch trotzdem einen Block nur vollgeschrieben mit irgendwelchen Formeln.
Tja.
Ja, aber ist er 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.
Eigentlich wäre es natürlich lustig gewesen, wenn wir sagen, wir finden es nicht heraus, verdammt scheiße.
Aber hier ist eine Software, die euch diese Frage annähernd beantwortet.
Und 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 und unter welchen Bedingungen und warum und ja, das erstmal so da ein bisschen rumzuspielen.
Ja, das war irgendwie eine Sache, wo ich dann Sympa wirklich gelernt habe, werzuschätzen.
Cool.
Ja, ja, aber würde ich sagen, dann sind wir doch schon so quasi durch.
Ja, ich würde auch
sagen, dann sind wir jetzt mal tatsächlich durch.
Vielen Dank, dass du da warst.
Genau.
Ja, Gerald, vielen Dank, dass du da warst.
Vielen Dank.
Hat mich auch gefreut, hier zu beweißen.
Heute einfach über mich selbst reden, zwei Stunden lang, nein, nicht ganz.
Ja, ja.
Fast.
Ja.
Es war durchaus auch in längeren Sachen hier.
Und wir haben tatsächlich geschafft, so ein bisschen wieder Luft hier.
Der Wind ist gerade aufgekommen.
Vielleicht könnte ich mich erinnern, wir es heute aufgenommen haben.
Ich bin sehr gespannt, wie das mit den.
Also es ging nicht.
Wir mussten Ventilatoren aufstellen.
Nachdem wir in der letzten Episode das Audio schon versaut haben.
Also gut, vielleicht können wir noch einen draufsetzen.
Nicht alle die Verzweiflung treiben mit Ventilatorengeräusch, aber hoffentlich.
Hoffentlich wird das wird das irgendwie einer der Post-Processing-Algorithmen irgendwie magisch beseitigen.
Ja, wir werden sie sonst beschwert euch bei uns.
Ja, wisst ihr, ihr könnt immer E-Mails schreiben an hallo.pythnenpodcast.de und ihr könnt auch gerne kommentieren.
Auf der Webseite gibt es eine schöne Kommentarfunktion.
Ihr könnt uns überall abonnieren, wenn ihr gerade lustig seid, beim Sgebogen enthält weiter, dass es uns gibt.
Und ja, wo ihr auch immer gerade seid, was auf eine Tageszeit ist, auch Tagesnachtzeit.
Stammt nicht an Hitzschlag.
Ja.
Bisschen warm.
Ja, wir hören uns.
Viel Spaß und bis später.
Tschüss.