Algorithmes
Published: 2022-02-24 13:31:23

**Qu'est-ce qu'un algorithme ? Pourquoi est-ce si vital pour vous en tant que développeur ou quelqu'un qui cherche à entrer dans la technologie ?**

Avant mon premier cours à l'université, j'avais déjà acheté mes manuels et étudié, et pour être honnête, rien n'avait de sens pour moi.

Après l'introduction habituelle de mon professeur, il a demandé si quelqu'un savait ce qu'étaient les algorithmes. Nous avions des gens brillants qui ont déjà bourré le mot et l'ont juste recraché. Il a ri et a fait une déclaration que je ne pourrai jamais oublier. Il a dit: "Une chose que vous devez tous garder à l'esprit est que les algorithmes sont différents pour différentes personnes et différents cas, tout ce qui compte, c'est que vous résolviez le problème correctement et efficacement".

Vous n'avez peut-être pas de formation en technologie. Vous avez peut-être étudié l'informatique, mais le terme Algorithme n'avait pas tellement de sens pour vous, et c'est pourquoi vous êtes ici pour apprendre le mot le plus simplement.

Je sais que tu as des questions; allons droit au but 

## **Définir un algorithme**

> De manière informelle, un algorithme est une procédure de calcul bien définie qui prend une valeur ou un ensemble de valeurs en entrée et produit une valeur ou un ensemble de valeurs en sortie.
> 
>**Par : Introduction à l'algorithme du MIT**

Cependant, les algorithmes ne se limitent pas aux seuls ordinateurs. Chaque jour, en tant qu'humains et même robots, vous utilisez des algorithmes. Les algorithmes sont des étapes bien définies nécessaires pour accomplir une tâche.

Vous pouvez y penser de cette façon : si vous avez déjà préparé une tasse de café, de thé, de chocolat chaud, suivi les instructions de Google Maps, ou même une nouvelle recette de crêpes, alors vous avez utilisé un algorithme.

Un algorithme est juste un nom fantaisiste et ringard pour une recette ou un guide étape par étape pour accomplir une tâche.

Essayons un exemple : comment allez-vous préparer une tasse de café ?

J'irai en premier :


- 
Étape 1 : Prenez une tasse à café . 

- 
Étape 2 : Lavez la tasse.
 
- 
Étape 3 : Procurez-vous une bouilloire.

- 
Étape 4 : Mettez de l'eau dans la bouilloire.
 
- 
Étape 5 : Branchez la bouilloire et portez l'eau à ébullition.
 
- 
Étape 6 : Éteignez la prise et débranchez la bouilloire. 

- 
Étape 7 : Mettez deux cuillerées de café dans une tasse. 

- 
Étape 8 : Versez de l'eau pour remplir ⅔ de la tasse.

- 
 Étape 9 : Servez votre café.

Notez que vous devez également garder à l'esprit si la personne a une cafetière, si la personne a besoin d'utiliser des grains de café ou si elle a juste dû verser de la poudre dans une tasse et faire une tasse. Dans ce cas, votre algorithme peut avoir des boucles car toute personne l'utilisant peut avoir besoin de répéter certaines étapes ou de revenir en arrière pour vérifier certaines étapes avant de continuer.

Cependant, comme mentionné précédemment, de nombreux éléments doivent être pris en compte avant d'écrire un algorithme. Les algorithmes sont plus efficaces lorsqu'ils sont choisis spécifiquement pour un problème spécifique.

Ok, c'est assez de grands mots; décomposons-le.

**Algorithmes comme si j'avais 5 ans**

Lors de l'écriture d'algorithmes, il est essentiel de savoir que vous pourriez avoir besoin d'outils, de systèmes et d'autres approches supplémentaires pour atteindre votre objectif pour différents problèmes. Par exemple, vous aurez besoin de farine pour faire un gâteau, mais que se passe-t-il si vous utilisez de la farine à gâteau et que vous ne spécifiez pas le type de farine à utiliser dans votre recette et qu'un débutant prend cette recette et utilise de la farine de haricots ?

Ce qui est bien, mais cela a-t-il résolu le problème de la personne : préparer un délicieux gâteau d'anniversaire ? Non! Oui, ils peuvent se retrouver avec quelque chose de comestible, mais ce n'est pas le gâteau qu'ils voulaient.

