Warum (1/a)*c und nicht c/a?

Hallo,
nur Interesse halber.

Aus einem code Schnipsel (PHP) aus dem Internet habe ich folgende Formel: sqrt((1/($num-1))*$abw);

Warum wird nicht einfach sqrt($abw/($num-1)); gerechnet?

Gruß,
Paul

Hi!

Funktional macht das keinen Unterschied. Kann es sein, dass das einfach eine visuelle Gruppierung darstellen soll, dass also zwei einzelne Terme multipliziert werden sollen, die als solche noch erkennbar sein sollen?
Alternativ Faulheit des Programmierers, wenn er sich die Zeile zusammen kopiert hat, und dann nicht mehr vereinfachen wollte.

Ich kenne allerdings auch Sprachen, die führen z.B. ne Division als Integerdivision aus, wenn nur Integer-Zahlen vorkommen. Da ist dann 4.0/7=1,75, während 4/7=1 ist. Da muss man dann höllisch aufpassen bei sowas.

2 Like

… kann man machen
Nur manchmal ist das später für die Lesbarkeit/Verständlichkeit des Codes … von einem Team vorgeschrieben/verlangt oder einfach eigene Entscheidung

In seltenen Fällen kann eine umständlichere Berechnung dennoch effizienter sein. Wenn denn 1/($num-1) sehr häufig verwendet wurde, bleibt das Ergebnis im Cache und wird dann nicht mehr neu berechnet - denke aber, das trifft bei PHP nicht zu, dass dann eher bei reiner Maschinensprache

1 Like

Danke erstmal. Ich denke es war Faulheit.

Die Integerdivision würde in dem Beispiel ja aber beide Varianten betreffen oder?

PS: du meintest sicher 7/4 :wink:

Du solltest Dir nicht zu viele Gedanken machen, wenn auch alles mit einer von Dir gefundenen Vereinfachung läuft. Du weißt nie, wie jemand an seine Formel gekommen ist, wie gut der in Mathe ist, ob er Lust/Zeit auf Vereinfachungen von Formeln hatte, … Es gibt Menschen die sehen mit einem Blick, wie sich eine Formel vereinfachen lässt und die dies dann auch umsetzen. Es gibt aber durchaus auch Leute die aus Spaß an der Freude etwas programmieren, sich aber ihre Formeln selbst aus dem konkreten Kontext entwickeln und denen es reicht, wenn die dann funktionieren. Die sehen ggf. in Formeln auch eher die funktionalen Blöcke, wie @sweber es ja auch schon angedeutet hat. Wenn man dann später noch mal drauf schaut, erkennt man schnell, was woher kommt und für was wie genutzt wird. Mathematische Eleganz ist dann oft eher kontraproduktiv.

Vielleicht auch noch:

Ein guter Compiler ist selbst in der Lage, Formeln in gewissem Maße zu vereinfachen, bzw. so umzustellen, dass das möglichst schnell vom Rechner berechnet werden kann. Da sind diese Schreibweisen dann egal. (PHP allerdings wird eher nicht compiliert, da spielt das keine Rolle)

Hallo,
hier noch eine Idee aus der Statistik. Die Wurzel aus der Varianz nennt man Standardabweichung, dafür könnte das $abw stehen. Das 1/($num-1) deutet auf die unbiased Varianz hin, im Unterschied zu 1/$num. Das läßt man dann halt so stehen, weil es jeder vom Fach sofort als solches identifizeren kann.

2 Like

Ich habe es mir abgwöhnt, Formeln zu kürzen. Die meisten Gründe wuden schon genannt:

  1. Lesbarkeit
  2. Compiler optimiert eh (oft auch die vermeintlich schon manuell erstellte optimale Formel)
  3. Bessere Editierbarkeit

Habe aber mehr mit Datenbankanwendung zu tun. Da macht sich die Performance-Optimierung im Quellcode eher selten bemerkbar, wenn die meiste Zeit damit verbracht wird, auf die Rückgabe der Datenbasis zu warten. Da hat dann die Lesbarkeit einen deutlich höheren Stellenwert.

Und falls es doch mal z. B. bei Itereationen etwas bringen sollte, schreibe ich die ungekürzte Formel in einem Kommentar daneben. Zum einen wegen Punkt 3, zum anderen habe ich mehr als einmal erlebt, dass werte Kollegen meinten die Formel zu verstehen und sie dann „kaputtoptimiert“ haben.

2 Like

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Nachrichten mehr erlaubt.