Qu'est-ce que les mathématiques ont à voir avec la programmation? [fermé]

89

Je viens juste de commencer un diplôme en développement logiciel. Pour le moment, nous commençons avec Java de base, par exemple (vous pouvez donc dire du bas), ce qui est bien, je n’ai aucune expérience en programmation, si ce n’est de savoir faire "Hello World" en Java.

J'entends sans cesse entendre que les mathématiques sont pertinentes pour le codage, mais comment se fait-il? Quels exemples généraux montreraient comment les mathématiques et la programmation vont de pair ou dépendent l'une de l'autre?

Je m'excuse de ma question est vague, je commence à peine à avoir une idée approximative du genre de monde dans lequel je suis entré en tant qu'étudiant en code singe ...

Rory
la source
49
La programmation est mathématique. fr.wikipedia.org/wiki/Discrete_mathematics
SK-logic
25
@ Dave, c'est pourquoi j'ai donné un lien dans un commentaire, pas comme une réponse.
SK-logic
7
@ FiascoLabs, encore plus que cela - la structure du langage et la logique sont également des sous-domaines des mathématiques. La programmation n'est rien d'autre que des mathématiques appliquées.
SK-logic
19
Sur une note indépendante, commencer par Java n’est pas "tout à fait à la base".
Matt H
5
@ CharlesE.Grant, de nombreux étudiants en mathématiques font de même (et réussissent quand même leurs tests).
SK-logic

Réponses:

138

Tout d'abord: je suis un mathématicien - un professionnel (en ce sens que je suis payé pour faire des maths). Je ne suis pas un programmeur. Je fais de la programmation, mais très certainement de la variété Cargo Cult (voir le premier commentaire de https://tex.stackexchange.com/q/451/86 et ma réponse) et rien de ce genre qui me mènerait normalement à cela. site (en effet, je me suis inscrit ici pour poster cette réponse après avoir vu un lien vers le forum de discussion TeX).

Le résumé de ma réponse est: Mathématiques, c'est la programmation .

J'ai récemment eu la chance d'enseigner un cours de mathématiques à un groupe d'élèves non mathématiques. Ils étaient la section de programmation. Je pensais que c'était fantastique! Enfin, j'allais pouvoir enseigner les mathématiques à des personnes qui comprenaient déjà les idées de base et qui possédaient déjà une boîte à outils rudimentaire pour les faire. J'ai été incroyablement déçu lorsque j'ai demandé combien d'entre eux avaient écrit un programme et obtenu une réponse entre 0 et 1.

Avant de continuer, je devrais clarifier quelques points. Il y a des domaines des mathématiques qui concernent directement la programmation et concernent l'évaluation des algorithmes et la classification des langages, etc. Je ne parle pas de ceux-ci. Il existe également un programme qui tente de traduire toutes les mathématiques dans un langage formel pouvant être évalué par un ordinateur. C’est un peu plus proche de ce dont je parle, mais même s’attarder à cela ne raterait pas l’essentiel de ce que j’essaie de dire. Les mathématiques que je fais et la programmation que je fais ne sont presque pas liées par sujet. La connexion entre eux est à un niveau différent.

Je voudrais commencer par le commentaire de la question principale:

Si cela fait des maths, alors toute activité humaine est une forme de maths. Si c'est le cas, le mot maths n'a pas de sens utile, car il ne peut pas être utilisé pour distinguer une activité d'une autre.

Oui, c'est faire des maths. Mais "maths" est toujours un mot utile car, comme le dit la chanson, "ce n'est pas ce que vous faites, c'est la façon dont vous le faites". Je dirais que je fais des maths quand j'approche quelque chose de façon mathématique . Parfois, il s’agit de mathématiques «noyau dur»: formuler des définitions, prouver des théorèmes. Parfois, ça ne l'est pas. Parfois, il écrit des petits programmes stupides pour que mes enfants puissent apprendre leurs mots orthographiques.

C'est ce que les mathématiques m'aident quand je programme:

  1. Abstraction C'est probablement la compétence transférable la plus importante en mathématiques. J'entends par là la capacité de supprimer toutes les tâches inutiles et de se concentrer sur les propriétés importantes.

  2. Perspective Si je ne pouvais choisir qu’une chose que tous mes élèves devaient apprendre, c’était la suivante: La possibilité de changer de point de vue en fonction du problème. Nous traitons généralement cela en algèbre linéaire avec des formules de changement de base (qui conduisent à des matrices épouvantables et à des complications affreuses), mais cela est beaucoup plus applicable que cela. Au fond, c’est l’idée que ce n’est pas nécessairement parce que quelque chose vous a été présenté de la même manière que vous l’utilisez. Cela sépare notre vision de la chose elle-même de la façon dont elle a été présentée. Cela peut être extrêmement pratique: il s’agit de faire quelque chose d’ utile ou d’ efficace. Si j'ai une liste de vecteurs et qu'il est plus efficace de les stocker sous la forme d'une liste de coordonnées x et d'une liste de coordonnées y, eh bien soit .

  3. Formulaire par rapport à la fonction pilote sur de ce qui précède; si une chose peut être présentée de différentes manières, il n’est plus juste de dire qu’une présentation en particulier est la chose à faire. Citer encore une fois cette chanson: "Ce n'est pas ce que vous êtes, c'est ce que vous faites " qui compte.

Je pourrais continuer, mais ce sont ceux-là qui me viennent à l'esprit.

Maintenant, il y a probablement beaucoup de réactions (négatives) à ce que j'ai écrit jusqu'à présent. On sera "Ce n'est pas des maths, c'est juste du bon sens." (ou le mauvais sens) auquel je me réfère à ma remarque ci-dessus, partageant le sentiment que "toute activité humaine est une forme de calcul". Une autre sera "Ce n'est pas le type de maths visé dans la question.". C’est presque certainement vrai et, ici, j’ai beaucoup plus de sympathie pour la personne qui a déclaré: «Au moins, je n’ai pas touché au calcul depuis 10 ans». Il ou elle a tort, bien sûr, ils font des mathématiques depuis 10 ans, car chaque fois qu’ils écrivaient un programme, ils faisaient des mathématiques . Ils ne l'ont tout simplement pas compris.

En fait, j'utilise des "vrais maths" dans mes programmes. J'ai récemment codé un explorateur de formes 3D amusant qui impliquait l'utilisation de mathématiques pour comprendre les projections et autres transformations que je devais appliquer à mes données. J'étais légèrement amusé de me retrouver à coder des quaternions! Mais bien sûr, les calculs en question étaient triviaux comparés à ceux que je fais lorsque je travaille. C'était du "dos d'enveloppe". Ce type de calcul, je suis d’accord avec le sentiment que vous le récupérez quand vous en avez besoin, et si vous avez besoin de quelque chose de plus compliqué que ce que vous pouvez trouver sur Wikipedia, alors vous trouvez un vrai mathématicien pour le faire à votre place. Cependant, pour pouvoir le récupérer quand vous en avez besoin, vous devez avoir appris quelque chose. Ce n'est peut-être pas quelque chose que vous utilisez réellement, mais avoir appris que quelque chose le rend d'autant plus facile à comprendre ce que vous utilisez réellement plus tard dans la vie. C'est donc là je suis en désaccord avec Coder: vous avez besoin d'apprendre des mathématiques si vous allez jamais à utiliser les mathématiques et vous devez apprendre du côté mathématique ( ce qui ne veut pas dire théorèmes prouvant, par la voie).