Un algorithme est comme un plan esquissé. Un plan détaillé vous donne une idée de ce que devrait être votre appartement de rêve. Cela facilite la tâche de dessiner le plan réel.

## Algorithmes en technologie

Imaginez un monde où les ordinateurs seraient infiniment rapides, et vous pourriez utiliser autant d'espace, et cela n'aurait pas d'importance. Maintenant, si nous avions un tel luxe de temps, de vitesse et d'espace, peut-être que les algorithmes n'auraient pas autant d'importance. Vous pouvez choisir l'algorithme le plus pratique que vous pouvez implémenter et exécuter avec lui.

Parce qu'après tout, peu importe l'algorithme que vous utilisiez, et la mémoire n'était pas un problème.

Mais nous vivons dans un monde où les ordinateurs sont rapides mais pas infiniment rapides, la mémoire peut être peu coûteuse, mais elle n'est pas exactement gratuite. Par conséquent, le temps de calcul et l'espace en mémoire sont des ressources que vous devez utiliser à bon escient, et des algorithmes efficaces en termes d'espace et de vitesse de temps vous aideront à y parvenir.

**Pourquoi les algorithmes sont-ils si importants ?**

Oui, presque toutes les entreprises veulent que vous passiez des tests sophistiqués d'algorithmes et de structure de données sur Turing, hacker midi ou Leetcode avant de vous embaucher. Parler à certains recruteurs m'a aidé à comprendre pourquoi c'est essentiel pour eux. Comprendre les algorithmes et les structures de données aide le développeur à former une excellente base de bonnes pratiques d'ingénierie logicielle et un aperçu de l'approche des problèmes techniques.

Prenons un exemple : considérons un produit numérique comme Bolt qui détermine comment se déplacer d'un endroit à un autre. Oui, la carte montre les itinéraires disponibles et met parfois en évidence certains défis. Cependant, un algorithme est requis pour certaines opérations telles que "trouver l'itinéraire le plus court" vers votre destination (probablement en utilisant un algorithme de chemin le plus court) et le rendu des cartes en fonction de facteurs tels que le trafic, etc.

Un autre exemple peut être lorsque vous décidez de conduire de l'île de Lagos au continent ; vous voudrez peut-être trouver des itinéraires à partir d'un site Web ou même utiliser un GPS ou Google Maps pour trouver votre itinéraire le plus court et éviter le trafic de Lagos.

La mesure de l'efficacité d'un algorithme est la vitesse, c'est-à-dire le temps qu'il faut à un algorithme pour produire son résultat. Il est également essentiel de savoir qu'il existe certains problèmes pour lesquels aucune solution efficace n'est connue, et dans ce cas, vous voudrez peut-être essayer et être le prochain grand nom de la technologie lorsque vous trouverez un moyen efficace.

Une liste de mes ressources préférées pour apprendre les algorithmes :

Il existe quelques ressources sur Internet pour vous aider à démarrer avec les algorithmes. Cependant, je recommande les ressources suivantes que j'ai utilisées.

Algorithme pour les nuls de **John Paul Mueller** et **Luca Massaron**

[Cours CS50 sur l'algorithme] (youtube.com/watch?v=IFPedSR9wNU), et

Substack de Richards et newsletter hebdomadaire. Richard est un ingénieur  chevronné de l'ingénierie logicielle chez SEND Freight. Dans ces newsletter hebdomadaire, Richard prend le temps d'expliquer les algorithmes et les structures de données à ses lecteurs comme s'ils avaient 5 ans. 

**En résumé, un algorithme peut être défini comme un processus étape par étape de réalisation d'une tâche.**

Les développeurs utilisent des algorithmes et des structures de données tous les jours de leur vie professionnelle. Et si, comme moi, vous avez été assez curieux pour ouvrir cet article et essayer de comprendre le terme, j'espère que cela vous a facilité la compréhension.

Avoir une bonne compréhension des algorithmes, de ce qu'ils sont et savoir quand les appliquer et comment les appliquer est essentiel pour produire un logiciel qui fonctionne avec précision et efficacité.