Concepts de la programmation

Concepts de la programmation

Introduction

Qu'est ce qu'un Programme ? Qu'est ce qu'un langage de programmation ? Comment peut-on communiquer avec un ordinateur ? Autant de questions que nous nous posons quand on débute en programmation. Dans cet article nous allons répondre à toutes ces questions en introduisant les concepts généraux de la programmation. Ensuite nous discuterons des différents types de langages de programmation.

Définition de la programmation

Dans le contexte de l'interaction homme-machine, la programmation désigne une séquence d'instructions pour dire à un ordinateur de réaliser une tâche spécifique. Ainsi un programme est une séquence d'instructions pour un ordinateur. Ces instructions sont écrites avec un ensemble de notations propres à un langage de programmation. Comme pour tout langage, un langage de programmation est un support de communication. En l'occurrence il permet une communication entre une personne et un ordinateur. Les ordinateurs comprennent seulement le langage binaire, qui est une suite de 0 et de 1. Cette séquence de 0 et de 1 constitue le langage machine. Chaque ordinateur a un ensemble prédéfini d'instructions, lié au processeur, qu'il peut réaliser et qui lui sont spécifiques. Par exemple 0010 peut avoir une signification pour un ordinateur A et avoir une autre signification pour une machine B. De ce fait les programmes écrits en langage machine dépendent de la machine sur laquelle il va s'exécuter. C'est pour cette raison que le langage machine est aussi appelé le langage natif ou encore code machine. Les programmes écrits en langage machine sont très difficiles, voire impossibles, à écrire, lire, comprendre et modifier.

Voici un exemple d'addition de 15 et 12 en langage machine :

0010010010  10010100000100110
0001000100  01010010001001010

L'exemple ci-dessus montre bien à quel point un programme en langage machine peut être difficile à lire et à comprendre. On peut aisément imaginer ce que sera un programme pour réaliser une tâche encore plus complexe. Vu que les ordinateurs sont là pour nous faciliter la vie, un langage plus simple à lire, écrire et à comprendre par un humain a été inventé. Il s'agit de l'assembleur. L'assembleur utilise des symboles dits mnémoniques représentant les suites d'instructions du programme. Ces suites de mnémoniques seront ensuite traduites en langage machine pour être exécutées par l'ordinateur. Voici un exemple d'addition de 15 et 12 en assembleur :

li $t1, 15
add $t0, $t1, 12

Si nous comparons les deux programmes écrits en langage machine et en assembleur, nous nous rendons compte que celui écrit en assembleur est plus facile à écrire, lire et comprendre que celui écrit en langage machine. Le langage machine et l'assembleur sont considérés comme des langages de bas niveau. Ils sont appelés ainsi car le programmeur doit connaître les détails de l'ordinateur pour écrire un programme. Par conséquent le besoin de créer des langages qui cachaient les détails de bas niveau des ordinateurs s'est fait ressentir. Ce besoin donna naissance aux langages de haut niveau comme COBOL, Pascal, FORTRAN, C, C++, Java, C# et bien d'autres encore. Ces langages de haut niveau utilisent des mots en anglais, des notations mathématiques, des signes de ponctuation pour constituer le code source d'un programme. Ces programmes sont plus proches du langage écrit que les humains ont l'habitude d'écrire et à lire. Par exemple notre exemple d'addition de deux entiers devient beaucoup plus simple avec un langage de haut niveau :

int x = 15 + 12;

Les langages de programmation peuvent être classés soit en langage de bas niveau ou de haut niveau. Ils peuvent être également classés suivant les paradigmes de programmation.

Les paradigmes de Programmation

La programmation sert à résoudre des problèmes avec des ordinateurs.Un paradigme de programmation est la manière de penser et conceptualiser une solution à un problème. C'est la phase d'analyse afin de résoudre un problème en proposant une solution.Un langage de programmation fournit la possibilité d'implémenter un paradigme de programmation. Un programme a deux composants : les données et un algorithme. La donnée est utilisée pour représenter l'information. L'algorithme est un ensemble d'étapes, manipulant les données pour arriver à une solution pour un problème. Chaque paradigme de programmation a une manière particulière de combiner les données et la composante algorithmique.