Et donc finalement à la "Mathématiques est la programmation". Vous pouvez apprendre toutes ces choses en étant un bon programmeur. Et si vous avez appris ces choses, vous découvrirez que les mathématiques sont beaucoup plus faciles, car vous comprendrez que lorsque nous parlons de vecteur dans un espace vectoriel, il ne s'agit que d'une instance de la classe, Vectorce qui signifie que nous pouvons faire tout ce que nous pouvons faire Vectorpour: cette instance: additionner, soustraire, mettre à l'échelle, etc. C'est pourquoi j'aimerais enseigner les mathématiques aux programmeurs. Mais, en tant que mathématicien, je dirais que le premier"Abstraction" est plus facile à apprendre en mathématiques qu'en programmation, car les mathématiques sont la poursuite de l'abstraction. Chaque fois que nous voyons un comportement, notre entraînement consiste toujours à nous demander: "Qu'est-ce qui le rend si comportemental de cette manière? Et si je prenais un autre produit similaire, se comporterait-il de la même manière? Dans quelle mesure est-ce que je devrais perdre pour que ça arrête de se comporter comme ça? " (Porter cela à l'extrême mène à la "mathématique des centipèdes" - rechercher le terme). Mais nous ne le faisons pas avec (seulement) des objets du "monde réel" (quels qu’ils soient), nous le faisons avec des choses qui ont déjà été abstraites.

Cela dure depuis assez longtemps, alors permettez-moi de conclure par l'une des blagues classiques des mathématiciens:

Un mathématicien et un physicien ont tous deux participé à un séminaire sur un nouveau modèle impliquant un espace à 24 dimensions. Après quoi, ils en ont discuté et le physicien a fait remarquer: "C'était vraiment difficile. Je veux dire, comment visualiser un espace de 24 dimensions?" à quoi le mathématicien a répondu: "Oh, c'est facile. Il suffit de visualiser l'espace n-dimensionnel et de définir n = 24.".


Ajouté le 2012-03-2

Il y a eu pas mal de commentaires sur cette réponse exprimant une variété de points de vue. Celles-ci ont maintenant été supprimées par un modérateur, étant entendu que j'essaierais de les incorporer (ou de leur répondre) dans ma réponse.

Cependant, je ne suis pas sûr de pouvoir le faire. En lisant ces commentaires et le reste de ce qui est écrit sur cette page, je ne peux que conclure à un énorme malentendu quant à ce que sont réellement les mathématiques. De plus, je ne me sens pas assez compétent pour l'expliquer. Heureusement, quelqu'un a déjà établi un lien avec la Lamentation de Lockhart, je vais donc reporter l'explication à cela. Bien que j'aurais pu l'exprimer différemment (ayant grandi dans un environnement scientifique, j'aurais davantage mis l'accent sur le caractère expérimental des mathématiques), je ne pense pas que je pourrais le dire mieux .

Je pense toujours que je peux ajouter quelque chose. En plus des malentendus quant à ce que les mathématiques est , il y a aussi des malentendus quant à ce que « faire des mathématiques » signifie. Je vois deux positions presque contradictoires:

  1. Les mathématiques concernent les équations et les formules. Il n'y a donc pas besoin de l'étudier, car Wikipedia existe (c'est presque l'inverse du défi apocryphe d' Euler contre Diderot ).

  2. Les mathématiques concernent les théorèmes et les définitions. Il n’est donc pas nécessaire de l’étudier car les programmes ne prouvent jamais rien (ce qui est une erreur aussi complète que ... insère l’erreur favorite ici).

Alors que les deux positions se contredisent, elles se retrouvent au même endroit: cela ne sert à rien qu'un programmeur apprenne des mathématiques - et assurément pas à un mathématicien! Après tout, que savent- ils de quoi que ce soit? Tout ce qu'un programmeur a vraiment besoin de savoir peut être trouvé sur Wikipedia ou cribbed à quelqu'un d'autre.

Ci-dessus, je me suis décrit en tant que programmateur de cargo. Je parie que la plupart d’entre vous ont un rire personnel et se sont dit: "Ah oui, je parie que je sais à quoi ressemblent vos programmes à ce moment-là". Vous vous êtes probablement senti un peu insatisfaisant et supérieur (même si je suis sûr que vous vous sentiez mal à propos de vous sentir mal et supérieur).

Ce que je viens de décrire ci-dessus est la mathématique du culte de la cargaison.

Alors, quand je dis que vous devriez apprendre un peu de mathématiques pour comprendre comment les mathématiques fonctionnent, je le dis pour la même raison que si vous aviez vu un peu de code que j'avais écrit: "Combien votre vie est plus facile! ce serait si vous vouliez arrêter de couper-coller du code de StackOverflow et en apprendre un peu plus sur la façon de le faire correctement. ".

La chose la plus importante, cependant, est que vous devriez l’apprendre des mathématiciens. Pourquoi Voici une analogie. Le langage que je connais le mieux est TeX. (Dit tout, vraiment!). Maintenant, supposons que je veuille en savoir un peu plus sur TeX et que, justement, Don Knuth soit en ville et ait proposé de donner des tutoriels sur TeX. Ou je pourrais simplement lire à ce sujet sur Wikipedia. Ou peut-être que c'est Perl et Larry Wall, ou C # (est-ce le bon?) Et Jon Skeet. Il se peut bien que ces personnes ne soient pas les meilleurs enseignants , mais elles le compensent sûrement du montant qu’elles connaissent!

Et c'est ce que sont les mathématiciens . Nous sommes les personnes qui écrivent la langue actuelle, qui écrivent ensuite les bibliothèques que vous utilisez. Bien sûr, vous n'avez pas besoin de savoir comment prouver un théorème - vous n'écrirez pas de bibliothèque! Mais si vous en savez un peu sur notre façon de penser, cela pourrait vous aider à comprendre pourquoi nous avons écrit la bibliothèque de la manière dont nous l’avons fait, et si vous comprenez que cela pourrait vous aider à en faire un meilleur usage.

Il y a un moyen terme entre regarder des équations sur Wikipedia et prouver la conjecture de Poincaré, tout comme - pour se référer à la plainte de Lockhart - il y a un juste milieu entre "je ne sais pas grand-chose sur l'art, mais je sais ce que j'aime" et étant Monet, et entre "Où est la clé" ANY "?" et être Don Knuth. Si vous êtes encore à l’université, vous avez alors une formidable opportunité d’apprendre auprès de personnes expertes dans leur domaine et qui, pour une raison quelconque, sont disposées à passer leur temps à vous l'expliquer.


L’autre point que j’aimerais développer un peu, c’est pourquoi, en tant que programmeur, vous ne devriez pas avoir peur d’apprendre un peu plus en mathématiques. Ce ne sont pas les connexions profondes, ni l'utilité. C'est que votre capacité à programmer un ordinateur peut vous aider directement à apprendre les mathématiques. Je veux juste en mentionner quelques-uns.

  1. Comprendre les variables. Tant de gens sont déconcertés par de simples déclarations telles que "Soit n un nombre naturel ...". Ou "Laisser epsilon> 0". Il y a des endroits en mathématiques où il est important de se rappeler la portée d'une variable. Ce sont tous des lieux communs dans la programmation. Apprenez à traduire un énoncé mathématique dans un programme et vous constaterez qu'il est beaucoup plus facile de garder une trace de quoi.

  2. La nature de la preuve. Si vous avez déjà écrit un test ou un programme destiné à être utilisé par quelqu'un d'autre, vous comprenez l'essentiel des preuves. Lorsque vous faites cela, vous devez savoir que tout ce que l'utilisateur insère, vous pouvez le gérer (insérer ici la référence obligatoire xkcd). C'est une preuve! Une démonstration que, quel que soit le "utilisateur / univers" mis en, la déclaration tiendra. Les expérimentateurs se diront "Si cela fonctionne dans des circonstances normales, c'est vrai", mais les programmeurs savent qu'il y a toujours ce gamin qui essaiera Alt + G + Maj + ÅØÆ juste pour voir ce qui se passe.

  3. SEC. Désolé de vous en parler, mais nous l'avons inventé, pas vous. Nous ne "nous répétons pas" depuis des millénaires. C'est pourquoi j'ai une copie des éléments d'Euclid sur mes étagères et qu'elle est toujours utile .

Et il y a plus Si j'en savais un peu plus sur la programmation, j'écrirais un livre intitulé "Mathématiques pour programmeurs", dans lequel le but n'était pas d'enseigner "Les mathématiques que les programmeurs devraient connaître" mais "des mathématiques que tout le monde devrait connaître, mais optimisées pour les programmeurs" . Mais je n'en saurai probablement jamais assez sur la programmation pour l'écrire - à moins que quelqu'un ne propose de collaborer avec moi!


Je vais le laisser là. Probablement si je pensais plus, je changerais ce que j'ai écrit; j'espère que je l'expliquerais mieux. Dans quelques mois, je pourrais même être en désaccord avec certaines parties. Si quelqu'un souhaite argumenter davantage ou commenter autrement, il vaut probablement mieux ne pas le faire dans les commentaires ici. Tu sais où me trouver .

espace de boucle
la source
19
C'est l'une des meilleures réponses que j'ai jamais lues sur SE; BTW, il y a un grand livre de "Mathématiques pour les programmeurs"; elle s'appelle Concrete Mathematics et est co-écrite par l'auteur de TeX, Donald Knuth. Je viens de recevoir un exemplaire, et c'est fantastique. Je me sens comme ton inverse; Je me suis intéressé sérieusement à la programmation quand j'ai compris que la meilleure façon (pour moi) de comprendre les concepts en classe de maths était d'écrire un programme pour le faire à ma place. Bien sûr, alors je voulais utiliser le programme au lieu de faire le calcul par cœur à la main, et mes professeurs de mathématiques n’aimaient pas.
Jason Lewis
Mec, +100 pour ça.
Barry Brown
2
Enregistré juste pour upvote cela
leo
Exactement. Vous ne pouvez pas bien programmer sans la pensée analytique que les mathématiques vous apprennent.
Fiasco Labs
1
Existe-t-il un bon livre sur les mathématiques de la programmation OF (programmation mathématique)?
Qed
27

Ils ne sont pas si étroitement liés. Pour la programmation, il est important de connaître les mathématiques, en particulier les branches relatives, par exemple, à la performance des algorithmes, mais le fait est qu’aucune branche des mathématiques ne vous dira que les singletons sont une idée horriblement mauvaise, par exemple: ou quand préférer l'héritage à la composition, ou si vous allez vraiment avoir besoin de cette souplesse, et ne pas vous répéter, et de dizaines d'autres nécessités de base en matière de programmation.

Les mathématiques peuvent peut- être exprimer ce que fait votre programme, mais elles ne peuvent certainement pas vous dire quel est le moyen le plus facile à maintenir, le plus lisible et le plus réalisable.

DeadMG
la source
6
1) Il n'y a rien de mal avec les singletons en tant que tels, 2) la théorie algorithmique de l'information, les langages formels et la sémantique dénotationnelle sont directement pertinents pour les choses simples qui vous préoccupent tant pour une raison quelconque (elles ne sont pas si importantes pour la programmation en général).
SK-logic
19
votre expérience doit alors être quelque peu limitée. Les singletons sont nécessaires et inévitables, tant qu'ils font partie d'un modèle de domaine. Et comment construire un modèle de domaine est un problème mathématique, rien de plus. Et oui, ceux qui sont ignorants dans la théorie des langages formels produisent des modèles horribles et des langages affreux.
SK-logic
10
@dave: le danger de cette méthode est que tout le monde peut vous écarter d'une position sensée et bien motivée en énonçant une position extrêmement différente, aussi stupide soit-il. Prendre des moyennes ne constitue pas un substitut utile à l'évaluation des arguments.
Michael Borgwardt
4
@ SK-logic: Est-il possible que vous parliez simplement de notions différentes de ce qu'est exactement un "Singleton"? Il me semble que SK-logic parle de l’idée abstraite de n’avoir qu’un seul cas d’une certaine entité dans un système, ce qui est parfois exactement ce qui est requis. Malheureusement, ce concept abstrait a été étroitement associé au détail de mise en œuvre horriblement mauvais d'avoir une méthode d'usine statique publique, car le livre GoF en donnait un exemple illustrant comment un tel Singleton pouvait être utilisé.
Michael Borgwardt
5
S'il vous plaît pas plus de discussion hors sujet re Singtons
mattnz
20

