Les mathématiques sont-elles nécessaires à la programmation? [fermé]

117

Il m'est arrivé de débattre avec un ami pendant mes études universitaires pour savoir si les mathématiques avancées sont nécessaires pour un programmeur chevronné. Il avait l'habitude d'argumenter farouchement contre cela. Il a dit que les programmeurs n'ont besoin que des connaissances mathématiques de base du lycée ou du lycée, ni plus ni moins, et que presque toutes les tâches de programmation peuvent être accomplies sans même avoir besoin de mathématiques avancées. Il a cependant fait valoir que les algorithmes sont un atout fondamental et indispensable pour les programmeurs.

Ma position était que tous les progrès de l'informatique dépendaient presque uniquement des progrès des mathématiques, et donc une connaissance approfondie des mathématiques aiderait grandement les programmeurs lorsqu'ils travaillent avec des problèmes difficiles du monde réel.

Je ne peux toujours pas décider de quel côté des arguments est correct. Pouvez-vous nous dire votre position, à partir de votre propre expérience?

simsim
la source
7
J'ai appelé mon professeur de mathématiques HS dix ans plus tard juste pour lui dire que je n'avais jamais utilisé les mathématiques avancées de toute ma carrière. Dick bouge, je sais, mais bonne question! Un de plus.
Chris McCall
2
stackoverflow.com/questions/157354/… et bien d'autres sur stackoverflow.com/search?q=should+I+study+math
dmckee --- ex-moderator chaton
Veuillez consulter la réponse la plus élevée à cette question .
Boris Stitnicky
Plutôt que. Fermer, cela devrait être migré vers les programmeurs.
Chris Cudmore

Réponses:

111

Pour répondre à votre question telle qu'elle a été posée, je devrais dire: "Non, les mathématiques ne sont pas nécessaires pour la programmation". Cependant, comme d'autres personnes l'ont suggéré dans ce fil, je crois qu'il existe une corrélation entre la compréhension des mathématiques et la capacité de «penser algorithmiquement». Autrement dit, être capable de penser de manière abstraite à la quantité, aux processus, aux relations et à la preuve.

J'ai commencé à programmer vers l'âge de 9 ans et il serait exagéré de dire que j'avais appris beaucoup de mathématiques à ce stade. Cependant, avec un peu d'effort, j'ai pu comprendre les variables, les boucles for, les déclarations goto (pardonnez-moi, j'étais Vic 20 BASIC et je n'avais encore lu aucun Dijkstra) et la géométrie des coordonnées de base pour mettre des graphiques à l'écran .

J'ai finalement obtenu un baccalauréat spécialisé en mathématiques pures avec une mineure en informatique. Bien que je me sois principalement concentré sur l'analyse, j'ai également étudié un peu les mathématiques discrètes, la théorie des nombres, la logique et la théorie de la calculabilité. En plus de pouvoir appliquer quelques idées de statistiques, de théorie des probabilités, d'analyse vectorielle et d'algèbre linéaire à la programmation, il y avait peu de mathématiques que j'ai étudiées qui étaient directement applicables à ma programmation pendant mon diplôme de premier cycle et à la programmation commerciale et de recherche que j'ai faite par la suite.

Cependant, je crois fermement que les méthodes formelles de pensée qu'exigent les mathématiques - raisonnement minutieux, recherche de contre-exemples, construction de fondements axiomatiques, repérage des connexions entre les concepts - ont été d'une aide précieuse lorsque j'ai abordé des projets de programmation vastes et complexes.

Considérez la façon dont les athlètes s'entraînent pour leur sport. Par exemple, les footballeurs consacrent sans aucun doute une grande partie de leur temps d'entraînement aux compétences de base du football. Cependant, pour améliorer leur condition physique générale, ils peuvent également passer du temps au gymnase sur des vélos ou des rameurs, faire des poids, etc.

L'étude des mathématiques peut être comparée à la musculation ou à l'entraînement croisé pour améliorer votre force mentale et votre endurance pour la programmation. Il est absolument essentiel que vous pratiquiez vos compétences de base en programmation, mais étudier les mathématiques est un travail mental incroyable qui améliore votre capacité analytique de base.

