Devez-vous être bon en maths pour être un bon programmeur? [fermé]

78

Il semble que la sagesse conventionnelle suggère que les bons programmeurs sont également bons en maths. Ou que les deux sont en quelque sorte intrinsèquement liés. De nombreux livres de programmation que j'ai lus fournissent de nombreux exemples de solutions aux problèmes de mathématiques, ou sont en quelque sorte liés aux mathématiques, comme si ces exemples avaient du sens pour la plupart des gens.

La question que je voudrais aborder est donc la suivante: devez-vous être bon en maths pour être un bon programmeur?

Charles Roper
la source
1
@Marque Pas nécessairement. Apprendre un sujet et l’aimer sont deux choses très différentes.
Maxpm
3
Es-tu un roi? Ou des jumeaux siamois? Si non, je vous suggère de vous en tenir à "je" lorsque vous vous référez à vous-même.
drxzcl
1
@jk - vous avez raison la plus probable physics.about.com/od/alberteinstein/p/einsteinpro.htm pense toujours qu'il ya une bonne quantité d'art à la programmation; p
Garet Claborn
3
Je pensais que je n'ai jamais aimé les mathématiques. Plus tard dans la vie, j'ai réalisé que je n'étais tout simplement pas satisfait de la syntaxe.
MrFox
1
Tous les programmeurs utilisent les mathématiques tout le temps, mais ne s'en rendent pas compte, car c'est tellement différent des mathématiques enseignées à l'école. Les mathématiques discrètes, les calculs lambda, l’algèbre booléenne, la logique (!) Sont des concepts mathématiques très avancés que nous utilisons tous les jours.
rotman

Réponses:

83

Je pense que cela dépend du type de programmation que vous voulez faire. En ce qui concerne les programmeurs dans le monde des affaires, je dirais que la réponse est non. Vous pouvez devenir un grand programmeur sans connaître les mathématiques avancées. Lorsque vous finissez par avoir à traiter avec les mathématiques, les formules sont généralement définies dans les exigences de l'entreprise, il n'est donc plus question que de les implémenter dans le code.

D'un autre côté, si vous voulez devenir un programmeur de bas niveau ou dire créer des moteurs graphiques 3D, les mathématiques joueront un rôle énorme.

Daniel Auger
la source
6
Je voudrais ajouter que j'ai vu des docteurs en mathématiques et en physique écrire un code horrible. Ces compétences se chevauchent dans une certaine mesure, mais ce sont des disciplines distinctes.
MrFox
133

Je vais à contre-courant et dis oui, vous avez besoin d'un état d'esprit mathématique . La plupart des gens pensent que les mathématiques font de l'arithmétique ou mémorisent des formules arcaniques. C'est comme demander si vous avez besoin d'une orthographe parfaite ou d'un vocabulaire extraordinaire pour être un bon écrivain.

