Müssen Sie gut in Mathe sein, um ein guter Programmierer zu sein? [geschlossen]


78

Es scheint, dass konventionelle Weisheiten darauf hindeuten, dass gute Programmierer auch gut in Mathe sind. Oder dass die beiden irgendwie eng miteinander verbunden sind. Viele Programmierbücher, die ich gelesen habe, enthalten viele Beispiele, die Lösungen für mathematische Probleme darstellen oder in irgendeiner Weise mit Mathematik zusammenhängen, als ob diese Beispiele für die meisten Menschen sinnvoll wären.

Die Frage, die ich stellen möchte, lautet also: Müssen Sie gut in Mathe sein, um ein guter Programmierer zu sein?


1
@Mark Nicht unbedingt. Ein Fach zu lernen und es zu mögen, sind zwei sehr unterschiedliche Dinge.
Maxpm

3
Bist du ein König? Oder verbundene Zwillinge? Wenn nein, schlage ich vor, dass Sie sich an "Ich" halten, wenn Sie sich auf sich selbst beziehen.
drxzcl

1
@jk - du hast höchstwahrscheinlich recht physics.about.com/od/alberteinstein/p/einsteinpro.htm denke immer noch, dass es eine Menge Kunst zu programmieren gibt; p
Garet Claborn

3
Ich dachte, ich hätte Mathe nie gemocht. Später stellte ich fest, dass ich mit der Syntax einfach nicht zufrieden war.
MrFox

1
Alle Programmierer verwenden Mathe die ganze Zeit, sie merken es einfach nicht, weil es so viel anders ist als Mathe, das in der Schule unterrichtet wird. Diskrete Mathematik, Lambda-Kalkül, Boolesche Algebra und Logik (!) Sind wirklich fortgeschrittene mathematische Konzepte, die wir jeden Tag anwenden.
Rotman

Antworten:


83

Ich denke, es hängt davon ab, welche Art von Programmierung Sie tun möchten. Was Programmierer in der Geschäftswelt angeht, würde ich sagen, dass die Antwort Nein ist. Sie können ein großartiger Programmierer werden, ohne fortgeschrittene Mathematikkenntnisse zu haben. Wenn Sie sich am Ende mit Mathematik beschäftigen müssen, werden die Formeln normalerweise in den Geschäftsanforderungen definiert, sodass es nur darum geht, sie in Code zu implementieren.

Auf der anderen Seite spielt die Mathematik eine große Rolle, wenn Sie ein einfacher Programmierer werden oder sagen, Sie möchten 3D-Grafik-Engines erstellen.


6
Ich möchte hinzufügen, dass ich einige Doktoranden in Mathematik und Physik gesehen habe, die schrecklichen Code geschrieben haben. Diese Fähigkeiten überschneiden sich zum Teil, sind jedoch getrennte Disziplinen.
MrFox

133

Ich gehe gegen den Strich und sage ja, du brauchst eine mathematische Denkweise . Die meisten Menschen denken, dass Mathematik arithmetisch ist oder dass sie arkane Formeln auswendig kann. Dies ist wie die Frage, ob Sie eine perfekte Rechtschreibung oder ein außergewöhnliches Vokabular benötigen, um ein guter Schriftsteller zu sein.

Beim Schreiben geht es um Kommunikation, und bei Mathematik / Programmierung geht es um den Prozess des klaren, logischen Denkens (so, dass Sie keine Fehler machen können; die Gleichung ist nicht ausgeglichen oder das Programm ist nicht kompilierbar). Konkret manifestiert sich dieses logische Denken in:

  • Fähigkeit, Unterschiede zwischen Zahlen zu schätzen / zu verstehen: O (n ^ 2) vs O (lg (n)), intuitives Verständnis von KB vs MB vs GB, wie langsam die Festplatte im Vergleich zum RAM ist. Wenn Sie nicht wissen, wie klein ein KB im Vergleich zu einem GB ist, verschwenden Sie Zeit damit, Dinge zu optimieren, die keine Rolle spielen.
  • Funktionen / funktionale Programmierung (ist es ein Zufall, dass die Gleichung f (x) = x ^ 2 so ähnlich ist, wie Sie diese Methode schreiben würden? Die Wörter "Algorithmus" und "Funktion" gab es in der mathematischen Welt weit vor der erster computer war geboren :-))
  • Grundlegende Algebra, um eigene Gleichungen zu erstellen und neu zu ordnen, Durchschnittswerte zu ermitteln und grundlegende Statistiken zu erstellen

Also, ich sage, Sie brauchen eine mathematische Denkweise , um mentale Modelle dessen zu konstruieren und zu manipulieren, was Ihr Programm tut, anstatt eine Sammlung von Fakten und Theoremen. Bestimmte Felder wie Grafiken oder Datenbanken enthalten bestimmte Fakten, die Sie auch benötigen, aber für mich ist das nicht das Wesentliche, um "gut in Mathe" zu sein.