Mark Reid
la source
6
Je voudrais ajouter que les mathématiques ne sont pas seulement de la musculation pour votre force mentale, mais ouvrent également la porte à de nouveaux problèmes et solutions. Par exemple, lors de mon stage en traitement d'image, je ne pourrais pas mettre en œuvre nos algorithmes de suppression de bruit sans une compréhension approfondie des PDE. Le code résultant était simple mais très précis. Et les calculs sont ce qui nous a amenés là-bas. La beauté de ces formules est encore plus étonnante. Une petite expression PDE peut se traduire en quelques pages de code. Sans la formule initiale, il est difficile de voir comment vous vous en retrouveriez jamais.
Joe
Les mathématiques ne sont pas nécessaires pour la programmation, car la programmation est mathématique. Cela peut être de bonnes mathématiques ou de mauvaises mathématiques (comme lorsque le long appel de l'orang-outan est translittéré en langage Ook ), mais chaque fois qu'un programmeur conçoit un modèle objet de quelque chose, ze effectue (généralement sans le savoir) un acte de mathématiques. Donc, encore une fois, il n'est pas nécessaire de lire des livres de mathématiques pour programmer, mais cela ne change rien au fait que la programmation est mathématique, et que (comme le dit Euclide), il n'y a pas de voie royale pour y parvenir.
Boris Stitnicky
56

Bien que les mathématiques avancées ne soient pas nécessaires pour la programmation (à moins que vous ne programmiez des capacités mathématiques avancées), le processus de réflexion de la programmation et des mathématiques est très similaire. Vous commencez avec une base de choses connues (axiomes, théories déjà éprouvées) et essayez d'arriver à un endroit nouveau. Vous ne pouvez pas sauter des étapes. Si vous sautez des étapes, vous devez remplir les espaces vides. C'est un processus de réflexion critique qui rend les deux incroyablement similaires.

De plus, les mathématiciens et les programmeurs pensent tous deux de manière critique dans l'abstrait. Les choses du monde réel sont représentées par des objets et des variables. La capacité de traduire du concret à l'abstrait relie également les deux domaines.

Il y a de très bonnes chances que si vous êtes bon dans l'un, vous serez probablement bon dans l'autre.

Jarrett Meyer
la source
Et donc vous pourriez dire que quelqu'un qui fait beaucoup de mots croisés ou qui joue au Scrabble est plus susceptible d'être bon en programmation que quelqu'un qui ne le fait pas. La relation semble porter sur la probabilité plutôt que sur une stricte dépendance.
Liam
La rigueur et la discipline de résolution d'un problème en mathématiques se traduisent par la programmation. Vous devez avoir la capacité de déconstruire un problème et de l'aborder d'abord dans la direction évidente, puis à partir de directions plus créatives dans les deux disciplines.
Bramha Ghosh
4
Deux grands programmeurs que j'admire beaucoup n'ont pas étudié l'informatique, mais ont plutôt été formés comme mathématiciens et ont juste changé de cheminement de carrière: Miguel de Icaza et Alexander Stepanov. D'ailleurs, Stepanov a déclaré un jour qu'en travaillant sur les mathématiques "on ne commence pas par des axiomes: on se retrouve avec des axiomes". : D
Joe Pineda
@Liam - Il s'agit de faire correspondre les motifs et de jongler avec les choses en mémoire à court terme. Les deux activités nécessitent ces compétences.
jcolebrand
+1 pour "Il y a de très bonnes chances que si vous êtes bon dans l'un, vous serez probablement bon dans l'autre."
Thorbjørn Ravn Andersen
39

informatique! = programmation

OK, sérieusement, je connais de bons et de mauvais programmeurs qui étaient des majors en anglais et en psychologie et certains qui étaient des majors en informatique. Certains types très célèbres que j'admire en tant que développeurs n'avaient pas de formation en CS. Larry Wall (Perl), par exemple, était linguiste. D'un autre côté, il est utile de savoir quelque chose sur le domaine sur lequel vous travaillez, car vous pouvez au moins voir si vos données ont du sens et aider vos clients / utilisateurs à explorer ce qu'ils veulent vraiment. Et oui, il y a le problème de la complexité des calculs, des structures de données efficaces et de l'exactitude des programmes. Ce sont des choses que vous apprenez en informatique et qu'il est utile de connaître dans presque tous les domaines, mais ce n'est ni nécessaire ni suffisant.

David Nehme
la source
12
Je pense que la meilleure citation que j'ai entendue est "L'informatique ne concerne pas plus les ordinateurs que l'astronomie ne concerne les télescopes." (Dijkstra)
tloach
5
Je pense que stackoverflow.com a été créé essentiellement pour surmonter ce type de réponses à une seule ligne, mais il y a 15 personnes partageant les mêmes idées qui ont élevé cette réponse inutile au sommet. Je n'ai rien de personnel avec vous, mais j'ai signalé votre réponse comme "offensive". Il en est ainsi du moins pour moi.
simsim
2
@simsim: Je trouve choquant que les gens pensent qu'un diplôme CS est en quelque sorte une question de programmation.
tloach
3
@simsim: Peu importe ce que Joel et Jeff avaient en tête lorsqu'ils ont créé ce site Web. Il s'agit de créer une communauté où les programmeurs s'entraident. Je pense que la réponse brève de David est juste sur la cible. +1
Scottie T
@ Scottie: s'il s'agissait de "créer une communauté où les programmeurs s'entraident", alors des forums et des listes de diffusion auraient suffi. J'ai peut-être été un peu dur dans ma réponse, mais c'était surprenant de voir 15 utilisateurs voter pour une "réponse" complètement ignorante, eh bien, avant l'édition bien sûr. :-)
simsim
29

Je suppose que je vais être la première personne à vous dire faire besoin de mathématiques. Comme d'autres l'ont dit, les mathématiques ne sont pas si importantes pour certains aspects du développement, mais les principes fondamentaux de la pensée critique et de l'analyse structurée sont très importants.

Plus encore, les mathématiques sont importantes pour comprendre un grand nombre de principes fondamentaux qui entrent dans des choses comme les ordonnanceurs, les optimisations, le tri, la gestion des protocoles et un certain nombre d'autres aspects des ordinateurs. Bien que les mathématiques impliquées à partir d'un niveau de calcul ne soient pas complexes (il s'agit principalement de l'algèbre du lycée), les théories et les applications peuvent être assez complexes car une solide compréhension des mathématiques par le biais du calcul sera d'un grand avantage.

Pouvez-vous vous en passer, absolument, et vous ne devriez pas laisser une connaissance moins approfondie des mathématiques vous retenir, mais si vous en aviez la chance, ou l'inclination, j'étudierais autant de mathématiques que possible, calcul, théorie numérique, linéaire algèbre, combinatoire, applications pratiques, tout cela a des applications pratiques et théoriques dans un large éventail de l'informatique.

J'ai connu des gens qui réussissaient très bien des deux côtés de la clôture (ceux qui ne se concentraient pas fortement sur les mathématiques et ceux qui allaient à l'école pour la physique ou les mathématiques), mais dans les deux groupes, ils aimaient les problèmes numériques et apprendre les algorithmes et la théorie mathématique. .

