Vor über 20 Jahren hatte ich mal ein Gespräch mit einem Schreiner, der Fenster bauen musste und dazu Rahmen aus angelieferten Profilen zu sägen hatte.
Er wünschte sich damals eine IT-Lösung, die ihm beim sparsamen Umgang mit den angelieferten und teuren Profilen helfen könnte. Es sollte die Abfall-Länge optimiert,a ls minimal gehalten werden. Das Problem ist, dass die Profile mit einer bestimmten Länge angeliefert werden und wenn man nun etwa aus einem 5m Profil ein Stück von 3m schneidet, ergibt sich ein Abfall von 2m. Daraus könnte aber vielleicht noch ein Stück von 1,5m geschnitten werden. Dann ist der Abfall nur 0,5m. Das ist einfach und leuchtet ein. Doch, wenn ich nun aus einem 5m Profil drei Stücke von 1,5m schneide, habe ich ebenfalls 0.5m Abfall, brauche aber aus einem anderen 5m Profil nochmal 1,5m, da je jedes Rahmenstück doppelt vorkommt. Es ist leicht zu sehen, dass je nach Auftrag hier durchaus eine Optimierung stattfinden und passende Längen zueinander gebildet werden könnten. zudem könnten auch mehrere Aufträge zusammengefasst werden und so eine noch größere Optimierung erzielt werden.
Mir kam das Problem interessant vor, aber außer "Versuch und Irrtum" mit vielen if..then und Vergleichen, ist mir dazu nichts eingefallen. Ich hatte aber auch noch nir Lust auf Mathe und auch nicht sonderlich auf Programmierung und kenne mich mit beidem nicht aus.
Das Beispiel mochte ich erzählen, weil es vielleicht ganz anschaulich was verdeutlicht.
Ein Programmierer kann solch eine Aufgabe wahrscheinlich lösen, wenn er sich Mühe gibt und er braucht dazu noch nicht mal einen Algorithmus zu finden, sondern nur sehr viele Rechnungen durchlaufen und ordnen zu lassen.
Ein Mathematiker könnte einen Algorithmus entwickeln, irgendeine Art Formel oder vielleicht gibt es die auch schon und damit rechnerisch und elegant das Problem tatsächlich lösen, aber damit hat er dann immer noch kein Programm geschrieben.
Es bleibt immer noch ein Teil der Arbeit zu tun, die auch der unmathematische Programmierer zu bewältigen hat: das (G)UI muss gefüttert werden und die Ein- und Ausgaben sinnvoll zur Anzeige kommen.
Ohne Zweifel hat aber der Mathematiker einen Vorteil und wird auch ein eleganteres Programm bauen können, weil der Kern der Aufgabe einfacher und eleganter realisiert werden kann.
Vielleicht kann man das so sehen, was und wann Mathematik gebraucht wird oder zumindest das Verständnis dafür und das Wissen um vorhandene Lösungsmöglichkeiten einsetzen, um Aufgaben besser und schneller zu lösen. Beide können eine Lösung bieten und beide müssen noch programmieren, wobei wiederum Fehler gemacht werden können und es nicht gesagt ist, dass einer mit guten Mathe-Kenntnissen automatisch auch guten Code produziert.
Ja, Mathe ist vielleicht sogar eher eine Fremd-Disziplin und eigentlich sollte vielleicht ein guter Programmierer einen fähigen Mathematiker zur Seite haben, um zuerst mal die anstehenden Probleme sauber formulieren und analysieren zu können. Aber, weil das kaum in der Praxis zu haben sein wird, ist dann der Mathematik-Kundige ein wenig im Vorteil. Wie jemand mit guter Allgemeinbildung auch den ein oder anderen Vorteil hat, gegenüber jemandem, der nur ein einziges Gebiet betreibt.
Deshalb möchte ich auch noch ein (für mich) sehr abschreckendes Beispiel nennen. Denn, wenn so ein Mars-Lander crashed, weil die Programmierer inch und cm verwechselt haben (oder so ähnlich), dann weiß ich nicht ob man das auf Versagen der höheren Mathematik oder auf schlechte Programmiertechnik zurückführen kann. Für mich ist das einfach nur sau dämlich und es fehlte offenbar am nötigen kleinen Verstand zwischen den hohen Ansprüchen. Vielleicht wäre es manchmal gut, die Akteure zu mischen und nicht nur zu tief in ihrem Wissen verstrickte Arbeitskräfte zu haben. Das Wissen um die geheimen Gesetze der Schwerkraft nutzt nichts, wenn ich nicht mal eine einfache Strecke abmessen kann.
So muss man vielleicht auch unterscheiden, wer denn was programmiert und sehen, was dafür gebraucht wird.
Ich glaube (aber ich weiß es nicht, weil ich wirklich keine Ahnung habe), dass gutes Programmieren eine eigene Kunst ist und wenn ich einen Mathematiker brauche, dann suche ich mir einen und wenn ich guten Code brauche, dann eben einen Programmierer und wenn ich meine Wohnung gut gestrichen haben will, entweder einen Anstreicher oder meine Frau. Ich denke, der Projekt-Verantwortliche muss derartiges koordinieren und überblicken, nicht unbedingt der Programmierer selbst.
Ich glaube nicht, dass ein Bild vom Programmierer als kleines Universal-Genie in der schlecht beheizten Garage noch gültig ist.
Aber, wenn ich Programmierer wäre, würde ich mich natürlich auch für andere Sachen interessieren und meine Bildung nicht still stehen lassen und selbstredend gehört dann auch Mathematik und einige Grundlagen dazu, die mit meinem Beruf in Zusammenhang stehen. Denn ich bin altmodisch und möchte nicht gerne auf andere Leute bauen, wenn ich etwas selbst erledigen kann.