it-swarm.com.de

Ist Mathematik für die Programmierung notwendig?

Ich habe während der College-Tage mit einem Freund darüber diskutiert, ob fortgeschrittene Mathematik für jeden erfahrenen Programmierer notwendig ist. Er pflegte heftig dagegen zu argumentieren. Er sagte, dass Programmierer nur mathematische Grundkenntnisse von der High School oder dem College benötigen, nicht mehr und nicht weniger, und dass fast alle Programmieraufgaben auch ohne fortgeschrittene Mathematik erledigt werden können. Er argumentierte jedoch, dass Algorithmen für Programmierer von grundlegender Bedeutung und unverzichtbar seien.

Mein Standpunkt war, dass alle Fortschritte in der Informatik fast ausschließlich von Fortschritten in der Mathematik abhingen, und daher würden gründliche Kenntnisse in der Mathematik Programmierern bei der Arbeit mit realen herausfordernden Problemen sehr helfen.

Ich kann mich immer noch nicht entscheiden, auf welcher Seite die Argumente richtig sind. Können Sie uns aus eigener Erfahrung Ihre Haltung mitteilen?

117
simsim

Um Ihre Frage so zu beantworten, wie sie gestellt wurde, müsste ich sagen: "Nein, Mathematik ist für die Programmierung nicht erforderlich." Wie andere in diesem Thread bereits angedeutet haben, besteht meiner Meinung nach ein Zusammenhang zwischen dem Verständnis der Mathematik und der Fähigkeit, "algorithmisch zu denken". Das heißt, abstrakt über Quantität, Prozesse, Beziehungen und Beweise nachdenken zu können.

Ich habe mit dem Programmieren angefangen, als ich ungefähr 9 Jahre alt war, und es wäre eine Strecke, zu sagen, dass ich zu diesem Zeitpunkt viel Mathematik gelernt habe. Mit ein wenig Mühe konnte ich jedoch Variablen, for-Schleifen, goto-Anweisungen (verzeih mir, ich war Vic 20 BASIC und ich hatte noch keine Dijkstra gelesen) und die grundlegende Koordinatengeometrie verstehen, um Grafiken auf den Bildschirm zu bringen .

Schließlich schloss ich einen Abschluss in reiner Mathematik mit einem Nebenfach in Informatik ab. Obwohl ich mich hauptsächlich auf die Analyse konzentrierte, studierte ich auch einiges an diskreter Mathematik, Zahlentheorie, Logik und Berechenbarkeitstheorie. Abgesehen davon, dass ich ein paar Ideen aus Statistik, Wahrscheinlichkeitstheorie, Vektoranalyse und linearer Algebra auf das Programmieren anwenden konnte, gab es wenig Mathematik, das ich während meines Grundstudiums und der anschließenden kommerziellen und Forschungsprogrammierung direkt auf mein Programmieren anwendete.

Ich bin jedoch der festen Überzeugung, dass die formalen Denkmethoden, die die Mathematik erfordert - sorgfältiges Denken, Suche nach Gegenbeispielen, Aufbau axiomatischer Grundlagen, Erkennen von Zusammenhängen zwischen Konzepten -, eine enorme Hilfe bei der Bewältigung großer und komplexer Programmierprojekte waren.

Überlegen Sie, wie Athleten für ihren Sport trainieren. Zum Beispiel verbringen Fußballer ohne Zweifel einen Großteil ihrer Trainingszeit mit grundlegenden Fußballfähigkeiten. Um ihre allgemeine Fitness zu verbessern, können sie jedoch auch im Fitnessstudio Fahrrad- oder Rudergeräte benutzen, Gewichte trainieren usw.

Das Studium der Mathematik kann mit Krafttraining oder Cross-Training verglichen werden, um Ihre mentale Stärke und Ausdauer für das Programmieren zu verbessern. Es ist absolut notwendig, dass Sie Ihre grundlegenden Programmierfähigkeiten üben, aber das Studium der Mathematik ist eine unglaubliche mentale Übung, die Ihre analytischen Kernfähigkeiten verbessert.

111
Mark Reid

Während fortgeschrittene Mathematik für das Programmieren möglicherweise nicht erforderlich ist (es sei denn, Sie programmieren fortgeschrittene Mathematikfähigkeiten), sind sich der Denkprozess des Programmierens und der Mathematik sehr ähnlich. Sie beginnen mit einer Basis bekannter Dinge (Axiome, zuvor bewährte Theorien) und versuchen, an einen neuen Ort zu gelangen. Sie können keine Schritte überspringen. Wenn Sie Schritte überspringen, müssen Sie die Lücken ausfüllen. Es ist ein kritischer Denkprozess, der die beiden unglaublich ähnlich macht.

Auch Mathematiker und Programmierer denken beide abstrakt kritisch. Dinge der realen Welt werden durch Objekte und Variablen dargestellt. Die Fähigkeit, vom Konkreten ins Abstrakte zu übersetzen, verbindet auch die beiden Felder.

Es besteht eine sehr gute Chance, dass wenn Sie gut in einem sind, Sie wahrscheinlich gut in dem anderen sind.

56
Jarrett Meyer

informatik! = Programmierung

OK, im Ernst, ich kenne gute und schlechte Programmierer, die Englisch- und Psychologie-Majors waren, und einige, die Informatik-Majors waren. Einige sehr berühmte Leute, die ich als Entwickler bewundere, hatten keinen CS-Hintergrund. Larry Wall (Perl) zum Beispiel war Sprachwissenschaftler. Auf der anderen Seite ist es hilfreich, etwas über die Domain zu wissen, an der Sie arbeiten, da Sie dann zumindest sehen können, ob Ihre Daten sinnvoll sind, und Ihren Kunden/Benutzern dabei helfen, die tatsächlichen Anforderungen zu erfüllen. Und ja, es gibt das Problem der Rechenkomplexität und der effizienten Datenstrukturen und der Programmkorrektheit. Das ist etwas, was man in der Informatik lernt und das in fast allen Bereichen nützlich ist, aber es ist weder notwendig noch ausreichend.

39
David Nehme

Ich denke, ich werde die erste Person sein, die sagt, dass Sie tun Mathe brauchen. Wie andere gesagt haben, ist Mathematik für bestimmte Aspekte der Entwicklung nicht so wichtig, aber die Grundlagen des kritischen Denkens und der strukturierten Analyse sind sehr wichtig.

Darüber hinaus spielt Mathematik eine wichtige Rolle für das Verständnis vieler grundlegender Aspekte wie Scheduler, Optimierungen, Sortierung, Protokollverwaltung und einer Reihe anderer Aspekte von Computern. Obwohl die Mathematik ausgehend von einer Berechnungsebene nicht komplex ist (hauptsächlich die Algebra der High School), können die Theorien und Anwendungen recht komplex sein, da ein solides Verständnis von Mathematik durch Analysis von großem Nutzen sein wird.

Kannst du ohne sie auskommen, absolut, und du solltest dich nicht von weniger als gründlichen mathematischen Kenntnissen zurückhalten lassen, aber wenn du die Chance oder die Neigung dazu hättest, würde ich so viel Mathematik wie möglich lernen, Kalkül, numerische Theorie, linear Algebra, Kombinatorik, praktische Anwendungen - all dies hat sowohl praktische als auch theoretische Anwendungen in einem breiten Spektrum der Informatik.

Ich kannte Leute, die auf beiden Seiten des Zauns sehr erfolgreich waren (diejenigen ohne starken Fokus auf Mathematik und diejenigen, die für Physik oder Mathematik zur Schule gingen), aber in beiden Gruppen hatten sie Spaß an numerischen Problemen und lernten etwas über Algorithmen und Mathematiktheorie .

29
GrayWizardx

Ich habe einen Abschluss in Mathematik, kann mich aber nicht erinnern, dass ich diese Mathematik ein einziges Mal in meiner Karriere verlangt habe. Es war nützlich, um meinen Verstand für das logische Denken zu schulen, aber ich habe keinen Code unter Verwendung von Fluiddynamik, Quantentheorie oder Markov-Ketten geschrieben. (Der letzte wird am wahrscheinlichsten auftauchen, vermute ich.)

Die meisten Branchenentwickler benötigen die meiste Zeit keine fortgeschrittene Mathematik. Manchmal kann es hilfreich sein, Trigonometrie zu kennen, und es kann wichtig sein, genug Mathematik zu verstehen, um mathematisch beschriebene Algorithmen zu implementieren - aber darüber hinaus? Nein.

