Vous êtes sur la page 1sur 25

Naoufel KHAYATI Cours « Paradigmes de Programmation »

Mastère Pro GLDRA – M1

Paradigmes de Programmation

Naoufel KHAYATI
nkhayati@gmail.com / naoufel.khayati@eniso.u-sousse.tn

AU. 2022 - 2023

Objectifs du Cours
2

 Comprendre la notion de « Paradigme ».

 Distinguer entre les différents paradigmes de


programmation.

 Faciliter l’apprentissage de nouveaux langages.

 Faire les bons choix.

 Suivre l’évolution de l’état de l’art en programmation.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 1


Naoufel KHAYATI Cours « Paradigmes de Programmation »

CHAPITRE 1

Introduction aux Paradigmes


de Programmation

Naoufel KHAYATI
nkhayati@gmail.com / naoufel.khayati@eniso.u-sousse.tn
AU. 2022 - 2023

Langage de Programmation
4

 C’est un code conventionnel de communication entre un humain et une


machine (un ordinateur, un Smartphone, une carte électronique, etc.).

 Permet de formuler des algorithmes en programmes informatiques.

 Est composé, comme toute langue naturelle :


 d'un alphabet,
 d'un vocabulaire (Lexique),
 de règles de grammaire (Syntaxe),
 de significations (Sémantique).

 Permet de décrire les structures de données à manipuler par la


machine et d'indiquer comment sont effectuées ces manipulations.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 2


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Langage de Programmation
5

 Un code écrit dans un langage de programmation est


traduit en langage machine grâce à un traducteur
automatique
 compilateur
 interprète

 Supporte une ou plusieurs approches de


programmation – paradigmes.
 Permettent au programmeur d'exprimer dans le langage
une solution qui a été imaginée selon ce paradigme.

Langages de Programmation
6

 C  Cobol  ADA
 C++  Fortran  Pascal
 C#  Ruby  HTML
 Java  Kotlin  Scala
 Python
 Objective C  Perl
 Swift
 R  Smalltalk
 Go
 Javascript  Matlab  Ocaml
 VB  PHP  SQL (PL-SQL / T-SQL)
 …

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 3


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Langages de Programmation
7

 Pourquoi tant de langages de programmation ?

 Nombre de langages

 Ilexiste plusieurs centaines de langages de programmation,


et on continue d’en créer. Pourquoi ?

Langages de Programmation
8

 Évolution de la discipline

 passage du langage machine au langage d’assemblage


puis aux langages de haut niveau.

 progrès dans les formalismes de description.

 progrès dans les techniques de compilation.

 courants nouveaux en méthodologie : programmation


structurée, programmation modulaire, programmation par
objets, etc.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 4


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Langages de Programmation
9

 Variété des problèmes à résoudre

 manipulation de données symboliques (les variables).

 structures de données très complexes.

 opérations complexes sur les données.

 programmation de bas niveau pour les systèmes d’exploitation.

 représentation du raisonnement logique.

 nouveaux problèmes spécifiques.

 applications hautement sécurisées.

Langages de Programmation
10

 Préférences personnelles

 questions de goûts personnels.

 écrire bref ou écrire clair ?

 récursivité ou itération ?

 pointeurs explicites ou non ?

 protection des données ou non ?

 un seul langage « universel » ou plusieurs langages spécialisés ?

 l’interopérabilité est-elle importante ?

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 5


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Langages de Programmation
11

 Succès des langages

 Parmi les milliers de langages existants et implémentés,


quelques centaines seulement sont encore utilisés, et
quelques dizaines le sont de manière importante.

Langages de Programmation
12

 Succès des langages

 Qu’est-ce qui fait qu’un langage a du succès ?

 Puissance d’expression

 tout langage permet de tout exprimer, mais plus ou


moins facilement (Expressions Lambda).
 les possibilités d’abstraction.
 Les types d’applications qu’il vise.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 6


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Langages de Programmation
13

 Succès des langages

 Qu’est-ce qui fait qu’un langage a du succès ?

 Facilité d’utilisation

 facilité
d’apprentissage pour un débutant
 transportabilité de l’implémentation
 absence de freins légaux ou commerciaux

Langages de Programmation
14

 Catégories de langages de programmation

 Les catégories ont des limites floues.

Paradigmes de Programmation

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 7


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Paradigme – Définition
15

 Sens 1

 Représentation, vision du monde, modèle, courant de


pensées, point de vue.
 Exemple : le paradigme de Darwin.

 Sens 2
 Ensemble d’unités qui peuvent se substituer les unes aux
autres.

Paradigme – Définition
16

 Sens 3
 Thomas Kuhn dans son ouvrage « La
structure des révolutions scientifiques »
(1962) définit un paradigme comme :

 des méthodes et principes partagés par


une communauté scientifique.

 C'est un modèle épistémique qui fait


autorité et regroupe les chercheurs pour un
temps, puis sera remplacé par un autre à
la suite d'une révolution scientifique qui
changera profondément les manières de
voir.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 8


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Paradigme – Définition
17

 Sens 4
 Manière d'utiliser des techniques et des exemples propres