GrayWizardx
la source
Je suis d'accord. Bien que l'on puisse s'en passer - regrettera-t-on sa décision? Si vous vous attendez à avoir un emploi même modérément passionnant / stimulant, les compétences en mathématiques que vous avez acquises vous aideront certainement.
Andras Vass
C'est suffisant! GrayWizardx et autres: En tant qu'auto-apprenant, que recommandez-vous en termes de matériel de lecture? J'ai été massivement découragé par la manière meurtrière dont les mathématiques m'ont été enseignées quand j'étais plus jeune. Je ne veux pas blâmer ailleurs, mais les mathématiques ont été présentées de manière vicieuse. Il est maintenant temps de racheter. Est-il FACILE d'apprendre les mathématiques décrites ici (calcul, algèbre linéaire, mathématiques discrètes, etc.) par vous-même? Un ensemble particulier de manuels est-il recommandé pour cette approche? Un diplôme universitaire n'est plus une option!
Emmel
1
@Emmel, j'ai en fait vu "The Manga guide to Math" et "The Manga guide to Calculus" dans un Barnes and Noble là-bas, et je sais que j'ai vu un "Complete Idiots Guide to Linear Algebra" l'autre jour. En ce qui concerne les ressources réelles, il y avait de très bons sites Web de mathématiques (pour les étudiants, etc.), mais je ne sais pas combien d'entre eux existent encore. Une chose que je fais de temps en temps est d'aller dans un collège communautaire et de «vérifier» les cours de mathématiques (prenez-le pour réussite / échec) et obtenez juste un rappel. Je l'ai fait en 5 à 6 ans, mais cela a été très utile la dernière fois.
GrayWizardx
26

J'ai un diplôme en mathématiques, mais je ne me souviens pas avoir exigé ces mathématiques une seule fois dans ma carrière. C'était utile pour entraîner mon esprit à la pensée logique, mais je n'ai écrit aucun code en utilisant la dynamique des fluides, la théorie quantique ou les chaînes de Markov. (Le dernier est le plus susceptible de survenir, je suppose.)

La plupart des développeurs métier n'auront pas besoin de mathématiques avancées la plupart du temps. Parfois, la connaissance de la trigonométrie peut aider, et certainement être capable de comprendre suffisamment de mathématiques pour mettre en œuvre des algorithmes décrits mathématiquement peut être important - mais au-delà de cela? Non.

N'oubliez pas que la plupart des programmeurs ne font pas progresser l'informatique - ils créent des applications. Je n'ai pas besoin de connaître l'ingénierie avancée pour conduire une voiture moderne, même si cette voiture a presque certainement été améliorée grâce à une ingénierie avancée.

Jon Skeet
la source
Je suis d'accord avec la plupart de ce que vous avez dit, cependant, ne pourrait-on pas dire que de nombreux aspects de la programmation peuvent être nettement plus faciles en comprenant les principes mathématiques courants? Parfois, une formule pour quelque chose est beaucoup plus facile à programmer que l'algorithme pour atteindre cette même valeur ... tant que vous connaissez cette formule
BenAlabaster
@balabaster: Parfois - mais je dirais que cela n'arrive pas très souvent. De même, vous n'avez pas vraiment besoin de connaître une formule au préalable pour l'utiliser. Être compétent en mathématiques est bon, vous pouvez donc comprendre les formules lorsque vous les voyez, mais vous avez rarement besoin de mathématiques au niveau du diplôme lui-même.
Jon Skeet
11
Diplôme en mathématiques? Alors vous savez que ce ne sont pas que des chiffres. J'ai deux diplômes en mathématiques et j'utilise souvent le contenu: algèbre booléenne pour analyser / simplifier la logique, théorie des automates / langage pour la construction DSL, algèbre pour l'analyse des performances big-O, etc.
joel.neely
14

Je dirais qu'avoir des mathématiques avancées en logique (discrète) peut vraiment aider. Cela avec la théorie des ensembles. Lorsqu'il s'agit de programmes informatiques courants, ces disciplines peuvent être très utiles. Cependant, une grande partie des autres mathématiques que j'ai suivies à l'université était le calcul, qui, pour autant que je sache, avait un usage très limité. Étant donné que 90% (ou quelque chose du genre) de la programmation fait des applications commerciales avec des mathématiques très simples, je dirais que pour la plupart, vous pouvez vous en tirer avec très peu de connaissances en mathématiques. Cependant, une bonne compréhension de l'algèbre booléenne, de la logique, des mathématiques discrètes et de la théorie des ensembles peut vraiment vous mettre au niveau suivant.

