Ce document contient des informations de base pour les animateurs avant qu’ils ne dirigent un atelier avec des participants. Il permet de comprendre la distinction entre algorithme et programme.
Objectif général
Temps de préparation pour l'animateur
Domaine de compétence
Nom de l'auteur
Ressource originellement créée
Introduction
On entend parler des algorithmes très souvent, dans la presse, à la télévision, ils seraient présents dans notre quotidien et seraient à l’origine du fonctionnement de nombreux services : vidéos en ligne, réseaux sociaux publicités … Et pourtant, cette notion n’est pas claire pour tout le monde. Il s’agira dans cette fiche de définir ce que sont les algorithmes ce qui nous amènera à nous pencher sur la diversité des langages de programmation.
Un peu d’histoire…
Le mot « algorithme » tient son origine du nom de Al Khwarizmi (vers l’an 820). Il fut un grand mathématicien persan qui introduisit en Occident la numération décimale et enseigna les règles élémentaires des calculs s’y rapportant.Par essence, les algorithmes vont de paire avec les manipulations des chiffres.
Pourtant, aujourd’hui, ils ne se limitent pas aux domaines numériques mais s’étendent à la manipulation d’objets plus complexes : images, textes, formules logiques…
Définitions
Algorithmes
“Un algorithme, très simplement, c’est une méthode. Une façon systématique de procéder pour faire quelque chose : trier des objets, situer des villes sur une carte, multiplier deux nombres, extraire une racine carrée, chercher un mot dans le dictionnaire. On peut les décrire de manière générale, identifier des procédures, des suites d’actions ou de manipulations précises à accomplir séquentiellement. C’est cela, un algorithme.” (issu de Interstices ).
Une recette de cuisine est un parfait exemple de méthode : dans chaque recette une procédure spécifique dot être suivie, chaque étape de la recette constitue une opération de l’algorithme.
Algorithmes et programme, quelle différence ?
L’algorithme est la méthode globale tandis que le programme relève d’un niveau de détail plus élevé puisque la méthode est transcrite dans un langage de programmation donné.
Langage de programmation
Ce langage est la passerelle entre l’humain et la machine : il permet la retranscription de la méthode en une forme intelligible par la machine. Grâce aux langages de programmation, le.a programmeur.se peut concevoir une méthode que l’ordinateur peut comprendre.
Pourquoi plusieurs langages ?
Le.a programmeur.se cherche à retranscrire à l’ordinateur de la manière la plus précise la méthode qu’il a en tête. Il ou elle est donc à la recherche du langage « optimal », c’est un langage qui remplirait les critères suivants :
- Expressivité : il permet de concevoir clairement et facile des instructions en vue d’opérations complexes.
- Sureté : Il garantit la bonne exécution des programmes. Cela peut passer par des modules de vérification ou une grammaire si claire qu’un bug se repère facilement.
- Efficacité : Il permet l’exécution en temps minimal. Si l’on reprend l’exemple de la recette de cuisine, cela passerait par l’utilisation d’un fouet électrique plutôt que d’un fouet manuel pour monter les blancs en neige.
Écrire un langage de programmation parfait relève de l’impossible, c’est pour cela que la multiplicité permet de choisir en fonction de la méthode le langage qui permettrait de limiter les erreurs d’exécution, d’accélérer la réalisation, de faciliter la retranscription de la méthode etc. Un langage de programmation nouveau correspond à un nouveau compromis, se rapprochant de la solution optimale sans l’atteindre, pour un domaine d’application donné.
Exemples de langages de programmation
- Le Java est un langage de programmation orienté objet qui a été développé par Sun Microsystems dans les années 90. C’est l’un des langages de programmation les plus populaires.
- Le langage C est le langage de programmation le plus vieux et le plus utilisé au monde, créé dans les années 70. Il pose les bases de nombreux autres langages, comme le C#, le Java…
- Le C++ est un langage de niveau intermédiaire qui possède des fonctions orientées objet et qui était à l’origine fait pour améliorer le langage C. Le C++ est le moteur de nombreux programmes très connus comme Firefox, Winamp ou encore ceux de la suite Adobe.
- L’Objective-C est un langage de programmation généraliste et orienté objet utilisé par les systèmes d’exploitation et applications Apple. Il fait fonctionner OS X et iOS ainsi que leurs interfaces de programmation.
- Le C#, prononcer « C sharp », est un langage de programmation à paradigmes multiples développé par Microsoft via la .NET initiative. Il combine des principes du C et du C++ et est un langage généraliste.
- Le Python est un langage de programmation de haut niveau utilisé pour les sites Internet et les applications mobiles.
- Le PHP (pour Hypertext Processor) est un langage de programmation libre utilisé pour le développement de sites Internet et d’applications dynamiques.
- Et tant d’autres ! Ruby, SQL, JavaScript …
Pour plus d’exemples : https://dailygeekshow.com/programmation-internet-langage/
Interfaces de programmation / API ou Application Programming Interface :
L’API est une solution informatique qui permet à des applications de communiquer entre elles et de s’échanger mutuellement des services ou des données. Il s’agit en réalité d’un ensemble de fonctions qui facilitent, via un langage de programmation, l’accès aux services d’une application. Les API peuvent par exemple être utilisées pour déclencher des campagnes publicitaires d’e-mailing de façon automatique sans avoir à passer par la compréhension d’une telle application (c’est le cas avec l’API AdWords de Google, par exemple). (issu de https://www.journaldunet.fr/web-tech/dictionnaire-du-webmastering/1203559-api-application-programming-interface-definition-traduction/ )
Les algorithmes dans notre quotidien
Voici des exemples célèbres d’algorithmes que nous utilisons potentiellement tous les jours.
- PageRank ” de Google. Cet algorithme qui détermine l’ordre d’apparition des pages web lorsque vous réalisez une recherche sur le moteur Google.
- la Timeline de Facebook. Cette méthode qui consiste à vous présenter le contenu sur votre fil d’actualité qui vous correspond le plus selon votre profil, votre réseau d’amis, vos réactions passées etc
- l’algorithme de Round Robin. Il s’agit d’un algorithme largement utilisé dans le domaine de l’informatique, puisqu’il permet aux ordinateurs de déterminer quelles tâches ils doivent effectuer en priorité.
- L’algorithme de Netflix : il personnalise votre page d’accueil pour vous suggérer le contenu que vous êtes susceptible d’apprécier selon votre profil, vos visionnages passés etc.
Pour aller plus loin
- Pour aller plus loin sur la notion d’algorithme. https://interstices.info/quest-ce-quun-algorithme/
- Pour aller plus loin sur la pluralité des langages de programmation : https://interstices.info/pourquoi-creer-des-nouveaux-langages-de-programmation/
- Vidéo : Les langages de programmation expliqués : https://www.youtube.com/watch?v=4-h1DEJ2K3o
- Programme de Class code : https://project.inria.fr/classcode/profiter-de-classcode-quand-on-manque-de-temps/
- Briser les a priori sur la prgrammation : Ma fille mon fils tu grandiras avec le numérique https://pixees.fr/wp-content/uploads/2016/11/Code-RF-114-115-Familles-connect%C3%A9es-13.pdf
- Dis maman, dis papa c’est quoi un algorithme dans ce monde : http://images.math.cnrs.fr/Dis-maman-ou-papa-c-est-quoi-un-algorithme-dans-ce-monde-numerique