à chaque problème.
Exemple : Les paradigmes de programmation

 Synonymes
 Exemple
 Modèle
 Patron (Pattern)

 En arabe
 ‫مثال‬
 ‫نموذج‬

Paradigme informatique
18

 Exprime la façon dont un système a été conçu et pensé dans


ses grandes lignes.

 Les révolutions informatiques coïncident généralement avec


un changement de paradigme, où une vision différente de
problèmes et de leur solution permet d'apporter une solution
élégante techniquement et/ou ergonomiquement.

 Exp. en informatique distribuée, l'utilisateur doit cesser de penser


« ordinateur », « stockage local », etc. pour penser le système
d'information dans son ensemble, objets distribués voire cloud.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 9


Naoufel KHAYATI Cours « Paradigmes de Programmation »

19

Paradigmes de
Programmation

Paradigme de Programmation
20

 N’est pas lié à un langage

 Chaque langage de programmation reflète un ou


plusieurs paradigmes

 Une manière de programmer

 Un style de codage

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 10


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Paradigme de Programmation
21

 Langage machine / binaire


 Programmation directe en binaire dans la mémoire de
l’ordinateur.

Paradigme de Programmation
22

 Langage Assembleur : notation symbolique du


langage machine
 Se base sur le paradigme impératif.
 Programmation impérative : MOV, JMP, etc.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 11


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Paradigme Impératif
23

 Séquences d’instructions élémentaires et explicites qui


modifient l’état de son environnement.
 Valeurs ayant des types
 Valeurs stockées dans des variables
 Affectations
 Instructions conditionnelles
 Instructions itératives
 Sauts (GOTO ou branchement)
 Possibilité de créer ses propres types de données (Struct en C,
Record en Pascal et ADA)

 C’est le modèle le plus répandu.


 Exemples : Fortran, Cobol, Pascal, C, C++, Php, Java, Python,
Perl, assembleur, etc.

Paradigme Impératif
24

 Soit le tableau « nombres » suivant :

 Calcul de la somme

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 12


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Paradigme Procédural
25

 Programmation procédurale : évolution du précédent.

 Ajout des procédures / fonctions : acceptent 0, 1 ou plusieurs


paramètres et retournent 0 ou 1 résultat.

 Intérêt :
 Modularité.
 Réutilisation du code.
 Meilleure lisibilité (éviter les goto / branchements).

 Tout langage procédural est impératif

 C, C++, Java, Python  langages multi-paradigmes

Paradigme Procédural
26

 Le même exemple en créant une fonction

 Appel de la fonction

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 13


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Paradigme Déclaratif
27

 En programmation déclarative, on décrit le quoi et


non le comment, c'est-à-dire le problème.

 Par exemple, les pages HTML sont déclaratives car


elles décrivent ce que contient une page (texte,
titres, paragraphes, etc.) et non comment les
afficher (positionnement, couleurs, polices de
caractères, etc.).

 HTML, XML, LaTeX, Prolog, Haskell, Lisp

Paradigme Fonctionnel
28

 Évalue des fonctions mathématiques (Scheme, Lisp,


Haskell, OCaml, etc.)

 Une fonction a un type et est considérée comme une


donnée, elle peut être :
 Créée par une autre fonction
 Retournée par une autre fonction

 La récursivité et les expressions lambda en sont des


exemples
 les Expressions Lambda sont utilisées avec des langages