1
Math major vs math mindset: Es ist wie der Unterschied, alle physikalischen Formeln zu kennen und in der Lage zu sein, einen Gummiball 20 Meter von einem Backboard zu hüpfen!
TehShrike

9
Ich werde hinzufügen, dass viele gute Programmierer wissen, wie man Schach spielt oder geht :-)
xanatos

1
Sehr viel Computercode ist im Grunde Algebra, obwohl Sie ihn für den Computer einrichten, anstatt ihn selbst zu lösen. Wenn Sie mit Algebra nicht ganz zu Hause sind, wie können Sie dann damit rechnen, dass Sie einen anständigen Job machen?
Loren Pechtel

18
Mathematisches Denken ist der Schlüssel zur Programmierung. Ich füge meine Stimme hinzu, um genau das zu betonen.
Gus

4
+1 Mathematik ist für das Verständnis von Programmiersprachen von entscheidender Bedeutung, da sie die Grundlage unseres Fachwissens bildet. Die meisten Programmiersprachenkonstrukte, die wir täglich verwenden, stammen aus mathematischen Disziplinen wie der Lambda-Rechnung.
MattDavey

53

Es gibt viele verschiedene Bereiche der Programmierung, und viele davon erfordern keine besonders hohen mathematischen Kenntnisse. Sie werden niemals in der Lage sein, eine 3D-Engine zu schreiben, aber Sie werden sicherlich in der Lage sein, Geschäfts- und Webanwendungen zu entwickeln. Seien wir ehrlich - die häufigste mathematische Operation in den meisten Computerprogrammen besteht darin, eine Zahl um eins zu erhöhen.

Ich gebe ganz gerne zu, dass ich Mathe nie besonders mochte oder gut darin war (ich habe tatsächlich einen Abschluss in englischer Literatur gemacht!) Und arbeite jetzt seit über 12 Jahren als professioneller Entwickler. Ich entwickle hauptsächlich Webanwendungen, die selten so viel Mathematik erfordern. Wichtiger ist die Fähigkeit, logisch zu denken, Probleme in Brocken aufzuteilen und ein umfassendes Verständnis für die verschiedenen beteiligten Technologien und Frameworks zu haben.

Als Programmierer müssen Sie mit größerer Wahrscheinlichkeit einen vorhandenen Algorithmus implementieren, als einen völlig neuen zu entwickeln. Müssen Sie beispielsweise Zinseszinsen ausarbeiten? Sie müssen es nicht selbst herausfinden, sondern nur die Formel nachschlagen und anwenden. Die meisten Probleme wurden bereits gelöst. Sie müssen lediglich wissen, wie die Lösungen in der Sprache Ihrer Wahl implementiert werden. Das heißt nicht, dass es kein Vorteil wäre, gut in Mathe zu sein . Es ist nur so, dass es nicht unbedingt notwendig ist .

Als ich Mitte der 80er Jahre in der Schule war, als Heimcomputer nicht sehr verbreitet waren, schrieb ich oft Programme, um meine Mathe-Hausaufgaben zu lösen. Ich konnte es oft nicht in meinem Kopf tun, aber ich konnte jede Formel anwenden, die als Softwareroutine benötigt wurde. Sie müssen kein anderer Pythagoras sein, um die längste Seite eines rechtwinkligen Dreiecks zu ermitteln. Sie müssen lediglich in der Lage sein, a² + b² = h²in der Sprache Ihrer Wahl zu codieren .


3
Finanz- und Rechnungswesen sind nicht so schlecht, es sei denn, Sie machen Optionspreise oder ähnliches.

5
Sie haben Recht, Chris, aber selbst bei Finanzanwendungen implementieren Sie mit größerer Wahrscheinlichkeit Formeln, als sie zu entwickeln.
Dan Diplo

2
@Mark - Stimmt, aber ich würde sagen, dass das Verstehen von Rundungsproblemen eher eine Frage der richtigen Art ist. Sie müssen nicht gut in Mathe sein, um zu lernen, dass (zum Beispiel) Dezimalstellen für Geldwerte besser sind als Gleitkommazahlen. Und ich glaube nicht, dass ein Mathematiker automatisch den richtigen Datentyp erkennt - es ist eine Frage des Lernens.
Dan Diplo

3
@ SK-logic: Streng genommen ist alles, was ein Computer tut, logisch . Einige dieser logischen Operationen werden als Mathematik interpretiert (und einige Leute behaupten, Logik sei ein Zweig der Mathematik, sehr zur Empörung einiger Philosophen).
Donal Fellows

3
@Donal Fellows, die formale Logik ist eine Mathematik. Und Philosophen sind sowieso anerkannt für ihren historischen Beitrag zur Mathematik sowie für Mathematiker, die sich gerächt haben (z. B. indem sie seltsame Dinge wie „Monadologie“ erfunden haben).
SK-logic

30