Les mathématiques et la programmation sont liées de deux manières.

La première est que les mathématiques peuvent être utilisées pour raisonner sur les programmes informatiques. Cela peut aider à répondre à des questions telles que "Comment la durée d'exécution de mon programme changera-t-elle avec les données d'entrée?", "Mon programme est-il garanti de trouver une réponse à mon problème?", "Mon programme est-il aussi efficace qu'il pourrait l'être? "," Comment dois-je réorganiser mon programme pour le rendre plus rapide ou utiliser moins de mémoire? ". Vous abordez généralement des sujets comme ceux-ci dans les cours de la division supérieure sur la théorie du calcul, la conception d'algorithmes et la conception de langage informatique.

La deuxième façon dont les mathématiques et les programmes sont liés est que la programmation est utilisée pour résoudre des problèmes mathématiques. Ceci est important car de nombreux problèmes de la "vie ordinaire" peuvent en réalité être reformulés en tant que problèmes mathématiques puis résolus (peut-être à peu près) sur un ordinateur. Ce type de sujet apparaîtra dans une certaine mesure dans presque tous vos cours, mais plus particulièrement dans les cours sur les mathématiques discrètes et la modélisation mathématique.

Charles E. Grant
la source
Math ne peut pas vous aider à garantir que votre programme trouvera une réponse. Ce serait résoudre le problème de l'arrêt, ce qui est impossible.
DeadMG
6
@DeadMG C'est impossible pour des programmes arbitraires. Il peut très bien être prouvé qu'un programme donné se termine ou non, dans certains cas.
Luc Danton
6
@DeadMG, C'est un malentendu courant sur le problème de la suspension. Le problème de Halting ne dit pas que vous ne pouvez pas prouver si un programme particulier s’arrête ou non, mais qu’il n’existe aucun algorithme ni aucune preuve pouvant être appliqué à tous les programmes pour décider s’ils s’arrêtent ou non. Voir par exemple en.wikipedia.org/wiki/Halting_problem et programmers.stackexchange.com/questions/125882/… .
Charles E. Grant
Aaaah. Mon erreur, alors. Stupide vote lock-in ... si vous pouviez éditer votre message pour que je puisse annuler le vote par downvote?
DeadMG
4
@DeadMG, êtes - vous conscient du fait la plupart des tâches de programmation typiques ne pas besoin d' un langage Turing-complet du tout ? Et pour le reste des cas, il existe presque toujours une preuve d’arrêt spécialisée.
SK-logic
12

Voici deux exemples spécifiques dans lesquels l’enseignement des mathématiques est important pour l’informatique:

1) Bases de données relationnelles dans lesquelles le calcul relationnel est utilisé.

Le calcul relationnel se compose de deux calculs, le calcul relationnel tuple et le calcul relationnel de domaine, qui font partie du modèle relationnel pour les bases de données et fournissent un moyen déclaratif de spécifier des requêtes de base de données. Ceci contraste avec l'algèbre relationnelle qui fait également partie du modèle relationnel mais fournit un moyen plus procédural de spécifier des requêtes.

L'algèbre relationnelle pourrait suggérer ces étapes pour récupérer les numéros de téléphone et les noms des librairies qui fournissent Some Sample Book:

Join book stores and titles over the BookstoreID.
Restrict the result of that join to tuples for the book Some Sample Book.
Project the result of that restriction over StoreName and StorePhone.

Le calcul relationnel formulerait une manière descriptive et déclarative:

Get StoreName and StorePhone for supplies such that there exists a title BK with the same BookstoreID value and with a BookTitle value of

Quelques exemples de livre.

L'algèbre relationnelle et le calcul relationnel sont essentiellement logiquement équivalents: pour toute expression algébrique, il existe une expression équivalente dans le calcul, et inversement. Ce résultat est connu sous le nom de théorème de Codd.

Le domaine suivant est l' intelligence artificielle (IA) et l'apprentissage automatique .