Kibbee
la source
14

Je vais aller à contre-courant ici et dire "Oui"

Je passe du génie civil à la programmation (Concrete Sucks!). Ma formation en mathématiques comprend les trucs habituels de première année, les deuxième et troisième années de calcul (Diff EQ, intégrations de volume, séries, transformées de Fourier et Laplace) et un cours d'analyse numérique.

Je trouve que mes mathématiques font cruellement défaut pour la programmation informatique. Il me manque des domaines entiers de mathématiques discrètes et de logique, et je ne survis que grâce à une vaste bibliothèque de manuels, Wikipedia et Wolfram. La plupart des algorithmes avancés sont basés sur des mathématiques avancées, et je suis incapable de développer des algorithmes avancés sans faire des recherches approfondies (essentiellement l'équivalent d'un demi-cours de travail.) Je suis certainement incapable de proposer de NOUVEAUX algorithmes, comme je viens de le faire. Je n'ai pas les fondements mathématiques comme les épaules des géants sur lesquels se tenir.

Chris Cudmore
la source
Combien d'algorithmes fondamentaux un programmeur moyen écrit-il vraiment? Je suppose que 80% des emplois de programmation n'impliquent aucun calcul au-delà de l'algèbre de base.
dbkk
@dbkk: La tâche la plus courante d'un programmeur moyen est la conception du modèle objet, la «logique métier» d'un domaine. Et un tel processus n'est rien d'autre que des mathématiques, bien qu'il ne soit généralement pas reflété par ceux qui exécutent la tâche.
Boris Stitnicky
14

Cela dépend de ce que vous faites. Si vous faites beaucoup de programmation 3D, la connaissance de la géométrie 3D est certainement nécessaire, n'est-ce pas? ;-) Si vous souhaitez créer un nouveau format d'image comme JPG ou un nouveau format audio comme MP3, vous êtes également assez perdu si vous ne pouvez pas comprendre une transformation en cosinus ou en fourier, car ce sont les bases sur lesquelles la compression avec perte est basée sur la plupart . De nombreux autres problèmes peuvent être mieux résolus si vous connaissez assez bien vos mathématiques.

Il existe également de nombreuses autres tâches de programmation qui ne nécessitent pas beaucoup de mathématiques.

Mecki
la source
13

Si vous trouvez le sujet suffisamment fascinant pour le publier, allez-y et commencez à apprendre. Le reste viendra naturellement.

Daniel Situnayake
la source
9

Oui, il n'y a pas besoin de mathématiques avancées - si vous programmez des logiciels commerciaux - prêts à l'emploi.

Cependant, lorsqu'il s'agit de choses hardcore telles que:

  • Calcul de trajectoires pour contrôler un robot
  • Créer des applications de type IA pour prendre en charge l'incertitude et le raisonnement automatique
  • Jouer avec des animations et des graphiques 3D

Certaines connaissances avancées en mathématiques pourraient être utiles. Et ce n'est pas comme s'il s'agissait de problèmes «hors de ce monde».

J'ai dû créer un logiciel pour essayer de "prédire" la quantité de papier nécessaire pour un bureau (et c'était un enfer juste pour trouver la meilleure façon d'approcher les valeurs).

Vous devez faire attention, cependant, car il est facile de se perdre en utilisant des choses avancées - il y a un de mes amis qui a eu recours à Turing pour stocker l'état d'un menu dynamique juste pour l'afficher correctement - humm ... peut-être ... il est allé trop loin dans son imagination.

rshimoda
la source
vous pouvez ajouter des éléments comme la compression de fichiers ou l'édition de fichiers MP3 ou tout ce qui nécessite de comprendre réellement ce que fait l'ordinateur, plutôt que de simplement lancer un site Web ensemble.
tloach
4
Comment a-t-il utilisé Turing pour faire cela? Une planche ouija ou une séance?
Jared Updike
8

Quel type de programmation?

Dans mon expérience commerciale, je n'ai pas eu besoin de mathématiques avancées, mais cela dépend fortement du domaine dans lequel vous vous trouvez.

L'infographie nécessite une grande quantité de mathématiques avancées. Une grande partie de la programmation informatique académique nécessite des mathématiques avancées.

Donc dire qu'il y a une corrélation entre les gens qui sont bons en mathématiques et ceux qui sont bons en programmation.

J'espère que cette réponse insipide vous aidera.

David Waters
la source
6

Les mathématiques sont nécessaires pour les développeurs dans certains domaines mais sont presque inutiles dans d'autres.

Si vous êtes un développeur de jeux et devez beaucoup travailler avec la physique, la compréhension des mathématiques est cruciale. Si vous travaillez avec des commandes visuelles avancées, vous ne pourriez pas faire grand-chose sans géométrie. Si vous prévoyez de faire des calculs financiers, il serait VRAIMENT utile d'avoir une solide connaissance des statistiques.

