What is a program?

Reading time5 min

En bref

Résumé de l’article

Dans cet article, nous expliquons ce qu’est un programme, et introduisons la notion de langages de programmation ainsi que 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.

  • Le choix d’un langage de programmation pour un projet dépend de nombreux facteurs, chaque langage ayant ses spécificités.

  • Certains langages de programmation sont interprétés, d’autres compilés, afin de 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 ces règles devrait être compréhensible par un ordinateur.
Ainsi, 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 dans la nature, chacun avec ses propres spécificités.
Au cours de votre cursus, vous en apprendrez quelques-uns, 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 possède une grande communauté et beaucoup de bibliothèques pour réaliser des opérations standards.
    En particulier, il est devenu le langage principal pour tout ce qui concerne l’intelligence artificielle.
    Ce langage sera celui 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 demandé 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 votre cursus.

  • SQL – Ce langage permet d’adresser une base de données, pour ajouter des entrées ou effectuer des requêtes dessus.
    Là encore, vous l’étudierez plus tard lorsque vous apprendrez les bases de données.

Selon votre cursus, vous apprendrez également d’autres langages, 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 sera-t-il utile uniquement pour ce projet, ou allez-vous acquérir des compétences à long terme ?

  • Contexte – Travaillez-vous dans une entreprise qui possède déjà des codes dans un langage particulier ?

  • Demande – La connaissance de ce langage augmente-t-elle la qualité de mon CV ?

Il y a évidemment beaucoup d’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 peut changer.
Cependant, consulter ce genre de classements est intéressant pour évaluer la demande du marché pour un langage.

Information

Le choix d’un langage a toujours été une question qui divise les informaticiens.
Cependant, avec la montée récente 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 à un autre.

Ainsi, ce qui est important 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, si besoin.

2 — Du code source aux programmes

Les machines parlent leur propre langage (abstrus), qui est difficile à manipuler en tant que développeur.
En tant qu’humains, nous parlons des langues naturelles 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 machines.
Avec une formation spéciale, ils peuvent être facilement gérés par les humains et, étant assez stricts et formels, ils peuvent être automatiquement traduits en langages machines.

Les langages de programmation peuvent être discriminés selon la manière 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 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, comme c’est le cas de Python, ne peut pas être exécuté sans un interpréteur spécifique.
À l’inverse, les langages compilés reposent 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 uniquement 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 :

  1. Lexing – Pour découper chaque ligne de code en tokens, qui sont des unités élémentaires abstraites de code.

  2. Parsing – Pour structurer les séquences de tokens en une structure arborescente (Arbre Syntaxique Abstrait) qui indique comment grouper les tokens et dans quel ordre ils doivent être exécutés.
    À cette étape, le parseur détecte les erreurs syntaxiques correspondant à des séquences inattendues de tokens.

  3. Compiling – Pour traduire votre code source lisible en byte code qui est plus rapide à exécuter et qui est adapté à la plateforme d’exécution (i.e., votre système d’exploitation).
    Le résultat de cette traduction est stocké dans un fichier (caché) ayant l’extension .pyc.

  4. Executing – Pour exécuter des instructions spécifiques à la machine afin de faire tourner les instructions byte code.
    Cela est réalisé par un élément central de l’interpréteur Python, la “Python Virtual Machine (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, code provenant d’autres bibliothèques disponibles.

Pour aller plus loin

On dirait que cette section est vide !

Y a-t-il quelque chose que vous auriez aimé voir ici ?
Faites-le nous savoir sur le serveur Discord !
Peut-être pouvons-nous l’ajouter rapidement.
Sinon, cela nous aidera à améliorer le cours pour l’année prochaine !

Pour aller au-delà