Vergessen Sie nicht, dass die meisten Programmierer die Informatik nicht voranbringen - sie erstellen Anwendungen. Ich brauche keine fortgeschrittenen technischen Kenntnisse, um ein modernes Auto zu fahren, obwohl dieses Auto mit ziemlicher Sicherheit verbessert wurde durch fortgeschrittene technische Kenntnisse.

26
Jon Skeet

Ich werde hier gegen den Strich gehen und "Ja" sagen

Ich wechsele vom Bauingenieurwesen zur Programmierung (Concrete Sucks!). Mein mathematischer Hintergrund besteht aus dem üblichen Material für das erste Jahr, dem zweiten und dritten Jahr (Diff EQ, Volumenintegrationen, Reihen-, Fourier- und Laplace-Transformationen) und einem Kurs zur numerischen Analyse.

Ich finde, dass meine Mathematik für die Computerprogrammierung unglaublich fehlt. Es gibt ganze Bereiche der diskreten Mathematik und Logik, die mir fehlen, und ich überlebe nur dank einer umfangreichen Bibliothek von Lehrbüchern, Wikipedia und Wolfram. Die meisten fortgeschrittenen Algorithmen basieren auf fortgeschrittener Mathematik, und ich bin nicht in der Lage, fortgeschrittene Algorithmen zu entwickeln, ohne umfangreiche Recherchen anzustellen (was im Wesentlichen einem halben Arbeitsaufwand entspricht) Sie haben nicht die mathematischen Grundlagen als die Schultern der Riesen, auf denen sie stehen können.

14
Chris Cudmore

Ich würde argumentieren, dass fortgeschrittene Logik (diskrete) Mathematik wirklich helfen kann. Das zusammen mit der Mengenlehre. Im Umgang mit gängigen Computerprogrammen können diese Disziplinen sehr hilfreich sein. Ein Großteil der anderen Mathematik, die ich an der Universität belegte, war das Kalkül, das meines Erachtens nur in sehr begrenztem Umfang angewendet wurde. Da 90% (oder so ähnlich) der Programmierung Geschäftsanwendungen mit sehr einfachen mathematischen Methoden ausführen, würde ich sagen, dass Sie zum größten Teil mit sehr geringen mathematischen Kenntnissen auskommen. Ein gutes Verständnis von Boolescher Algebra, Logik, diskreter Mathematik und Mengenlehre kann Sie jedoch wirklich auf die nächste Stufe bringen.

14
Kibbee

Es hängt davon ab, was Sie tun. Wenn Sie viel 3D-Programmierung betreiben, sind sicherlich Kenntnisse der 3D-Geometrie erforderlich, stimmen Sie nicht zu? ;-) Wenn Sie ein neues Bildformat wie JPG oder ein neues Audioformat wie MP3 erstellen möchten, sind Sie auch ziemlich verloren, wenn Sie eine Cosinus- oder Fourier-Transformation nicht verstehen, da dies die Grundlagen sind, auf denen die verlustreichste Komprimierung basiert . Viele andere Probleme können besser gelöst werden, wenn Sie Ihre Mathematik ziemlich gut kennen.

Es gibt auch viele andere Programmieraufgaben, für die Sie nicht viel Mathematik benötigen.

14
Mecki

Wenn Sie das Thema faszinierend genug finden, um es zu veröffentlichen, machen Sie einfach weiter und beginnen Sie zu lernen. Der Rest wird natürlich kommen.

13

Ja, fortgeschrittene Mathematik ist nicht erforderlich, wenn Sie kommerzielle Software von der Stange programmieren.

Allerdings, wenn es um Hardcore-Sachen geht wie:

  • Berechnung der Flugbahnen zur Steuerung eines Roboters
  • Erstellen von KI-ähnlichen Anwendungen zur Unterstützung von Unsicherheit und automatischem Denken
  • Spielen mit 3D-Bewegungen und Grafiken

Einige fortgeschrittene Mathematikkenntnisse könnten sich als nützlich erweisen. Und es ist nicht so, als wären sie "nicht von dieser Welt" -Probleme.

Ich musste eine Software erstellen, um zu versuchen, die erforderliche Papiermenge für ein Büro "vorherzusagen" (und es war die Hölle, nur den besten Weg zu finden, um Werte zu approximieren).

Sie müssen jedoch vorsichtig sein, denn bei fortgeschrittenen Funktionen kann man sich leicht verlaufen - es gibt einen Freund von mir, der Turing verwendet, um den Status eines dynamischen Menüs zu speichern, nur um es korrekt anzuzeigen - humm ... vielleicht Er war in seiner Vorstellung zu weit gegangen.

9
rshimoda

Welche Art der Programmierung?

In meiner kaufmännischen Erfahrung habe ich keine fortgeschrittene Mathematik benötigt, aber dies hängt stark von dem Fach ab, in dem Sie tätig sind.

Computergrafiken erfordern ein hohes Maß an fortgeschrittener Mathematik. Viele akademische Computerprogramme erfordern fortgeschrittene Mathematik.

Wenn man also sagt, dass es eine Korrelation zwischen Leuten gibt, die gut in Mathematik sind, und Leuten, die gut in Programmieren sind.

Ich hoffe, diese wunschgemäße Antwort hilft.

8
David Waters

Nach meiner Erfahrung ist Mathematik in der Programmierung erforderlich, man kann nicht davon loskommen. Die gesamte Programmierung basiert auf Mathematik.

Die Ausgabe ist nicht schwarz und weiß, sondern bunter. Die Frage ist nicht, ob du Mathe brauchst oder nicht, sondern wie viel. Die höheren Mathematikniveaus geben Ihnen mehr Werkzeuge und öffnen Ihren Verstand zu den verschiedenen Wegen von zwar.

Zum Beispiel können Sie programmieren, wenn Sie nur Addition und Subtraktion kennen. Wenn eine Multiplikation erforderlich ist, müssen Sie viele Additionen durchführen. Die Multiplikation vereinfacht sich wiederholende Hinzufügungen. Mit Algebra kann man Mathematik vereinfachen, bevor man sie in Programme implementiert. Die lineare Algebra bietet Werkzeuge zum Transformieren von Bildern. Die Boolesche Algebra bietet Mechanismen zum Reduzieren all dieser if Anweisungen.

Und vergessen Sie nicht die Geschwister der Mathematik, Logik und Philosophie. Mit Logic können Sie die Anweisungen case oder switch effizient nutzen. Die Philosophie wird Ihnen helfen, das Denken desjenigen zu verstehen, der den Code geschrieben hat, den Sie modifizieren.

Ja, Sie brauchen nicht viel Mathematik, um Programme zu schreiben. Einige Programme erfordern möglicherweise mehr Mathematik als andere. Mehr mathematische Kenntnisse verschaffen Ihnen einen Vorteil gegenüber denen, die weniger verstehen. In diesen Zeiten brauchen die Menschen jeden Vorteil, den sie bekommen können, um diese Jobs zu bekommen.

6
Thomas Matthews

Ich programmiere seit 8 Jahren professionell und seit meinem 12. Lebensjahr als Hobby.

Mathematik ist nicht nötig, Logik ist es. Mathematik ist jedoch schrecklich hilfreich. Zu sagen, dass es nicht notwendig ist, zu sagen, dass man ein Messer verwenden kann, um einen Mann zu töten, ist keine Waffe erforderlich. Nun, es ist wahr, aber diese Waffe macht es viel einfacher.

Es gibt ein paar Mindestanforderungen, die Sie bereits erfüllen sollten. Sie müssen grundlegende algebraische Ausdrücke und Notationen sowie die üblichen Computeräquivalente kennen. Beispielsweise müssen Sie wissen, was eine Exponentialzahl ist (3 bis 3 sind 27), und der allgemeine Computerausdruck ist 3 ^ 3. Die gebräuchlichen Bezeichnungen für Algebra ändern sich zwar zwischen den Sprachen, aber viele von ihnen verwenden eine etwas einheitliche Methodik. Andere (die dich ansehen, LISP) tun das nicht. Sie müssen auch die Reihenfolge der Operationen kennen.