Voici la liste des paradigmes de programmation les plus connus :

La programmation Impérative

La programmation impérative est un paradigme de programmation qui décrit un programme comme une séquence de commandes manipulant des données selon un algorithme. Les données à un moment donné constituent l'état du programme. Ce dernier change au fur et à mesure que les commandes sont exécutées dans un ordre spécifié par l'algorithme. Les données sont stockées dans la mémoire de l'ordinateur. Dans ce paradigme, le programmeur a besoin de spécifier toutes les étapes pour résoudre un problème. FORTRAN, COBOL, et langage C sont des langages de programmation supportant la programmation impérative.

La programmation Procédurale

La programmation procédurale est identique à la programmation impérative avec une différence : elle combine plusieurs commandes dans un bloc appelé procédure. Pour exécuter les commandes contenues dans une procédure, il faut invoquer ou encore appeler cette procédure. Cette invocation se fait en donnant à la procédure 0, 1 ou plusieurs paramètres. La structure des programmes en paradigme procédural et impératif est identique. Utiliser les procédures augmente la réutilisabilité des algorithmes. Le langage C, C++, Java, et COBOL sont des langages de programmation supportant la programmation procédurale.

La programmation Déclarative

Dans la programmation déclarative, une programme décrit un problème et l'ordinateur trouve une solution. Le programme ne décrit pas, contrairement à la programmation impérative, comment aboutir à une solution. C'est à l'ordinateur de trouver une solution quand un problème lui est soumis. Dans la programmation impérative nous travaillons sur la partie "comment" d'un problème. Alors qu'en programmation déclarative nous nous focalisons sur le "quoi" du problème. HTML, LaTeX et SQL sont des langages de programmation supportant la programmation déclarative.

La programmation Fonctionnelle

La programmation fonctionnelle est un sous type de la programmation déclarative. Elle est basée sur le concept d'évaluation de fonctions mathématiques. Une fonction est un algorithme qui calcule une valeur à partir de paramètres donnés en entrée. Contrairement à une procédure, une fonction ne modifie pas les paramètres en entrée. Ainsi en programmation fonctionnelle, les valeurs sont immuables. Haskell, Erlang, et Scala sont des langages de programmation supportant la programmation fonctionnelle.

La programmation Logique

A l'instar de la programmation fonctionnelle, la programmation logique est un paradigme déclaratif. Elle se focalise également sur le "quoi" plutôt que sur le "comment" d'un problème.

Un programme en programmation logique est composé :

  • d'une base de faits : ensemble de faits spécifiques au domaine de l'application
  • d'une base de règles : ensemble de règles entraînant l'exécution des faits si elles sont vérifiées.
  • d'un moteur de règles : Le moteur de règles réalise l'essentiel du travail en soumettant les données des requêtes à la base de règles. Si une règle est vérifiée, le fait correspondant est exécuté. L'intelligence artificielle, le langage Prolog mettent en œuvre les concepts de la programmation logique.

La programmation Orientée Objet

Dans la programmation orientée objet, un programme est un ensemble d'interactions entre objets. Un objet étant la brique élémentaire encapsulant les données et les algorithmes. Les données étant l'état de l'objet, les algorithmes étant les comportements de l'objet. Contrairement aux paradigme impératif et déclaratif, où les données et les algorithmes étaient séparés, ils sont combinés dans une seule entité (l'objet) dans la programmation orientée objet. Smalltalk, Python, PHP, Java, C# sont des exemples de langages supportant le paradigme orienté objet.

Conclusion

Dans cet article nous avons défini un programme comme étant un ensemble d'instructions à accomplir par un ordinateur pour réaliser une tâche. Ensuite nous avons introduit les différents concepts des langages de programmation, allant du plus bas au plus haut niveau. Le langage machine étant le langage de plus bas niveau et les langages modernes comme java, python étant de plus haut niveau. Enfin nous avons énuméré les différents paradigmes des langages de programmation. Dans notre prochain article nous nous intéresserons plus en détail à la programmation orientée objet.