62 votes

Quels sont les concepts mathématiques de base qu'un bon développeur devrait connaître?

Depuis l'obtention d'une très petite école en 2006 avec un mal de forme et obsolète programme (je suis un étranger et n'en sait pas plus à l'école à l'époque), je me suis rendu compte que j'ai raté beaucoup de concepts de base de mathématique & logiciels de point de vue qui sont pour la plupart les fondations d'autres concepts.

I. e. J'ai essayé d'écouter/regarder l'open courseware du MIT sur l' Introduction aux Algorithmes mais il a rapidement réalisé qu'il me manquait plusieurs concepts mathématiques pour mieux comprendre le cours.

Alors, quels sont les principaux concepts mathématiques un bon ingénieur logiciel devrait savoir? Et quels sont les livres/sites que vous me recommander?

62voto

Gulzar Nazim Points 35342

Math pour les programmeurs . Une bonne lecture.

19voto

joel.neely Points 17059

L'algèbre booléenne est fondamentale pour la compréhension des structures de contrôle et de refactoring. Par exemple, j'ai vu beaucoup de bugs causés par des programmeurs qui ne connaissent pas (ou ne pouvait pas l'utiliser) la loi de deMorgan. Comme autre exemple, combien de programmeurs immédiatement reconnaître qu'

if (condition-1) {
    if (condition-2) {
        action-1
    } else {
        action-2
} else {
    action-2
}

peut être réécrit comme

if (condition-1 and condition-2) {
    action-1
} else {
    action-2
}

Les mathématiques discrètes et la combinatoire sont extrêmement utiles dans la compréhension de la performance de divers algorithmes et structures de données.

Comme mentionné par Baltimark, induction mathématique est très utile dans le raisonnement sur les boucles et la récursivité.

La théorie des ensembles est la base des bases de données relationnelles et SQL.

Par analogie, permettez-moi de souligner que les charpentiers ont systématiquement recours à une variété de règle-de-pouce techniques dans la construction des choses comme les toits et les escaliers. Cependant, une connaissance de la géométrie permet de résoudre les problèmes pour lesquels vous ne disposez pas d'un "boîtes" règle du pouce. C'est comme l'apprentissage de la lecture par rapport à la phonétique de la vue de la reconnaissance d'un vocabulaire de base. Plus de 90% du temps il n'y a pas beaucoup de différence. Mais lorsque vous exécutez dans une situation inconnue, il est TRÈS agréable d'avoir les outils pour travailler sur la solution vous-même.

Enfin, la rigueur, la précision requise par les mathématiques est très utile à la préparation de la programmation, indépendamment de la technique spécifique. Encore une fois, beaucoup de bugs de programmation (ou même cahier des charges) que j'ai vu dans ma carrière d'avoir bâclé la pensée à leur cause.

10voto

Anders Sandvig Points 7964

Dans l'ordre d'importance:

  • De comptage (nécessaire pour les boucles)
  • Addition, soustraction, multiplication, division.
  • L'algèbre (seulement vraiment nécessaire de comprendre l'utilisation de variables).
  • L'algèbre de boole, logique booléenne et binaire.
  • Les exposants et les logarithmes (c'est à dire comprendre O(n) la notation).

Quelque chose de plus avancé que celui qui est généralement de l'algorithme ou spécifiques à un domaine spécifique. En fonction de la zone dans laquelle vous êtes intéressé, celui-ci peut également être utiles:

  • L'algèbre et la trigonométrie (visualisation 3D)
  • Les mathématiques discrètes et de la théorie des ensembles (conception de base de données, la conception d'un algorithme, la conception du compilateur).
  • Statistiques (bien, à des fins statistiques et/ou scientifiques/économiques applications. éventuellement aussi utile pour la conception d'un algorithme).
  • Physique (pour les simulations).

Fonctions de compréhension est également utile (ne me souviens pas ce que le terme mathématique est pour ça), mais si vous savez comment le programme que vous avez sans doute déjà fait.

Mon point est: Un enfant de dix ans devrait savoir assez de mathématiques pour être en mesure de comprendre la programmation. Il n'y a pas vraiment beaucoup de maths de base pour la compréhension des choses. Il est tout au sujet de la logique, vraiment.

9voto

Baltimark Points 2600

La "preuve par induction" est un concept mathématique fondamental que les programmeurs doivent connaître.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X