Sie müssen algorithmisches Denken verstehen. Erst das, dann das ergibt das, was in dieser Rechnung verwendet wird. Wahrscheinlich verstehen Sie das oder nicht, und es ist eine ziemlich schwierige Hürde, zu springen, wenn Sie es nicht verstehen. Ich habe herausgefunden, dass dies etwas ist, das man "bekommt", und nicht wirklich etwas, das man lernen kann. Umgekehrt bekommen manche Leute keine Kunst. Sie sollten keine Maler werden. Es gab auch Studenten im CS-Lehrplan, die nicht herausfinden können, warum dies nicht funktioniert: x = z + w; z = 3; y = 5; Es ist nicht so, dass sie Addition nicht verstehen, es ist so, dass sie das Erfordernis eines eindeutigen Ausdrucks nicht begreifen. Wenn sie es verstehen, sollte es auch der Computer sein, oder? Wenn Sie nicht sehen können, was mit den obigen drei Zeilen nicht stimmt, werden Sie kein Programmierer.

Zuletzt müssen Sie wissen, welche Mathematik sich in Ihrem Programmierbereich befindet. Buchhaltungssoftware könnte bei der grundlegenden Algebra aufhören. Wenn Sie Physik programmieren, müssen Sie Physik (lose) und Mathematik in dreidimensionaler Geometrie (euklidisch) kennen. Wenn Sie Architektur-Software programmieren, müssen Sie die Trigonometrie kennen.

Das geht aber weiter als Mathe; Für welche Domain Sie auch programmieren, Sie müssen die Grundlagen genau verstehen. Wenn Sie eine Sprachanalyse-Software programmieren, müssen Sie Wahrscheinlichkeit, Statistik, Grammatiktheorie (mehrere Sprachen) usw. kennen.

Häufig benötigen bestimmte Domänen Wissen, von dem Sie glauben, dass es nichts damit zu tun hat, oder können davon profitieren. Wenn Sie beispielsweise Audiosoftware programmiert haben, müssen Sie die Trigonometrie kennen, um mit Wellenformen umgehen zu können.

Die Größe verändert auch die Dinge. Wenn Sie einen Finanzdatensatz mit 1000 Elementen sortieren, ist dies keine große Sache. Wenn es sich jedoch um 10 Millionen Datensätze handelte, würden Sie erheblich davon profitieren, wenn Sie die Vektormathematik tatsächlich kennen und ein tiefes Verständnis für das Sortieren auf Binärebene haben (wie sortiert ein System alphabetisch? Woher weiß es, dass 'a' kleiner ist als 'b '?)

Sie werden feststellen, dass Ihre allgemeine Wissensbasis als Programmierer explodieren wird, da jedes Projekt mehr Lernen außerhalb des direkten Bereichs der Programmierung erfordert. Wenn Sie zimperlich oder faul im Selbstlernen sind und die Idee nicht mögen, mehr als 10 Stunden pro Woche im Wesentlichen "Hausaufgaben" zu machen, werden Sie kein Programmierer.

Wenn du Gedankenübungen magst, wenn du gerne lernst, wenn du über abstrakte Dinge wie Mathematik ohne Taschenrechner oder Design ohne Skizzenblock nachdenken kannst, wenn du einen breiten Geschmack im Leben und in den Hobbys hast, wenn du selbstkritisch bist und wegwerfen kannst. ' favorisierte 'Ideen, wenn Sie Dinge perfektionieren möchten, dann werden Sie Programmierer. Begründen Sie diese Entscheidung nicht auf Mathematik, sondern auf die Fähigkeit, logisch zu denken und zu lernen. Das ist wichtig; Mathe ist nur das Nebenprodukt.

6
user634669

Ich stimme Chris zu. Ich würde auch "Ja" sagen. Dies hängt jedoch von Ihrem Markt ab, wie oben angegeben. Wenn Sie lediglich einfache Standardanwendungen erstellen oder Tools schreiben, die Sie bei Ihrer täglichen Arbeit unterstützen, ist Mathematik bei weitem nicht so wichtig.

Das Entwickeln von kundenspezifischen Softwarelösungen erfordert viel Problemlösung und kritisches Denken. Fähigkeiten, die auf jeden Fall verbessert werden, wenn ein mathematischer Hintergrund vorliegt. Ich habe einen Abschluss in Mathematik mit einem Abschluss in Computertechnik und gebe allen meinen mathematisch orientierten Hintergründen Anerkennung dafür, warum ich heute dort bin, wo ich bin.

Das sind meine 2 Cent, ich kann dem obigen Text entnehmen, dass viele nicht zustimmen würden. Ich ermutige alle zu bedenken, dass ich nicht sage, dass Sie diese Fähigkeiten nicht ohne einen mathematischen Hintergrund haben können. Ich sage lediglich, dass die Fähigkeiten Nebenwirkungen eines solchen Hintergrunds sind und sich positiv auf die Software auswirken können.

6
MaTT

Mathematik wird für Entwickler in einigen Bereichen benötigt, in anderen Bereichen ist sie jedoch nahezu nutzlos.

Wenn Sie ein Spieleentwickler sind und viel mit Physik zu tun haben, ist das Verständnis der Mathematik von entscheidender Bedeutung. Wenn Sie mit erweiterten visuellen Steuerelementen arbeiten, können Sie ohne Geometrie nicht viel erreichen. Wenn Sie vorhaben, einige Finanzberechnungen durchzuführen, ist es WIRKLICH hilfreich, solide statistische Kenntnisse zu haben.

Auf der anderen Seite hatte ich in den letzten 5 Jahren nur 2 oder 3 Projekte, in denen überhaupt JEDE Menge Mathe benötigt wurde. Von diesen gab es nur ein Vorkommen, bei dem eine Google-Suche nicht geholfen hat.

Am Ende des Tages erledigen Ihre Kunden häufig sogar Finanzkalkulationen für Sie und geben Ihnen Formeln, die Sie implementieren können.

Wenn Sie also im Bereich "Angewandte Software" tätig sind, werden Sie wahrscheinlich nie Ihr Mathematikstudium absolvieren. Wenn Sie in der akademischen Software sind, sind Mathematik entscheidend.

6
Ilya Kochetov

Jemand mit einem soliden mathematischen (und nicht nur arithmetischen) oder logischen Hintergrund kann mit Algorithmen, variabler Verwendung, bedingtem Denken und Datenstrukturen gut umgehen.

  • Nicht jeder kann eine Benutzeroberfläche entwerfen.
  • Nicht jeder kann effizienten Code erstellen.
  • Nicht jeder kann klar kommentieren und dokumentieren.
  • Nicht jeder kann einen guten Algorithmus ausführen

Mathematik hilft Ihnen zu einem Punkt, aber nur zu einem Punkt.

5
Unsliced

Ich denke nicht, dass fortgeschrittene Mathematikkenntnisse eine Voraussetzung für einen guten Programmierer sind, aber basierend auf meiner persönlichen Erfahrung denke ich, dass Programmierer, die ein besseres Verständnis für fortgeschrittene Mathematik haben, auch bessere Programmierer sind. Dies kann einfach auf einen logischeren Verstand oder auf einen logischeren Ausblick zurückzuführen sein, da sie Erfahrungen mit der Lösung mathematischer Probleme gesammelt haben.

5
Jimoc

Mathematik ist eine Toolbox zum Erstellen von Programmen. Ich empfehle Cormens Einführung in Algorithmen. Es berührt die "mathematischen" Dinge.

- Greatest lowest limit (managing resources) 
- Random variables (game programming)
- Topological sort (adjusting spreadsheets)
- Matrix operations (3d graphics)
- Number theory (encryption)
- Fast fourier transforms (networks)
5
user559910

Das grundlegende Konzept der Mathematik ist das folgende: Entwickeln, Verstehen, Implementieren und Verwenden von Algorithmen. Wenn Sie nicht rechnen können, liegt es daran, dass Sie diese Dinge nicht tun können, und wenn Sie diese Dinge nicht tun können, können Sie kein effektiver Programmierer sein.

Gängige Programmieraufgaben erfordern möglicherweise keine spezifischen mathematischen Kenntnisse (z. B. benötigen Sie wahrscheinlich keine Vektoralgebra und -rechnung, es sei denn, Sie führen Aufgaben wie z. B. 3D-Grafiken oder Physiksimulationen aus), aber die zugrunde liegenden Fähigkeiten sind identisch und es mangelt an Fähigkeiten in der einen Domäne wird ein entsprechender Mangel an Fähigkeiten in der anderen Domäne zugeordnet.

