Qu'est-ce qu'un programme ?
Temps de lecture5 minEn bref
Résumé de l’article
Dans cet article, nous expliquons ce qu’est un programme, et introduisons la notion de langages de programmation et leurs spécificités.
Points clés
-
Un programme est une série d’instructions dans une syntaxe donnée qui réalise un algorithme.
-
Le langage de programmation contraint la syntaxe du programme.
-
Choisir un langage de programmation pour un projet dépend de nombreux facteurs, car chaque langage a ses spécificités.
-
Certains langages de programmation sont interprétés, et d’autres sont compilés, pour pouvoir être exécutés par la machine.
Contenu de l’article
1 — Programmes et langages de programmation
Un programme est une traduction d’un algorithme dans un langage particulier, qui impose des règles syntaxiques strictes. Un programme qui a une syntaxe valide selon les règles devrait être compréhensible par un ordinateur. Par conséquent, l’ordinateur sera capable de réaliser les calculs décrits par le programme (qui décrit l’algorithme).
La syntaxe est définie par le langage de programmation. Il existe des centaines de langages de programmation, chacun avec ses propres spécificités. Durant vos études, vous en apprendrez quelques-uns, qui sont pertinents pour les tâches associées. En particulier, vous apprendrez :
-
Python – C’est un excellent langage pour écrire rapidement un programme. Il a une syntaxe très simple, ce qui le rend facile à apprendre. De plus, il a une large communauté, et beaucoup de bibliothèques pour réaliser des opérations standard. En particulier, il est devenu le langage principal pour tout ce qui concerne l’intelligence artificielle. Ce langage sera le langage de choix pour ce semestre.
-
Java – Java est un langage pratique pour écrire des applications complexes, grâce à son typage strict et sa nature orientée objet. Il est très présent dans l’industrie, et souvent requis par de nombreuses entreprises lors du recrutement. Vous l’étudierez au semestre suivant.
-
HTML/PHP/CSS – Ce sont des langages essentiels pour écrire des applications Web. Vous les apprendrez plus tard dans vos études.
-
SQL – Ce langage vous permet d’interroger une base de données, d’y ajouter des entrées ou d’y effectuer des requêtes. Encore une fois, vous l’étudierez plus tard quand vous apprendrez les bases de données.
Selon votre cursus, vous apprendrez également d’autres langages, qui sont adaptés aux spécificités de votre formation.
Pour choisir un langage de programmation pour un projet, il y a de nombreux critères. Voici quelques-uns des principaux :
-
Adaptation – Le langage est-il adapté à votre projet ?
-
Performance – Le langage est-il performant pour votre projet ?
-
Bibliothèques – Le langage offre-t-il des bibliothèques adaptées à votre projet ?
-
Facilité – Le langage est-il facile à apprendre ?
-
Communauté – Y a-t-il une communauté active autour du langage ?
-
Long terme – Ce langage ne sera-t-il utile que pour ce projet, ou allez-vous acquérir des compétences à long terme ?
-
Contexte – Travaillez-vous dans une entreprise qui a déjà du code dans un langage particulier ?
-
Demande – Connaître ce langage améliore-t-il la qualité de mon CV ?
Il y a évidemment de nombreux autres critères.
De plus, vous pouvez trouver beaucoup de pages en ligne qui classent les langages. Voici un exemple, un autre, et encore un autre. Évidemment, selon qui écrit l’article et leurs critères, le classement changera. Cependant, consulter ce type de classements est intéressant pour évaluer la demande du marché pour un langage.
Le choix d’un langage a toujours été une question qui divise les informaticiens. Cependant, avec la récente montée des outils basés sur l’intelligence artificielle tels que GitHub Copilot ou ChatGPT, il est devenu assez facile de traduire un programme d’un langage à l’autre.
Par conséquent, ce qui est important c’est de maîtriser un langage de programmation, et de comprendre ses forces et ses limites. La transition vers un nouveau langage sera alors beaucoup plus facile, quand nécessaire.
2 — Du code source aux programmes
Les machines parlent leur propre langage (abscons), qui est difficile à manipuler en tant que développeur. En tant qu’humains, nous parlons des langages naturels qui sont trop complexes pour les machines, du moins pour l’instant. Les langages de programmation se situent entre les langages naturels et les langages machine. Avec un entraînement spécial, ils peuvent être facilement gérés par les humains et, étant assez stricts et formels, ils peuvent être automatiquement traduits en langages machine.
Les langages de programmation peuvent être discriminés selon la façon dont ils sont in fine traduits en instructions exécutables par la machine. Ils peuvent être interprétés ou compilés. Dans les deux cas, un outil est nécessaire pour effectuer la traduction. Comme illustré dans la figure ci-dessous, le premier cas repose sur un soi-disant interpréteur qui traduit à la volée les instructions écrites dans le langage de programmation concerné en code machine. Le code écrit dans de tels langages, ce qui est le cas de Python, ne peut pas être exécuté sans un interpréteur spécifique. À l’inverse, les langages compilés s’appuient sur un compilateur pour traduire votre code en un programme qui peut ensuite être directement exécuté par votre système d’exploitation hôte. Ainsi, alors que le code écrit dans un langage interprété peut être exécuté sur n’importe quel type de machine, grâce à l’interpréteur, le résultat de la compilation de votre code est directement exécutable mais seulement sur la machine hôte.
Lorsque vous soumettez du code source pour exécution, l’interpréteur Python passe par plusieurs étapes séquentielles pour vérifier la validité de votre code et le traduire en langage machine. Ces étapes sont les suivantes :
-
Analyse lexicale – Pour diviser chaque ligne de code en jetons (tokens), qui sont des unités élémentaires abstraites de code.
-
Analyse syntaxique – Pour structurer les séquences de jetons en une structure arborescente (Arbre Syntaxique Abstrait) qui indique comment grouper les jetons et dans quel ordre ils doivent être exécutés. À cette étape, l’analyseur détecte les erreurs syntaxiques correspondant à des séquences inattendues de jetons.
-
Compilation – Pour traduire votre code source lisible en bytecode qui est plus rapide à exécuter et qui est adapté à la plateforme d’exécution (c’est-à-dire, votre système d’exploitation). Le résultat de cette traduction est stocké dans un fichier (caché) ayant l’extension
.pyc
. -
Exécution – Pour exécuter des instructions spécifiques à la machine afin de lancer les instructions bytecode. Elle est effectuée par un élément central de l’interpréteur Python, la “Machine Virtuelle Python (PVM)”. En tant qu’intermédiaire entre la machine et votre code, la PVM exécute votre code source compilé qui a été complété avec ses dépendances, du code provenant d’autres bibliothèques disponibles.
Pour aller plus loin
- Paradigmes de programmation.
Différentes façons de construire des programmes.