nativement non fonctionnels (Java, C#).

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 14


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Paradigme Fonctionnel
29

 Une expression lambda qui remplace plusieurs


instructions (boucle, condition, etc.)

int i = 0;
for(w in words)
if(w.length > 10) {longWords[i]=w; i++}

Paradigme Objet
30

 Assemblage de briques logicielles (objets).

 Un objet contient des données (attributs) et des traitements (méthodes)


utilisant ou modifiant ces données.

 Communication et interaction des objets


 Un objet peut en contenir un autre (Relation de composition ou d’agrégation).
 Un traitement contenu dans un objet peut recevoir d’autres objets en
paramètres.

 Les nouveaux types deviennent des classes.

 Une variable de type A devient une instance de la classe A.

 Les fonctions peuvent être des « méthodes de classe » (static) ou des


« méthodes d’instance ».

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 15


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Paradigme Objet
31

 Exemple
 Classe « Rectangle »

 Instanciation ou création d’objets


 Rectangle r0 = new Rectangle();
 Rectangle r1= new Rectangle(5, 8);

Paradigme Objet
32

 Héritage : consiste à définir des sous-classes qui


hériteront les attributs et les méthodes d’une super-
classe.

 Une façon d’implémenter le Polymorphisme (existant


déjà en C++ et C#).

 Lepolymorphisme consiste à adapter le comportement d’une


méthode d’une classe avec une autre classe.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 16


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Paradigme Objet
33

 1er langage en 1967 : Simula 67  Smalltalk (1980).

 C++ : on peut programmer 100% objets ou 100%


procédural.

 C#, JAVA

 6 sur les 10 premiers langages du classement IEEE


Spectrum sont OO.

Paradigme Objet
34

 Top Programming Languages - 2021

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 17


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Paradigme Logique
35

 Basé sur des liens logiques

 l’idée de répondre à une question par des recherches sur un


ensemble d’axiomes (Base des faits) et de règles de
déduction (Base des règles).

 Ces faits et ces règles sont exploités par un démonstrateur


de théorème ou moteur d'inférence, en réaction à une
question ou requête.

 Les nouvelles données obtenues (nouveaux faits ou nouvelles


règles) peuvent alors être utilisées dans le cadre d’une autre
recherche.

Paradigme Logique
36

 La programmation logique est considérée comme


une programmation déclarative plutôt
qu’impérative, car elle s'attache davantage
au quoi qu'au comment.

 Le moteur assume une large part des enchaînements.

 Elle est particulièrement adaptée aux besoins de


l’intelligence artificielle, dont elle est un des principaux
outils.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 18


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Paradigme Logique
37

 Ce paradigme fera l’objet du chapitre 2.

Paradigme par Contraintes


38

 La programmation par contraintes (Constraint Programming) est apparue


dans les années 1970.

 Permet de résoudre des problèmes combinatoires de grande taille tels que


les problèmes de planification et d'ordonnancement.

 En programmation par contraintes, on parle généralement de Problèmes de


Satisfaction de Contraintes (ou CSP pour Constraint Satisfaction Problem).

 Les algorithmes de recherche de solution garantissent de trouver une


solution, quand elle existe, et permettent de prouver l’absence d’une telle
solution si elle n’a pas été trouvée à la fin de la recherche exhaustive.

 Exp. SmallTalk

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 19


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Paradigme Modulaire
39

 Un programme est constitué de plusieurs modules


compilés séparément.

 Un module peut être l’implémentation d’un type


abstrait.

 Maintenabilité

 Réutilisabilité

 Robustesse

Autres paradigmes
40

 Programmation Orientée Agents (multi-agents)

 Programmation Parallèle / Concurrente

 Programmation Distribuée

 Programmation Synchrone

 Programmation Asynchrone

 …

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 20


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Choix du langage…
41

 Est-il adapté au projet ?

 A-t-il une communauté ?

 Est-il polyvalent ?
 C++ est le couteau suisse de la programmation : plusieurs niveaux d’abstraction, sans
sacrifier la performance.

 Est-il interopérable avec les autres langages ?

 Est-il un langage moderne ?


 implémente les exceptions, utilise les références plutôt que les pointeurs.

 Est-il un langage avec ou sans pointeur ?


 avec les pointeurs, on peut faire certaines optimisations (d’utilisation de la mémoire ou de
vitesse d’exécution).
 sans pointeurs, on évite les risques de bugs.

Normalisation des langages


42

 Rassembler des définitions divergentes.

 Clarifier la définition.

 Faire évoluer le langage.

 Définir un nouveau langage.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 21


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Normalisation des langages


43

 Difficultés de la normalisation

 lourdeur générale des mécanismes


 intérêts contradictoires des participants

 non-représentativité des participants

 conflits entre précision et clarté

 trop grande lenteur

Normalisation des langages


44

 Organismes de normalisation

 AFNOR (Association Française de NORmalisation, France),


 DIN (Deutsches Institut für Normung, Allemagne),

 ANSI (American National Standards Institute, Etats Unis),

 ACM (Association for Computer Machinery, Etats Unis),

 ISO (International Organization for Standardization,


Royaume-Uni),
 IFIP (International Federation for Information Processing,
Autriche), etc.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 22


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Normalisation des langages


45

 Exemples

C
 l’important est de ne pas invalider les compilateurs des
fabricants de logiciel représentés dans le comité.
 travail effectué par l’ANSI
 ANSI-C

 Pascal
 conflitentre l’ISO et l’ANSI
 deux extensions
 ensuite, définition d’un nouveau langage

Aspects associés
46

 Aspects Lexicaux
 Alphabet, Vocabulaire.
 Analyse lexicale.

 Aspects Syntaxiques
 Syntaxe, Grammaire.
 Analyse syntaxique.

 Aspects Sémantiques
 Résolution des noms, vérification des types.
 Analyse sémantique.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 23


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Pour Finir…
47

 Un langage est un outil qui permet via une syntaxe de


produire des programmes exécutables.

 Un paradigme est la manière d’écrire un code quel que soit


le langage utilisé.

 Personne n’a entièrement raison et personne n’a totalement


tort dans la description / définition des paradigmes.

 Les frontières conventionnelles entre les différents


paradigmes sont totalement artificielles.
 Présence de langages multi-paradigmes.

Pour Finir…
48

 Quel paradigme choisir?

 Un bon programme a presque toujours besoin de


plusieurs paradigmes.

 Chaque paradigme est bon pour certains problèmes.

 Un bon langage doit donc soutenir plusieurs


paradigmes.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 24


Naoufel KHAYATI Cours « Paradigmes de Programmation »

49

A SUIVRE…

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 25

Vous aimerez peut-être aussi