5
DrPizza

Natürlich hängt es davon ab, welche Art von Programmierer Sie sein möchten oder besser, welche Art von Programmierer Ihre Arbeitgeber Sie sein möchten. Ich denke, Kalkül und Algebra sind das Wesentliche, statistische und lineare Programmierung sind in der Tat ein gutes Werkzeug für Ihre Aktentasche. Vielleicht könnten Sie auf eine Analyse (Ableitung, Integrale, Funktionen ...) verzichten. Aber wenn Sie wissen möchten, wie die Dinge hautnah funktionieren (z. B. Elektronik oder einige nicht triviale Algorithmen), sollten Sie auf "fortgeschrittene" Mathematik nicht verzichten.

5
Manrico Corazzi

Die meiste Programmierung, die ich gemacht habe, umfasste physikalische Simulationen für Forschungszwecke, einschließlich Elektromagnetismus, Quantenmechanik und Strukturmechanik. Da die Problembereiche mit fortgeschrittener Mathematik verbunden sind, würde es mir schwer fallen, sie zu lösen, ohne fortgeschrittene Mathematik zu verwenden.

Die Antwort auf Ihre Frage lautet also - es hängt davon ab, was Sie tun möchten.

5
WalkingRandomly

Fortgeschrittene Mathematikkenntnisse sind unerlässlich, wenn Sie eine neue Programmiersprache schreiben möchten. Oder Sie müssen Ihre eigenen Algorithmen schreiben.

Für die meisten alltäglichen Programmieraufgaben - von Websites bis hin zu Anwendungen für die Versicherungsabwicklung - sind jedoch nur grundlegende mathematische Aufgaben erforderlich .

5
Oak

Du brauchst Mathe. Programmieren ist nichts anderes als Mathe. Erkenntnisse der theoretischen Physik werden nicht zu einer praktischen (anwendbaren) Implikation, es sei denn, sie werden durch mathematische Lösungen erklärt. Keines davon kann rechnerisch gelöst werden, wenn es nicht auf Computern und insbesondere in Programmiersprachen interpretiert werden kann. Unterschiedliche Sprachen sind daher darauf ausgelegt, bestimmte Probleme zu lösen. Aber für allgemeine Zwecke und weit verbreitete Programmiersprachen wie Java, c, c ++ beinhalten viele unserer Programmieraufgaben die wiederholte (kontinuierliche) Lösung derselben Probleme wie das Extrahieren von Werten aus Datenbanken, Textdateien, das Aufspielen auf Windows (Desktop, Web) und das Bearbeiten gleiche Werte, manchmal Zugriff auf einige Daten von ähnlichen Geräten (aber mit unterschiedlichen Markennamen, unterschiedlichen Anschlüssen und Kopfschmerzen) usw., die nicht mehr als eine einheitliche Methode beinhalten, und Algebra (Zähler, etwas Logik), Geometrie (Grafik) usw. Also hängt davon ab, was Sie zu lösen versuchen.

4
Pramod

Ich habe ungefähr zu der Zeit mit dem Programmieren begonnen, als ich meine Vor-Algebra-Klasse begonnen habe. Daher würde ich nicht sagen, dass Mathematik so wichtig ist, obwohl es bei bestimmten Arten des Programmierens hilfreich sein kann, insbesondere bei funktionalen.

Ich habe Discrete Math noch nicht genommen, aber ich sehe viele theoretische Dinge mit Programmierung, die in einer Mathematiknotation geschrieben sind, die in dieser Klasse unterrichtet wird.

Stellen Sie außerdem sicher, dass Sie wissen, wie Sie eine beliebige Basis berechnen, insbesondere die Basis 2, 8 und 16.

Eine Klasse, die mir wirklich einige Konzepte einbrachte, war diese Vorprogrammierungsklasse. Wir haben uns Gewerkschaften, Kreuzungen und all das fröhliche Zeug beibringen lassen und es entspricht fast genau der bitweisen Mathematik. Und wir haben uns sehr ausführlich mit boolescher Logik befasst. Was ich am nützlichsten fand, war, als wir lernten, wie man komplexe boolesche Anweisungen reduziert. Das war sehr praktisch:

(x|y) & (x|z) & (x|foo)

kann vereinfacht werden

x | (y & z & foo)

Was ich vorher nicht ganz verstanden habe.

4
Earlz

Mathematische Kenntnisse sind für einen Programmierer oft nützlich, ebenso wie Grafikdesign-Fähigkeiten, Rätsellösungsfähigkeiten, Arbeitsmoral und eine Vielzahl anderer Fähigkeiten und Merkmale. Nur sehr wenige Programmierer können alles, was ein Programmierer kann. Ich würde mit keiner Aussage der Form "Sie sind kein echter Programmierer, es sei denn, Sie können {Lieblingsprogrammierfähigkeit hier einfügen}" einverstanden sein.

Aber ich wäre vorsichtig mit einem Programmierer, der Mathe nicht kann. Mehr als von jemandem, der nicht zeichnen konnte.

4
MusiGenesis

Ich denke nicht, dass höhere Mathematik eine Voraussetzung ist, um ein guter Programmierer zu sein - wie immer kommt es darauf an, was Sie programmieren.

Wenn Sie in der 3D-Grafikprogrammierung arbeiten, benötigen Sie natürlich Matrizen und ähnliches. Als Autor von Business-Software benötigen Sie wahrscheinlich Statistik-Mathematik.

Aber seit fast 10 Jahren professioneller Programmierer (und weitere 10 Jahre Amateur) "Höhere Mathematik" zu sein, ist etwas, das ich nicht regelmäßig brauchte. In etwa 99,8% aller Fälle geht es nur um Plus, Minus, Division und Multiplikation in einigen intelligenten Kombinationen - in den meisten Fällen geht es um Algorithmen, nicht um Mathematik.

4
BlaM

Das Erlernen höherer Mathematik ist für die meisten Programmierer einfach deshalb wichtig, weil es Ihr Gehirn dazu bringt, Schritt für Schritt logisch zu denken, um von einer Sache zur anderen zu gelangen.

Sehr wenige Programmierjobs erfordern jedoch etwas, das über die Mathematik der High School hinausgeht. Ich habe einmal lineare Algebra verwendet. Ich habe noch nie einen Kalkül verwendet. Ich benutze jeden Tag Algebra.

4
Lucas Oman

Ich denke, es hängt wirklich davon ab, was Sie versuchen, aber IMHO, die CS- und OS-Theorie sind hier wichtiger als Mathematik, und Sie brauchen wirklich nur die Mathematik, die sie beinhalten.

Zum Beispiel gibt es eine Menge CS-Hintergrundinformationen zu Scheduling-Theorie und -Optimierung, die hinter vielen Schedulern in modernen Betriebssystemen stehen. Das ist ein Beispiel für etwas, das etwas Mathematik erfordert, aber nicht etwas sehr Kompliziertes.

Aber ehrlich gesagt, für die meisten Sachen braucht man keine Mathematik. Was Sie brauchen, ist die Fähigkeit zu lernen, in den Basen 2 und 16 zu denken, wie zum Beispiel die Fähigkeit, mental ODER/UND zu können. Wenn Sie beispielsweise ein Byte haben und innerhalb dieses Bytes zwei 3-Bit-Felder und zwei verschwendete Bits vorhanden sind, können Sie etwas schneller arbeiten, wenn Sie wissen, welche Bits in welchen Feldern aktiv sind, wenn der Byte-Wert etwa 11 beträgt Stift und Papier.

4
Uri

Nun, Sie haben eine Reihe von Antworten generiert, und nein, ich habe sie nicht alle gelesen. Ich bin mittendrin, nein, Sie brauchen sicher keine Mathematik, um Programmierer zu werden. Assembler vs Gerätetreiber unter Linux sind nicht komplizierter oder weniger kompliziert als die anderen und erfordern auch keine Mathematik.

In keiner Weise müssen Sie für irgendetwas davon eine Matheklasse belegen oder bestehen.

Ich werde zustimmen, dass die Denkweise zur Problemlösung beim Programmieren der von mathematischen Lösungen ziemlich ähnlich ist, und als Folge davon fällt Mathematik wahrscheinlich leicht. oder im Gegenteil, wenn Mathematik schwierig ist, kann das Programmieren schwierig sein. Eine Klasse oder ein Abschluss oder ein Stück Papier oder Trophäen sind nicht erforderlich.