L'écriture concerne la communication, et les mathématiques / la programmation concernent le processus de pensée claire et logique (d'une manière telle que vous ne pouvez pas commettre d'erreur; l'équation ne s'équilibre pas ou le programme ne compile pas). Plus précisément, cette pensée logique se manifeste dans:

  • Capacité à estimer / comprendre les différences entre les nombres: O (n ^ 2) vs O (lg (n)), sens intuitif de Ko vs MB vs GB, comment un disque lent est comparé à la RAM. Si vous ne réalisez pas à quel point une base de données est petite par rapport à un Go, vous perdrez du temps à optimiser des tâches sans importance.
  • Fonctions / programmation fonctionnelle (est-ce une coïncidence si l'équation f (x) = x ^ 2 est si semblable à la façon dont vous écririez cette méthode? Les mots "algorithme" et "fonction" étaient utilisés dans le monde des mathématiques bien avant la le premier ordinateur est né :-))
  • Algèbre de base pour créer et réorganiser vos propres équations, prendre des moyennes, statistiques de base

Donc, je dirais que vous avez besoin d’un état d’esprit mathématique , d’être capable de construire et de manipuler des modèles mentaux de ce que fait votre programme, plutôt qu’une collection de faits et de théorèmes. Certains domaines tels que les graphiques ou les bases de données contiennent également certains faits, mais pour moi ce n’est pas l’essence d’être «bon en maths».

kurious
la source
1
Math major vs mentalité mathématique: c'est comme la différence entre connaître toutes les formules de la physique et pouvoir faire rebondir avec précision une balle de caoutchouc sur un panneau situé à 20 mètres!
TehShrike
9
J'ajouterai que beaucoup de bons programmeurs savent jouer aux échecs ou vont :-)
xanatos
1
L'algèbre est une énorme quantité de code informatique, bien que vous le configuriez pour l'ordinateur plutôt que de le résoudre vous-même. Si vous n'êtes pas tout à fait à la maison avec l'algèbre, comment pouvez-vous espérer faire un travail décent dans ce domaine?
Loren Pechtel
18
La pensée mathématique est la clé de la programmation. J'ajoute mon vote pour souligner exactement cela.
Gus
4
+1 Math est essentiel dans la compréhension des langages de programmation, car il est la base de notre métier. La plupart des constructions de langage de programmation que nous utilisons quotidiennement proviennent de disciplines mathématiques telles que le lambda calcul.
MattDavey
53

Il existe de nombreux domaines de programmation et bon nombre d'entre eux n'exigent pas un niveau de connaissances en mathématiques particulièrement élevé. Vous ne pourrez jamais écrire de moteur 3D, mais vous pourrez certainement développer des applications commerciales et Web. Regardons les choses en face - l’opération mathématique la plus courante dans la plupart des programmes informatiques consiste à incrémenter un nombre de un.

J'admettrai fort volontiers que je n'ai jamais particulièrement aimé les mathématiques, ni été doué (j'ai en fait obtenu un diplôme en littérature anglaise!) Et que je travaille en tant que développeur professionnel depuis plus de 12 ans. Je développe principalement des applications Web, qui nécessitent rarement autant de maths. Le plus important est la capacité de penser de manière logique, de pouvoir décomposer les problèmes en morceaux et d’avoir une compréhension étendue des diverses technologies et cadres impliqués.

En tant que programmeur , vous êtes beaucoup plus susceptibles d'avoir à mettre en œuvre un existant algorithme de concevoir un tout nouveau un. Besoin de calculer, par exemple, l'intérêt composé? Vous n'avez pas besoin de comprendre vous-même, il suffit de regarder la formule et de l'appliquer. La plupart des problèmes ayant déjà été résolus, il vous suffit de savoir comment appliquer les solutions dans la langue de votre choix. Cela ne veut pas dire qu'être bon en maths ne serait pas un avantage ; c'est juste que ce n'est pas totalement essentiel .

Quand j'étais à l'école au milieu des années 80, lorsque l'ordinateur à la maison était peu courant, j'écrivais souvent des programmes pour résoudre mes devoirs de maths. Souvent, je ne pouvais pas le faire dans ma tête, mais je pouvais appliquer la formule requise en tant que routine logicielle. Vous n'avez pas besoin d'être un autre Pythagore pour établir le côté le plus long d'un triangle rectangle, vous devez simplement pouvoir coder a² + b² = h²dans la langue de votre choix.

Dan Diplo
la source
3
Les finances et la comptabilité ne sont pas si mauvaises, à moins que vous ne fixiez les prix des options ou quelque chose du genre.
5
Vous avez raison, Chris, mais même avec des applications financières, vous avez plus de chances de mettre en œuvre des formules que de les concevoir.
Dan Diplo
2
@Mark - C'est vrai, mais je dirais que la compréhension des problèmes d'arrondi est davantage une question de savoir quel type utiliser. Vous n'avez pas besoin d'être bon en maths pour apprendre que (par exemple) la décimale est préférable au flottant pour les valeurs monétaires. Et je ne pense pas qu'un mathématicien réaliserait automatiquement le type de données correct à utiliser - c'est une question d'apprentissage.
Dan Diplo le
3
@ SK-logic: Plus strictement, tout ce que fait un ordinateur est logique . Certaines de ces opérations logiques sont interprétées comme des maths (et certaines personnes prétendent que la logique est une branche des maths, à la grande indignation de certains philosophes).
Donal Fellows
3
@Donal Fellows, la logique formelle est un calcul. Et les philosophes sont quand même reconnus pour leur contribution historique aux mathématiques, ainsi que les mathématiciens qui se sont vengés (par exemple, en inventant des choses étranges comme la «monadologie»).
SK-logic
30

Vous n'êtes pas obligé d'être bon en maths. Cependant, vous devez être bon en logique et en résolution de problèmes. Cependant, les personnes douées en logique et en résolution de problèmes sont généralement aussi douées en maths. Je dirais que cela dépend vraiment du type de maths. Vous pouvez être terrible en calcul (comme moi), et toujours être un bon programmeur (comme moi). Mais si vous avez des problèmes avec les mathématiques discrètes et la théorie des ensembles, vous trouverez probablement beaucoup d'aspects difficiles de la programmation.

Kibbee
la source
Vous n'avez pas besoin d'être bon en logique pour être bon en "résolution de problèmes". Beaucoup, sinon la plupart des problèmes peuvent être résolus en utilisant des méthodes heuristiques qui ne sont aucunement liées à la logique.
ElGringoGrande
1
Êtes-vous sûr d'être un bon programmeur? :)
Russell
17

Je pense qu'il est important de regarder de près pourquoi vous n'aimez pas les maths.

Une discipline académique ne correspond généralement pas à quelque chose qui se passe à l’école. Il peut s’agir d’un conflit avec un enseignant, d’un manque de confiance en vos capacités au sein d’une matière ou de la pression exercée par un groupe de pairs.

Programmation! = Maths. Cela ne ressemble même pas aux maths, pour moi (et j'ai adoré les maths, même si je ne me débrouille pas très bien vers la fin de mes études formelles). De nombreuses compétences que vous pouvez utiliser en maths sont utiles, nécessaires même en programmation, mais de nombreux programmeurs s’apprennent généralement. Ne pas aimer les mathématiques à l'école n'a quasiment aucune incidence sur votre capacité ou votre plaisir à programmer.

peur des offrandes
la source
J'ai vu beaucoup de mauvais enseignement en mathématiques. L’essence est de transformer un problème en un problème connu, puis de dire «résolu» sans mot supplémentaire. Mais dans l'enseignement, il vous faudra probablement aller de l'avant et ré-implémenter les preuves à des niveaux inférieurs.
Balog Pal
16

Les mathématiques et la programmation sont très proches les unes des autres, car elles constituent le langage universel entre les humains et les ordinateurs. Vous n'avez pas besoin de connaître beaucoup de mathématiques pour une programmation de haut niveau, car cela se fait en coulisse, mais cela facilitera la compréhension de nombreux concepts de programmation plus avancés. Si vous envisagez de faire plus de programmation de bas niveau (programmation de systèmes ou de périphériques), vous devrez alors connaître beaucoup plus de mathématiques.

MaQleod
la source
11
+1 Vous aurez également besoin de mathématiques si vous souhaitez effectuer des tâches "de haut niveau" telles que le traitement du signal, l'apprentissage automatique, la vision par ordinateur, le rendu 3D, les simulations physiques, les animations, la géométrie algorithmique, la cryptographie et probablement de nombreux autres domaines auxquels je ne peux pas penser. maintenant.
Nikie
2
@nikie: Oui, mais c'est des mathématiques appliquées . Énorme différence. ^^
Gablin
Pouah. En réalité, les mathématiques ne sont pas la langue universelle. La logique est. Et la logique est le domaine des philosophes. Quoi qu'il en soit, en ce qui concerne le fonctionnement réel des ordinateurs, il vaut mieux connaître le génie électrique / électronique et la philosophie formelle que les mathématiques. Vous n’avez besoin des mathématiques que si vous faites de l’informatique, ce qui n’est pas vraiment une programmation dans le contexte d’une carrière.
RibaldEddie
14

Un bon ? Très improbable. La plupart des modèles de conception reposent au moins sur des concepts mathématiques. Les éléments essentiels à la programmation, tels que les variables, les boucles, les procédures et les objets, sont analogues aux concepts utilisés dans des domaines mathématiques tels que l’algèbre, le calcul et la théorie des ensembles.

Considérez également que l’ informatique est un sous-ensemble des mathématiques: les algorithmes et la logique formelle, sur lesquels repose toute la programmation, sont fondamentalement des mathématiques .

Si vous détestez les mathématiques, vous détesterez la programmation.

utilisateur8
la source
13

Presque tout le monde a répondu: "avez-vous besoin de connaître les mathématiques pour être un bon programmeur?" La réponse correcte à cette question est: "Non, pas vraiment, mais ça aide", comme beaucoup l'ont déjà dit.

Mais mon interprétation de la question est la suivante: "existe-t-il une forte corrélation entre l'aptitude mathématique et l'aptitude à la programmation?" La réponse correcte à ceci est: "Oui, il y a." Si vous rencontrez des difficultés en algèbre, en géométrie et en calcul, vous n'êtes probablement pas très doué pour gérer les abstractions et / ou pour penser logiquement. Si vous êtes mauvais en maths, vous ne serez probablement jamais un bon programmeur. (Non pas que vous ne devriez pas essayer.)

Chris Conway
la source
11

Cela dépend de ce que vous programmez. Un moteur de jeu en 3D, par exemple, serait extrêmement difficile (voire impossible) de fonctionner avec un degré de cohérence sans connaître les concepts mathématiques appropriés.

Maxpm
la source
11

« Comme » et « être compétent » sont tout à fait différentes choses - si tant que vous êtes bien numerate alors je ne vois pas une raison pour laquelle vous avez à aimer les mathématiques.

Mais soyons absolument clairs ici - la programmation a une base solide en mathématiques et, tôt ou tard, presque tous les développements non triviaux impliqueront des calculs - vous ne pouvez pas vous en cacher.

Toute programmation implique de la logique (base mathématique), la plupart des programmes modernes impliquent probablement des éléments (comme SQL) qui impliquent la théorie des ensembles (même si ce n’est pas évident) et si ce n’est pas le cas, il est fort possible que vous partiez des royaumes (comme la programmation de jeux) qui sont encore plus explicitement basés sur les mathématiques (rendu - maths, AI -> probabilité et hasard - maths ...) et ainsi de suite.

Le résultat de ce qui précède est que vous devez être à l'aise avec les chiffres - vous devez bien comprendre pourquoi "Il y a 10 types de personnes dans le monde, celles qui comprennent le binaire et celles qui ne le comprennent pas" est drôle. Mais vous êtes probablement excusé "2 + 2 = 5 ... pour de très grandes valeurs de 2".

Murph
la source
+1, c'est vraiment déprimant; En fait, j'ai ri de cette blague.
Ben
10

Le concept fondamental des mathématiques est le suivant: conception, compréhension, implémentation et utilisation d'algorithmes. Si vous ne pouvez pas faire de calcul, c'est parce 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 nécessiter aucune connaissance mathématique spécifique (par exemple, vous n'aurez probablement pas besoin d'algèbre vectorielle ni de calcul sauf si vous effectuez 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 sera compensé par un manque correspondant de capacité dans l'autre domaine.

Dr Pizza
la source
9

Pour être honnête, j'étais un étudiant en mathématiques horrible à l'école. L'algèbre me dépassait complètement à l'époque, et je ne pense pas avoir jamais dépassé un D.

Cependant, quelques années plus tard, après avoir travaillé comme développeur professionnel de logiciels, je suis retourné à l'université et j'ai suivi un cours d'algèbre. À mon grand étonnement, c'était la classe la plus facile que j'avais et j'ai obtenu un lauréat.

La vérité était, la programmation m'a appris l'algèbre, car pratiquement tout n'est qu'une expression algébrique.

Donc non, vous n'en avez pas besoin pour commencer. Cela aide, mais ce n'est pas obligatoire. La belle chose à propos du développement logiciel en tant que moyen d'enseigner les mathématiques est que le compilateur, le débogueur et le programme d'exécution sont d'excellents moyens de vérifier que vous avez la bonne réponse. À cet égard, le débogage est particulièrement bénéfique pour l’apprentissage, car vous pouvez parcourir le code et observer chaque étape de l’évaluation de votre algorithme.

Mike Hofer
la source
Je suis de retour à l'école après 10 ans de développement de logiciels et je vis la même chose. Je trouve le calcul et la statistique beaucoup plus faciles car je peux relier la plupart des concepts à certaines fonctionnalités que j'ai écrites au fil des ans. Je me fâche quand je pense à des diagrammes de Venn inconnus quand je me suis appris à créer des jointures SQL. C'est comme tricher.
Heath Lilley
7

Cela dépend un peu de ce que vous faites exactement, bien que cela ne puisse vraiment pas faire de mal.

Par exemple, une personne qui se spécialise en informatique doit passer par beaucoup de mathématiques pour obtenir son diplôme. CS se concentre généralement beaucoup sur les algorithmes et leur exactitude, prouvés par des preuves de haut niveau de style mathématique. De nombreux programmes CS de l’Université sont si proches de leur programme de mathématiques qu’une double majeure n’est plus qu’à quelques cours. Même en tant que majeure en génie logiciel, j’étais à 2 cours d’une mineure en mathématiques.

Cependant, cela étant dit, bon nombre des preuves, des structures de données, des méthodes de recherche et des informations sur l'exactitude des algorithmes que j'ai apprises n'ont pas vraiment été utilisées directement depuis la fin de mes études. Mais il m’aurait été difficile de dire que cela ne m’avait au moins pas donné de bonnes bases et une meilleure compréhension de ce que je fais à un niveau bas.

Parce que peu importe comment vous le regardez, au plus bas niveau, tout ce que vous faites se résume à des mathématiques.

Adam Haile
la source
7

Pouvez-vous devenir un bon développeur de logiciels sans maths? Oui, je le pense Pouvez-vous devenir le genre de programmeur héroïque dont les gens parlent tout le temps? Je crois que non.

Le problème est que la plupart, sinon tous les programmeurs héroïques (pensez à Dennis Ritchie) ont des antécédents en informatique ou en mathématiques. Pour devenir un très bon programmeur, vous devez comprendre les algorithmes à un niveau qui ne soit pas superficiel, ce qui signifie que vous devez vous plonger dans l'informatique formelle. Et l'informatique n'est que des mathématiques appliquées.

De même, une compréhension du lambda calcul serait très précieuse pour un architecte de système d’exploitation ou un concepteur de langage.

Chinmay Kanchi
la source
7

J'ai vu ce sujet discuté dans les deux sens. J'ai travaillé avec des personnes diplômées en mathématiques qui pensaient pouvoir progresser et qui ont changé de carrière en l'espace d'un an ou deux. L'un des meilleurs programmeurs avec lequel j'ai eu le plaisir de travailler était titulaire d'un doctorat en biochimie et n'a jamais suivi de cours de programmation / CS formels à l'école, mais s'est autodidacte et a lancé une entreprise de logiciels performante!

En fin de compte, ce qui fait un bon programmeur de qualité est une personne capable de comprendre la logique, les flux de travail, capable d'apprendre par l'exemple et disposée à rechercher une solution. En outre, vous devez apprendre les activités auxquelles vos applications sont destinées. Je déteste les programmeurs fiers de ne pas comprendre la comptabilité, mais d'écrire des applications de comptabilité. Ils font toujours des hypothèses incorrectes et ralentissent vraiment le développement.

Vous trouverez, peu importe votre école, vous apprendrez plus en une année en dehors de l'école qu'en quatre années. L'école vous apprend à apprendre avec les compétences de base - mais l'expérience du monde réel est tellement plus précieuse au fil du temps.

L’expérience est le meilleur enseignant et lorsque vous devez appliquer les mathématiques au développement de logiciels, tant que vous apprenez le métier, tout ira bien. Rappelez-vous également, comme indiqué dans un précédent article, que si vous essayez de travailler sur un moteur graphique 3D ou sur un système de coordonnées graphiques comme une application SIG, les mathématiques que vous avez apprises au lycée sont tout ce dont vous avez réellement besoin.

J'ai travaillé sur des systèmes de comptabilité et de facturation - et je n'ai jamais eu à comprendre Log (x), NAS, COS, etc. pour gérer un grand livre ou permettre la saisie de données. Une revue de vieillissement n'est pas une «mathématique avancée», mais elle est essentielle à l'évaluation des problèmes AP.

À bien y penser, je n'ai jamais rencontré un comptable avec une calculatrice scientifique sur son bureau!

MDV2000
la source
5

La réponse courte est non. Je pense que c'est un peu un mythe, mais c'est propagé parce que les problèmes de maths sont généralement bien adaptés à une résolution par ordinateur.

Ainsi, à l’université et au collège, les gens auront des problèmes de mathématiques qu’ils doivent résoudre dans les matières compsci, mais ce que vous constaterez généralement, c’est que les mathématiques sont en réalité plus difficiles à résoudre que le code nécessaire à l’implémentation de la solution.

Une fois que vous entrez dans le monde réel, vous constaterez de plus en plus que les problèmes sont en grande partie résolus pour vous, votre travail sera simplement de les implémenter dans le code.

lomaxx
la source
5

Vous devez soit apprendre les mathématiques, soit créer les vôtres. Quoi qu’il en soit, il est important d’être doué dans une forme ou une autre.

Tant que vous pouvez travailler avec des valeurs et comprendre ce qu'elles font, pourquoi et ce que vous pouvez les faire faire, les mathématiques traditionnelles ne seront peut-être pas toujours nécessaires. Parfois, cela gêne même.

Il existe d'autres moyens de visualiser la valeur d'un octet autre que des nombres, mais il s'agit très certainement de la méthode la plus réfléchie après. Il serait possible d’écrire un programme qui considère toutes les valeurs comme des couleurs, par exemple.

La programmation actuelle tire une grande partie de sa valeur de sa capacité à représenter les 0 et les 0 sous différents types de données. Bien que ces 1 et ces 0 ne soient vraiment pas des chiffres, mais que la longueur d'onde électrique change, les mathématiques ne jouent pas autant que la physique, mais il est très important de bien comprendre ce qui se passe d'autres programmeurs disent et codent.

Néanmoins, il serait possible d’être un bon programmeur sans mathématiques, même s’il est difficile.

Garet Claborn
la source
1
Considérer toutes les valeurs comme des couleurs est presque logique. Lorsque vous vous éloignez trop du spectre, vous vous retrouvez à l'extrémité opposée ...
Maxpm
Degrés (comme dans 0 - 360, sauf 0 - 256), cela aide parfois aussi =) Vous n'avez pas vraiment besoin de penser au sens numérique pour les couleurs ou les degrés, mais plutôt de savoir à quel point la valeur est "pleine".
Garet Claborn
5

Je viens de terminer un cours d'introduction aux mathématiques discrètes, et j'ai découvert que je savais déjà presque tout sur la logique des prédicats grâce à la programmation; tout ce qui était nouveau, c’était la syntaxe - c’était simplement travailler avec des booléens.

En bref: vous n’avez peut-être pas à apprendre les mathématiques de manière explicite , mais en tant que programmeur, vous avez probablement appris des mathématiques sans vous en rendre compte. En tant que "bon programmeur", vous devenez également un mathématicien (dans une certaine mesure).

La correspondance Curry-Howard illustre ce que je veux dire: en gros, elle indique que les preuves mathématiques et certains programmes informatiques sont "isomorphes", c’est-à-dire qu’ils représentent différentes manières d’écrire la même chose. Bien sûr, c'est en fait plus complexe que cela, mais je ne suis pas un mathématicien, c'est donc la meilleure explication que je puisse donner. J'espère que ce n'est pas si loin du but.

En résumé, non seulement de nombreux domaines de la CS et de la programmation impliquent beaucoup de mathématiques, mais même les idées de programmation de base (par exemple, les booléens) sont fondamentalement des mathématiques déguisées.

Tikhon Jelvis
la source
4

Il est très difficile de répondre à cette question et suscitera probablement beaucoup de débats.

Une des raisons pour lesquelles cette question est si difficile est que cela dépend en partie du type de travail que vous faites. Il n’ya pas beaucoup de mathématiques impliquées dans la plupart des applications d’entreprise, vous pouvez donc vous en tirer avec une solide compréhension de l’algèbre et des mathématiques d’entreprise. Cependant, des applications plus avancées nécessitent des mathématiques plus avancées et vous devez commencer à avoir besoin d'une solide compréhension du calcul, de l'algèbre linéaire, etc.

Cependant, ce n’est qu’un aspect de l’équation dans la mesure où vous avez encore besoin d’un certain degré de mathématiques pour la seule pratique de la programmation. Il va sans dire que vous devez être à l'aise avec la logique pour pouvoir écrire un programme de base et une algèbre de base. Si vous cherchez un peu plus qu’un programme élémentaire, vous devez comprendre certains aspects des mathématiques discrètes pour pouvoir déterminer ce qui constitue un bon algorithme à utiliser pour un problème donné.

Pour revenir au coeur de la question cependant. Personnellement, je ne pense pas que vous ayez besoin d’être un mathématicien pour être un bon programmeur; Cependant, je pense que vous devez être à l'aise avec les mathématiques pour être un bon programmeur généraliste.

rjzii
la source
4

Oui définitivement.

Même la programmation courante nécessite des compétences en mathématiques.

La programmation commerciale courante nécessite des compétences en bases de données. Pour être bon programmeur de bases de données, vous devez comprendre le fonctionnement des bases de données et les algorithmes utilisés par le processeur de requêtes lorsqu'il traduit vos requêtes. Sans une compréhension des limites et des dérivées (ou même la compréhension de base selon laquelle la ligne y = x coupe la ligne y = x ^ 2 deux fois), il n'est pas possible de comparer avec précision un plan de requête de jointure interne par hash-match par rapport à une jointure de boucle imbriquée. plan de requête.

En outre, un bon programmeur peut travailler dans à peu près n'importe quel domaine, à condition d'en apprendre un peu plus: jeux, simulation, développement intégré, compilateurs, systèmes d'exploitation, contenus Web, bases de données, etc. être capable d’apprendre rapidement à faire toutes ces choses) nécessite une bonne quantité de connaissances en mathématiques.

Je dirais que quelqu'un aurait dû avoir une expérience à un moment donné avec ce qui suit:

  1. 3 semestres de Calc
  2. Diff Eq
  3. Algèbre linéaire
  4. Algèbre moderne
  5. Probabilité de base, comptage et statistiques
Scott Wisniewski
la source
4

Les mathématiques sont plus que de simples formules. Comprendre certains principes mathématiques concernant la théorie des ensembles est très utile pour saisir des concepts complexes sur les systèmes de types, de même que la compréhension de la complexité est essentielle pour une utilisation efficace de la structure de données.

La théorie des graphes est également extrêmement utile, car de nombreux problèmes de programmation peuvent être modélisés par un graphe. J'étais très étonné, alors que je développais une application d'entreprise, de découvrir que les théorèmes de chemin les plus courts fournissaient une solution élégante à un problème épineux que j'avais!

petit_duck
la source
4

J'ai toujours considéré la programmation comme n'étant que des mathématiques.

Cela ne ressemble tout simplement pas à l'algèbre du lycée.

Frank Shearar
la source
4

Maths est l'antichambre de la programmation.

Pouvant travailler avec des couches sur des couches d'abstraction, des modèles, une "objectivation" de fonctions, des transformations et des concepts temporels, les mathématiques sont le terrain d'entraînement idéal pour tout cela.

Il est possible de développer la bonne mentalité pour programmer sans mathématiques, mais c'est beaucoup plus difficile.

Cependant, mis à part les domaines spécialisés, seule la compréhension des mathématiques est importante, connaître le nom de tout et savoir comment prouver un théorème donné ne l’est pas. Donc, même si vous avez de bonnes notes en mathématiques parce que vous avez tout appris sans vraiment comprendre, vous aurez toujours du mal à programmer.

biziclop
la source
4

Les connaissances mathématiques sont utiles pour certaines applications (telles que les jeux, l'intelligence artificielle, l'infographie, etc.), mais les mathématiques vous apprennent autre chose que des formules ou des équations complexes.

Apprendre les mathématiques, c'est comme apprendre un nouveau langage de programmation. En fait, la programmation est appliquée aux mathématiques. Lorsque vous apprenez une nouvelle langue, vous apprenez beaucoup de choses qui font de vous un meilleur programmeur. Ce n'est pas différent avec les mathématiques, mais si vous maîtrisez vraiment les mathématiques, vous serez pour toujours un meilleur programmeur, même si vous n'utilisez pas de mathématiques avancées dans votre travail.

La raison est simple: les mathématiques vous apprennent à voir le monde avec d'autres yeux. Il vous apprend à résoudre des problèmes avec des approches différentes sans nécessairement programmer. Cette nouvelle façon de penser vous conduit certainement à une meilleure façon de faire votre travail.

La programmation est un art. Les maths sont un art. Si vous combinez les deux, vous serez un meilleur artiste.

Herberth Amaral
la source
La programmation est fondamentalement juste une logique appliquée, et en fait, les mathématiques sont aussi une logique appliquée.
RibaldEddie
3

Non.

Comme dans la plupart des disciplines scientifiques, il sera utile d’avoir une bonne compréhension des concepts mathématiques, en particulier lorsqu’on évalue des aspects comme l’efficacité. Mais pour la plupart des tâches de programmation, vos compétences en mathématiques ne sont pertinentes que si le problème que vous résolvez est lié aux mathématiques.

Les ordinateurs sont excellents pour faire des mathématiques, il est donc logique que les premiers ordinateurs aient été largement utilisés pour effectuer le «travail de base» associé à beaucoup de travaux mathématiques complexes. Beaucoup de logiciels encore fait résoudre des problèmes mathématiques complexes, dans ce cas , être bon en maths vous aidera à rédiger un meilleur programme, mais ce n'est pas ce que vous fait un bon programmeur.

Reto Meier
la source
3

Habituellement, pas dans le sens où vous devez savoir, par exemple, le calcul ou les équations trigonométriques pour faire le plus de travail possible. Si vous faites de la programmation graphique / de jeu lourde, alors oui. Un bidouille mathématique célèbre pour Quake en est un bon exemple. Cependant, la pensée à laquelle vous devez vous engager lorsque vous vous occupez de mathématiques de niveau supérieur est certainement applicable à la programmation; avec la programmation, vous développez votre propre structure logique, vos propres fonctions, vos propres "preuves".

La seule fois où je me suis retrouvé en maths dans mon travail (workflow d'entreprise interne et applications), c'est lorsque je crée des applications de reporting qui nécessitent une connaissance des statistiques, mais uniquement parce qu'elles étaient directement applicables aux exigences.

Chris
la source
3

Je dirais pas nécessairement. Certaines disciplines de programmation (crypto, graphismes, moteurs physiques, etc.) présenteraient un avantage certain pour les mathématiciens, mais je ne pense pas qu'une bonne compréhension des équations différentielles serait particulièrement utile pour la programmation Web, par exemple.

La logique booléenne est probablement une exigence pour être un bon programmeur, mais cela ne me surprendrait pas si beaucoup de gens qui n'atteignaient pas de bonnes notes en mathématiques au secondaire se révélaient bons en programmation.

Cebjyre
la source
3

Je dirais que vous n'avez certainement pas besoin d'être bon en maths pour être un bon programmeur.

Mon premier emploi en tant que programmeur consistait à réaliser des graphiques 3D pour la planification de missions B-52 et Cruise Missile. C'était une application exigeante en mathématiques, mais je n'avais vraiment besoin que d'un accès à des personnes qui étaient bonnes / excellentes en mathématiques. Je n'avais pas besoin de connaître la formule pour calculer les grandes distances de cercle entre deux points. J'avais besoin de savoir comment convertir la formule pour qu'elle fonctionne dans un langage de programmation. La même chose avec la simulation de vol. Boeing a fait tous les calculs nécessaires pour l'appliquer.

Cette expérience m'a également aidé à comprendre qui serait un bon programmeur et qui ne le ferait pas. Des pilotes et des navigateurs ont pris la relève en tant que programmeurs pour les aider à comprendre les besoins de la mission. Vous pourriez généralement dire en quelques semaines ce que les pilotes et les navigateurs pourraient bien faire. Les majors en mathématiques ont généralement commencé à programmer tout de suite.

Donc, je dirais que le fait d’être bon en maths rend plus probable le fait que vous soyez bon en programmation, mais je connais beaucoup de bons programmeurs qui ne sont pas si bons en maths.

Bruceatk
la source
3

Je n'aime pas les mathématiques et j'ai toujours des notes faibles en mathématiques. Je ne veux pas dire que je suis un bon programmeur, mais je suis dans l'industrie du logiciel depuis 10 ans avec beaucoup de succès.

Wizard79
la source
1
Je me rapporte totalement à vos notes en mathématiques. En fait, j’ai le sentiment que je ne suis pas un mauvais programmeur et que je ne suis pas trop mauvais en maths, mais pour une raison quelconque, je ne peux pas sembler dépasser la note «moyenne» de mon cours de maths, peu importe les efforts que j’essaie.
Bryan Harrington
@ Bryan, je peux
comprendre
3

Est-il possible pour des personnes qui n'aiment pas les mathématiques de devenir un bon programmeur?

Non, non-non, non, oui et non!

Non, parce que souvent vous en avez besoin.

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

Pourquoi ça ne marche pas?

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

peut-il être réécrit de manière plus abstraite?

Est-ce que 968 ms est plus ou moins que 0,7 s? Combien de Mo avez-vous besoin, combien de Ghz la machine a-t-elle, un octet suffira-t-il - les mathématiques font partie du quotidien. Parfois, explicitement et mathématiques supérieures.

Toujours implicitement réduire les mathématiques.

Les mathématiques constituent un vaste domaine, allant du calcul à la matrice, en passant par la géométrie, la logique, les statistiques, la théorie des catégories et la théorie des graphes. Donc, si vous croyez que vous programmez sans utiliser les mathématiques, vous vous trompez peut-être.

Si vous examinez des problèmes sur la page de Project Euler , vous découvrirez des énigmes, où je ne sais pas du tout, comment les mathématiques sont utilisées pour les résoudre. (Non pas que je puisse les résoudre sans calcul.) Notez que la taille du problème est normalement si grande que vous ne pouvez pas les résoudre avec la force brute.

Cependant, puisque je ne peux pas en résoudre beaucoup (environ les 2/3 maintenant), est-ce que cela signifie que je n'aime pas les mathématiques?

Si vous n'avez pas étudié les mathématiques, vous ne saurez probablement pas où vous pourrez trouver les mathématiques dans votre vie quotidienne, y compris la programmation.

Même si vous venez de vous spécialiser dans l'affichage graphique des composants de l'interface graphique, vous faites des calculs d'une certaine manière.

Utilisateur inconnu
la source