Pour un exemple d'utilisation, consultez la classe CS 373 de Udacity: PROGRAMMATION D'UNE VOITURE ROBOTIQUE .

Description: Ce cours, dispensé par l'un des plus grands experts en intelligence artificielle, vous enseignera les méthodes de base en intelligence artificielle, notamment l'inférence probabiliste, la vision par ordinateur, l'apprentissage automatique et la planification, le tout axé sur la robotique. Des exemples détaillés de programmation et des travaux appliqueront ces méthodes dans le contexte de la construction de voitures autonomes. Vous aurez l'occasion de visiter, par vidéo, les principaux laboratoires de recherche sur le terrain et de rencontrer les scientifiques et les ingénieurs qui construisent des voitures autonomes à Stanford et Google.

Prérequis: l'instructeur assumera de solides connaissances en programmation. Toute la programmation se fera en Python. La connaissance des probabilités et de l'algèbre linéaire sera utile.

SEMAINE 1:

Bases de probabilité Localisation de voiture avec filtres à particules

SEMAINE 2:

Gaussiennes et probabilité continue Suivre les autres voitures avec des filtres de Kalman

SEMAINE 3:

Traitement des images et apprentissage automatique Recherche d'objets dans les données du capteur

SEMAINE 4:

Planification et recherche Déterminer où conduire avec A * search Trouver des itinéraires optimaux avec une programmation dynamique

SEMAINE 5:

Contrôles Contrôle de la direction et des vitesses avec PID

SEMAINE 6:

Rassembler tout cela Programmer une voiture autonome

SEMAINE 7:

L'examen final examine vos connaissances

JonnyBoats
la source
Je suppose que cela relève du domaine de l'IA, mais la plupart des gens ont cette image en tête quand ils utilisent ce terme. Quoi qu'il en soit, presque tous les programmes simulant le monde réel nécessitent presque toujours une forme de mathématiques plus avancées. En outre, tout système doté de capteurs nécessite presque toujours une forme de mathématiques avancées.
Dunk
11

Les mathématiques sont indispensables au développement d'applications scientifiques, à la programmation de jeux, aux systèmes temps réel, aux systèmes de simulation et à de telles applications. Après tout, la programmation utilise les mathématiques et les sciences pour résoudre des problèmes. D'autre part, programmer une application qui enregistre les informations des utilisateurs pour les enregistrer dans votre base de données ne nécessite aucun niveau élevé de mathématiques. Néanmoins, tous les programmeurs bénéficieraient de la théorie des nombres de base, de l'algèbre, de la théorie des ensembles de base et de l'analyse numérique élémentaire.

Du côté des praticiens en mathématiques, différents programmes en mathématiques (ainsi que de nombreuses autres branches des sciences) pourraient bénéficier considérablement de la programmation.

Emmad Kareem
la source
Je suis d'accord. Je fais beaucoup de développement d'entreprise et je n'ai pas eu besoin d'utiliser beaucoup de mathématiques avancées, bien que ce soit certainement bon à savoir car cela peut certainement aider. Je dirais que chaque programmeur aurait dû prendre au moins Calcul 1. D'autres types de programmes utilisent souvent des transformations de Fourier, des modèles statistiques et des matrices de programmation 3D.
Makotosan
@Makotosan, merci pour votre commentaire. Les mathématiques sont très intéressantes, cependant, étant donné le peu de temps dont dispose un programmeur, il est préférable de consacrer des efforts à ce qui augmente réellement sa productivité. Les informations supplémentaires deviennent un luxe pour ceux qui en ont les moyens.
NoChance
Je pense que le calcul n’est que la connaissance du domaine nécessaire à votre programme, de la même manière que la compréhension de la finance est importante pour les développeurs Excel.
Sixtyfootersdude
9

Je pense que plus que toute autre chose, c'est la similitude du processus de pensée utilisé qui fait que les deux semblent si semblables.