Sie müssen nicht gut in Mathe sein. Sie müssen jedoch gut in Logik und Problemlösung sein. Menschen, die sich mit Logik und Problemlösung auskennen, sind in der Regel auch gut in Mathematik. Ich würde sagen, dass es wirklich von der Art der Mathematik abhängt. Sie können im Kalkül schrecklich sein (wie ich) und trotzdem ein guter Programmierer (wie ich). Wenn Sie jedoch Probleme mit Diskreter Mathematik und Mengenlehre haben, werden Sie wahrscheinlich viele Aspekte der Programmierung als schwierig empfinden.


Sie müssen nicht gut in Logik sein, um gut in "Problemlösung" zu sein. Viele, wenn nicht die meisten Probleme können mit Heuristiken gelöst werden, die in keiner Weise mit Logik zusammenhängen.
ElGringoGrande

1
Sind Sie sicher, dass Sie ein guter Programmierer sind? :)
Russell

17

Ich denke, es ist wichtig, genau zu untersuchen, warum Sie Mathe nicht mögen.

Eine Abneigung gegen eine akademische Disziplin ist normalerweise etwas, was in der Schule passiert, und kann auf einen Konflikt mit einem Lehrer, mangelndes Vertrauen in Ihre eigenen Fähigkeiten in einem Fach oder Gruppendruck zurückzuführen sein.

Programmierung! = Mathematik. Es "fühlt" sich für mich nicht einmal wie Mathe an (und ich habe Mathe genossen, obwohl ich gegen Ende meines formalen Studiums nicht so gut darin abgeschnitten habe). Viele Fähigkeiten, die Sie in der Mathematik einsetzen können, sind nützlich, sogar beim Programmieren notwendig, aber viele Programmierer unterrichten sich zum größten Teil selbst. Wenn Sie Mathematik in der Schule nicht mögen, hat das so gut wie nichts mit Ihrer Fähigkeit oder Freude am Programmieren zu tun.


Ich sah eine Menge schlechten Unterricht in Mathe. Das Wesentliche dabei ist, ein Problem in ein bekanntes zu verwandeln und dann ohne ein zusätzliches Wort "gelöst" zu sagen. Beim Unterrichten ist es jedoch wahrscheinlich erforderlich, dass Sie die Beweise erneut implementieren, um wesentlich niedrigere Ebenen zu erreichen.
Balog Pal

16

Mathematik und Programmierung sind sehr eng miteinander verbunden, da Mathematik die universelle Sprache zwischen Mensch und Computer ist. Sie müssen nicht viel Mathematik für das Programmieren auf hohem Niveau kennen, da sich vieles hinter den Kulissen befindet, aber es hilft beim Verständnis für viele fortgeschrittenere Programmierkonzepte. Wenn Sie mehr Low-Level-Programmierung (System- oder Geräteprogrammierung) planen, müssen Sie viel mehr Mathematikkenntnisse haben.


11
+1. Sie brauchen auch Mathematik, wenn Sie "High-Level" -Dinge wie Signalverarbeitung, maschinelles Lernen, Computer Vision, 3D-Rendering, Physiksimulationen, Animationen, Computergeometrie, Kryptographie und wahrscheinlich viele andere Bereiche, die ich mir nicht vorstellen kann, ausführen möchten jetzt.
Nikie

2
@nikie: Ja, aber das ist angewandte Mathematik. Großer Unterschied. ^^
gablin

Pfui. Eigentlich ist Mathematik nicht die universelle Sprache. Logik ist. Und Logik ist die Domäne der Philosophen. Was die tatsächliche Funktionsweise von Computern betrifft, sollten Sie die Elektrotechnik und die formale Philosophie besser kennen als die Mathematik. Sie brauchen nur Mathematik als solche, wenn Sie Informatik betreiben, die im Kontext einer Karriere nicht wirklich programmiert.
RibaldEddie

14

Eine gute ? Sehr unwahrscheinlich. Die meisten Entwurfsmuster basieren zumindest auf mathematischen Konzepten. Dinge, die für die Programmierung wesentlich sind, wie Variablen, Schleifen, Prozeduren und Objekte, sind Analoga zu Konzepten in mathematischen Bereichen wie Algebra, Analysis und Mengenlehre.

Bedenken Sie auch, dass die Informatik eine Teilmenge der Mathematik ist: Algorithmen und formale Logik, auf denen die gesamte Programmierung basiert, sind im Grunde genommen Mathematik .

Wenn Sie Mathe hassen, werden Sie das Programmieren hassen .


13

Fast jeder hat geantwortet: "Müssen Sie Mathematik beherrschen, um ein guter Programmierer zu sein?" Die richtige Antwort lautet: "Nein, nicht wirklich, aber es hilft", wie viele bereits gesagt haben.

Aber meine Interpretation der Frage lautet: "Gibt es eine starke Korrelation zwischen mathematischen Fähigkeiten und Programmierfähigkeiten?" Die richtige Antwort darauf lautet: "Ja, das gibt es." Wenn Sie sich durch Algebra, Geometrie und Kalkül kämpfen, sind Sie wahrscheinlich nicht sehr gut darin, mit Abstraktionen umzugehen und / oder logisch zu denken. Wenn Sie schlecht in Mathe sind, werden Sie wahrscheinlich nie ein großartiger Programmierer sein. (Nicht, dass du es nicht versuchen solltest.)


