Mathematik beim Programmieren?
Moin. Ich starte ab Anfang Dezember eine Umschulung zum Fachinformatiker für Anwendungsentwicklung. Vom Bildungsträger aus gibt es einen 2-monatigen Vorbereitungskurs den ich einfach mal mitnehme, weil ich dachte es könnte ja nicht schaden. Jetzt haben wir seit kurzem so Themen wie Wahrscheinlichkeitsrechnung, Baumdiagramme, Kombinatorik, Binomialkoeffizient, Fakultät und lauter solche Sachen. Ohne Umschweife: Braucht man sowas als Softwareentwickler?
Ich meine, klar brauche ich Wahrheitstabellen und Logikgatter um ein grundsätzliches Verständnis für Operatoren, Funktionen und Variablen zu entwickeln. Aber Stochastik?
Noch eine zusätzliche Frage: Wie relevant ist das ganze wenn ich in Richtung Ethical Hacking/Penetration Testing gehen will?
Bzw. Was ist relevant wenn ich in diese Richtung will? Momentan setze ich mich mit den Basics der Netzwerktechnik auseinander, außerdem mit Linux und Python.
Bin für jede Hilfe und Empfehlung dankbar!
6 Antworten
Die von dir genannten Mathethemen sind ja absolute Basics und kommen letztendlich ja im Gymnasium schon dran. Ob du jetzt im Einzelnen alles brauchst, kann dir natürlich keiner sagen. Aber es weiß ja auch keiner, was für Software du eventuell mal entwickelst und für welches Anwendungsgebiet die gebraucht wird. Schaden wird es auf jeden Fall nicht, wenn du die Sachen vernünftig lernst.
Für dein "ethical hacking":
Wahrscheinlichkeitsrechnung
Ermöglicht es dir, deine intrusion success chances für verschiedene Vorgehensweisen zu eruieren. Das muss nicht zwingend hochmathematisch sein, aber z.B. die Stärke von verschiedenen Passwörtern wird ebenso damit berechnet (wie wahrscheinlich ist es, dass genau dieses Passwort erraten wird? Stichwort n aus m) wie die durchschnittliche Laufdauer von entsprechenden decrypt Programmen. Oder wie willst du die Eignung verschiedener rainbow tables für dein Vorhaben abschätzen, abhängig davon, welche Plattformen dir zur Verfügung stehen und wer/was das Ziel ist, wenn du keinen blassen Dunst vom Berechnen von Wahrscheinlichkeiten hast?
Baumdiagramme
Erlauben dir eine strukturierte Vorgehensweise. Ansonsten machst du es so, wie jedes dumme Skriptkiddie und stolperst blind durch die Kali-Programme, hast keinen Peil, was du machst und (viel wichtiger) was du schon probiert hast. Wenn du gelernt hast, Vorgänge oder Mengen strukturiert zu beschreiben, dann kannst du selber auch entsprechend strukturiert und gezielt vorgehen. Habe ich in der Praxis schon oft bei QA und Testern erlebt, die keine Ahnung von Baumdiagrammen hatten, dass sie ihre Tests doppelt und dreifach aufgebaut haben, was völlig unnötig war. Für deine Zwecke kannst du "Test" mit "Hackversuch" ersetzen. Dann weisst du, wofür du die Diagramme gebrauchen kannst.
Kombinatorik
Die allerunterste Grundlage des brute forcens und du fragst allen Ernstes, wofür du das brauchst? Ich schätze mal, dass es mit deinen logischen und technischen Fähigkeiten aber noch nicht sonderlich weit her ist...
Binomialkoeffizient
Die habe ich so in meiner Arbeit tatsächlich noch nicht allzu oft gebraucht.
Fakultät
Stichwort rekursive Programmierung. Die Fakultätsberechnung ist dafür das Paradebeispiel und rekursive Algorithmen kannst du immer wieder gebrauchen und sei es nur, dass du entweder den Stack zum Platzen bringst - oder eben nicht.
P.S.: Entgegnungen kannst du dir sparen, dafür ist mir dein Ton in den anderen Kommentaren zu pampig.
Pampig ist eine Sache der Empfindung. Ich bin ein Freund von klaren Aussagen, nicht von Zitaten, klugen Sprüchen und Ausschweifungen. Das ist alles.
Es geht in erster Linie nicht darum, dass du ein Mathe-Crack sein musst, um Informatiker zu sein. Es geht eher darum, die Art und Weise des logischen Denkens zu beherrschen - oder zumindest zu verstehen und anwenden zu können -, auf der die Mathematik basiert... da genau diese Art des Denkens genau das ist, wie auch Informatik funktioniert. Und gerade beim Pentesting, Ethical Hacking usw. geht es in erster Linie ja darum, komplexe Systeme zu analysieren und Schwachstellen oder Fehler zu finden und auszunutzen. Das Konzept hinter diesen Funktionen, Algorithmen & Co. ist dabei fast immer mathematischer Natur oder zumindest basiert es auf mathematischen Strukturen. Insofern musst du zwar nicht im Kopf die x-te Ableitung von Haumichtot ausrechnen können, aber das grundlegende Konzept und somit Denkweise hinter einem System solltest du verstehen, damit du überhaupt eine Chance hast, auf Systemebene einen Angriffsvektor postulieren zu können.
VIELEN DANK! Eine einfache, klare Aussage die alle Informationen enthält nach denen ich gefragt habe!
Wenn du eine eine Web-Anwendung mit JavaScript programmieren willst, brauchst du wahrscheinlich eher weniger Mathe. Aber wenn du anfängst, eine Anwendung zur Analyse von irgendwelchen Daten zu programmieren, kann da schnell Mathe vorkommen. Und wenn du in Richtung IT-Security gehen willst, gibt es durchaus auch echt komplizierte Mathe. Verschlüsselung und so.
Das hängt davon ab, welche Software du entwickelst.
Obwohl Softwareentwicklung nur einer meiner Nebenjobs ist, habe ich dafür in knapp 30 Jahren einen erstaunlich großen Teil der Schulmathematik tatsächlich benötigt.
Auch Stochastik war dabei.