Comment les programmeurs de logiciels créent-ils des algorithmes ?


Après plusieurs années d'éducation intensive, y compris le calcul à l'université, nous utilisons les compétences que nous avons apprises pour résoudre des problèmes. En comprenant le fonctionnement de l'unité centrale, en ayant suivi des cours pour comprendre comment les différents langages de programmation fonctionnent avec le matériel ainsi que la logique mathématique, nous sommes capables d'imaginer des algorithmes élégants pour résoudre des problèmes complexes et faire faire aux machines ce que nous voulons qu'elles fassent.


Il existe une méthode appelée O(x) où x est le facteur d'efficacité du code. lorsque x est grand, c'est un mauvais code Pour un traitement intensif. Considérez la recherche de données dans une base de données et pensez à la façon dont vous pourriez chercher une carte de numéros spéc dans un jeu de 100. Supposons que les cartes soient dans l'ordre et que vous vouliez chercher la carte numéro 75. Comment la trouveriez-vous rapidement ?

Vous. pourriez commencer au début ou à la fin du paquet et aller jusqu'à ce que vous la trouviez. Il s'agit d'une recherche linéaire, O(100). Vous regarderez toutes les cartes jusqu'à ce que vous trouviez la carte choisie.


Portons x à une très grande valeur. Je travaille avec des bases de données avec des centaines de milliards d'enregistrements. Une recherche linéaire prendra des heures, sauf si ce que je cherche se trouve au début de la recherche.

X est le nombre d'enregistrements. Maintenant, si je construis un index dans une structure de données efficace, je peux faire de O(x) en O( log base 2(x))En le construisant dans un arbre binaire.

Ce que cela signifie est nous que, étant donné Log base 2 de x, je peux trouver mon enregistrement en fewet jeté un coup d'œil aux données.

Avez-vous déjà joué à 21 Questions ? Même concept. Certains pensent à quelque chose. Vous posez uniquement des questions de type oui/non. Si vous faites attention à ce que vous demandez, vous pouvez obtenir ce à quoi votre ami pense en 21 questions ou moins.

Log ^2(1000000000) est de 20,8. Cela signifie que dans un milliard d'enregistrements, vous n'avez pas besoin d'en regarder plus de 21 pour trouver le vôtre.

A l'université, il y a des cours qui enseignent les algorithmes et l'optimisation. Nous utilisons ces outils et les intégrons dans nos jorbs afin de créer des logiciels élégants pour effectuer des tâches très complexes.

Ces dernières années, les ingénieurs logiciels de la mission Mars ont pu positionner un satellite au-dessus de mars pour photographier l'atterrissage du rover. En direct. C'était peut-être l'exploit d'ingénierie logicielle le plus impressionnant que j'ai jamais vu. Imaginez toutes les variables allant f un vaisseau spatial de la Terre voyageant à des milliards de mikes pendant plusieurs mois pour diffuser en direct à la télévision l'atterrissage de l'engin lI've!

Imaginez les algorithmes nécessaires pour guider un booster de fusée SpaceX pour qu'il atterrisse sur une petite plate-forme d'atterrissage flottante automatiquement et avec précision à chaque fois, quel que soit le point de levage ou de toucher ? Ce seraient des défis très difficiles à relever et profondément gratifiants.

Il s'agit là d'un véritable défi.