D'un autre côté, au cours des 5 dernières années, je n'avais que 2 ou 3 projets où N'IMPORTE QUELLE quantité de mathématiques était nécessaire. Parmi ceux-ci, il n'y a eu qu'un seul événement lorsqu'une recherche Google n'a pas aidé.

En fin de compte, même les calculs financiers sont très souvent quelque chose que vos clients font pour vous et vous donnent des formules à mettre en œuvre.

Donc, si vous êtes dans le domaine des «logiciels appliqués», vous n'utiliserez probablement jamais votre diplôme en mathématiques. Si vous êtes dans un logiciel académique, les mathématiques sont cruciales.

Ilya Kochetov
la source
A «développeur de jeux», j'ajouterais «développeur de simulation». Je me souviens qu'en 1993, je conduisais dans toute la ville en essayant de trouver un livre de mathématiques suffisamment avancé pour m'expliquer comment les Quaternions fonctionnent, afin que je puisse coder correctement un algorithme de recokining mort. Merci Dieu pour Internet aujourd'hui!
TED
6

Je suis d'accord avec Chris. Je dirais aussi "Oui". Mais cela dépend de votre marché comme indiqué ci-dessus. Si vous créez simplement des applications ou des outils d'écriture de base «prêts à l'emploi» pour vous aider dans votre travail quotidien ... alors les mathématiques ne sont pas aussi importantes.

L'ingénierie de solutions logicielles personnalisées nécessite beaucoup de résolution de problèmes et de réflexion critique. Compétences qui sont certainement améliorées lorsqu'une formation en mathématiques est présente. J'ai une mineure en mathématiques avec mon diplôme en génie informatique et j'accorde du crédit à tous mes antécédents en mathématiques pour expliquer pourquoi je suis là où je suis aujourd'hui.

C'est mes 2 cents, je peux dire d'après la lecture ci-dessus que beaucoup ne seraient pas d'accord. J'encourage tout le monde à considérer que je ne dis pas que vous ne pouvez pas avoir ces compétences sans une formation en mathématiques, je dis simplement que les compétences sont des effets secondaires d'avoir une telle expérience et peuvent avoir un impact positif sur le logiciel.

Mat
la source
6

D'après mon expérience, les mathématiques sont nécessaires dans la programmation, vous ne pouvez pas vous en éloigner. L'ensemble de la programmation est basé sur les mathématiques.

Le problème n'est pas noir et blanc, mais plus coloré. La question n'est pas de savoir si vous avez besoin ou non de mathématiques, mais de combien. Les niveaux plus élevés de mathématiques vous donneront plus d'outils et ouvriront votre esprit à différentes voies de pensée.

Par exemple, vous pouvez programmer si vous ne connaissez que l'addition et la soustraction. Lorsque la multiplication est requise, vous devrez effectuer de nombreux ajouts. La multiplication simplifie les ajouts répétitifs. L'algèbre permet de simplifier les mathématiques avant de les implémenter dans des programmes. L'algèbre linéaire fournit des outils pour transformer des images. L'algèbre booléenne fournit des mécanismes pour réduire toutes ces ifdéclarations.

Et n'oubliez pas le frère des mathématiques, de la logique et de la philosophie. Logic vous aidera à utiliser efficacement les instructions caseou switch. La philosophie vous aidera à comprendre la pensée de celui qui a écrit le code que vous modifiez.

Oui, vous n'avez pas besoin de beaucoup de mathématiques pour écrire des programmes. Certains programmes peuvent exiger plus de mathématiques que d'autres. Plus de connaissances en mathématiques vous donneront un avantage sur ceux qui ont moins de compréhension. En ces temps, les gens ont besoin de tous les avantages possibles pour obtenir ces emplois.

Thomas Matthews
la source
6

Je programme depuis 8 ans professionnellement, et depuis l'âge de 12 ans comme passe-temps.

Les mathématiques ne sont pas nécessaires, la logique l'est. Les mathématiques sont horriblement utiles cependant, dire que ce n'est pas nécessaire, c'est comme dire que pour tuer un homme, une arme à feu n'est pas nécessaire, vous pouvez utiliser un couteau. Eh bien, c'est vrai, mais ce pistolet rend les choses beaucoup plus faciles.

Il y a quelques minimums que vous devriez déjà respecter. Vous devez connaître les expressions algébriques de base et la notation, ainsi que les équivalents informatiques courants. Par exemple, vous devez savoir ce qu'est une exponentielle (3 à la 3e est 27), et l'expression informatique courante est 3 ^ 3. Les notations communes pour l'algèbre changent entre les langues, mais beaucoup d'entre elles utilisent une méthodologie quelque peu unifiée. D'autres (en vous regardant LISP) ne le font pas. Vous devez également connaître l'ordre des opérations.

