Ich habe zufällig während der College-Tage mit einem Freund darüber diskutiert, ob fortgeschrittene Mathematik für einen erfahrenen Programmierer notwendig ist. Er hat heftig dagegen gestritten. Er sagte, dass Programmierer nur grundlegende mathematische Kenntnisse von der High School oder der College-Mathematik für das neue Jahr benötigen, nicht mehr und nicht weniger, und dass fast alle Programmieraufgaben ohne fortgeschrittene Mathematik erledigt werden können. Er argumentierte jedoch, dass Algorithmen für Programmierer von grundlegender Bedeutung und ein Muss sind.
Mein Standpunkt war, dass alle Fortschritte in der Informatik fast ausschließlich von Fortschritten in der Mathematik abhingen, und daher würde ein gründliches Wissen in Mathematik Programmierern sehr helfen, wenn sie mit realen herausfordernden Problemen arbeiten.
Ich kann mich immer noch nicht entscheiden, welche Seite der Argumente richtig ist. Können Sie uns Ihre Haltung aus eigener Erfahrung mitteilen?
Antworten:
Um Ihre gestellte Frage zu beantworten, muss ich sagen: "Nein, Mathematik ist für die Programmierung nicht erforderlich." Wie andere Leute in diesem Thread vorgeschlagen haben, besteht meines Erachtens 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 begann mit dem Programmieren, als ich ungefähr 9 Jahre alt war, und es wäre eine Strecke zu sagen, dass ich zu diesem Zeitpunkt viel Mathematik gelernt hatte. Mit ein wenig Mühe war ich jedoch in der Lage, Variablen, Schleifen, goto-Anweisungen (verzeih mir, ich war Vic 20 BASIC und ich hatte noch keine Dijkstra gelesen) und grundlegende Koordinatengeometrie zu verstehen, um Grafiken auf den Bildschirm zu bringen .
Schließlich schloss ich ein Honours-Studium 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 einige Ideen aus Statistik, Wahrscheinlichkeitstheorie, Vektoranalyse und linearer Algebra auf die Programmierung anwenden konnte, gab es wenig Mathematik, die ich studierte und die direkt auf meine Programmierung während meines Grundstudiums und die kommerzielle und Forschungsprogrammierung anwendbar war, die ich danach machte.
Ich bin jedoch der festen Überzeugung, dass die formalen Denkmethoden, die die Mathematik erfordert - sorgfältiges Denken, Suchen nach Gegenbeispielen, Aufbau axiomatischer Grundlagen, Erkennen von Verbindungen zwischen Konzepten - eine enorme Hilfe waren, wenn ich große und komplexe Programmierprojekte in Angriff genommen habe.
Überlegen Sie, wie Sportler für ihren Sport trainieren. Zum Beispiel verbringen Fußballer zweifellos einen Großteil ihrer Trainingszeit mit grundlegenden Fußballfähigkeiten. Um ihre allgemeine Fitness zu verbessern, können sie jedoch auch Zeit im Fitnessstudio mit dem Fahrrad oder Rudergerät verbringen, Gewichte machen usw.
Das Studium der Mathematik kann mit Krafttraining oder Cross-Training verglichen werden, um Ihre mentale Stärke und Ausdauer beim Programmieren zu verbessern. Es ist absolut notwendig, dass Sie Ihre grundlegenden Programmierkenntnisse üben, aber das Studium der Mathematik ist eine unglaubliche mentale Übung, die Ihre analytischen Kernfähigkeiten verbessert.
quelle
Während fortgeschrittene Mathematik möglicherweise nicht für die Programmierung erforderlich ist (es sei denn, Sie programmieren fortgeschrittene Mathematikfähigkeiten), sind der Denkprozess der Programmierung 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 abstrakt kritisch. Dinge der realen Welt werden durch Objekte und Variablen dargestellt. Die Fähigkeit, von konkret zu abstrakt zu übersetzen, verbindet auch die beiden Felder.
Es besteht eine sehr gute Chance, dass Sie wahrscheinlich gut in dem anderen sind, wenn Sie in einem gut sind.
quelle
Informatik! = Programmierung
OK, im Ernst, ich kenne gute und schlechte Programmierer, die Hauptfächer Englisch und Psychologie waren, und einige, die Hauptfächer Informatik waren. Einige sehr berühmte Leute, die ich als Entwickler bewundere, hatten keinen CS-Hintergrund. Larry Wall (Perl) war zum Beispiel ein Linguist. Auf der anderen Seite ist es hilfreich, etwas über die Domain zu wissen, an der Sie arbeiten, denn dann können Sie zumindest sehen, ob Ihre Daten sinnvoll sind, und Ihren Kunden / Benutzern helfen, einen Drilldown zu dem durchzuführen, was sie wirklich wollen. Und ja, es gibt das Problem der Rechenkomplexität und der effizienten Datenstrukturen sowie der Programmkorrektheit. Das ist etwas, was Sie in der Informatik lernen und das in fast allen Bereichen nützlich ist, aber es ist weder notwendig noch ausreichend.
quelle
Ich denke , ich werde die erste Person sein , zu sagen , Sie tun müssen math. Wie andere gesagt haben, ist Mathematik für bestimmte Aspekte der Entwicklung nicht allzu wichtig, aber die Grundlagen des kritischen Denkens und der strukturierten Analyse sind sehr wichtig.
Darüber hinaus ist Mathematik wichtig, um viele der Grundlagen zu verstehen, die für Dinge wie Scheduler, Optimierungen, Sortierung, Protokollverwaltung und eine Reihe anderer Aspekte von Computern erforderlich sind. Obwohl die Mathematik auf Berechnungsebene nicht komplex ist (meistens Algebra der High School), können die Theorien und Anwendungen recht komplex sein, da ein solides Verständnis von Mathematik durch Kalkül von großem Nutzen ist.
Können Sie ohne sie absolut auskommen, und Sie sollten sich nicht von weniger gründlichen mathematischen Kenntnissen zurückhalten lassen, aber wenn Sie die Chance oder die Neigung hätten, würde ich so viel Mathematik wie möglich studieren, 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 habe Leute gekannt, die auf beiden Seiten des Zauns sehr erfolgreich waren (diejenigen ohne starken Fokus auf Mathematik und diejenigen, die zur Schule für Physik oder Mathematik gingen), aber in beiden Gruppen hatten sie Spaß an numerischen Problemen und lernten Algorithmen und Mathematiktheorie .
quelle
Ich habe einen Mathematik-Abschluss, aber ich kann mich nicht erinnern, dass ich diese Mathematik ein einziges Mal in meiner Karriere verlangt habe. Es war nützlich, um meinen Geist für logisches Denken zu trainieren, aber ich habe keinen Code mit Fluiddynamik, Quantentheorie oder Markov-Ketten geschrieben. (Der letzte ist der wahrscheinlichste, der auftaucht, vermute ich.)
Die meisten Branchenentwickler benötigen die meiste Zeit keine fortgeschrittene Mathematik. Manchmal kann es hilfreich sein, die Trigonometrie zu kennen, und es kann sicher wichtig sein, genügend Mathematik zu verstehen, um mathematisch beschriebene Algorithmen zu implementieren - aber darüber hinaus? Nein, nein.
Vergessen Sie nicht, dass die meisten Programmierer die Informatik nicht vorantreiben - sie erstellen Anwendungen. Ich muss keine fortgeschrittene Technik kennen, um ein modernes Auto zu fahren, obwohl dieses Auto mit ziemlicher Sicherheit durch fortgeschrittene Technik verbessert wurde .
quelle
Ich würde argumentieren, dass fortgeschrittene Logik (diskrete) Mathematik wirklich helfen kann. Das zusammen mit der Mengenlehre. Beim 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 jedoch die Analysis, die, soweit ich sehen kann, nur sehr begrenzt verwendet wurde. Da 90% (oder so ähnlich) der Programmierung Geschäftsanwendungen mit sehr einfacher Mathematik ausführen, würde ich sagen, dass Sie größtenteils mit sehr wenig mathematischen Kenntnissen auskommen können. Ein gutes Verständnis von Boolescher Algebra, Logik, diskreter Mathematik und Mengenlehre kann Sie jedoch wirklich auf die nächste Stufe bringen.
quelle
Ich werde hier gegen den Strich gehen und "Ja" sagen
Ich wechsle vom Tiefbau zur Programmierung (Concrete Sucks!). Mein mathematischer Hintergrund besteht aus den üblichen Aufgaben des ersten Jahres, der Berechnung des zweiten und dritten Jahres (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 aufgrund 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 Nachforschungen anzustellen (im Wesentlichen das Äquivalent zu einem halben Arbeitskurs). Ich bin sicherlich nicht in der Lage, NEUE Algorithmen zu entwickeln, da ich es einfach nicht tue Ich habe nicht die mathematischen Grundlagen als Schultern der Riesen, auf denen ich stehen kann.
quelle
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 können, 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, bei denen Sie feststellen, dass Sie nicht viel Mathematik benötigen.
quelle
Wenn Sie das Thema faszinierend genug finden, um es zu posten, beginnen Sie einfach mit dem Lernen. Der Rest wird natürlich kommen.
quelle
Ja, es gibt keine Notwendigkeit für fortgeschrittene Mathematik - wenn Sie kommerziell programmieren - Standard-Software.
Beim Umgang mit Hardcore-Dingen wie:
Einige fortgeschrittene mathematische Kenntnisse könnten nützlich sein. Und es ist nicht so, als wären sie "nicht von dieser Welt" -Probleme.
Ich musste eine Software erstellen, um zu versuchen, die für ein Büro erforderliche Papiermenge "vorherzusagen" (und es war die Hölle, nur um herauszufinden, wie man Werte am besten approximieren kann).
Sie müssen jedoch vorsichtig sein, da es leicht ist, sich bei der Verwendung fortgeschrittener Dinge zu verirren - es gibt einen Freund von mir, der Turing verwendet hat, um den Status eines dynamischen Menüs zu speichern, nur um es richtig anzuzeigen - humm ... vielleicht er war zu weit in seiner Vorstellung.
quelle
Welche Art der Programmierung?
In meiner kaufmännischen Erfahrung habe ich keine fortgeschrittene Mathematik benötigt, aber dies hängt stark von dem Bereich ab, in dem Sie sich befinden.
Computergrafik erfordert viel fortgeschrittene 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 verwaschene Antwort hilft.
quelle
Mathematik wird für Entwickler in einigen Bereichen benötigt, in anderen jedoch fast unbrauchbar.
Wenn Sie ein Spieleentwickler sind und viel mit Physik arbeiten müssen, ist das Verständnis von Mathematik von entscheidender Bedeutung. Wenn Sie mit erweiterten visuellen Steuerelementen arbeiten, können Sie ohne Geometrie nicht viel tun. Wenn Sie planen, einige finanzielle Berechnungen durchzuführen, wäre es WIRKLICH hilfreich, solide statistische Kenntnisse zu haben.
Andererseits hatte ich in den letzten 5 Jahren nur 2 oder 3 Projekte, in denen JEDE Menge Mathematik benötigt wurde. Von diesen gab es nur 1 Ereignis, bei dem eine Google-Suche nicht half.
Letztendlich sind sogar finanzielle Berechnungen sehr oft etwas, was Ihre Kunden für Sie tun und Ihnen Formeln zur Implementierung geben.
Wenn Sie also im Geschäft mit angewandter Software tätig sind, werden Sie Ihren Mathematik-Abschluss wahrscheinlich nie verwenden. Wenn Sie in akademischer Software sind, ist Mathematik entscheidend.
quelle
Ich stimme Chris zu. Ich würde auch "Ja" sagen. Dies hängt jedoch von Ihrem Markt ab, wie oben angegeben. Wenn Sie einfach einige grundlegende "Standard" -Anwendungen oder Schreibwerkzeuge erstellen, die Ihnen bei Ihrer täglichen Arbeit helfen ... dann ist Mathematik bei weitem nicht so wichtig.
Die Entwicklung kundenspezifischer Softwarelösungen erfordert viel Problemlösung und kritisches Denken. Fähigkeiten, die definitiv verbessert werden, wenn ein mathematischer Hintergrund vorhanden ist. Ich habe mit meinem Abschluss in Computertechnik in Mathematik studiert und all meinen mathematisch orientierten Hintergrund darin gewürdigt, warum ich dort bin, wo ich heute bin.
Das sind meine 2 Cent, ich kann dem obigen Lesen entnehmen, dass viele nicht zustimmen würden. Ich ermutige alle zu bedenken, dass ich nicht sage, dass Sie diese Fähigkeiten ohne mathematischen Hintergrund nicht haben können. Ich sage lediglich, dass die Fähigkeiten Nebenwirkungen eines solchen Hintergrunds sind und sich positiv auf Software auswirken können.
quelle
Nach meiner Erfahrung ist Mathe beim Programmieren erforderlich, man kommt nicht davon weg. Die gesamte Programmierung basiert auf Mathematik.
Das Problem ist nicht schwarz und weiß, sondern bunter. Die Frage ist nicht, ob Sie Mathe brauchen oder nicht, sondern wie viel. Die höheren Stufen der Mathematik geben Ihnen mehr Werkzeuge und öffnen Ihren Geist für verschiedene Wege.
Sie können beispielsweise programmieren, wenn Sie nur Addition und Subtraktion kennen. Wenn eine Multiplikation erforderlich ist, müssen Sie viele Ergänzungen vornehmen. Die Multiplikation vereinfacht sich wiederholende Additionen. 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 Mechaniken zum Reduzieren all dieser
if
Aussagen.Und vergessen Sie nicht die Geschwister in Mathematik, Logik und Philosophie. Logic hilft Ihnen dabei,
case
oderswitch
Anweisungen effizient zu nutzen . Die Philosophie wird Ihnen helfen, das Denken des Mannes zu verstehen, der den Code geschrieben hat, den Sie ändern.Ja, Sie brauchen nicht viel Mathematik, um Programme zu schreiben. Einige Programme erfordern möglicherweise mehr Mathematik als andere. Mehr Mathematikkenntnisse verschaffen Ihnen einen Vorteil gegenüber denen, die weniger Verständnis haben. In diesen Zeiten brauchen die Menschen jeden Vorteil, den sie bekommen können, um diese Jobs zu bekommen.
quelle
Ich programmiere seit 8 Jahren professionell und seit meinem 12. Lebensjahr als Hobby.
Mathe ist nicht notwendig, Logik ist. Mathe ist schrecklich hilfreich. Zu sagen, dass es nicht notwendig ist, ist wie zu sagen, dass man ein Messer benutzen kann, um einen Mann zu töten. 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 gängigen Computeräquivalente kennen. Zum Beispiel müssen Sie wissen, was ein Exponential ist (3 bis 3 ist 27), und der allgemeine Computerausdruck ist 3 ^ 3. Die gebräuchlichen Notationen für Algebra ändern sich zwar zwischen den Sprachen, aber viele von ihnen verwenden eine etwas einheitliche Methodik. Andere (sehen dich LISP an) tun es nicht. Sie müssen auch die Reihenfolge der Operationen kennen.
Sie müssen algorithmisches Denken verstehen. Erst dies, dann dies erzeugt dies, was in dieser Berechnung 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 festgestellt, 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 konnten, 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 verstehen. Wenn sie es verstehen, sollte der Computer auch, 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 in Ihrem Programmierbereich liegt. 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.
Dies geht jedoch weiter als Mathe; Für welche Domäne Sie auch programmieren, Sie müssen die Grundlagen genau verstehen. Wenn Sie eine Programmiersprachenanalyse-Software programmieren, müssen Sie Wahrscheinlichkeit, Statistik, Grammatiktheorie (mehrere Sprachen) usw. kennen.
Oft 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 programmieren, 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 jedoch 10 Millionen Datensätze wären, würden Sie stark davon profitieren, die Vektormathematik tatsächlich zu kennen und ein tiefes Verständnis für das Sortieren auf Binärebene zu haben (wie sortiert ein System alphabetisch? Woher weiß es, dass 'a' kleiner als 'b' ist? '?)
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, mehr als 10 Stunden pro Woche im Wesentlichen „Hausaufgaben“ zu machen, nicht mögen, werden Sie kein Programmierer.
Wenn Sie Gedankenübungen mögen, wenn Sie gerne lernen, wenn Sie über abstrakte Dinge wie Mathematik ohne Taschenrechner oder Design ohne Skizzenblock nachdenken können, wenn Sie einen breiten Geschmack im Leben und in Ihren Hobbys haben, wenn Sie selbstkritisch sind und wegwerfen können. ' Bevorzugte Ideen, wenn Sie Dinge perfektionieren möchten, dann werden Sie Programmierer. Begründen Sie diese Entscheidung nicht mit Mathematik, sondern mit der Fähigkeit, logisch zu denken und zu lernen. Das ist wichtig; Mathe ist nur das Nebenprodukt.
quelle
Natürlich hängt es davon ab, welche Art von Programmierer Sie sein möchten oder besser, welche Art von Programmierer Ihre Arbeitgeber von Ihnen erwarten. Ich denke, Kalkül und Algebra sind wesentliche Faktoren. Statistische und lineare Programmierung sind in der Tat ein gutes Werkzeug für Ihre Aktentasche. Vielleicht könnte eine Analyse (Ableitung, Integrale, Funktionen ...) ohne durchgeführt werden. Aber wenn Sie wissen möchten, wie die Dinge hautnah funktionieren (z. B. Elektronik oder einige nicht triviale Algorithmen), ist "fortgeschrittene" Mathematik etwas, auf das Sie besser nicht verzichten sollten.
quelle
Die meisten meiner Programmierungen umfassten physikalische Simulationen für Forschungszwecke, darunter Elektromagnetismus, Quantenmechanik und Strukturmechanik. Da mit den Problembereichen fortgeschrittene Mathematik verbunden ist, 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 versuchen zu tun.
quelle
Fortgeschrittene Mathematikkenntnisse sind wichtig, wenn Sie eine neue Programmiersprache schreiben möchten. Oder Sie müssen Ihre eigenen Algorithmen schreiben.
Für die meisten alltäglichen Programme - von Websites bis hin zu Anwendungen für die Versicherungsabwicklung - sind jedoch nur grundlegende mathematische Aspekte erforderlich .
quelle
Jemand mit einem soliden mathematischen (der nicht nur arithmetischen) oder logischen Hintergrund wird gut mit Algorithmen, variabler Verwendung, bedingtem Denken und Datenstrukturen umgehen können.
Die Mathematik hilft Ihnen zu einem Punkt, aber nur zu einem Punkt.
quelle
Ich denke nicht, dass fortgeschrittene Mathematikkenntnisse eine Voraussetzung für einen guten Programmierer sind, aber aufgrund persönlicher Erfahrungen denke ich, dass Programmierer, die fortgeschrittene Mathematik besser verstehen, auch bessere Programmierer sind. Dies kann einfach auf einen logischeren Verstand oder auf eine logischere Sichtweise aufgrund ihrer Erfahrungen mit der Lösung mathematischer Probleme zurückzuführen sein.
quelle
Das grundlegende Konzept der Mathematik besteht darin, Algorithmen zu entwickeln, zu verstehen, zu implementieren und zu verwenden. Wenn Sie nicht rechnen können, liegt es daran, dass Sie diese Dinge nicht können, und wenn Sie diese Dinge nicht können, können Sie kein effektiver Programmierer sein.
Für gängige Programmieraufgaben sind möglicherweise keine spezifischen mathematischen Kenntnisse erforderlich (z. B. benötigen Sie wahrscheinlich keine Vektoralgebra und -rechnung, es sei denn, Sie führen Aufgaben wie 3D-Grafiken oder Physiksimulationen aus), aber die zugrunde liegenden Fähigkeiten sind identisch und es mangelt an Fähigkeiten in einer Domäne wird mit einem entsprechenden Mangel an Fähigkeiten in der anderen Domäne übereinstimmen.
quelle
Mathe ist eine Toolbox zum Erstellen von Programmen. Ich empfehle Cormens Einführung in Algorithmen. Es berührt das "mathematischere" Zeug.
quelle
Ich denke nicht, dass höhere Mathematik eine Voraussetzung ist, um ein guter Programmierer zu sein - wie immer hängt es davon ab, was Sie programmieren.
Wenn Sie in der 3D-Grafikprogrammierung sind, benötigen Sie natürlich Matrizen und ähnliches. Als Autor von Unternehmenssoftware benötigen Sie wahrscheinlich Statistikmathematik.
Aber ein professioneller Programmierer für fast 10 Jahre (und weitere 10 Jahre Amateur) "höhere Mathematik" zu sein, brauchte ich nicht regelmäßig. In etwa 99,8% aller Fälle geht es in einigen intelligenten Kombinationen nur um Plus, Minus, Division und Multiplikation - in den meisten Fällen geht es um Algorithmen, nicht um Mathematik.
quelle
Für die meisten Programmierer ist es wichtig, höhere Mathematik zu lernen, nur weil es Ihr Gehirn dazu bringt, logisch zu denken und Schritt für Schritt 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 Kalkül benutzt. Ich benutze jeden Tag Algebra.
quelle
Mathematische Kenntnisse sind für einen Programmierer oft nützlich, ebenso wie Grafikdesignfähigkeiten, Fähigkeiten zum Lösen von Rätseln, Arbeitsmoral und eine Vielzahl anderer Fähigkeiten und Eigenschaften. Sehr wenige Programmierer sind in allem gut, was ein Programmierer möglicherweise gut kann. Ich würde keiner Aussage des Formulars "Sie sind kein echter Programmierer, es sei denn, Sie können hier { Lieblingsprogrammierfähigkeiten einfügen }" zustimmen .
Aber ich wäre vorsichtig mit einem Programmierer, der nicht rechnen kann. Mehr als von jemandem, der nicht zeichnen konnte.
quelle
Ich denke, es hängt wirklich davon ab, was Sie versuchen, aber meiner Meinung nach sind die CS- und OS-Theorie hier wichtiger als Mathematik, und Sie brauchen wirklich nur die Mathematik, die sie beinhaltet.
Zum Beispiel gibt es viele CS-Hintergründe der Planungstheorie und -optimierung, die hinter vielen Planern in modernen Betriebssystemen stehen. Das ist ein Beispiel für etwas, das etwas Mathematik erfordern würde, aber nicht etwas sehr Kompliziertes.
Aber ehrlich gesagt, für die meisten Dinge braucht man keine Mathematik. Was Sie brauchen, ist die Fähigkeit zu lernen, in Basis 2 und 16 zu denken, wie zum Beispiel die Fähigkeit, mental ODER / UND zu denken. Wenn Sie beispielsweise ein Byte haben und innerhalb dieses Bytes zwei 3-Bit-Felder und 2 verschwendete Bits vorhanden sind, können Sie die Dinge etwas schneller machen, als wenn Sie wissen, welche Bits in welchen Feldern aktiv sind, wenn der Byte-Wert etwa 11 beträgt Stift und Papier.
quelle
Ich habe ungefähr zur gleichen Zeit mit dem Programmieren begonnen, als ich in meine Voralgebra-Klasse eingetreten bin. Ich würde also nicht sagen, dass Mathematik so wichtig ist, obwohl sie bei bestimmten Arten der Programmierung helfen kann, insbesondere bei funktionalen.
Ich habe Discrete Math noch nicht belegt, aber ich sehe viele theoretische Dinge mit Programmierung, die in einer Mathe-Notation geschrieben sind, die in dieser Klasse unterrichtet wird.
Stellen Sie außerdem sicher, dass Sie wissen, wie Sie irgendetwas in einer Basis berechnen, insbesondere Basis 2, 8 und 16.
Eine Klasse, die mir wirklich einige Konzepte gebracht hat, war diese Vorprogrammierungsklasse. Wir haben Gewerkschaften, Kreuzungen und all das fröhliche Zeug gelernt und es ist fast genau eine Parallele zur bitweisen Mathematik. Und wir haben uns sehr intensiv mit boolescher Logik befasst. Was ich am nützlichsten fand, war, als wir lernten, wie man komplexe boolesche Anweisungen reduziert. Das war sehr praktisch:
kann vereinfacht werden
Was ich vorher nicht ganz verstanden habe.
quelle
Nun, Sie haben eine Reihe von Antworten generiert, und nein, ich habe nicht alle gelesen. Ich bin mittendrin, nein, Sie brauchen sicherlich keine Mathematik, um Programmierer zu werden. Assembler vs Gerätetreiber unter Linux sind nicht mehr oder weniger kompliziert als die anderen und erfordern auch keine Mathematik.
In keiner Weise müssen Sie dafür einen Mathematikkurs belegen oder bestehen.
Ich werde zustimmen, dass die Denkweise zur Problemlösung beim Programmieren der von mathematischen Lösungen ziemlich ähnlich ist und daher Mathematik wahrscheinlich leicht fällt. oder im Gegenteil, wenn Mathe schwierig ist, kann das Programmieren schwierig sein. Eine Klasse oder ein Abschluss oder irgendwelche Zettel oder Trophäen sind nicht erforderlich.
Wenn Sie jetzt weder in Ihrem Kopf noch auf Papier oder mit einem Taschenrechner schnell von hexadezimal in binär in dezimal konvertieren können, werden Sie Probleme haben. Wenn Sie sich mit Netzwerken und anderen Dingen beschäftigen möchten, die Timing beinhalten, was Kerneltreiber oft tun, aber nicht müssen. Du wirst kämpfen. Ich kenne eine sehr lange Liste von Leuten mit Mathematik- und / oder Informatik- und / oder Ingenieurabschlüssen, die mit den Ratenberechnungen, Bits pro Sekunde, Bytes pro Sekunde, wie viel Speicher Sie für etwas tun müssen usw. zu kämpfen haben In gewissem Maße kann es als eine Art Talent angesehen werden, auf das einige hinarbeiten und auf das andere hinarbeiten müssen.
Mein Fazit ist, dass ich an Willenskraft glaube. Wenn du dieses Zeug lernen willst, das du kannst und willst, ist es so einfach. Sie müssen nicht an einem Kurs teilnehmen oder viel Geld ausgeben. Linux und Qemu können Sie beispielsweise für einige Zeit beschäftigen, verschiedene ASM-Sprachen usw. Absturzsichere 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 Matheklassen nehmen möchten.
quelle
Du brauchst Mathe. Programmieren ist nichts anderes als Mathematik. 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 auf Programmiersprachen interpretiert werden kann. Verschiedene Sprachen sollen daher bestimmte Probleme lösen. Aber für den allgemeinen Zweck 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 Platzieren unter Windows (Desktop, Web) und das Manipulieren gleiche Werte, manchmal Zugriff auf einige Daten von ähnlichen Geräten (aber mit unterschiedlichen Markennamen, unterschiedlichem Port und Kopfschmerzen) usw., die nicht mehr als eine einheitliche Methode beinhalten,
quelle
IMO, Sie brauchen wahrscheinlich eine Eignung für Mathematik, ohne unbedingt viel Wissen auf dem Gebiet zu haben. Die Dinge, die Sie benötigen, um gut in Mathe zu sein, ähneln den Dingen, die Sie benötigen, um gut in Programmieren 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.
quelle