11

Es hängt davon ab, was Sie programmieren. Eine 3D-Game-Engine zum Beispiel wäre ohne Kenntnis der entsprechenden mathematischen Konzepte äußerst schwierig (wenn nicht unmöglich), mit einem gewissen Grad an Kohärenz durchzuhalten.


11

„Wie“ und „kompetent bei“ sind ganz andere Dinge - so lange , wie Sie richtig numerate sind , dann kann ich keinen Grund sehen , warum Sie haben Mathematik zu mögen.

Aber lassen Sie uns hier ganz klar sein - Programmierung hat eine starke mathematische Basis und früher oder später wird fast jede nicht-triviale Entwicklung Berechnungen beinhalten - Sie können sich davor nicht verstecken.

Jede Programmierung beinhaltet Logik (Basis in Mathematik), die meisten modernen Programme beinhalten wahrscheinlich Dinge (wie SQL), die Mengenlehre beinhalten (auch wenn es nicht offensichtlich ist), und wenn dies nicht der Fall ist, kann es durchaus der Fall sein, in dem Sie sich befinden Realms (wie Spieleprogrammierung), die noch expliziter auf Mathematik basieren (Rendering - Mathematik, KI -> Wahrscheinlichkeit und Zufälligkeit - Mathematik ...) und so geht es weiter.

Das Fazit ist, dass man sich mit Zahlen wohlfühlen muss - man muss auf jeden Fall verstehen, warum "Es gibt 10 Arten von Menschen auf der Welt, diejenigen, die Binärwerte verstehen und diejenigen, die dies nicht tun", lustig sind. Aber wahrscheinlich entschuldigen Sie "2 + 2 = 5 ... für sehr große Werte von 2".


+1, das ist wirklich deprimierend; Ich habe tatsächlich über diesen Witz gelacht.
Ben

10

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.


9

Um ehrlich zu sein, ich war ein schrecklicher Mathematikschüler in der Schule. Die Algebra war zu dieser Zeit für mich völlig unverständlich, und ich glaube nicht, dass ich jemals höher als ein D darin geworden bin.

Ein paar Jahre später, nachdem ich als professioneller Softwareentwickler gearbeitet hatte, ging ich zurück zum College und belegte einen Kurs in Algebra. Zu meinem Erstaunen war es die einfachste Klasse, die ich hatte, und ich bekam ein A darin.

Die Wahrheit war, die Programmierung hat mich Algebra gelehrt, weil praktisch alles nur ein algebraischer Ausdruck ist.

Also nein, du brauchst es nicht, um anzufangen. Es hilft, ist aber nicht erforderlich. Das Schöne an der Softwareentwicklung als Lehrmittel für Mathematik ist, dass der Compiler, der Debugger und das ausführende Programm wunderbare Möglichkeiten bieten, um zu überprüfen, ob Sie die richtige Antwort erhalten haben. In dieser Hinsicht ist das Debuggen ein großer Vorteil für das Lernen, da Sie den Code schrittweise durchgehen und jeden Schritt der Auswertung Ihres Algorithmus beobachten können.


Nach 10 Jahren Entwicklung von Software bin ich wieder in der Schule und erlebe das Gleiche. Ich finde Kalkül und Statistik viel einfacher, da ich die meisten Konzepte auf einige Funktionen beziehen kann, die ich im Laufe der Jahre geschrieben habe. Ich ärgere mich, wenn ich an unbekannte Venn-Diagramme denke, als ich mir selbst SQL-Joins beigebracht habe. Es ist wie Schummeln.
Heath Lilley

7

Es hängt ein wenig davon ab, was genau Sie tun, obwohl es definitiv nicht schaden kann.

Zum Beispiel muss jemand, der ein Hauptfach Informatik hat, eine Menge Mathematik durchlaufen, um seinen Abschluss zu machen. CS konzentriert sich in der Regel stark auf Algorithmen und deren Korrektheit, die durch mathematische Beweise auf hohem Niveau bewiesen werden. Viele CS-Programme der Universität sind so nah an ihrem Mathematikprogramm, dass ein Doppelstudium nur noch wenige Kurse entfernt ist. Selbst als Software Engineering-Hauptfach war ich zwei Kurse von einem Nebenfach Mathematik entfernt.

Trotzdem wurden viele der Beweise, Datenstrukturen, Suchmethoden und Algorithmuskorrektheitsprodukte, die ich gelernt habe, seit meinem Schulabschluss nicht mehr direkt verwendet. Aber es fällt mir schwer zu sagen, dass es mir nicht zumindest eine gute Grundlage und ein besseres Verständnis dafür gab, was ich auf niedrigem Niveau tue.

Denn egal wie Sie es betrachten, auf der untersten Ebene läuft alles, was Sie tun, auf Mathematik hinaus.


7

Können Sie ein guter Softwareentwickler ohne Mathematik werden? Ja, ich denke schon. Kannst du zu einer Art heldenhaftem Programmierer werden, über den die Leute die ganze Zeit reden? Ich denke nicht.