Par exemple, les deux sont extrêmement logiques. Si vous suivez les mêmes étapes ou la même formule, vous obtiendrez toujours le même résultat. Par exemple, 1+1sera toujours égal à 2, et les set a = 1moyens aseront toujours 1 (jusqu'à ce que vous le configuriez à autre chose)

Un autre exemple est la nécessité de penser spatialement. En mathématiques, je trouvais souvent que je devais garder des chiffres dans ma tête et visualiser ce que je faisais. A titre d'exemple très simple, je briser les problèmes de mathématiques pour que quelque chose comme 13x13devient 13x10 + 13x3, ce qui est beaucoup plus facile pour mon cerveau de travailler avec, et je dois garder la trace que 13x10=130 + 13x3=39, donc 130+39 = 169. Cette même capacité à visualiser quelque chose d'invisible, ou à décomposer un problème en problèmes plus petits est souvent appliquée à la programmation.

Je pense donc que bien que vous n’ayez pas besoin d’avoir une formation mathématique pour programmer, où les mathématiques sont définies comme des calculs avec des nombres, vous devez avoir un processus de réflexion et une compréhension similaires à ceux que vous utiliseriez pour résoudre des problèmes mathématiques.

Rachel
la source
Et certaines mathématiques de base sont le tremplin habituel pour gagner ce processus de résolution de problèmes systématique et logique. La structure linguistique, quelque chose qui n’est plus enseigné à l’école, est également un autre tremplin. Il y a une raison pour laquelle un compilateur a un analyseur et plus vous serez capable d'analyser et de prêter attention à la structure de votre code, plus vous aurez de chances de pouvoir bien programmer.
Fiasco Labs
5

Je suppose que, à ce jour, on vous a appris des notions de calcul et de trigonométrie . Et vous appelez ça des mathématiques. C'est comme appeler une paire de jambes "un être humain".

Le calcul a peu à voir avec la programmation, il est plus étroitement lié à la physique et à l'ingénierie. Vous aurez besoin de physique pour les moteurs de jeu et de calcul pour l'analyse statistique . (L'analyse statistique génère plus d'emplois qu'il est facile d'admettre)

Le calcul, pour nous, consiste plus à relier la programmation au monde réel. Le calcul numérique est la branche qui étudie à quel point cette relation va mal jusqu'à présent. (spoiler: ça va très mal, mais on peut le contrôler indéfiniment )

La trigonométrie est un jack fou dans la boîte qui sort quand on s'y attend le moins et l' analyse du signal , la génération audio et bien d'autres choses en dépendent.

Parcourez Algèbre 101 et Logique 101 , étudiez l’histoire de Pascal, Leibniz (oui, il a presque inventé le calcul, s’est trompé à moitié, s'est disputé avec Newton jusqu’à ce que tout commence à avoir un sens - et continue de concevoir le codage binaire) et Babbage et beaucoup de vos doutes vont s'estomper. (votre définition des mathématiques sera changée pour toujours, cependant)

ZJR
la source
4

La programmation traverse de nombreuses disciplines académiques traditionnelles.

Les mathématiques, en particulier les mathématiques appliquées , sont importantes pour la programmation, car ce que nous demandons aux ordinateurs de faire, c’est beaucoup de chiffres crunch. Comprendre les méthodes numériques et savoir comment appliquer les calculs de manière efficace et appropriée est l’une des tâches quotidiennes de nombreux programmeurs.

Joel Brown
la source
4

Ici, je vais vous raconter des choses pratiques où j'ai rencontré des mathématiques en résolvant des problèmes informatiques (en particulier dans le domaine Internet):

  1. Les moteurs de recherche utilisent le calcul vectoriel pour la recherche de données.
  2. La factorisation matricielle peut être utilisée pour beaucoup de choses comme l'analyse des sentiments.
  3. Vous devez connaître Calcul, Sommations pour déterminer la complexité du code que vous écrivez.
  4. La probabilité est fortement utilisée dans la recherche / recherche probabiliste d'informations
  5. Naive Bayes Theorem est utilisé dans l'analyse prédictive.
  6. Vous devez connaître des éléments tels que l'hyperplan, etc. pour un concept appelé SVM, qui est à nouveau utilisé dans le Machine Learning pour résoudre les problèmes de catégorisation.
  7. Vous devez comprendre Entropy pour effectuer des tâches de traitement du langage naturel.
  8. L’indexation sémantique latente / l’analyse en composantes principales utilisée par les moteurs de recherche repose largement sur l’algèbre matricielle. & bientôt......
Yavar
la source
3

Un problème avec votre question est que "les mathématiques" et la "programmation" sont à la fois des sujets très vastes et profonds sur lesquels il y a plus à savoir que tout le monde pourrait maîtriser dans une vie (pas d'exagération). Personnellement, je suis titulaire d'une maîtrise en mathématiques. Pendant mes années à l'université, j'avais l'impression que plus j'apprenais, moins j'en savais par rapport à mes pairs; Je sentais que si je devenais moins intelligent au fil des ans. Lorsque j'ai présenté ma thèse de maîtrise à un groupe de professeurs, même la plupart d'entre eux semblaient en grande partie inconnus de ce que j'avais étudié.

De même, je suis maintenant un développeur d'applications Web basé sur une base de données. Si vous me comparez à une personne qui fait de la programmation en langage assembleur intégré, vous pourriez penser de nous comme de deux professionnels très talentueux, mais nous aurions une expertise très différente même si nous sommes tous les deux des "programmeurs".

Au fur et à mesure que vous avancez dans vos études en mathématiques supérieures (au-delà du calcul de première année), vous constaterez que les mathématiques insufflent une discipline de raisonnement abstrait qui vous sera très utile lors de votre programme. Je pense que cette discipline est très importante car vous traiterez des préoccupations abstraites au cours de la programmation.

Bien sûr, dans la programmation en première année, vous apprendrez probablement l’arithmétique de pointeur. Vous allez écrire des programmes courts pour illustrer ce concept et votre compréhension de la manière dont il pilote votre ordinateur et qui obéit à votre volonté. Cependant, apprendre comment fonctionne l'arithmétique de pointeur dans l'abstrait ne vous aidera pas à utiliser des pointeurs dans un programme réel. Lorsque vient le temps de gérer un tas de lignes de code 10K et d'apporter quelques modifications à l'arithmétique de pointeur, vous devez être capable de raisonner à un niveau très abstrait, en prenant des décisions stratégiques qui prennent en compte différentes préoccupations relatives à l'impact de vos modifications. le code.

En tant que programmeur, vous devez trouver un équilibre entre "lisibilité" de votre code, performances de votre code, facilité d'utilisation des programmes résultants, entre autres préoccupations. Vous devez être capable de faire des comparaisons très abstraites pour équilibrer ces préoccupations entre elles. Vous ferez beaucoup de ces comparaisons chaque jour. Je n'ai même pas encore commencé à parler de gestion du temps. Vous allez raisonner de manière abstraite sur la probabilité que quelque chose que vous faites affecte votre capacité à effectuer vos tâches à temps, et encore une fois, vous prendrez chaque jour de nombreuses décisions qui affecteront votre travail.

Enfin, vous devez maintenir votre discipline philosophique pour pouvoir assimiler de nouvelles idées et de nouveaux concepts afin de pouvoir continuer car les anciennes méthodologies et pratiques tombent en désuétude. Encore une fois, vous devrez être capable d'évaluer les idées qui viennent et de faire une comparaison abstraite avec ce que vous savez déjà.

En bref, la programmation, comme le savent la plupart d’entre nous, n’a pas grand-chose à voir avec les mathématiques, comme la plupart d’entre nous le savent; mais quand vous le regardez à un niveau abstrait, ils ont beaucoup en commun.

Biscuits à la farine de riz
la source
J'aime particulièrement la partie "comme la plupart d'entre nous le savent". C'est la difficulté que je vois en lisant la plupart des réponses ici: la "main gauche" ne sait pas ce que fait la "main droite".
Loop Space
Je suppose que "la main gauche ne sait pas ce que fait la main droite" résume la situation. L'OP a déclaré qu'il "partait du bas" avec Java. Programmer en Java, c'est un peu comme construire quelque chose à partir de boulons et de bois d'oeuvre de quincaillerie, par opposition à l'usinage de ces boulons et à la fabrication d'arbres vivants en bois d'oeuvre (ce qui serait plutôt de la programmation dans Assembler)
Rice Flour Cookies
2

Math décrit (disons) une équation cubique.

Un algorithme décrit comment résoudre cette équation cubique.

Construire cet algorithme (ou tout autre) d'une manière pouvant être exécutée par une machine est en cours de programmation .

L'informatique est l'analyse de l'algorithme - son efficacité théorique en termes temps / espace, ses limites d'erreur, etc. Cela pourrait être considéré comme une branche des mathématiques. Notez cependant que l'informatique et la programmation ne sont pas réellement la même chose. Il est important d’avoir une base en informatique si vous voulez être un bon programmeur, car cela vous aidera à mieux concevoir et raisonner sur les algorithmes que vous développez. Mais ce n'est pas une obligation.

Un bon programmeur peut ne pas être (en fait, souvent n'est pas) un bon mathématicien, et vice versa. Ce sont des compétences identifiables distinctes.

mcmcc
la source
3
Cela dépend de votre domaine. Si vous voulez juste être programmeur, vous n'avez pas vraiment besoin de connaître les mathématiques. Si vous souhaitez devenir un élément clé de l'entreprise (dans de nombreux domaines), il est essentiel de pouvoir proposer des solutions aux problèmes de domaine. Très souvent, ces solutions ne peuvent être dérivées que par un solide fond mathématique. Vous n’avez peut-être pas besoin d’être un expert dans un domaine mathématique spécifique, mais vous devez savoir comment appliquer un large éventail de mathématiques afin de déterminer quelles mathématiques pourraient résoudre votre problème particulier du moment.
Dunk
2

J'ai vu beaucoup de questions sur ces types de forums au cours des années où le vrai problème résidait dans la mauvaise compréhension mathématique de l'affiche. Par exemple, quiconque a de bonnes bases en algèbre comprend qu'il est impossible de diviser par zéro. Mais j’ai souvent vu une question dans laquelle l’affiche ne comprenait pas cela et, par la suite, ne comprenait pas le message d’erreur disant: "Vous ne pouvez pas diviser par zéro". J'ai vu beaucoup de questions où il était clair que l'affiche ne comprenait pas la logique de base. J'ai vu beaucoup trop de questions où les concepts d'algèbre booléenne étaient clairement incompris.

Ce n’est pas parce que vous n’écrivez pas d’épreuves mathématiques ou que vous ne résolvez pas directement les équations comme dans le manuel de mathématiques que vous n’avez pas besoin de comprendre les concepts qui les sous-tendent. Incidemment, au cours de nombreuses années d’expérience professionnelle, je n’ai jamais rencontré un mauvais programmeur ayant une solide compréhension des mathématiques.

Dans certains domaines, vous utilisez directement de nombreuses mathématiques, telles que la programmation de jeux, la programmation statistique, la programmation financière, certains systèmes intégrés. Dans certains cas, vous obtenez les équations dont vous avez besoin dans les exigences et parfois vous ne l'êtes pas. Cependant, même lorsque l'équation vous est donnée, la traduction correcte de ces équations en code de programmation nécessite que vous compreniez l'équation pour commencer.

Bien que vous puissiez vous en sortir avec un peu plus que l'algèbre de base dans votre application de base CRUD, la plupart des problèmes les plus intéressants et des travaux plus avancés impliquent une compréhension mathématique. Alors, pourquoi voudriez-vous vous limiter dès le départ en n'apprenant pas les mathématiques de manière approfondie?

HLGEM
la source
2

Deux exemples me viennent immédiatement à l’esprit:

fonctions - L'idée d'appliquer une transformation aux variables d'entrée pour produire une variable de sortie est fortement ancrée dans les mathématiques. La notion de passer une fonction comme paramètre à une autre fonction l'est encore plus. En général, la notion de pensée abstraite associée à la programmation est assez proche des mathématiques.

bitMasks - Cette approche de programmation commune pour la résolution de problèmes nécessite au moins une compréhension de base de l'algèbre booléenne pour même comprendre le concept.

JohnFx
la source
1

Du point de vue des programmeurs: les mathématiques sont un sous-ensemble de la programmation.

Maths appliquées à la programmation:

Lorsque vous travaillez avec des collections (tableaux, listes, cartes, etc.) en programmation, vous avez alors affaire à des implémentations réelles d'abstractions mathématiques.

Programmation sans maths:

Si vous le faites println("Hello World"), le fait que certains calculs soient utilisés pour calculer la position à l'écran, la longueur de la chaîne, etc., est en grande partie hors de propos.

Utiliser la programmation pour les maths:

L'implémentation des mathématiques et de la physique dans un langage de programmation rend possible des choses comme la conception assistée par ordinateur.

Jack
la source
Il y a une intersection de choses qui sont à la fois liées aux mathématiques et à la programmation. Ni l'un ni l'autre n'est un sous-ensemble approprié de l'autre. Si vous en saviez plus sur MATH, vous le sauriez. Faisons un diagramme de Venn et voyons si nous pouvons trouver un objet dans chaque zone. L'algèbre est liée aux mathématiques et à la programmation. Les principes de la programmation orientée objet ne sont pas strictement liés aux mathématiques, mais sont des abstractions, car les mathématiques sont une abstraction. Les mathématiques discrètes sont incroyablement utiles aux programmeurs, tout comme les statistiques. Le calcul est rare pour la plupart des programmeurs, jamais pour moi en 30 ans.
Warren P
0

La programmation est généralement basée sur un modèle qui est généralement un modèle mathématique.

Prenons un exemple de création d'une calculatrice hypothécaire. Pour cela, vous devez savoir quel est l’intérêt, ce qu’est un intérêt composé, etc. Si vous ne comprenez pas le calcul sous-jacent, quelqu'un d'autre doit vous fournir cette information. Habituellement, c'est le travail du programmeur de tout faire. Vous pouvez toujours demander de l'aide si nécessaire.

Il existe un concept simple en mathématiques qui est largement utilisé en programmation. Par exemple, les expressions, les équations, les variables, sont profondément utilisées en programmation. Si vous ne l'obtenez pas en maths, vous ne serez peut-être pas le meilleur programmeur.

Ayant des bases mathématiques solides, donnez-vous plus de choses sur lesquelles vous allez modeler votre travail. Cela fait finalement de vous un meilleur programmeur. Par exemple, vous souhaiterez peut-être tracer une équation quadratique dans l'un de vos projets pour apprendre davantage de choses simplement parce que vous maîtrisez les mathématiques. Ou alors vous écrivez un programme pour trouver l’aire d’un cercle, vous donner plus d’expérience.

Au cours de ma courte carrière d’enseignant, j’ai constaté que si les étudiants n’avaient pas de formation en mathématiques, ils étaient presque perdus lorsqu’ils faisaient face à un problème financier. S'ils sont perdus à propos du modèle, apprendre la langue elle-même devient plus difficile et honnêtement très frustrant.

Sans nom
la source
3
Que quelqu'un résolve ou non un problème financier a tout à voir avec le fait qu'il soit ou non compétent dans ce domaine, presque rien à voir avec la programmation d'aptitude. Je travaille avec un logiciel de traitement du signal qui contient beaucoup de mathématiques qui me trottent dans la tête. Mon travail ne consiste pas à faire le calcul, mais à transformer les logiciels produits par les mathématiciens et les ingénieurs, pour qui la programmation ne relève pas de leur domaine de compétence, en bons logiciels. Parce que c'est mon domaine.
Blrfl
Dans la plupart des domaines pratiques, les deux sont séparés: quelqu'un a le modèle et quelqu'un doit le programmer. Alors oui tu as raison. Mais pour apprendre à programmer depuis le début, il faut connaître les mathématiques. Sinon ce sera difficile. Ils doivent connaître les variables, les expressions et les différentes propriétés mathématiques. J'ai travaillé avec l'équipe d'optimisation. Ils travaillaient sur des solveurs. S'ils n'avaient aucune connaissance du calcul, ils n'y auraient jamais travaillé. J'ai répondu basé sur le point de vue de l'apprentissage et sachant qu'il est juste un nouvel apprenant qui se lance dans la programmation.
Noname
Du point de vue de l’apprentissage, il est impératif d’avoir une formation en mathématiques sinon l’apprentissage ne se fera pas.
Noname
Les solveurs sont essentiellement un problème du domaine des mathématiques, ce qui laisserait penser qu'il serait nécessaire de comprendre les mathématiques impliquées pour pouvoir les résoudre. Je ne dis pas qu'il n'y a pas de concepts mathématiques dans la programmation, mais comme l'a souligné @DeadMG dans sa réponse, il existe de nombreux aspects très pratiques du processus pour lesquels les mathématiques ne fournissent absolument aucune aide.
Blrfl
1
@Birfl, DeadMG est un peu ignorant (et presque toujours faux). Les mathématiques aideraient toujours dans tous ces domaines "mous". La psychologie est fortement basée sur les mathématiques. La sociologie est encore plus mathématique. Et dans le cas de la conception de systèmes, vous feriez mieux de ne pas y toucher sans une très bonne expérience en sémantique (qui provient de mathématiques discrètes). Il n’ya pas d’aspect dans la programmation qui ne soit mathématique. La conception de l'interface graphique et le codage CRUD sont inclus.
SK-logic
0

Le fondement théorique de l’informatique (qui ne se limite pas à la programmation) est de nature mathématique. Tout, de la définition même de la calculabilité à l'analyse et à l'expression des algorithmes, en passant par les spécifications des langages de programmation, repose sur une grande variété de mathématiques. Voir cette page Wikipedia pour un aperçu du type de calcul impliqué.

La plupart de ce qui n'est pas vraiment nécessaire de savoir si tout ce que vous voulez faire est de frôler le code. Pour ce qui est des mathématiques appliquées, à moins d’entrer dans un domaine qui requiert de grandes compétences en calcul (simulations physiques détaillées, analyse des signaux, analyse et prédiction financières, etc.), vous n’utiliserez probablement rien de plus que l’algèbre de base. quotidiennement.

John Bode
la source
0

Honnêtement, cela dépend de votre type de programmation.

Si vous créez des applications Web légères avec une certaine logique, vous n’avez probablement pas besoin des cours de mathématiques plus avancés nécessaires à de nombreux diplômes. Si vous travaillez avec des tâches un peu plus lourdes en ressources processeur, vous aurez besoin de plus de calculs. Si vous travaillez dans n'importe quel domaine scientifique, vous voudrez vraiment garder vos références de calcul à portée de main.

Un autre endroit où vous aurez besoin de maths est si vous voulez écrire des jeux. À la seconde où vous souhaitez vous déplacer en diagonale, vous devrez commencer par faire des calculs minutieux afin de ne pas vous retrouver avec des personnages qui accélèrent si vous passez à un bloc vers le NE.

Cela dit, vous n’avez pas nécessairement besoin d’apprendre les mathématiques, puis d’apprendre à programmer. Il est tout à fait valable d’apprendre à programmer puis à apprendre des mathématiques avancées. J'ai commencé à coder avant de mettre les pieds dans une classe Calc ou Trig et je me débrouillais très bien. Lorsque j’ai commencé à apprendre les mathématiques avancées, j’ai constaté que le codage m’avait vraiment aidée, car je pouvais explorer le sujet davantage en modifiant les variables dans un script rapide par rapport au stylo et au papier.

kcunning
la source
Vous aurez certainement besoin de connaître votre trigonométrie et votre calcul vectoriel pour les jeux.
Alan B
Absolument. Cependant, j'ai aussi découvert que l'écriture de jeux pouvait être un excellent moyen de réapprendre les mathématiques que vous auriez peut-être oubliées au lycée, pourvu que vous n'ayez pas une échéance précise.
kcunning
0

Je ne suis en aucun cas un expert en maths! Je me suis bien débrouillé en géométrie HS, ce qui était logique pour moi. Je trouve que la programmation et la géométrie sont très similaires. La logique booléenne est très liée dans mon esprit aux preuves géométriques.

Ensuite, il y a quelques petites choses comme savoir que vous pouvez contrôler le nombre de colonnes d'une ligne à l'aide de l'opérateur de module.

Je privilégie fortement l'idée d'être un bon programmeur qui a un ami (ou un collègue / consultant) qui est un bon mathématicien.

Évidemment, si vous avez la chance d'avoir les deux compétences, courez avec!

TecBrat
la source
0

Réponse simple; Les maths vous rendent rapide . Bien sûr, vous pouvez supprimer vos problèmes de codage dans Google / se / wikipedia, mais faites suffisamment de calculs sans avoir à le faire . Croyez-le ou non, le cerveau humain correctement entraîné est plus rapide que Google . En outre, plus vous en savez sur les mathématiques, plus vous serez en mesure de comprendre rapidement les résultats que Google / se / wiki vous donnera, et moins vous aurez besoin d’explorer pour comprendre ce que les gens vous disent. Dans le processus de résolution de vos problèmes de programmation, vous finirez par apprendre les mathématiques, mais si vous vous concentrez sur les mathématiques, le processus sera beaucoup plus efficace.

Votre question ressemble un peu à un musicien de rock qui demande pourquoi il aurait besoin d’une formation musicale formelle. Est-il possible de réussir sans cela? Sûr. Cela vous rend-il beaucoup plus dingue si vous y allez? Absolument.

Réponse un peu plus compliquée - Lorsque les mathématiciens et les programmeurs utilisent le mot "solution" (pour les problèmes, c’est-à-dire pas les équations - c-à-d. Pas les "racines"), ils signifient à peu près la même chose. Apprendre à résoudre des problèmes mathématiques vous aide à apprendre à résoudre des problèmes de programmation.

BTW - et sans vouloir offenser qui que ce soit - quiconque se dit un bon programmeur mais qui déteste les maths est un grand menteur. Ce qui s’est passé, c’est qu’un mauvais instructeur ou un professeur d’université les a rejetés des mathématiques formelles et que, depuis, ils ont l’impression de «ne pas être bons en maths». Toute personne n'ayant pas de trouble d'apprentissage (à savoir toute personne capable d'apprendre un langage OO) est capable de tout, jusqu'au Sophomore Calculus inclus.

Jamesson
la source
0

Les actions de la mathématique et de 99% de la programmation ont très peu de points communs. Les mathématiques ne sont pas nécessaires pour être un grand programmeur. J'ai suivi plusieurs cours de niveau collégial en mathématiques, y compris, sans toutefois s'y limiter, les éléments de calcul algèbre I, II et III de l'algèbre linéaire et plusieurs autres.

Je suis ingénieur en logiciel depuis plus de 10 ans et n'ai que rarement besoin d'utiliser autre chose que les mathématiques de base. Il y a quelques exceptions où les mathématiques sont nécessaires: comme les graphiques et autres domaines. Mais 99% de la programmation et du génie logiciel ne nécessitent pas de mathématiques. Cela nécessite une réflexion logique, des algorithmes, une POO, des fonctions, des problèmes de décomposition, etc.

Pascal Aschwanden
la source
0

1) En apprenant la programmation, vous rencontrerez un jargon technique (un algorithme). Pour analyser un algorithme, il faut avoir une idée de la nature des fonctions polynomiales, logarithmiques et exponentielles.

2) Basé sur une application informatique, il faut avoir une idée sur les mathématiques discrètes et les mathématiques continues pour écrire une solution significative. On peut comprendre plus à ce sujet en passant par de tels cours comme-

---> Mathématiques pour l'informatique

---> Codage de la matrice: l'algèbre linéaire par le biais d'applications informatiques .

Pour un débutant, j’ai l’impression que les langages typés dynamiques comme python/ schemesont les premiers meilleurs langages de programmation. Les langues typées statiques comme Java/ C++ne sont pas les meilleures pour commencer. Les logiciels publiés à partir de "MIT / UOC-Berkeley / Stanford" peuvent vous guider mieux qu'un cursus universitaire normal. Je te parie!!!

5 tours
la source
-1

Personnellement, je dirais que cela dépend du niveau de programmation impliqué. Les modèles de données et les corrélations entre ceux-ci, les algorithmes de programmation impliqués. Par exemple, pour écrire un programme qui affiche "Hello World", je ne vois aucune obligation de familiariser quelqu'un avec les mathématiques supérieures. Le niveau d'implication mathématique dépend du niveau de complexité du problème à résoudre par programme.

Aubede
la source
-2

Juste mon expérience, pas plus:
je ne suis pas mathématicien. Je ne suis pas un génie, juste un autodidacte.
... et après de nombreuses années, je réalise que je travaille avec l' intuition

J'ai d'abord appris Pick (système mort) à partir de zéro (seul avec de la documentation papier et des exemples),
... après C, C ++ pour le plaisir et Java pour le travail.

Comme vous l'avez dit, je peux dire que l'apprentissage de cette langue n'est pas un problème mathématique (même si l'algèbre de base / minimaliste vous aide), mais un problème logique .

Maintenant, de nombreux outils (comme Eclipse) vous aident et vous corrigent: vous devez vous concentrer sur ce que vous voulez faire , avec seulement 52 mots réservés ... et de nombreuses bibliothèques qui ont du travail pour vous.

Si vous aimez la langue, choisissez un projet Java, étudiez Pattern Design, UML, comprenez la machine virtuelle Java et son utilisation avec Bigloo et Scala, comprenez-la encore et encore pendant 10 000 heures.

L’expérience Java vous donne des emplois bien rémunérés, et pendant longtemps dans de grands projets industriels, et vous pourrez passer à un autre environnement car vous êtes capable de parler informatique et non mathématique .

Si comprendre le langage (mots, signification, concept et autres sciences logiques cachées telles que la sémantique, l'ontologie, etc.) est un bon objectif pour votre personne humaine, pour toute votre vie, vous pouvez commencer maintenant .

Sinon, expérimentez d'une autre manière.

Cordialement
Claude

cl-r
la source
Encore une fois, voir ci-dessous post. Vous faites des maths, vous choisissez simplement de ne pas l'admettre.
jamesson
1
J'ai vu, mais j'ai également trouvé d'autres messages répondant à la première question sur l'intérêt mathématique pour un étudiant (qui connaît la base, pas des spécialités) avec -1 ^ n quand ils ont parlé de la logique en latin, la philosophie, la langue ... real la vie. Est-ce que les mathématiques donnent l'esprit si confiné que tout ce qui n'est pas dans l'équation est rejeté, sans comprendre la vie autour de soi, et en oubliant que Newton commence par une intuition donnée par une pomme? C’est peut-être au modérateur d’ouvrir les esprits aux autres mondes, lorsque cela est possible, cela enrichira les deux côtés de la discussion. Notherless je vais être prudent dans mon écriture.
cl-r
-2

Quelqu'un a presque frappé le clou sur la tête ci-dessus. La programmation est mathématique. Plus spécifiquement, la programmation est une branche de la logique mathématique appelée théorie de la calculabilité ou théorie de la récursivité.

Les autres branches des mathématiques sont directement concernées, notamment le langage formel et la théorie des automates. Ceux-ci aident à décrire les expressions régulières, utilisées dans la recherche de motifs, et les grammaires formelles, utilisées pour décrire et analyser les langages de programmation.

Toute personne qui dit que la programmation n'est pas une mathématique ne sait pas de quoi elle parle ou a un motif inavoué, comme un maximaliste de «Propriété intellectuelle», qui espère tirer profit d'un brevet reposant sur un algorithme ou une autre mathématique de base. fait ou découverte.

Quelques références pour la programmation en math, et le corollaire de ne pas savoir de quoi vous parlez:

Le programme présente des preuves: la logique du 19ème siècle et l'informatique du 21ème siècle

Les programmes sont des preuves: modèles et types dans Lambda Calculus

Article de correspondance Curry-Howard de Wikipedia

Sur l'efficacité inhabituelle de la logique en informatique

L'efficacité déraisonnable de la logique

Oui, ils pèsent lourdement sur la partie "logique" de la logique mathématique, mais il est généralement admis que les mathématiques ne sont que quelques axiomes et que leurs conséquences logiques sont développées via la logique du premier ordre.

Pour ce qui est de dire le contraire et d’être un IP maximaliste:

Comment breveter un algorithme aux États-Unis . Les algorithmes ne sont pas brevetables, mais les brevets sont accordés sur des algorithmes en ne les désignant pas comme des algorithmes. Il n’est pas difficile de trouver sur le Web beaucoup de documents qui soulignent ou tentent d’expliquer cette contradiction.

Bruce Ediger
la source
6
-1 pour l'ad hominem à la fin.
Charles E. Grant
@charles ad hominem contre qui? L'affiche originale? Je pense que le point sur les brevets est perspicace (même s’il aurait pu être mieux formulé).
Gcbenison
@gcbenison, "Toute personne qui dit que la programmation n'est pas une mathématique ... ou qui a une arrière-pensée" est une attaque ad hominem classique: je n'ai pas à répondre à votre argument parce que vous êtes une mauvaise personne. Je trouvais cela irritant parce que je ne pensais pas que la programmation était mathématique et que les brevets logiciels étaient une abomination. J'ai une maîtrise en mathématiques appliquées, mais je ne sais pas si je sais de quoi je parle est ouvert à la discussion.
Charles E. Grant
@ commentateurs: merci. J'avais l'habitude d'ignorer ces comportements parce qu'ils sont une misère auto-projetée imputée aux autres. --- à Bruce Ediger: Réflexion de signe de doute en cours.
cl-r
@ cl-r: Je pensais à des exemples très précis, comme la campagne anti-Linux SCO, et nature.com/news/...~~V~~singular~~1st Si nous en tant que programmeurs laisser les avocats définissent les mathématiques au profit de l' avocat, nous faisons tout de la civilisation un très mauvais service .
Bruce Ediger
-2

Les mathématiques ont tout à voir avec la programmation. Par exemple, dans la programmation de jeux, vous devez utiliser des matyhs pour la physique et faire plus moins tout. Pour déplacer la position x du joueur en Java, vous feriez int x = x + speed * deltaTimeou int x = x - speed * deltaTimeMais vous pourriez dire que ce sont des mathématiques de base, alors passons à des choses plus avancées. Il existe un algorithme d'évaluation des joueurs d'échecs appelé Elo Algorithm.

C'est l'algorithme Elo expliqué

Si vous pensez toujours que c'est fondamental, essayez ceci. Comment calculez-vous l'âge de quelqu'un lorsque vous recevez un jour de naissance, un mois et une année. Soustrayez l'année de naissance de cette année, puis vérifiez si le mois est inférieur à ce mois et s'il n'est pas soustrait 1.

Ce n'est pas de la magie, c'est un travail difficile et de bonnes mathématiques.

un2three
la source
-4

Ok, je vais probablement obtenir une tonne de votes négatifs pour cela, mais la programmation et les maths sont deux choses totalement indépendantes les unes des autres. Quelqu'un peut être un développeur extraordinaire, ne connaissant que les bases, telles que l'addition, la multiplication et les opérations logiques de base.

La plupart des développeurs ne résolvent pas une seule équation au cours de leur carrière professionnelle, et des éléments tels que la grande notation O peuvent également être compris de manière non mathématique. Vous pensez simplement aux choses, imaginez des bribes dans votre tête, et voilà, vous pouvez dire quel genre de gros O est la chose, si quelqu'un explique ce que sont le journal et le pouvoir.

Parfois, les mathématiques peuvent rendre les choses simples ou vous rendre fier du fait que vous avez prouvé quelque chose, car vous pouvez étendre le sens de la programmation à un domaine mathématique en le nommant mathématiques discrètes et autres, mais en apprenant de nombreuses équations et intégrales différentielles. Comment le prouver, à mon humble avis, n’est-il pas la meilleure idée de ce qu’il faut faire si vous voulez réussir en tant que programmeur.

Au moins je n’ai pas touché aux maths depuis 10 ans, j’ai constamment des disputes avec mes professeurs de maths, et quand j’ai eu besoin d’une mathématique pour le rendu en temps réel, j’ai tout appris du côté des programmeurs, sans prouver aucun théorème, et Pour moi, c’était simple et facile à comprendre par rapport à tout ce que les professeurs de mathématiques avaient à dire: "Vous ne pouvez pas être un bon programmeur si vous ne connaissez pas les mathématiques". Bien sûr que vous pouvez, facile!

Je connais maintenant les bases mathématiques, de sorte que je puisse parler avec les programmeurs d'arrière-plans mathématiques avec tous les différentiels du journal, mais uniquement pour la raison afin qu'ils ne s'évanouissent pas. Parce que ce matériel est inutile 99,9% du temps, et lorsqu'il l'est, il peut être appris 1000 fois plus efficacement du point de vue des programmeurs.

Heck, les programmeurs ont besoin d'au moins 5 ans pour maîtriser un langage de programmation + frameworks + meilleures pratiques. Pourquoi diable devraient-ils apprendre à prouver les théorèmes? Les étudiants en maths font les maths, les programmeurs les font fonctionner, c'est comme ça que ça devrait fonctionner.

Codeur
la source
8
Un enfant dit à sa mère qu'il n'aura pas besoin de maths, car il va grandir et devenir un joueur de baseball millionnaire. Sa mère lui dit "Il te faudra des maths pour compter tes millions".
Nav
2
Désolé, je ne suis pas d'accord. L'étude des mathématiques vous apprend à penser de façon logique. Si vous ne pouvez pas penser logiquement, tout ce que vous allez écrire, c'est un tas de code qui ne s'adapte pas. Je ne dis pas que vous devez être un expert en math ou même en math, et que vous ne devez pas non plus l'utiliser dans votre vie quotidienne. Mais vous devez l’étudier si vous voulez résoudre de vrais problèmes de programmation.
jmort253
2
@ jmort253: étudier les mathématiques ne fait pas de vous un penseur logique. C'est soit quelque chose qui est câblé dans votre esprit, ou pas. J'ai détesté les maths depuis l'école, mais je suis une personne très logique. La programmation n'est pas mathématique, je suis dans la programmation système depuis plus de 10 ans, et je peux le dire avec une confiance totale, et vous pouvez vous attendre à encore moins de mathématique lorsque vous êtes dans le développement Web ou l'administration SQL. Votre tâche n'est pas de développer de nouvelles théories mathématiques, mais de faire en sorte que tout fonctionne avec des ressources limitées de manière maintenable en utilisant les algorithmes et les conteneurs les plus efficaces.
Coder
2
@Nav: Cela a du sens pour tout le monde pour les mathématiques de base, jusqu'aux équations avec x et y. Toutefois, les comptables et les avocats font habituellement partie de vos millions, car sinon, vous manquerez à une loi d'un État qui doit faire quelque chose avec la déclaration et tout perdre, que ce soit dans un sens ou dans l'autre. Vous devriez être assez intelligent pour comprendre ce qui se passe, mais une fois que vous excellez dans quelque chose, il est plus rentable de faire appel à des services spécialisés qui feront le travail pour vous correctement, rapidement et à temps, tout en gardant votre forme au gymnase. garder ce top 5 durement gagné.
Coder
10
Les mathématiques ne sont pas le processus de résolution d'équations. Si les seules mathématiques que vous avez jamais vues sont les mathématiques enseignées à l'école, vous n'avez jamais vu de mathématiques réelles .
doppelgreener