Wenn Sie jetzt nicht schnell von hex zu binär zu dezimal konvertieren können, entweder in Ihrem Kopf, auf Papier oder mit einem Taschenrechner, werden Sie Schwierigkeiten haben. Wenn Sie sich mit Netzwerken und anderen Aspekten des Timings befassen möchten, müssen Kerneltreiber dies häufig tun, aber nicht. Du wirst kämpfen. Ich kenne eine sehr lange Liste von Leuten mit mathematischen Abschlüssen und/oder Informatikabschlüssen und/oder Ingenieurabschlüssen, die Schwierigkeiten mit den Ratenberechnungen haben, Bits pro Sekunde, Bytes pro Sekunde, wie viel Speicher Sie benötigen, um etwas zu tun usw. In gewissem Maße kann es als eine Art Talent angesehen werden, auf das einige hinarbeiten müssen und andere.

Mein Fazit ist, dass ich an Willenskraft glaube. Wenn Sie dieses Zeug lernen wollen, das Sie können und wollen, ist es so einfach. Sie müssen keinen Kurs belegen oder viel Geld ausgeben, Linux und QEMU zum Beispiel können Sie für einige Zeit beschäftigen, verschiedene Sprachen usw. Absturzfähige Umgebungen für die Kernel-Entwicklung, eingebettet usw. Sie sind nicht darauf beschränkt , aber ich glaube nicht, dass du weglaufen und Unterricht nehmen musst, wenn du nicht willst. Wenn Sie dann sicher einige EE-Klassen, einige CS-Klassen und einige Mathe-Klassen nehmen möchten ..

4
old_timer

Für die Programmierung müssen Sie zwei Fächer beherrschen oder zumindest erlernen. Programmierung selbst und für welche Domain auch immer Ihr Programm ist. Wenn Sie Buchhaltungssoftware schreiben, müssen Sie Buchhaltung lernen, wenn Sie Roboterkinematik programmieren, müssen Sie Vorwärts- und Rückwärtskinematik verstehen. Für das Konto sind möglicherweise nur grundlegende mathematische Fähigkeiten erforderlich, für andere Domänen sind andere Arten von Mathematik erforderlich.

3
Jim C

Programmierung ist ein Werkzeug der Informatik.

In vielen Bereichen der Programmierung spielt Mathematik eine untergeordnete Rolle. Wenn Sie nicht wissen, wie Sie schnell sortieren können, laden Sie ein Modul herunter, das dies für Sie erledigt. Sie verstehen keine elliptischen Kurven, kein Problem, kaufen Sie ein AES Verschlüsselungsmodul.


Nun zur Informatik. Ja, Sie benötigen eine höhere Mathematikstufe. Daran besteht kein Zweifel. Kryptographie, Betriebssysteme, Compilerkonstruktion, maschinelles Lernen, Programmiersprachen usw. erfordern eine höhere Mathematik (Kalkül, diskret, linear, komplex), um vollständig zu verstehen.

3
J.J.

IMO, Sie brauchen wahrscheinlich eine Begabung für Mathematik, ohne unbedingt viel Wissen auf dem Gebiet zu haben. Die Dinge, die Sie brauchen, um gut in Mathe zu sein, sind ähnlich wie die Dinge, die Sie brauchen, um gut in Programmierung zu sein.

Aber im Allgemeinen kann ich mich nicht erinnern, wann ich das letzte Mal fortgeschrittene Mathematik in der täglichen Programmierung verwendet habe, also nein.

3
Lehane

Es ist wichtig, den Überblick zu behalten. Das Erlernen von Mathematik, fortgeschrittener Mathematik, Rechnen usw. eignet sich hervorragend für Denkprozesse, und viele Programmierpositionen erwarten und nutzen möglicherweise mathematische und mathematische Konzepte. Aber viele Programmierjobs benötigen wenig bis gar keine Mathematik.

Die Informatik als mathematische Disziplin erfordert natürlich viel Mathematik. Aber nur wenige Programmierjobs sind Ableitungen von comp sci. CS ist eine sehr spezielle Disziplin. Es gibt einen Grund, warum IT-Schulen jetzt Software Engineering als eine von CS getrennte Disziplin haben. Das sind sehr unterschiedliche Bereiche.

Comp Sci zum Beispiel bereitet Sie nicht gut auf die Welt der meisten Webanwendungen vor. Und Software-Engineering bereitet Sie nicht gut auf Compiler-Design und Kernel-Entwicklung vor.

2

Nein, brauche keine Mathematik. Habe ich seit meinem Abschluss nicht mehr gemacht und habe wahrscheinlich vergessen, was für ein kleines Kalkül ich sowieso beherrsche.

Stellen Sie es sich wie ein Auto vor. Wie viel Mathematik/Physik steckt Ihrer Meinung nach hinter Sachen wie Traktionskontrolle und ABS-Bremsen? Viele. Wie viel Mathematik müssen Sie wissen, um diese Tools zu verwenden? Keiner.

EDIT: Eine Sache zum Hinzufügen. Die Industrie ist hier wahrscheinlich wichtig. Ein Programmierer, der in einem Forschungsunternehmen arbeitet oder eingebettete Traktionskontrollsysteme für dieses Auto schreibt, benötigt wahrscheinlich weitaus mehr Mathematik als ein durchschnittlicher Programmierer für Geschäftstools.

2
CodeRedick

Ich werde hier mit Ihnen direkt auf dem Zaun sitzen ... es gibt viele gute Argumente sowohl für als auch gegen, und die meisten von ihnen sind gleichermaßen gültig. Also, welche ist die richtige Antwort?

Beides ... je nach Situation. Dies ist kein Fall von "Wenn Sie nicht bei uns sind, sind Sie gegen uns".

Es gibt viele Aspekte der Mathematik, die das Programmieren erheblich erleichtern: Geometrie, Algebra, Trigonometrie, lineare Gleichungen, quadratische Gleichungen, Ableitungen usw. Tatsächlich haben viele der leistungsstärksten "Algorithmen" mathematische Prinzipien im Mittelpunkt.

Wie Jon betonte, hat er einen Abschluss in Mathematik, aber in der Programmierwelt nutzt er dieses Wissen kaum. Ich schlage vor, dass er Mathematik weitaus häufiger anwendet, als er wahrscheinlich meint, wenn auch unbewusst ... okay, vielleicht nicht die Quantenmechanik, sondern die grundlegenderen Prinzipien. Jedes Mal, wenn wir eine grafische Benutzeroberfläche erstellen, verwenden wir mathematische Prinzipien, um ästhetisch ansprechend zu gestalten. Das tun wir nicht bewusst, aber wir tun es.

In der Geschäftswelt denken wir selten an die Mathematik, die wir in unserer Software verwenden - und in vielen Aspekten der Software, die wir schreiben, handelt es sich nur um Standardalgorithmen, um dieselben eintönigen Aufgaben zu erledigen, damit die Geschäftswelt mit der Technologie Schritt hält, die es gibt verfügbar.

Es wäre ziemlich einfach, eine ganze Karriere zu überspringen, ohne jemals bewusst Mathematik in unserer Software einzusetzen. Das Verständnis der Mathematik erleichtert jedoch viele Aspekte der Programmierung.

Ich denke, die Frage läuft wirklich darauf hinaus: "Ist fortgeschritten Mathematik für die Programmierung notwendig?" und natürlich zu dass Frage die Antwort ist nein ... es sei denn, Sie werden anfangen, Verschlüsselungsalgorithmen zu schreiben und/oder zu knacken (was ein faszinierendes Thema ist) oder mit hydraulischen Gleichungen zu arbeiten wie Mil wies darauf hin oder Flusskontrollsysteme (wie ich in der Vergangenheit). Aber ich würde hinzufügen, dass, während grundlegende Mathematik vielleicht nicht notwendig ist, es Ihr Leben viel einfacher machen wird.

1
BenAlabaster

Notwendig! = Ausreichend

Komm schon Leute! der titel sagt "notwendig", ich würde argumentieren, dass es bestenfalls eine ausreichend bedingung ist, gut programmieren zu können. Genauso wie es viele ausreichende, aber nicht notwendige Voraussetzungen gibt: 5-jährige Erfahrung, einen CS-Abschluss oder einen wissenschaftlichen Hintergrund.