Das Problem ist, dass die meisten, wenn nicht alle, heroischen Programmierer (Dennis Ritchie) einen Informatik- oder Mathematikhintergrund haben. Um ein wirklich großartiger Programmierer zu werden, müssen Sie Algorithmen auf einer Ebene verstehen, die mehr als nur oberflächlich ist, was bedeutet, dass Sie gezwungen sind, sich mit formaler Informatik zu beschäftigen. Und Informatik ist nur angewandte Mathematik.

Ebenso wäre ein Verständnis der Lambda-Rechnung für einen Betriebssystemarchitekten oder einen Sprachdesigner von unschätzbarem Wert.


7

Ich habe gesehen, wie dieses Thema hin und her diskutiert wurde. Ich habe mit Leuten gearbeitet, die einen Abschluss in Mathematik hatten, der meinte, sie könnten programmieren, und innerhalb von ein oder zwei Jahren die Karriere gewechselt. Einer der besten Programmierer, mit denen ich jemals zusammenarbeiten durfte, hatte einen Doktortitel in Biochemie und nahm nie an einem offiziellen Programmier- / CS-Kurs in der Schule teil, sondern unterrichtete sich selbst und gründete ein erfolgreiches Softwareunternehmen!

Was einen guten bis großartigen Programmierer letztendlich auszeichnet, ist jemand, der in der Lage ist, Logik und Arbeitsabläufe zu verstehen, anhand von Beispielen zu lernen und bereit ist, nach einer Lösung zu suchen. Außerdem MÜSSEN Sie DAS GESCHÄFT ERLERNEN, für das Ihre Anwendungen bestimmt sind. Ich hasse Programmierer, die sich mit Buchhaltung auskennen und dennoch Buchhaltungsanwendungen schreiben. Sie machen immer falsche Annahmen und verlangsamen die Entwicklung wirklich.

Sie werden feststellen, dass Sie in einem Jahr mehr als in vier Schuljahren lernen, unabhängig davon, auf welche Schule Sie gehen. In der Schule lernst du, wie man mit Grundfertigkeiten lernt - aber die Erfahrung aus der Praxis ist mit der Zeit viel wertvoller.

Erfahrung ist der beste Lehrer und wenn Sie Mathematik in der Softwareentwicklung anwenden müssen, werden Sie in Ordnung sein, solange Sie das Geschäft erlernen. Denken Sie auch daran, wie in einem früheren Beitrag bereits erwähnt, dass Mathematik, die Sie in der High School gelernt haben, alles ist, was Sie wirklich brauchen, es sei denn, Sie versuchen, an einer 3D-Grafik-Engine oder grafischen Koordinatensystemen wie der GIS-Anwendung zu arbeiten.

Ich habe an Buchhaltungs- und Abrechnungssystemen gearbeitet - und ich musste nie Log (x), SIN, COS usw. herausfinden, um ein Hauptbuch zu bearbeiten oder die Dateneingabe zuzulassen. Ein Aging Journal ist keine "hohe Mathematik", sondern entscheidend für die Bewertung von AP-Problemen.

Wenn ich darüber nachdenke, habe ich noch nie einen Buchhalter mit einem wissenschaftlichen Taschenrechner auf dem Schreibtisch getroffen!


5

Die kurze Antwort lautet nein. Ich denke, es ist ein bisschen wie ein Mythos, aber es wird propagiert, weil mathematische Probleme normalerweise gut dafür geeignet sind, von Computern gelöst zu werden.

In der Uni / Hochschule werden die Leute Mathematikprobleme bekommen, die sie in Compsci-Fächern lösen müssen, aber Sie werden normalerweise feststellen, dass die Mathematik tatsächlich schwerer zu lösen ist als der Code, der zur Implementierung der Lösung benötigt wird.

Sobald Sie in die reale Welt eintreten, werden Sie zunehmend feststellen, dass die Probleme für Sie weitgehend gelöst sind. Ihre Aufgabe wird es sein, sie einfach in Code zu implementieren.


5

Sie müssen entweder Mathematik lernen oder Ihre eigenen erstellen. In jedem Fall ist es wichtig, in irgendeiner Form gut darin zu sein.

Solange Sie mit Werten arbeiten können und verstehen , was sie tun, warum und was Sie machen sie das tun, dann traditionelle Mathematik sein kann , nicht immer notwendig. Gelegentlich stört es sogar.

Es gibt andere Möglichkeiten, den Wert eines Bytes als Zahlen darzustellen, aber sie sind definitiv die am besten durchdachte Methode. Es wäre denkbar, ein Programm zu schreiben, das beispielsweise alle Werte als Farben betrachtet.

Die heutige Programmierung hat zum großen Teil den Wert, Einsen und Nullen als unterschiedliche Datentypen darstellen zu können. Auch wenn diese Einsen und Nullen eigentlich gar keine Zahlen sind, sondern sich die elektrische Wellenlänge ändert, spielt Mathematik nicht so sehr eine Rolle wie Physik, ... aber ... es ist sehr wichtig, eine Menge von allem zu verstehen andere Programmierer sagen und codieren.