Vous devez comprendre la pensée algorithmique. D'abord ceci, puis ceci, produit ce qui est utilisé dans ce calcul. Il y a de fortes chances que vous compreniez ceci ou que vous ne le compreniez pas, et c'est un obstacle assez difficile à franchir si vous ne le comprenez pas; J'ai trouvé que c'est quelque chose que vous «obtenez», et pas vraiment quelque chose que vous pouvez apprendre. Inversement, certaines personnes n'obtiennent pas d'art. Ils ne doivent pas devenir peintres. En outre, il y a eu des étudiants dans le programme CS qui ne peuvent pas comprendre pourquoi cela ne fonctionne pas: x = z + w; z = 3; y = 5; Ce n'est pas qu'ils ne comprennent pas l'addition, c'est qu'ils ne comprennent pas l'exigence d'un express sans ambiguïté. S'ils le comprennent, l'ordinateur devrait aussi, non? Si vous ne voyez pas ce qui ne va pas avec les trois lignes ci-dessus, ne devenez pas programmeur.

Enfin, vous devez connaître les mathématiques relevant de votre domaine de programmation. Les logiciels de comptabilité pourraient s'arrêter à l'algèbre de base. Si vous programmez la physique, vous aurez besoin de connaître la physique (vaguement) et les mathématiques en géométrie tridimensionnelle (euclidienne). Si vous programmez un logiciel d'architecture, vous aurez besoin de connaître la trigonométrie.

Cela va plus loin que les mathématiques; quel que soit le domaine pour lequel vous programmez, vous devez bien comprendre les bases. Si vous programmez un logiciel d'analyse de langage, vous aurez besoin de connaître les probabilités, les statistiques, la théorie de la grammaire (plusieurs langues), etc.

Souvent, certains domaines ont besoin ou peuvent bénéficier de connaissances que vous pensez être sans rapport. Par exemple, si vous programmiez un logiciel audio, vous devez en fait connaître la trigonométrie pour gérer les formes d'onde.