Einige könnten sogar argumentieren, dass ein Poet oder ein englischer Major Sie zu einem guten API-Designer machen könnte oder dass ein Künstler gut in der UI/Web-Programmierung sein könnte.

Aber dies sind offensichtlich keine Garantien, genau wie das Wissen, dass Mathe Sie nicht zu einem guten Programmierer macht, aber Sie könnten trotzdem ein paar C++ oder F # heraushacken wie der Rest ...

1
user37468

Meine Antwort ist absolut nicht. Ich war/bin (jetzt arbeitslos, dank Indien) ein Computerprogrammierer für mehr als 25 Jahre. Und während meiner gesamten Karriere bin ich NIE auf das Programm LOGIC gestoßen, das mehr als nur grundlegende mathematische Fähigkeiten voraussetzte. Sofern Sie nicht täglich mit Mathematik arbeiten, die über die Grundkenntnisse der Mathematik hinausgeht, besteht kein Bedarf an fortgeschrittener Mathematik. Auf Unternehmensebene wird jede komplexe Mathematik an einen Statiker oder Mathematiker weitergeleitet, der dem Programmierer den erforderlichen Pseudocode zur Verfügung stellt, und beide werden beim gründlichen Testen des Endprodukts zusammenarbeiten. Letztendlich ist der Ball im Gericht des Mathe-Nerds. Auf jeder Ebene, es sei denn, Sie sind ein Mathematiker/Statiker/leitender Programmierer, ist der Gedanke, dass ein Programmierer für die erwarteten Ergebnisse eines komplexen fortgeschrittenen Mathematik-Computerprogramms verantwortlich ist, absurd und sehr töricht.

1
user266745

Nach meiner Erfahrung besteht die Voraussetzung für ein Informatik-Studium lediglich darin, diejenigen auszuschließen, die scheitern werden. Wenn Sie Kalkül I und II nicht bestehen können, werden Sie mit Sicherheit keinen fortgeschrittenen Kurs in Compilerbau-, Datenbank- oder Betriebssystemtheorie bestehen.

1
Brian Teeter

Diskrete Mathematik fand ich sehr hilfreich. Ich habe Calculus genommen, und es kann vorkommen, dass es auch sehr hilfreich war, aber ich kann mich an nichts erinnern. Zum Beispiel die Zeit, in der ich versucht habe, eine DIS - Schnittstelle zu implementieren (die sich mit Dingen wie Rotationsgeschwindigkeiten und Koordinatentransformationen befasst). Ich fuhr einen Tag lang durch die Stadt und suchte nach einem Buch, das mir Quaternionen erklärte (das war vor dem WWW). Es gab auch eine Zeit, in der ich eine Funktion schreiben musste, die einige Ingenieure implementieren mussten n-lineare Interpolation . Wenn Sie keine Ahnung haben, was das bedeutet, glauben Sie mir, dass ich es auch nicht getan habe. Zum Glück war das Post - WWW.

Mein Rat ist, es nicht zu schwitzen. Möglicherweise sind Sie bei einem oder zwei Projekten unter Druck geraten, aber heutzutage nicht mehr so ​​schlimm.

1
T.E.D.

Ich habe viel Mathematik verwendet, als ich Probleme in der Festkörpermechanik und der Wärmeübertragung mithilfe von Computern löste. Lineare Algebra, numerische Methoden usw.

Ich greife jetzt, da ich Geschäftsanwendungen schreibe, die Informationen aus relationalen Datenbanken an webbasierte Benutzeroberflächen liefern, nie auf dieses Wissen zurück.

Ich würde trotzdem jedem einen besseren mathematischen Hintergrund empfehlen.

Diskrete Mathematik ist für einen Entwickler sehr hilfreich. Ich habe keine formelle Ausbildung darin.

Ich denke, die Techniken, die in " Programming Collective Intelligence " beschrieben sind, sind weit entfernt von denen, die ich als ME gemacht habe, und könnten in die Geschäftsanwendungen fallen, die ich jetzt mache. Netflix hat sicherlich ein gutes Geschäft daraus gemacht. Diese Gruppe Intelligenz Zeug scheint auf dem Vormarsch zu sein.

1
duffymo

Um die Frage zu beantworten: Nr.

Mathematisches Talent und Programmiertalent: starke Korrelation, wenig bis gar keine Kausalität.

Das eine ist sicherlich keine Voraussetzung für das andere, und wenn Sie Ihre mathematischen Fähigkeiten nicht verbessern, werden Sie nicht zu einem besseren Programmierer, es sei denn, Sie programmieren in einem der speziellen Bereiche, in denen Mathematik eine wesentliche Rolle spielt (3D - Grafik, Statistikprogrammierung usw.) .)

Das heißt, natürlich wird ein mathematischer Hintergrund nicht schaden und wird Ihnen in einigen Fällen sehr helfen. Und wie andere angemerkt haben, sind die Denkprozesse in Mathematik und Programmierung ziemlich ähnlich. Wenn Sie ein Talent für das eine haben, werden Sie wahrscheinlich feststellen, dass Sie ein Talent für das andere haben.

Wenn ich Programmierern eine mathematische Anforderung empfehlen würde, wären es einige grundlegende Statistiken. Nahezu alle Programmieraufgaben erfordern eine Art kleines Reporting.

Der Bedarf an Mathematik steigt ein wenig an, wenn Sie anfangen, fortgeschrittene und/oder unterhaltsame Dinge zu tun. Spiele sind ziemlich mathematikintensiv, genauso wie leistungskritische Anwendungen, bei denen Sie die Kosten verschiedener Algorithmen wirklich verstehen müssen.

1
John Rose

Ich habe einen Abschluss in Mathematik, und ich kann nicht sagen, dass es mir in irgendeiner Weise geholfen hat. (Ich entwickle allgemeine Web-Apps, nichts Wissenschaftliches). Ich arbeite gerne mit anderen Entwicklern zusammen, die keine mathematischen Abschlüsse haben, weil sie anscheinend über meinen "mathematischen" Rahmen hinausdenken und mich dazu zwingen, dasselbe zu tun.

1
Mike K.

Es ist bei weitem nicht erforderlich, aber ...

Ein einfaches Beispiel: Ohne ein Verständnis der Geometrie konnte man mit Quadraten und Rechtecken nicht viel anfangen. (Jeder Programmierer hat/bekommt Geometrie, es ist also nur ein Beispiel).

Ohne Trigonometrie gibt es bestimmte Dinge, die schwer zu tun sind. Versuchen Sie, eine analoge Uhr zu zeichnen, ohne die Trigonometrie zu verstehen - Sie können es tun, aber der Prozess, den Sie durchlaufen müssen, besteht im Wesentlichen darin, die Trigonometrie neu zu erfinden.

Kalkül ist interessant. Sie werden es wahrscheinlich nie brauchen, es sei denn, Sie entwerfen Spiele, aber Calculus zeigt Ihnen, wie Sie Dinge modellieren, die sich viel mehr als "reale Welt" verhalten. Wenn Sie beispielsweise versuchen, einen fallenden Baum zu modellieren, benötigen Sie wahrscheinlich eine Menge Mathematik, um an jedem Punkt des Bogens die richtige Geschwindigkeit zu erreichen.

Auf der anderen Seite geht es nur darum, genau zu sein. Alles, was Sie mit Kalkül tun können, können Sie wahrscheinlich mit Schleifen und Approximationen tun.

Darüber hinaus benötigen Sie wahrscheinlich Fraktale und fortgeschrittenere Mathematik, um die Dinge noch lebendiger zu gestalten.

Wenn Sie Websites und Datenbanken programmieren, benötigen Sie kaum Algebra 101.

1
Bill K

Als autodidaktischer Programmierer, der vor ungefähr 30 Jahren angefangen hat, an Spielen zu arbeiten, würde ich definitiv sagen, dass Sie so viel Mathe wie möglich brauchen. Dinge wie Matrizen, Quaternionen, Raytracing, Partikelsysteme, Physik-Engines usw. erfordern ein gutes mathematisches Verständnis und ich wünschte nur, ich hätte all diese Dinge viel früher gelernt.

1
KPexEA

Ich arbeite als Spielprogrammierer, in einem Team mit Künstlern, Spieldesignern, Leveldesignern usw.