Trotzdem wäre es möglich , ein guter Programmierer ohne Mathematik zu sein, wie schwierig es auch sein mag.


1
Alle Werte als Farben zu betrachten, macht fast MEHR Sinn. Wenn Sie zu weit von einem Ende des Spektrums entfernt sind, landen Sie am anderen Ende ...
Maxpm

Grad (wie in 0 - 360, außer 0 - 256) hilft manchmal auch =) Sie müssen nicht wirklich im numerischen Sinne über Farben oder Grade nachdenken, sondern nur, wie 'voll' der Wert ist.
Garet Claborn

5

Ich habe gerade einen Einführungskurs in die diskrete Mathematik abgeschlossen und festgestellt, dass ich dank Programmierung bereits fast alles über Prädikatenlogik wusste . Neu war lediglich die Syntax - im Grunde funktionierte sie nur mit Booleschen Werten.

Kurz gesagt: Vielleicht müssen Sie Mathematik nicht explizit lernen , aber als Programmierer haben Sie wahrscheinlich etwas Mathematik gelernt, ohne es zu merken. Das heißt, wenn Sie ein "guter Programmierer" sind, sind Sie (in gewissem Maße) auch wirklich ein Mathematiker.

Die Curry-Howard-Korrespondenz veranschaulicht, was ich meine: Grundsätzlich heißt es, dass mathematische Beweise und bestimmte Computerprogramme "isomorph" sind, das heißt, sie sind verschiedene Arten, dasselbe zu schreiben. Natürlich ist es komplexer, aber ich bin kein Mathematiker. Das ist die beste Erklärung, die ich geben kann. Hoffentlich ist es nicht zu weit weg von der Marke.

Zusammenfassend lässt sich sagen, dass in vielen Bereichen von CS und Programmierung nicht nur viel Mathematik gefragt ist, sondern dass auch grundlegende Programmierideen (z. B. Boolesche Werte) im Grunde genommen Mathematik in Verkleidung sind.


4

Diese Frage ist sehr schwer zu beantworten und wird wahrscheinlich eine Menge Debatten auslösen.

Einer der Gründe, warum diese Frage so schwierig ist, besteht darin, dass sie teilweise davon abhängt, welche Art von Arbeit Sie ausführen. In den meisten Geschäftsanwendungen steckt nicht viel Mathematik, sodass Sie mit einem soliden Verständnis für Algebra und Geschäftsmathematik auskommen können. Fortgeschrittenere Anwendungen erfordern jedoch fortgeschrittenere Mathematik, und Sie benötigen ein solides Verständnis der Analysis, der linearen Algebra und dergleichen.

Dies ist jedoch nur ein Teil der Gleichung, da Sie nur für das Üben des Programmierens selbst ein gewisses Maß an Mathematik benötigen. Es versteht sich von selbst, dass Sie mit Logik vertraut sein müssen, um sowohl ein Basisprogramm als auch eine Basisalgebra schreiben zu können. Wenn Sie nicht nur ein einfaches Programm zum Laufen bringen wollen, müssen Sie auch einige Aspekte der diskreten Mathematik verstehen, um feststellen zu können, wie ein guter Algorithmus für ein bestimmtes Problem eingesetzt werden kann.

Um jedoch auf den Kern der Frage zurückzukommen. Ich persönlich glaube nicht, dass Sie Mathematiker sein müssen, um ein guter Programmierer zu sein. Ich denke jedoch, dass Sie mit Mathematik vertraut sein müssen, um ein guter Generalisten-Programmierer zu sein.


4

Ja definitiv.

Sogar das Programmieren in der betriebswirtschaftlichen Praxis erfordert ein gewisses Maß an mathematischen Fähigkeiten.

Für die Programmierung im normalen Geschäftsbetrieb sind Datenbankkenntnisse erforderlich. Um ein guter Datenbankprogrammierer zu sein, müssen Sie wissen, wie Datenbanken funktionieren und welche Algorithmen der Abfrageprozessor beim Übersetzen Ihrer Abfragen verwendet. Ohne ein Verständnis für Grenzen und Ableitungen (oder sogar das grundlegende Verständnis, dass die Linie y = x die Linie y = x ^ 2 zweimal schneidet), ist es nicht möglich, einen Abfrageplan für einen Hash-Match-Inner-Join mit einem Join mit verschachtelten Schleifen genau zu vergleichen Abfrageplan.

Ein guter Programmierer kann auch in nahezu jeder Domäne arbeiten, vorausgesetzt, er lernt ein wenig: Spiele, Simulationen, eingebettete Entwicklung, Compiler, Betriebssysteme, Web-Inhalte, Datenbanken usw. All diese Dinge können (oder noch mehr) Um genau zu lernen, wie man all diese Dinge schnell lernt, ist ein ausreichender mathematischer Hintergrund erforderlich.

