Sehr interessantes Video. Tatsächlich erkenne ich sehr viel aus meinem Informatikstudium wieder. Auch wenn in meinen praktischen Erfahrungen diese mathematischen Grundlagen bisher leider weniger Anwendung finden, merkt man doch immer wieder, wie die alltäglichen Strukturen der Softwareentwicklung sich daran orientieren. Man nehme als super simples Beispiel einfach mal eine equals-Methode als Abbild einer Äquivalenzrelation, mit eben jenen Eigenschaften, die diese Erfüllen sollte (Reflexivität, Symmetrie und Transitivität). :)
Ich hoffe im vortrag kam auch vor wie wichtig ein neutrales element ist um eine halbgruppe zu definieren. Denn dadurch spart man sich ganz viele if-statements. Konkateniere Ich z.b. strings muss ich nicht kucken ob einer von beiden ein leerer string ist. Ich kann sie einfach so konkatenieren und bekomme halt den einen von beiden strings raus. Gleiches gilt für Listen. Daher sollte man als Informatiker auch immer noch im Hinterkopf haben ob am sich nicht einfach ein neutrales Element dazu definieren kann. Ich würde den Vortrag gerne nochmal sehen. Wann und wo wäre das denn der Fall?
Klar, wenn ich Objekte habe, die sich addieren lassen, kann ich auch Halbgruppe dazu sagen. Ich frage mich nur, wieso das dann besseren Code erzeugen soll. Bei logischen Rätseln, die man Software lösen möchte, könnte ich mir das vorstellen - allerdings hat man das im gewöhnlichen Software Entwicklungsprozess eigentlich nie. Reicht es nicht, dass man dann einfach den "+"-Operator überlädt? Außerdem soll es angeblich auch Softwareentwickler geben, die keine Algebra Vorlesung gehört haben. So richtig überzeugt bin ich nicht. Gibt es ein konkretes Beispiel mit Code, wo man sehen kann, wie Mathematik zu besserem Code führt?
Zunächst denke ich auch, dass sich das sicherlich nicht immer und auf alles anwenden lässt. Ich würde es so sehen, dass man bei einer mathematischen/algebraischen Modellierung eine ganze Menge an Aussagen über diverse Regel- und Randfälle mitgeliefert bekommt, d.h. der Code wird dadurch besser, dass man den Sachverhalt mit wenigen, aber bedeutungsvollen Zeilen Code auf den Punkt bringt. Sicherlich muss ich da ein oder zwei Abstraktionsschritte zurück treten und mir (ggf. kreativ) überlegen, was eine "Addition" in meinem Domänenkontext sein soll (kann ja etwas ganz anderes als das "Plus" aus der Schulmathematik sein). LG Peter vom developers club
Zunächst mal kommen oft die Architekt:innen und Entwickler:innen gar nicht auf die Idee, einen "+"-Operator zu definieren. Wenn die Daten komplexer werden, ist es oft auch nicht so einfach - dann bieten die mathematischen Prinzipien eine Leitlinie für dessen Definition, die Überraschungen vermeiden.
@@MichaelSperber Die Architektinnen und Entwicklerinnen müssen erst gar nicht auf die Idee kommen, einen "+"-Operator zu definieren, weil gebräuchliche Programmiersprachen wie Python dies von Hause aus mitbringen, bspw. __add__. Genauso wie die Vergleichsoperatoren, Mengenoperatoren und viele andere Konzepte, die aus der Mathematik stammen und integraler Bestandteil moderner Programmiersprachen sind. Eventuell wäre es vorteilhaft, dies zu wissen.
Interessantes Gespräch
Sehr interessantes Video.
Tatsächlich erkenne ich sehr viel aus meinem Informatikstudium wieder. Auch wenn in meinen praktischen Erfahrungen diese mathematischen Grundlagen bisher leider weniger Anwendung finden, merkt man doch immer wieder, wie die alltäglichen Strukturen der Softwareentwicklung sich daran orientieren.
Man nehme als super simples Beispiel einfach mal eine equals-Methode als Abbild einer Äquivalenzrelation, mit eben jenen Eigenschaften, die diese Erfüllen sollte (Reflexivität, Symmetrie und Transitivität). :)
Geil, sehe ich mal was aus den Überfliegern unseres Abijahrgangs geworden ist ... der Micha/Mike halt ... Chapeau
Klarer, als ich vom Titel her befürchtet hatte.
Wir nehmen das mal als Kompliment, danke 😄
Ich hoffe im vortrag kam auch vor wie wichtig ein neutrales element ist um eine halbgruppe zu definieren. Denn dadurch spart man sich ganz viele if-statements. Konkateniere Ich z.b. strings muss ich nicht kucken ob einer von beiden ein leerer string ist. Ich kann sie einfach so konkatenieren und bekomme halt den einen von beiden strings raus. Gleiches gilt für Listen. Daher sollte man als Informatiker auch immer noch im Hinterkopf haben ob am sich nicht einfach ein neutrales Element dazu definieren kann. Ich würde den Vortrag gerne nochmal sehen. Wann und wo wäre das denn der Fall?
ich versuche mit "monad" (funktional) zu programmieren
Klar, wenn ich Objekte habe, die sich addieren lassen, kann ich auch Halbgruppe dazu sagen. Ich frage mich nur, wieso das dann besseren Code erzeugen soll. Bei logischen Rätseln, die man Software lösen möchte, könnte ich mir das vorstellen - allerdings hat man das im gewöhnlichen Software Entwicklungsprozess eigentlich nie. Reicht es nicht, dass man dann einfach den "+"-Operator überlädt? Außerdem soll es angeblich auch Softwareentwickler geben, die keine Algebra Vorlesung gehört haben. So richtig überzeugt bin ich nicht. Gibt es ein konkretes Beispiel mit Code, wo man sehen kann, wie Mathematik zu besserem Code führt?
Zunächst denke ich auch, dass sich das sicherlich nicht immer und auf alles anwenden lässt. Ich würde es so sehen, dass man bei einer mathematischen/algebraischen Modellierung eine ganze Menge an Aussagen über diverse Regel- und Randfälle mitgeliefert bekommt, d.h. der Code wird dadurch besser, dass man den Sachverhalt mit wenigen, aber bedeutungsvollen Zeilen Code auf den Punkt bringt. Sicherlich muss ich da ein oder zwei Abstraktionsschritte zurück treten und mir (ggf. kreativ) überlegen, was eine "Addition" in meinem Domänenkontext sein soll (kann ja etwas ganz anderes als das "Plus" aus der Schulmathematik sein).
LG Peter vom developers club
Zunächst mal kommen oft die Architekt:innen und Entwickler:innen gar nicht auf die Idee, einen "+"-Operator zu definieren. Wenn die Daten komplexer werden, ist es oft auch nicht so einfach - dann bieten die mathematischen Prinzipien eine Leitlinie für dessen Definition, die Überraschungen vermeiden.
@@MichaelSperber Die Architektinnen und Entwicklerinnen müssen erst gar nicht auf die Idee kommen, einen "+"-Operator zu definieren, weil gebräuchliche Programmiersprachen wie Python dies von Hause aus mitbringen, bspw. __add__. Genauso wie die Vergleichsoperatoren, Mengenoperatoren und viele andere Konzepte, die aus der Mathematik stammen und integraler Bestandteil moderner Programmiersprachen sind. Eventuell wäre es vorteilhaft, dies zu wissen.
Funktionale Programmierung wird in der deutschen Softwareindustrie viel zu wenig anerkannt. Alles ist Java, C++, Javascript, Python und fertig
Das ist doch das Kommutativgesetz 😅