Jemand im Team zu haben, der sich mit Mathematik auskennt, ist ein Plus, genauso wie es ein Plus ist, jemanden zu haben, der alle Arten von Spielen spielt, jemanden, der ein repräsentatives Mitglied unserer Zielgruppe ist, jemanden die einige schmerzhafte Produktionen erlebt haben, etc.

Diejenigen, die die meisten Mathematikkenntnisse haben, sind oft Programmierer (manchmal auch Spieleentwickler), da die Domänen eng genug sind. Aber Tag für Tag brauchen Spielprogrammierer nicht viel Mathematik, außer 3D-Geometrie und (manchmal) Physik.

Unter den Mathematiken, die ich studiert habe, fand ich Statistiken am nützlichsten, obwohl mir manchmal einige Konzepte fehlen.

1
Emile
0
JosephStyons

Ich glaube, diese Frage (die ich ziemlich oft bekomme) lässt sich am besten mit einer Analogie beantworten.

Viele von uns heben Gewichte. Warum? Liegt es daran, dass wir uns auf den Tag vorbereiten, an dem wir ein professioneller Gewichtheber werden? Werden wir jemals auf das Heben von Gewichten als Arbeitsanforderung stoßen?

Natürlich nicht. Wir heben Gewichte, weil es unsere Muskeln trainiert. Es hält uns fit und in Form. Eine fitte Person wird in anderen Bereichen bessere Leistungen erbringen: Wandern, Bauen, Laufen, Schlafen usw.

Mathematik zu lernen ist für das Gehirn wie Gewichtheben. Es trainiert den Geist und hält ihn in Form. Sie werden in Ihrer Karriere vielleicht nie Kalkül verwenden, aber Ihr Gehirn wird dadurch besser in Form sein.

0
Barry Brown

Zwei Dinge fallen mir ein:

  • Der Kontext ist von entscheidender Bedeutung. Wenn Sie ein Spieleprogrammierer oder ein Ingenieur sind, kann Mathematik für Ihren Job von entscheidender Bedeutung sein. Ich mache Datenbank- und Web-Entwicklung, daher ist Mathematik für mich in Ordnung.
  • Es ist sehr wahrscheinlich, dass Sie den vorgefertigten mathematischen Code einer anderen Person wiederverwenden, anstatt das Rad neu zu erfinden, insbesondere in Bereichen wie Verschlüsselung und Komprimierung. (Dies kann auch zutreffen, wenn Sie sich in der Spieleentwicklung mit einem Physik-Tool eines Drittanbieters oder einer 3D-Engine befinden.) Ein Framework aus bewährten Routinen zur Verwendung in Ihren Programmen verhindert Fehler und potenzielle Sicherheitsschwächen - auf jeden Fall eine gute Sache.
0
Dave R.

Für Ihre allgemeinen GUI- und Webanwendungen werden nur grundlegende Mathematikkenntnisse benötigt.

Einmal im Leben haben Sie vielleicht ein seltsames Projekt, in dem Sie Kalkül oder lineare Algebra benötigen.

(Wenn Sie 3D-Spiele programmieren oder auf einem anderen speziellen Gebiet programmieren, brauchen Sie es möglicherweise jeden Tag.)

0
Martin Liesén

In Mathe geht es ebenso um eine Denkweise wie um die Fähigkeiten selbst. Und selbst das liegt auf mehreren Ebenen. Jemand anderes bemerkte, dass die analytischen und abstrahierenden Fähigkeiten, die in der Mathematik üblich sind, für die Programmierung wertvoll sind, und das ist eine Ebene. Ich würde auch argumentieren, dass es eine andere Ebene gibt, die präzise Analoga enthält, die von einer zur anderen übertragen werden - zum Beispiel die Mengenlehre hinter relationalen Datenbanken, die alle durch die SQL-Semantik verborgen ist.

Sehr oft sind die "besten" - womit ich am performantesten und prägnantesten meine - Lösungen diejenigen, die ein bisschen Mathematik hinter sich haben. Wenn Sie anfangen, Ihre datenorientierten Programmierprobleme als Matrixmanipulation zu betrachten, wie es viele sind, finden Sie häufig neuartige Lösungen aus der Welt der Mathematik.

Natürlich ist es nicht notwendig, Mathematikexperte zu sein, um zu programmieren, jeder kann unterrichtet werden, aber es ist eine der Fähigkeiten, die es wert ist, bei Rekruten zu sein - und danach zu suchen.

0
Simon

Es hängt davon ab, was Sie tun: Webentwicklung, Unternehmenssoftware usw. Ich denke, für solche Dinge brauchen Sie keine Mathematik.

Wenn Sie Computergrafik, Audio-/Videoverarbeitung, KI, Kryptografie usw. ausführen möchten, benötigen Sie einen mathematischen Hintergrund , ansonsten können Sie dies einfach nicht es.

0
Nils

Statistische Techniken des maschinellen Lernens gewinnen zunehmend an Bedeutung.

0
Jamie Eisenhart

Dies ist eine gute Antwort, die Sie nicht wissen müssen, um zu rechnen (verdammt noch mal, ich gehe nie außerhalb der Grundregeln von The Order of Operations: PEMDAS math). SICHERHEIT In den 1970er Jahren war Mathematik für Programmierer, die versuchten, mit sehr komplexen mathematischen Gleichungen effizient für den CPU-Zyklus zu programmieren, um Schleifen und dergleichen zu vermeiden, äußerst wichtig.

Jetzt sind Computer leistungsfähig, eine Schleife auf 100 oder so, um zu vermeiden, dass komplexe Mathematik verwendet wird, schadet Ihrem Programm auf lange Sicht nicht wirklich, aber natürlich lernen Sie mathematische Fähigkeiten als Beobachter, ohne Mathematik zu lernen, was Ihre effizienten Programmierfähigkeiten verbessert .

Seien wir ehrlich, je mehr Mathematik Sie wissen, desto wahrscheinlicher werden Sie nicht nur ein Programm besser optimieren, sondern auch verstehen, was programmiert werden kann und was unmöglich ist, ohne über Artikel zu lesen, die besagen, dass dies aufgrund dieser verrückten mathematischen Gleichung unmöglich ist.

Das Erlernen von Mathematik kann Ihnen dabei helfen, zu verstehen, wie Dinge ohne tatsächliche ERFAHRUNG funktionieren. (Ich stütze dies auf mein Leben).

Hier ist mein Beispiel (ein Komprimierungsartikel). Ich habe versucht und versucht, ohne die Mathematik dahinter zu verstehen ... von mindestens 700? fehlerhafte/fehlgeschlagene Versuche Ich weiß jetzt mehr darüber, was möglich ist (was möglicherweise wieder fehlschlägt), und kenne auch die 700 fehlerhaften Betrachtungsweisen.

Wenn ich Mathe wüsste, würde ich diese 700 fehlerhaften Versuche wahrscheinlich nicht einmal versuchen, weil ich zu viel Mathe kenne. Aber den Weg, den ich gewählt habe, ohne zu wissen, wie viel Mathe ich habe, finde ich viel lustiger und lehrreicher.

Aber das bin nur ich .. ich bin immer die Hand auf Person .. nicht der Bücherwurm;)

Einige führen zu neuen mathematischen Durchbrüchen, andere führen zu einer schnelleren, besser optimierten Software.

Lassen Sie dies eine Lektion für Sie sein, wählen Sie Ihren Weg, welcher am besten für Sie funktioniert. Vertrauen Sie mir, beide sind lohnend.

0
SSpoke

Systemprogrammierung ist keine Hexerei :-) IMHO, jeder good Programmierer kann sich der Systemprogrammierung nähern. Man muss es jedoch wissen

  • Algorithmen (dies erfordert wenig Mathematik, aber nicht zu viel, um einen guten Programmierer zu erschrecken),
  • Datenstrukturen und
  • Einige (nicht alle) Domänenkenntnisse, z. Betriebssystem, Architektur, Compiler.

Ich denke, die gefragtesten Eigenschaften wären: präzise Code und Fähigkeit, falls erforderlich, in einem der oben genannten Punkte zu vertiefen.