Ich würde sagen, dass man irgendwann Erfahrung mit Folgendem haben sollte:

  1. 3 Semester Calc
  2. Diff Gl
  3. Lineare Algebra
  4. Moderne Algebra
  5. Grundlegende Wahrscheinlichkeit, Zählung und Statistik

4

Mathematik ist mehr als nur Formeln. Das Verständnis einiger mathematischer Prinzipien zur Mengenlehre ist sehr hilfreich, um komplexe Konzepte auf Typsystemen zu erfassen, ebenso wie das Verständnis der Komplexität, die für die effiziente Verwendung von Datenstrukturen von größter Bedeutung ist.

Die Graphentheorie ist auch äußerst nützlich, da viele Programmierprobleme durch einen Graphen modelliert werden können. Ich war sehr erstaunt, als ich eine Geschäftsanwendung entwickelte, um herauszufinden, dass die Sätze mit dem kürzesten Weg eine elegante Lösung für ein heikles Problem darstellten, das ich hatte!


4

Ich habe immer als Programmierung nichts zu sein , aber die Mathematik.

Es sieht einfach nicht nach Algebra aus.


4

Mathematik ist der Vorraum der Programmierung.

Mathematik ist der perfekte Übungsplatz für all das, weil es in der Lage ist, mit Schichten von Abstraktion, Modellen, "Objektivierung" von Funktionen, Transformationen und zeitlichen Konzepten zu arbeiten.

Es ist möglich, die richtige Einstellung zum Programmieren ohne Mathematik zu entwickeln, aber es ist viel schwieriger.

Abgesehen von Fachgebieten ist es jedoch wichtig, nur die Mathematik zu verstehen, den Namen von allem zu kennen und nicht, wie ein gegebener Satz bewiesen werden kann. Selbst wenn Sie gute Noten in Mathematik haben, weil Sie alles ohne wirkliches Verständnis gelernt haben, werden Sie immer noch Probleme mit der Programmierung haben.


4

Mathematikkenntnisse sind für einige Anwendungen (wie Spiele, künstliche Intelligenz, Computergrafik usw.) gut, aber Mathematik lehrt Sie etwas, das über Formeln oder komplexe Gleichungen hinausgeht.

Mathematik zu lernen ist wie eine neue Programmiersprache zu lernen. In der Tat wird die Programmierung mathematisch angewendet. Wenn Sie eine neue Sprache lernen, lernen Sie viele Dinge, die Sie zu einem besseren Programmierer machen. Mit Mathe ist das nicht anders, aber wenn Sie Mathe wirklich beherrschen, werden Sie für immer ein besserer Programmierer sein, auch wenn Sie in Ihrem Beruf keine fortgeschrittene Mathematik anwenden.

Der Grund ist einfach: Mathe lehrt dich, die Welt mit anderen Augen zu sehen. Es bringt Ihnen bei, Probleme mit unterschiedlichen Ansätzen zu lösen, ohne unbedingt programmieren zu müssen. Diese neue Denkweise führt Sie sicherlich zu einem besseren Weg, Ihre Arbeit zu erledigen.

Programmieren ist eine Kunst. Mathe ist eine Kunst. Wenn Sie beide kombinieren, werden Sie ein besserer Künstler.


Programmierung ist grundsätzlich nur angewandte Logik, und tatsächlich ist Mathematik auch nur angewandte Logik.
RibaldEddie

3

Nein.

Ähnlich wie in den meisten naturwissenschaftlichen Disziplinen ist ein gutes Verständnis der mathematischen Konzepte hilfreich, insbesondere bei der Bewertung von Dingen wie Effizienz. Für die meisten Programmieraufgaben ist Ihre mathematische Fähigkeit jedoch nur relevant, wenn das zu lösende Problem mit der Mathematik zusammenhängt.

Computer sind hervorragend in der Mathematik, daher ist es sinnvoll, dass frühe Computer ausgiebig genutzt wurden, um die "Grunzarbeit" zu verrichten, die mit vielen komplexen mathematischen Aufgaben verbunden ist. Eine Menge Software löst immer noch komplexe mathematische Probleme. In diesem Fall hilft es Ihnen, ein besseres Programm zu schreiben, aber es ist nicht das, was Sie zu einem guten Programmierer macht.


3

Normalerweise nicht in dem Sinne, dass Sie beispielsweise Kalkül- oder Triggergleichungen kennen müssen, um die meiste Arbeit zu erledigen. Wenn Sie viel Grafik- / Spieleprogrammierung betreiben, dann ja. Ein berühmtes Mathe-Hack für Quake ist ein gutes Beispiel dafür. Das Denken, mit dem Sie sich im Umgang mit Mathematik auf höherer Ebene auseinandersetzen müssen, ist jedoch auf die Programmierung anwendbar. Mit der Programmierung entwickeln Sie Ihre eigene Logikstruktur, Ihre eigenen Funktionen, Ihre eigenen "Beweise".

