Une fois n’est pas coutume, commençons par nous demander quel est l’intérêt d’apprendre l’algorithmique, et surtout quels sont les différents sujets couverts par le domaine.
Le monde de l'informatique regorge de mots à la mode : IA, machine learning, cloud, informatique quantique, etc. Un mot en particulier est utilisé partout en informatique, c’est algorithme.
Concrètement, les algorithmes sont simplement une série d'instructions qui sont suivies, étape par étape, pour faire quelque chose d'utile ou résoudre un problème. Vous pourriez considérer une recette de gâteau comme un algorithme pour faire un gâteau, par exemple.
Alors pourquoi relions-nous toujours ce mot à l’informatique, et aux ordinateurs en particulier ? Tout simplement parce qu’un algorithme est avant tout un ensemble de méthodes utilisées par un ordinateur pour résoudre un problème. En fait, vous allez réfléchir aux différentes manières de résoudre un problème, puis faire en sorte que l’ordinateur le fasse pour vous. Pourquoi ? Ce n’est pas uniquement parce que nous sommes des fainéants ! Un ordinateur a des capacités étendues que nous, humains, ne pouvons égaler.
Avant tout, il ne se plaindra pas si vous lui demandez de réaliser des actions répétitives. Au contraire ! Déplacer vos 2 000 dernières photos de voyage une à une ? Facile ! Chercher dans ce PDF de 200 pages toutes les occurrences de l’expression "max tout puissant" ? Du gâteau ! Imaginez si vous deviez en faire de même ! Transférer 2 000 photos d’un album papier à un autre vous ennuierait à mourir...
Une seconde raison, et non des moindres : l’ordinateur va bien plus vite que nous. Il est plus efficace ! Essayez de calculer mentalement 10 x 20 x 30 x 40, et comparez votre temps de calcul à celui d’un ordinateur. Imbattable !
Décomposons la vie de tous les jours sous forme d’algorithme
Nous utilisons tous les jours des algorithmes quand nous avons plusieurs possibilités à étudier et qu’il nous faut faire un choix. Prenons un exemple. Vous allez rendre visite à votre grand-mère, mais, cornebleu, il y a des travaux sur la route et vous devez changer votre trajet habituel. Aujourd’hui, vous lanceriez très certainement votre GPS pour que l’ordinateur, notre ami, vous indique quelle est la route la plus rapide pour bien vite manger la tarte aux pommes qui doit déjà être sortie du four (il y a certaines priorités dans la vie !).
Qu’auriez-vous fait sans ordinateur ? Vous auriez déplié une carte papier et déterminé l’itinéraire idéal en prenant en compte certains paramètres : vitesse maximale autorisée sur chaque portion de route, péages, position actuelle. Vous auriez ensuite choisi le trajet le plus rapide en fonction de tous ces paramètres.
Bravo, vous pourriez remplacer l’ordinateur ! Mais vous auriez certainement réfléchi dix bonnes minutes... laissant ainsi à la tarte le temps de refroidir, seule et abandonnée dans la cuisine de votre grand-mère.
Heureusement, des informaticiens ont confectionné un algorithme et l’ont implémenté dans le petit boîtier sur votre pare-brise !
Les algorithmes du quotidien
Pourquoi apprendre l’algorithmique ? Car ses concepts vous ouvrent des portes vers bien des domaines, allant de la recherche en ligne à la conception de jeux vidéo.
Le tri algorithmique des sites web
Vous avez certainement remarqué que Facebook adapte votre fil d’actualité en fonction de votre activité. Votre page d’accueil n’affiche pas les dernières publications de vos amis, mais bien ce que Facebook considère comme étant le contenu le plus pertinent pour vous, compte tenu de votre activité.
De même, lorsque vous effectuez une recherche sur Google, vous vous attendez à ce que la page affiche les résultats les plus pertinents, et non les derniers sites parus sur le domaine. Google a donc besoin d’un modèle pour déterminer comment calculer la pertinence de ces résultats en prenant en compte plusieurs paramètres tels que votre historique de recherche, le nombre de visites sur un site, le nombre de liens pointant vers le site, etc.
Ces deux exemples utilisent des méthodes de machine learning (ou apprentissage automatique) extrêmement intéressantes.
Les algorithmes appliqués à la géolocalisation
Votre GPS intègre un algorithme qui lui permet de déterminer le plus court chemin entre votre position actuelle et celle que vous lui avez indiquée. De même, les nombreux sites de réservation en ligne intègrent un algorithme qui gère les places libres dans un train, mais également les correspondances et les problèmes éventuels (annulation, par exemple).
Les algorithmes sont également utilisés dans des logiciels de reconnaissance d’image ou par votre banque lorsque vous effectuez des paiements sur Internet (détection de fraude). C’est très puissant !
Nous pourrions trouver bien plus d’exemples d’algorithmes intégrés à notre vie quotidienne. Leur point commun : répondre à une problématique que nous nous posons par l’utilisation d’un programme.
Qu’est-ce qu’un programme ?
Un programme est un ensemble d’instructions exécutables par un ordinateur et qui permet à ce dernier de répondre à un problème que nous nous posons. Un programme est essentiellement créé à l'aide d’un ensemble d'algorithmes. Par exemple, imaginons que je souhaite écrire une nouvelle version du dernier box-office de l’année. Je peux bien sûr utiliser une feuille et un crayon, mais comment la partager avec des amis ? Que se passe-t-il si je renverse mon café dessus ? Si un ami perd le manuscrit ? Etc. Après avoir pleuré toutes les larmes de mon corps, et m’être juré de ne plus boire de café ni de fréquenter d’humains pendant le restant de mes jours, je vais certainement allumer mon ordinateur et utiliser Microsoft Word.
D’ailleurs, comment fonctionne un programme ? De manière assez simple : il prend un ensemble de données en entrée, exécute des instructions puis retourne des données en sortie.
Tiens, cela me rappelle la manière dont nous communiquons ! Si mon père me demande de mettre la table, il va me donner (en entrée) des assiettes, je vais mettre la table et lui dire (en sortie) : "La table est mise !".
Reprenons Microsoft Word et l’action d’enregistrer un document. Lorsque vous cliquez sur "Enregistrer", Word prend (en entrée) le contenu non enregistré (texte, images...), l’enregistre, puis vous affiche un message de confirmation (en sortie).
Les actions effectuées par un programme sont des instructions.
On distingue trois grandes catégories d’instructions :
Les opérations de base : addition, soustraction, multiplication, division... Exemple : "tire" + "-" + "bouchon" => "tire-bouchon".
L’exécution conditionnelle : si (condition), alors (fais ça), sinon (fais ça). Exemple : si je suis connectée, affiche "Salut Céline !".
L'itération : répéter une instruction, un nombre déterminé de fois. Exemple : affiche chaque photo de mon album "Les rappeurs de Neuilly".
En résumé
Un algorithme est une suite d'instructions à suivre pour résoudre un problème.
Chaque appareil informatique utilise des algorithmes pour exécuter ses fonctions sous la forme de logiciels ou d'applications.
Les algorithmes prennent l'entrée et exécutent l’ensemble des instructions avec cette information pour générer une sortie.
Un programme est essentiellement créé à l'aide d’un ensemble d'algorithmes.
Vous avez découvert dans ce chapitre la manière dont fonctionne un programme, et notamment l'intérêt des algorithmes dans un programme. Découvrez dans le prochain chapitre comment le structurer en résolvant un problème !