J'ai trouvé un site Web disant que le calcul et l'algèbre linéaire sont nécessaires pour la programmation système.
Pour autant que je sache, la programmation système concerne osdev, les pilotes, les utilitaires, etc. Je n'arrive pas à comprendre comment le calcul et l'algèbre linéaire peuvent être utiles à cet égard. Je sais que le calcul a plusieurs applications en science, mais dans ce domaine particulier de la programmation, je ne peux tout simplement pas imaginer à quel point le calcul peut être si important.
Les informations étaient sur ce site: http://www.wikihow.com/Become-a-Programmer
Edit: Certaines réponses ici expliquent la complexité et l'optimisation de l'algorithme. Lorsque j'ai posé cette question, j'essayais d'être plus précis sur le domaine de la programmation du système. La complexité et l'optimisation des algorithmes peuvent être appliquées à n'importe quel domaine de la programmation, pas seulement à la programmation du système. C'est peut-être la raison pour laquelle je n'ai pas pu formuler une telle réflexion au moment de la question.
la source
Réponses:
J'imagine que ce n'est pas très important si vous écrivez des utilitaires non GUI au-dessus d'un système d'exploitation moderne sans travailler sur ses composants internes. C'est probablement une autre histoire si vous travaillez à changer un système d'exploitation moderne ou à en développer un nouveau.
Si vous travaillez avec du matériel vidéo ou un système de fenêtrage en métal nu, vous aurez besoin de connaissances en algèbre linéaire pour mettre à jour efficacement les graphiques. Je ne me suis pas regardé, mais je parie que vous pouvez trouver des exemples dans le code source de X, KDE et Gnome.
Si vous travaillez avec du matériel concernant le traitement numérique du signal, le calcul sera très important. J'imagine qu'il y a des appareils qui font leur gros travail avec le processeur du système au lieu d'un microprocesseur local et ceux-ci s'interfacent souvent avec des systèmes électriques analogiques.
Le calcul joue également un rôle important dans l'analyse des performances en plus de l'algèbre linéaire lors de la tentative d'ajustement de la courbe aux données.
la source
Le commentaire de SomeKittens est juste sur l'argent: vous avez besoin de calcul et d'algèbre linéaire parce que ces cours changent la façon dont vous pensez et la façon dont vous comprenez le monde. L'algèbre linéaire consiste à mapper d'un domaine à un autre; le calcul couvre le comportement des fonctions. Ce sont eux-mêmes de puissants outils, mais les techniques que vous apprenez en étudiant ces domaines font également partie de votre image mentale du monde.
Vous avez également besoin de ces cours parce que les gens s'attendront à ce que vous puissiez penser en ces termes. Je ne vois pas souvent mes collègues prendre la dérivée d'un polynôme sur leurs tableaux blancs, mais je vois souvent des croquis de fonctions avec la tangente dessinée à un point intéressant, ou la zone sous la courbe ombrée. Nous ne nous soucions pas suffisamment des valeurs réelles pour prendre la peine de les calculer, mais il est essentiel de comprendre comment les valeurs changent et cela fait partie des conversations quotidiennes.
Tout diplôme de premier cycle en informatique nécessitera du calcul, de l'algèbre linéaire, des statistiques, de la logique et d'autres cours de mathématiques non pas parce que les programmeurs doivent appliquer les techniques directement et régulièrement (bien qu'ils puissent, selon ce qu'ils font), mais parce que vous en avez besoin connaissances pour comprendre le matériel qui vient plus tard.
la source
Je vais continuer et dire que je ne pense pas que le calcul ou l'algèbre linéaire soient susceptibles d'être importants pour la programmation des systèmes.
Je pense certainement que le calcul et l'algèbre linéaire valent la peine d'être appris en général - je suis un mathématicien! Et, comme le soulignent d'autres réponses, il existe une pertinence indirecte, car l'analyse des performances et la conception d'algorithmes peuvent utiliser des mathématiques avancées. Cependant, je ne pense pas que la programmation système soit plus dépendante de ces types de mathématiques que la plupart des autres domaines qui ne sont généralement pas considérés comme mathématiques.
la source
Je soupçonne que c'est vrai sur les bords. Les programmeurs système doivent être beaucoup plus préoccupés par les performances et la fiabilité, donc l'analyse des algorithmes peut être importante, et le calcul est parfois nécessaire pour les preuves de l'analyse Big-Oh. Des sujets comme la théorie des files d'attente et l'optimisation discrète (c'est l'optimisation mathématique et non l'optimisation du code) peuvent également jouer un rôle. Cependant, je pense que cela s'appliquerait principalement aux personnes travaillant à la pointe des systèmes d'exploitation et des protocoles réseau, pas tellement à la personne travaillant sur le pilote USB 3.0.
la source
Votre définition de la programmation des systèmes correspond assez bien à la réponse de Wikipedia.
Si vous pensez à ce qu'il offre - c'est-à-dire. une interface logicielle dans le matériel, alors il commence à comprendre pourquoi le calcul et l'algèbre linéaire sont des compétences pratiques à avoir.
Pour résumer cette interface de bas niveau, vous devez comprendre le fonctionnement de l'appareil. Les appareils électroniques sont toujours liés par les lois de la physique. Le calcul et l'algèbre linéaire fournissent un moyen de modéliser le comportement de l'appareil. La modélisation de l'appareil vous permet de fournir un service dans ses fonctionnalités.
Cela étant dit, ces deux domaines ne sont pas la clé de voûte de la programmation système. Je connais pas mal d'EE qui ne réussissaient pas aussi bien avec le calcul et l'algèbre linéaire, mais peuvent toujours expliquer ce que l'appareil fait assez succinctement.
la source
Les applications Web générales et / ou la programmation administrative n'impliquent pas beaucoup d'application d'algèbre linéaire ou de calcul, mais de nombreux domaines spécialisés le font. Si vous traitez avec la géométrie, vous rencontrerez forcément l'algèbre linéaire. La plupart des programmes de physique traitent aussi bien de l'algèbre que du calcul. Ainsi qu'à peu près tout ce qui a à voir avec la manipulation des formes d'onde, comme la programmation sonore et radio. En général, il est plus important de comprendre les mathématiques discrètes qui, entre autres, traitent de la théorie des ensembles, de la théorie des graphes et de la logique formelle (booléenne) qui sont utiles dans de nombreuses applications comme la gestion de l'information, les bases de données et d'autres endroits où les données et / ou la logique se combinent . Dans le cas de la programmation de systèmes, je ne vois pas beaucoup d'applications.
la source
Comme d'autres l'ont mentionné, tout cours de mathématiques à l'université peut affiner vos compétences en résolution de problèmes et en raisonnement déductif. Celles-ci sont importantes pour presque tout le monde.
Mais parfois, connaître une algèbre linéaire peut être utile, en particulier pour de très bonnes idées commerciales .
la source
Avec le calcul, c'est assez facile, dès que l'on regarde de plus près le contenu du cours . Il est étroitement lié à la complexité de l'algorithme, à la notation Big-O - des trucs comme ça, assez fondamentaux en programmation.
Les équations sont ce que vous obtenez lorsque vous estimez la complexité d'un algorithme. Les boucles imbriquées à trois niveaux de
0
àN
sont N 3 , les boucles imbriquées à deux niveaux sont N 2 , une est N. L'évaluation que vous obtenez pourrait ressembler à (N 3 + 2 * N 2 + N) - c'est une équation.Maintenant, si vous voulez mieux comprendre la vitesse à laquelle le temps d'exécution augmentera lorsque N augmentera, cela est étroitement lié aux dérivés / différenciation. Les autres parties du calcul que vous pouvez trouver utiles sont les limites et l'analyse asymptotique - celles-ci vous conduiront à comprendre la notation Big-O, un meilleur score lors des entrevues de programmation et, éventuellement, une meilleure programmation des systèmes.
Quant à l'algèbre linéaire , ici les applications de programmation vous tirent dessus dès la première image.
Si jamais vous devez gérer des graphiques raster (par exemple dans des pilotes vidéo), des images comme ci-dessus vous arriveront dans vos pires cauchemars.
la source