Das einzige Mal, dass ich in meinem Job auf Mathematik gestoßen bin (unternehmensinterne Arbeitsabläufe und Apps), ist das Erstellen von Berichts-Apps, für die statistische Kenntnisse erforderlich sind, aber nur, weil dies direkt auf Anforderungen zutrifft.


3

Ich würde nicht unbedingt sagen. Bestimmte Programmierdisziplinen (Krypto, Grafik, Physik-Engines usw.) hätten auf jeden Fall einen klaren Vorteil für die Mathematiker, aber ich denke nicht, dass ein gutes Verständnis von Differentialgleichungen zum Beispiel für die Web-Programmierung besonders nützlich wäre.

Boolesche Logik ist wahrscheinlich eine Voraussetzung, um ein guter Programmierer zu sein, aber es würde mich nicht überraschen, wenn sich herausstellen würde, dass viele Leute, die in der High-School-Mathematik keine guten Noten erzielt haben, gut im Programmieren sind.


3

Ich würde sagen, Sie müssen auf keinen Fall gut in Mathe sein, um ein guter Programmierer zu sein.

Mein erster Job als Programmierer bestand darin, 3D-Grafiken für die Missionsplanung von B-52 und Cruise Missile zu erstellen. Es war eine mathematikintensive Anwendung, aber ich brauchte wirklich nur Zugang zu Leuten, die gut / großartig in Mathe waren. Ich musste die Formel für die Berechnung der Großkreisabstände zwischen zwei Punkten nicht kennen. Ich musste wissen, wie man die Formel konvertiert, damit sie in einer Programmiersprache funktioniert. Das gleiche gilt für die Flugsimulation. Boeing hat alles nachgerechnet, wir mussten es nur anwenden.

Diese Erfahrung half mir auch ein Gefühl dafür zu bekommen, wer ein guter Programmierer sein würde und wer nicht. Die Aufgabe bestand darin, Piloten und Navigatoren als Programmierer zu beauftragen und den Programmierern zu helfen, die Bedürfnisse der Mission zu verstehen. In der Regel konnte man innerhalb weniger Wochen feststellen, welche Piloten und Navigatoren gut darin wären. Die Hauptfächer der Mathematik machten sich normalerweise sofort an die Programmierung.

Ich würde also sagen, dass gute Mathematik die Wahrscheinlichkeit erhöht, dass Sie gut programmieren können, aber ich kenne viele gute Programmierer, die nicht so gut in Mathematik sind.


3

Ich mag Mathe nicht und habe immer schlechte Mathe-Noten. Ich möchte nicht sagen, dass ich ein guter Programmierer bin, aber ich bin seit 10 Jahren in der Softwareindustrie mit großem Erfolg.


1
Ich beziehe mich total auf deine Mathe-Noten. Eigentlich fühle ich mich nicht schlecht programmiert und in Mathe nicht zu schrecklich, aber aus irgendeinem Grund scheint es mir nicht möglich zu sein, in meinen Mathekursen eine "Durchschnittsnote" zu überschreiten, egal wie sehr ich es versuche.
Bryan Harrington

@ Bryan, ich kann mich darauf beziehen
Jasonco

3

Ist es für Leute, die Mathe nicht mögen, möglich, ein guter Programmierer zu werden?

Nein, nein-nein, nein, ja und nein!

Nein, denn oft brauchst du es.

(! (a | (! (b && c) || d) && (! e)))

Warum funktioniert es nicht?

foo ('a', 'b', 19, g(h))
bar ('c', 'd', 44) 

Kann es abstrakter umgeschrieben werden?

Ist 968 ms mehr oder weniger als 0,7 s? Wie viele MB Sie benötigen, wie viele GHz die Maschine hat, wird ein Byte ausreichen - Mathematik ist ein alltäglicher Teil des Jobs. Manchmal explizit und höher Mathe.

Immer implizit niedrigere Mathematik.

Mathematik ist ein weites Feld, von der Berechnung über die Matrix bis hin zur Geometrie, Logik, Statistik, Kategorietheorie und Graphentheorie. Wenn Sie also glauben, Sie programmieren ohne Mathematik - vielleicht irren Sie sich.

Wenn Sie sich Probleme auf der Project Euler-Seite ansehen , werden Sie Rätsel finden, bei denen ich keine Ahnung habe, wie Mathematik verwendet wird, um sie zu lösen. (Nicht, dass ich sie ohne Mathe lösen könnte.) Beachten Sie, dass die Problemgröße normalerweise so groß ist, dass Sie sie nicht mit roher Gewalt lösen können.

Aber - da ich viele von ihnen nicht lösen kann (ungefähr 2/3 bis jetzt), heißt das, dass ich Mathe nicht mag?

Wenn Sie nicht Mathematik studiert haben, werden Sie wahrscheinlich nicht wissen, wo Sie Mathematik für Ihr tägliches Leben finden können, einschließlich Programmieren.

Selbst wenn Sie sich nur darauf spezialisiert haben, GUI-Komponenten auf dem Bildschirm zu verschieben, um gut auszusehen, können Sie auf irgendeine Weise rechnen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.