Übrigens, das ist meine persönliche Theorie, YMMV; Ich halte mich noch nicht für einen guten Programmierer! :-(

0
Arun

Um zu tun, was Sie wollen, müssen Sie Mathe nicht kennen, aber Sie müssen es sehr mögen.

0
AVB

Business-Programmierung: Arithmetik, etwas Algebra

Engineering: Numerische Analyse

Wissenschaftliche Programmierung: Der Himmel ist die Grenze

0
Steven A. Lowe

Certian Arten von Mathematik sind meiner Meinung nach unverzichtbar. Zum Beispiel sollte jeder Softwareentwickler De Morgans Gesetze und O-Notation kennen und verstehen.

Andere Arten sind nur sehr nützlich. In der Simulation müssen wir oft viele physikalische Modelle erstellen. Wenn Sie grafische Arbeiten ausführen, müssen Sie häufig Algorithmen für die Koordinatentransformation schreiben. Ich hatte in meiner 20-jährigen Karriere viele andere Situationen, in denen ich simultane lineare Gleichungen aufschreiben und lösen musste, um herauszufinden, welche Konstanten in einen Algorithmus eingefügt werden sollten.

0
T.E.D.

Es gibt meiner Meinung nach einige gute Punkte zu dieser Frage.

Wie David Nehme hier schrieb, sind Informatik und Programmierung zwei sehr unterschiedliche Themen.

Ich halte es für durchaus möglich, dass ein Programmierer mit sehr grundlegenden mathematischen Kenntnissen der High School und des frühen College ein kompetenter Programmierer ist. Ich bin mir jedoch nicht so sicher, was den Absolventen der Informatik betrifft.

Wie Sie richtig betont haben, hängt der Algorithmus-Erstellungsprozess stark davon ab, wie Sie Mathematik knacken. Auch wenn dies nur ein Ergebnis der Art des mathematischen und analytischen Prozesses ist, müssen Sie dies tun, um einen Algorithmus korrekt zu entwerfen.

Ich denke auch, dass es sehr viel davon abhängt, was Sie tun, mehr als von Ihrer Berufsbeschreibung oder Ihren Fähigkeiten. Wenn zum Beispiel das Programmieren und das Rechnen beide Werkzeuge sind, um einen Effekt zu erzielen, müssen Sie mit beiden sicherlich kompetent sein (d. H. Sie erstellen ein Modellierungsprogramm für einen bestimmten Zweck). Obwohl, wenn die Programmierung das ultimative Ziel Ihrer Aktivität ist, dann ist Mathematik höchstwahrscheinlich nicht erforderlich. (d. h .: Sie erstellen eine Webanwendung)

0
Joum

An der Universität haben wir das Buch "Concrete Mathematics" von Knuth, Graham und Patashnik gelesen. Dies ist ein Mathematikbuch mit ausgewählten Themen für Informatikstudenten. Einige Jahre später überprüfte ich das Buch erneut und stellte fest, dass ich jedes einzelne Thema im Buch mindestens einmal verwendet habe (mit Ausnahme von Stirling-Zahlen).

In den meisten Fällen hilft das Wissen um Mathematik, Probleme mit weniger Arbeit, eleganter zu lösen oder schnellere Lösungen zu implementieren. Es hängt auch von der Art der Arbeit ab, die Sie tun. Das heißt Mathematik ist wichtiger, wenn Sie sich auf Algorithmen konzentrieren, als wenn Sie sich auf technische Probleme konzentrieren.

0
abc

Wenn Sie in Ihrer täglichen Arbeit als Programmierer fortgeschrittene Mathematik benötigen, hängt dies wirklich von Ihren Aufgaben ab. Ich brauche sie. Der Grund dafür ist, dass ich mit hydraulischen Berechnungen für Rohrleitungssysteme arbeiten muss, um das Rohrleitungssystem im Code zu bewerten, bevor es gebaut wird. Sie möchten nie wegen Unter- oder Überdrucks in der Nähe eines kollabierenden Rohrleitungssystems stehen. ;)

Ich vermute, für viele andere Arten von Simulationen der realen Welt benötigen Sie auch fortgeschrittene Mathematik.

0
Mil

Über die einzigen nützlichen Dinge, die Sie an der Universität lernen können, sind theoretische.

0
Marcin

In einigen Programmen stelle ich mir vor, dass Mathematik am hilfreichsten wäre, aber kein Programmierer. Ich habe Glück, wenn ich ohne meinen praktischen Dandy-Rechner 2 + 2 addieren kann.

0
user18411

Kommt auf die Programmieraufgabe an. Ich würde 'Daten aus einer Datenbank nehmen und auf einer Website anzeigen' und dann 'Videospiele' auf der anderen Seite programmieren (ich arbeite in Spielen und habe das Gefühl, dass ich einige zufällige andere verwende Aroma von Mathe jeden Tag, und würde wahrscheinlich mehr verwenden, wenn ich mehr wüsste).

0
Jeff

Sie müssen keine Mathematik lernen, um zu programmieren.

Aber das Lernen von Mathematik schult Sie in Denkdisziplin. Daher würde ich Mathe als gut für die Entwickler ansehen.

0
Vlad

Siehe auch Is Programmng == Math? from stackoverflow.

Obwohl ich glaube, dass es für die Programmierung nicht erforderlich ist, kann ich Ihnen nicht sagen, wie oft ich lineare Algebra Konzepte verwendet habe, um eine klare und kurze Lösung zu schreiben, um eine gewundene (und) zu ersetzen manchmal falsch) ein. Wenn Grafiken oder Geometrien (und sogar einige Löser) nicht funktionieren, war das Wissen über Matrizen und wie man damit arbeitet, ebenfalls äußerst nützlich.

0
Philip Rieck

Es gibt viele Programmieraufgaben, die auch ohne Vorkenntnisse in fortgeschrittener Mathematik gut erledigt werden können. Es ist wahrscheinlich sicher zu sagen, dass die Mehrheit der verfügbaren Programmierjobs selten mehr als Mathematik auf High School-Niveau erfordert. Aber Sie werden nicht die Software schreiben, die Ihnen hilft, das Shuttle in den Weltraum zu befördern, indem Sie sich mit Ihrem Algebra-Mathe-Level am Freshman College davonhacken. Während fortgeschrittene Mathematik für viele Programmieraufgaben normalerweise nicht entscheidend ist, werden die schwierigeren Probleme dies unbedingt erfordern. Das Studium der Mathematik lehrt auch wertvolle Fähigkeiten zur Problemlösung, die fast überall eingesetzt werden können. Ich denke man könnte sagen, dass es die meiste Zeit nicht notwendig ist, aber es wird sicherlich fast die ganze Zeit helfen.

0
jm4

Du brauchst nicht viel Mathe. Einige kombinatorische Überlegungen können Ihnen dabei helfen, ein Problem für eine schnelle Ausführung einzugrenzen und zu reduzieren. Sich vermehren zu können ist gut. Sie sind Ingenieur, Annäherungen sind in Ordnung.

0
SK9

Ich denke, für Aufgaben, die Sie beschrieben haben, wird nicht zu viel Mathematik benötigt. Aber im Allgemeinen denke ich für echte fortgeschrittene Systemprogrammierung Sie:

  • Brauche überhaupt keinen Kalkül
  • Brauchen Sie ein gutes Verständnis von Computer-Interna
  • Brauche CS eine LOT und OS Theorie
  • Benötige diskrete Mathematik (inkl. Algorythmen und Kombinatorik)
0
Andrey

Ich habe zwei Mathe-Abschlüsse. Ich wünschte, ich wüsste mehr über Datenbanken.

Mein Punkt ist, in der Lage zu sein, die Wurzeln eines Polynoms zu finden oder zu beweisen, dass sqrt (2) irrational ist, ist in einem abstrakten Sinne nützlich, macht Sie aber nicht notwendigerweise zu einem besseren Programmierer.

0
Andrew Boes

Nein, Sie müssen keine Mathematik (außer vielleicht binäre/Okt/Hex/Dez-Darstellungen) für die Systemprogrammierung und ähnliches kennen.

0
George

Ich gebe zu, dass ich nie fortgeschrittene Mathematik in der Programmierung verwendet habe, außer in einigen Lieblingsprojekten, die sich mit Mathematikthemen befassen.

Trotzdem macht es mir Spaß, mit Menschen zusammenzuarbeiten, die klug genug sind, um Mathematik zu üben. Das Beherrschen komplexer und schwieriger Aufgaben hilft dabei, Ihr Gehirn in Form zu bringen, um komplexe und schwierige Programmierprobleme zu lösen.

0