L'ampleur change aussi les choses. Si vous triez un ensemble de données financières de 1 000 éléments, ce n'est pas grave. S'il s'agissait de 10 millions d'enregistrements, cependant, vous bénéficieriez grandement de la connaissance des mathématiques vectorielles et d'une compréhension approfondie du tri au niveau binaire (comment un système trie-t-il par ordre alphabétique? Comment sait-il que `` a '' est inférieur à `` b '?)

Vous allez constater qu'en tant que programmeur, votre base de connaissances générales va exploser, car chaque projet nécessitera plus d'apprentissage en dehors de la sphère directe de la programmation. Si vous êtes dégoûté ou paresseux à propos de l'auto-apprentissage et que vous n'aimez pas l'idée de passer plus de 10 heures par semaine à faire essentiellement des «devoirs», ne devenez pas programmeur.

Si vous aimez les exercices de réflexion, si vous aimez apprendre, si vous pouvez penser à des choses abstraites comme les mathématiques sans calculatrice ou à la conception sans carnet de croquis, si vous avez de larges goûts en matière de vie et de passe-temps, si vous êtes autocritique et pouvez jeter '' idées préférées, si vous aimez perfectionner les choses, devenez programmeur. Ne basez pas cette décision sur les mathématiques, mais plutôt sur la capacité de penser logiquement et d'apprendre. Voilà ce qui est important; les mathématiques ne sont que le sous-produit.

user634669
la source
5

Bien sûr, cela dépend du type de programmeur que vous souhaitez être, ou mieux du type de programmeur que vos employeurs veulent que vous soyez. Je pense que le calcul et l'algèbre sont essentiels, la programmation statistique et linéaire est en effet un bon outil à avoir dans sa mallette, peut-être que l'analyse (dérivée, intégrales, fonctions ...) pourrait se faire sans. Mais si vous voulez savoir comment les choses fonctionnent en profondeur (l'électronique, par exemple, ou certains algorithmes non triviaux), les mathématiques «avancées» sont quelque chose que vous feriez mieux de ne pas vous passer de n'importe où.

Manrico Corazzi
la source
5

La plupart de la programmation que j'ai faite impliquait des simulations physiques pour la recherche, y compris des choses comme l'électromagnétisme, la mécanique quantique et la mécanique structurelle. Étant donné que les domaines de problèmes sont associés à des mathématiques avancées, j'aurais du mal à les résoudre sans utiliser de mathématiques avancées.

La réponse à votre question est donc - cela dépend de ce que vous essayez de faire.

Marcher au hasard
la source
5

Des connaissances avancées en mathématiques sont essentielles si vous voulez écrire un nouveau langage de programmation. Ou vous devez écrire vos propres algorithmes.

Cependant, pour la plupart des programmes quotidiens - des sites Web aux applications de traitement des assurances - seuls les mathématiques de base sont nécessaires .

Chêne
la source
5

Quelqu'un avec une solide expérience mathématique (qui n'est pas simplement arithmétique) ou logique se débrouillera bien avec les algorithmes, l'utilisation de variables, le raisonnement conditionnel et les structures de données.

  • Tout le monde ne peut pas concevoir une interface utilisateur.
  • Tout le monde ne peut pas créer un code efficace.
  • Tout le monde ne peut pas commenter et documenter clairement.
  • Tout le monde ne peut pas faire un bon algorithme

Les mathématiques vous aideront jusqu'à un certain point, mais seulement jusqu'à un certain point.

Non tranché
la source
5

Je ne pense pas que des connaissances avancées en mathématiques soient une exigence pour un bon programmeur, mais sur la base de mon expérience personnelle, je pense que les programmeurs qui maîtrisent mieux les mathématiques avancées font également de meilleurs programmeurs. Cela peut simplement être dû à un esprit plus logique ou à une perspective plus logique en raison de leurs expériences de résolution de problèmes mathématiques.

Jimoc
la source
5

Le concept fondamental des mathématiques est le suivant: concevoir, comprendre, implémenter et utiliser des algorithmes. Si vous ne pouvez pas faire de maths, c'est que vous ne pouvez pas faire ces choses, et si vous ne pouvez pas faire ces choses, vous ne pouvez pas être un programmeur efficace.

Les tâches de programmation courantes peuvent ne pas nécessiter de connaissances mathématiques spécifiques (par exemple, vous n'aurez probablement pas besoin d'algèbre vectorielle et de calcul à moins que vous n'effectuiez des tâches telles que des graphiques 3D ou des simulations physiques, par exemple), mais les compétences sous-jacentes sont identiques et le manque de capacité dans un domaine correspondra un manque de capacité correspondant dans l'autre domaine.

DrPizza
la source
5

Math est une boîte à outils pour créer des programmes. Je recommande l'introduction aux algorithmes de Cormen. Cela touche à des choses plus «mathématiques».

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

Je ne pense pas que des mathématiques plus élevées soient une exigence pour être un bon programmeur - comme toujours, cela dépend de ce que vous codez.

Bien sûr, si vous êtes en programmation graphique 3D, vous aurez besoin de matrices et d'autres choses. En tant qu'auteur de logiciels d'entreprise, vous aurez probablement besoin de statistiques mathématiques.

Mais être programmeur professionnel pendant près de 10 ans (et encore 10 ans en amateur) "mathématiques supérieures" n'est pas quelque chose dont j'avais besoin régulièrement. Dans environ 99,8% de tous les cas, il s'agit simplement de plus, moins, de division et de multiplication dans certaines combinaisons intelligentes - dans la plupart des cas, il s'agit d'algorithmes, pas de mathématiques.

BlaM
la source
4

Apprendre des mathématiques plus élevées, pour la plupart des programmeurs, est important simplement parce que cela incite votre cerveau à penser logiquement, étape par étape pour passer d'une chose à une autre.

Cependant, très peu d'emplois en programmation nécessitent quelque chose au-dessus des mathématiques du secondaire. J'ai utilisé l'algèbre linéaire une fois. Je n'ai jamais utilisé de calcul. J'utilise l'algèbre tous les jours.

Lucas Oman
la source
4

Les connaissances mathématiques sont souvent utiles pour un programmeur, tout comme les compétences en conception graphique, la capacité à résoudre des énigmes, l'éthique de travail et une foule d'autres compétences et traits. Très peu de programmeurs sont bons dans tout ce pour quoi un programmeur peut être bon. Je ne serais d'accord avec aucune déclaration de la forme "vous n'êtes pas un vrai programmeur à moins que vous ne puissiez { insérer la capacité de programmation préférée ici }".

Mais je me méfierais d'un programmeur qui ne pourrait pas faire de mathématiques. Plus que celui qui ne savait pas dessiner.

MusiGenesis
la source
4

Je pense que cela dépend vraiment de ce que vous essayez de faire, mais à mon humble avis, la théorie du CS et du système d'exploitation est plus importante que les mathématiques ici, et vous n'avez vraiment besoin que des mathématiques qu'elles impliquent.

Par exemple, il existe de nombreux antécédents CS en matière de théorie et d'optimisation de la planification qui se cachent derrière de nombreux planificateurs dans les systèmes d'exploitation modernes. C'est un exemple de quelque chose qui exigerait des mathématiques, mais pas quelque chose de très compliqué.

Mais honnêtement, pour la plupart des choses, vous n'avez pas besoin de mathématiques. Ce dont vous avez besoin, c'est d'apprendre la capacité de penser en base 2 et 16, comme la capacité de OU / ET mentalement. Par exemple, si vous avez un octet et que dans cet octet il y a deux champs de 3 bits et 2 bits perdus, savoir quels bits sont dans quels champs sont actifs lorsque la valeur d'octet est quelque chose comme 11 rendra les choses légèrement plus rapides que d'avoir à utiliser stylo et papier.

Uri
la source
Avez-vous déjà étudié la théorie des files d'attente? Avez-vous déjà étudié les gestionnaires de mémoire et les modèles statistiques qui poussent les développeurs à choisir l'un par rapport à l'autre? Je ne suis pas nécessairement en désaccord avec le poids de votre réponse, mais votre simplification excessive.
San Jacinto
@San: Je suis sûr que je simplifie à l'extrême, mais je pense que la plupart des développeurs de systèmes n'ont jamais besoin de savoir ces choses à ce niveau. Je l'ai étudié au niveau de base dans mes deux premiers diplômes, et un peu plus en profondeur pendant mon doctorat, mais ce n'était jamais mon fort, je préfère le laisser aux experts. Les gens d'OS que je connaissais avaient des compétences en mathématiques qui m'ont époustouflé.
Uri
ce qui, je pense, est très valable. Je pense qu'il est nécessaire de différencier la programmation système de la programmation OS. Des concepts étroitement tissés, mais néanmoins différents.
San Jacinto
4

J'ai commencé à programmer à peu près au même moment où je suis entré dans ma classe de pré-algèbre. Donc je ne dirais pas que les mathématiques sont si importantes, même si elles peuvent aider dans certains types de programmation, en particulier fonctionnels.

Je n'ai pas encore pris de mathématiques discrètes, mais je vois beaucoup de choses théoriques avec de la programmation écrite dans une notation mathématique enseignée dans cette classe.

Assurez-vous également de savoir comment calculer quoi que ce soit dans n'importe quelle base, en particulier les bases 2, 8 et 16.

De plus, une classe qui m'a vraiment apporté quelques concepts était cette classe de pré-programmation. Nous avons appris les unions, les intersections et toutes ces choses heureuses et cela ressemble presque exactement aux mathématiques au niveau du bit. Et nous avons très largement couvert la logique booléenne. Ce que j'ai considéré comme le plus utile, c'est quand nous avons appris à réduire les instructions booléennes complexes. C'était très pratique:

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

peut être simplifié à

x | (y & z & foo)

Ce que je n'avais pas tout à fait compris auparavant.

Earlz
la source
4

Eh bien, vous avez généré un certain nombre de réponses, et non je ne les ai pas toutes lues. Je suis au milieu sur ce point, non, vous n'avez certainement pas besoin de mathématiques pour être programmeur. Les pilotes d'assembleur et de périphérique sous Linux ne sont ni plus ni moins compliqués que les autres et ne nécessitent aucun calcul.

En aucun cas, vous n'avez besoin de suivre ou de réussir un cours de mathématiques pour tout cela.

Je conviendrai que la mentalité de résolution de problèmes pour la programmation est assez similaire à celle des solutions mathématiques, et par conséquent, les mathématiques viennent probablement facilement. ou au contraire, si les mathématiques sont difficiles, la programmation peut être difficile. Une classe ou un diplôme ou des morceaux de papier ou des trophées ne sont pas nécessaires, partir et apprendre des choses, bien sûr.

Maintenant, si vous ne pouvez pas convertir rapidement hexadécimal en binaire en décimal dans votre tête, sur papier ou en utilisant une calculatrice, vous allez avoir du mal. Si vous voulez entrer dans le réseautage et d'autres choses qui impliquent le timing, ce que font souvent les pilotes du noyau, mais ce n'est pas obligatoire. Vous allez lutter. Je connais une très longue liste de personnes diplômées en mathématiques et / ou en informatique et / ou en ingénierie qui ont du mal avec les calculs de taux, les bits par seconde, les octets par seconde, la quantité de mémoire dont vous avez besoin pour faire quelque chose, etc. dans une certaine mesure, il peut être considéré comme une sorte de talent que certains ont et d'autres doivent travailler.

Mon objectif est que je crois au pouvoir de la volonté, si vous voulez apprendre ce genre de choses, vous pouvez et voudrez, c'est aussi simple que cela. Vous n'avez pas besoin de suivre un cours ou de dépenser beaucoup d'argent, linux et qemu par exemple peuvent vous occuper pendant un certain temps, différents langages asm, etc. environnements crashable pour le développement du noyau, embarqués, etc. Vous n'êtes pas limité à cela , mais je ne crois pas que vous deviez vous enfuir et prendre des cours si vous ne le voulez pas. Si vous voulez bien sûr prendre quelques cours ee, quelques cours cs et quelques cours de mathématiques.

old_timer
la source
Ce n'est pas un appât de flamme, mais la réalité. Tout ce que vous devez savoir sur l'électronique numérique et l'ingénierie logicielle du point de vue de la programmation peut être résumé. 0, 1 et ou non. ces cinq choses sont ce sur quoi fonctionnent l'électronique numérique et tous les programmes. Vous pouvez construire n'importe quoi avec une grande boîte de portes rapides nand.
old_timer
4

Vous avez besoin de maths. La programmation n'est rien de plus que des mathématiques. Les découvertes de la physique théorique ne deviennent pas une implication pratique (applicable), à ​​moins qu'elles ne soient expliquées en termes de solutions mathématiques. Aucun de ceux-ci ne peut être résolu par ordinateur s'il ne peut pas être interprété sur des ordinateurs, et plus particulièrement sur les langages de programmation. Différents langages sont ainsi conçus pour résoudre des problèmes spécifiques. Mais pour les langages de programmation à usage général et largement répandus comme java, c, c ++, une grande partie de nos tâches de programmation impliquent une solution répétitive (continue) aux mêmes problèmes tels que l'extraction de valeurs de la base de données, des fichiers texte, leur mise sur Windows (bureau, Web), la manipulation mêmes valeurs, accédant parfois à certaines données à partir d'appareils similaires (mais étant donné des noms de marque différents, un port différent et un mal de tête) etc. qui n'implique pas plus qu'une méthode unitaire,

Pramod
la source
3

IMO, vous avez probablement besoin d'une aptitude aux mathématiques, sans forcément avoir beaucoup de connaissances dans le domaine. Donc, les choses dont vous avez besoin pour être bon en mathématiques sont similaires à celles dont vous avez besoin pour être bon en programmation.

Mais en général, je ne me souviens pas de la dernière fois que j'ai utilisé une sorte de mathématiques avancées dans la programmation quotidienne, donc non.

Lehane
la source