SlideShare une entreprise Scribd logo
1  sur  82
Télécharger pour lire hors ligne
Principes et
paradigmes
Présenté par Yann Caron
skyguide
ENSG Géomatique
Plan du cours
Compilation vs
Interpretation
Typage
Portée
Les différents paradigmes
But
✔ Faire un inventaire des différentes
caractéristiques des langages
✔ Typage ?
✔ Portée ?
✔ Paradigmes :
✔ Impératif ? Structuré ?
✔ Fonctionnel ?
✔ Objet ? MOP ? AOP ? Duck Typing ?
✔ Par contrat ?
✔ Logique ?
3/82
Compilateurs vs Interpreters
Constatation
✔ Différence d’implémentation du
CodeGen
✔ Les deux sont très similaires, seul la
“sortie” est différente
✔ Le compilateur génère du code machine
dans un fichier binaire
✔ L’interpreteur exécute le programme en
mémoire
Compilateur - définition
Le programme est transformé en code
machine dans un fichier
6/82
void main()
{
printf(“hi”);
}
void main()
{
printf(“hi”);
}
01001011001
11001011010
11011100101
00011100111
01001011001
11001011010
11011100101
00011100111
hi.c hi.o
Compilateur - hybride
Le programme est transformé en code
machine à destination d’une machine
virtuelle
7/82
void main()
{
println(“hi”);
}
void main()
{
println(“hi”);
}
GETSTATIC ...
LDC "Hi"
INVOKEVIRTUAL ..
GETSTATIC ...
LDC "Hi"
INVOKEVIRTUAL ..
hi.java hi.class
JVM
Interpréteur - définition
Le programme et les données sont
transformés directement en résultat
8/82
void main()
{
alert(“hi”);
}
void main()
{
alert(“hi”);
}
hi.js
programme{
”data1” : “v1“,
“data2” : “v2“
}
{
”data1” : “v1“,
“data2” : “v2“
}
data
Interprétation directe
Les premières versions de Basic. Le
programme est exécuté à mesure qu’il est
analysé
9/82
10 PRINT “HI”
RUN
10 PRINT “HI”
RUN
hi.vb
programme
Comparatif - Compilation
✔ Pour :
✔ Meilleures performances
✔ Opportunités d’appliquer des
optimisations (analyse sémantique)
✔ Contre:
✔ Rigide et plus complexe (ex : Généricité,
Templates)
✔ Faible portabilité
10/82
Comparatif - Interprétation
✔ Pour :
✔ Flexible et plus simple à mettre en œuvre
✔ Langage dynamiques (MOP)
✔ Exécution à la volée
✔ Contre:
✔ Coût sur les performances
✔ Coût mémoire
✔ Analyse minimale → détection d’erreur à
posteriori
11/82
Compromis
✔ Une machine virtuelle permet de tirer parti
des deux mondes :
✔ Portabilité ( code once run anywhere de
java )
✔ Optimisations ( JIT )
✔ Analyse sémantique poussée
✔ Typage hybrides ( Java object & cast )
12/82
Typage ?
✔ Le typage ( statique vs dynamique ) est il
inhérent à la méthode d’exécution
( compilé vs interprété ) ?
✔ Python ?
✔ Common LISP ?
13/82
Typage
Enjeu
✔ Compromis entre la flexibilité et la
robustesse
✔ Robustesse : Détecter le maximum d’erreurs
lors de la phase de compilation
✔ Cela induit de la rigidité : exemple des
génériques de Java 5
✔ Typage fort vs faible est trop flou
15/82
Typage statique vs dynamique
✔ Statique lorsque la vérification s’effectue
lors de la compilation
✔ Dynamique lorsque celle ci est effectuée
lors de l’exécution
16/82
Typage explicite vs implicite
✔ Explicite, est exprimée dans le programme
✔ Implicite (ou inférence) ; est déduite par
analyse ou lors de l’exécution
17/82
int i = 0;
let i = 0;
Types composés - tableaux
✔ Les tableaux
✔ Ensemble non fini d’éléments du même
type
✔ La liste en est un cas particulier
(redimensionnable dynamiquement)
18/82
char t[] = {'a','b','c','d','e','f','g'};
Types composés – structure
(C#)
✔ Les structures
✔ Ensemble fini d’éléments de type
différents
19/82
public struct Point
{
   public float X;
   public float Y;
public string Name;
}
Types composés – tuples (C#)
✔ Les tuples
✔ Cas particulier de structures immutables
(programmation fonctionnelle)
public class Unit<T1> {
    private final T1 value1;
    public T1 getValue1() {
        return value1;
    }
    public Unit(T1 value1) {
        this.value1 = value1;
    }
}
public class Pair<T1, T2> extends Unit<T1> {
private final T2 value2;
public T2 getValue2() {
return value2;
}
public Pair(T1 value1, T2 value2) {
super(value1);
this.value2 = value2;
}
}
20/82
Types composés – union (C)
✔ Peut alternativement être de plusieurs
types différents
21/82
public union Jour
{
   public char Lettre;
   public char Numéro;
}
Types récursifs
✔ Un type de donnée qui peut contenir des
données de son type
✔ En Haskell
✔ En Java
22/82
data List a = Nil | Cons a (List a)
class List<E> {
E value;
List<E> next;
}
Types récursifs
✔ S’applique à la création des listes chaînées
✔ S’applique à la création des arbres
✔ Cf : Gof Composite
✔ Observation : une liste chaînée est un cas
particulier de l’arbre. Un arbre dont tous
les parents n’auraient qu’un seul enfant.
23/82
Types énumérés
✔ Ensemble fini de valeurs possibles pour
une variable
24/82
public enum PrimaryColor {
RED, BLUE, YELLOW;
}
Types paramétrés
✔ Car des “generics” en Java et C#
✔ Templates en C++
25/82
class List<E> {
E value;
List<E> next;
}
Types hiérarchiques
✔ Exemple la hiérarchie de classe en Java
26/82
Portée
Définition
✔ La portée est la portion de programme où
la variable nommée est atteignable
28/82
Portée globale
✔ Toutes les variables déclarées sont
ajoutées dans la mémoire globale du
programme
✔ Elles sont de fait accessible de n’importe
quelle portion du programme
✔ Cas du Basic à ses débuts
✔ Inconvénient : Collision de noms et
masquage in-intentionnel
✔ Mots clés : local, global
✔ Mauvaise pratique (effets de bord)
29/82
Portée lexicale (statique)
✔ La portée des variables est relative à
l’emplacement où elles sont déclarés dans
le code
30/82
def square(n):
return n * n
def sum_of_squares(n):
total = 0
i = 0
while i <= n:
inc = 1
total += square(i)
i += inc
return total
globalglobal
n
square
n, total, i
sum_of_squares
inc
square
Portée dynamique
✔ La portée des variables est relative au flux
d’exécution
31/82
(defun foo1 ()
(message "%s" a)) // 1
(defun foo2 ()
(let ((a 2))
(message "%s" a))) // 2
(defun foo3 ()
(let ((a 1))
(foo1)
(foo2)))
Lisp
Portée implicite vs explicite
✔ Problématique de création des variables
✔ Explicite ; un mot clé détermine ou est
créer la variable
32/82
function makeCounter() {
  var counter = 0; // new variable
  return function inc() {
    counter = counter + 1; // reassign higher level
    return counter;
  }
}
JavaScript
Portée implicite vs explicite
✔ Implicite ; si la variable est inconnue, elle
est créée. Le programme réassigne en
remontant dans les portées jusqu’à trouver
la variable concernée
33/82
makeCounter = ->
counter = 0 # new variable
return ->
counter = counter + 1 # reassign higher level
return counter
CoffeeScript
Portée implicite vs explicite
✔ Intermédiaire ; Les variables sont créées de
façon implicite, c’est la réassignation qui
est explicite
34/82
def make_counter():
counter = 0 # new variable
def inc():
nonlocal counter
counter = counter + 1 # reassign higher level
return counter
return inc
Python
Mutabilité des variables
✔ Variable définie une seule fois et accessible
en lecture seule
✔ Mot clé : final, const
✔ Bonne pratique de programmation :
immutabilité pour limiter les effets de
bords
✔ Langages fonctionnels pures : réfutent la
mutabilité des données
35/82
Variant
✔ Programmation réactive
✔ Que vaut c à présent ?
✔ 14 ou 17 ?
36/82
int a = 7;
int b = 7;
int c = a + b;
a = 10;
Paradigmes
38/82
Programmation impérative
✔ Langage machine
( load / jump )
39/82
L0
 ICONST_0
 ISTORE 1
L1
 GOTO L2
L3
 IINC 1 1
L2
 ILOAD 1
 BIPUSH 10
 IF_ICMPLT L3
L4
 RETURN
L5
int i = 0;
while (i < 10) {
    i++;
}
Impératif non structuré
✔ IF / GOTO – BASIC
✔ Edsger Wybe Dijkstra : "Go To Statement
Considered Harmful"
40/82
 10 LET I = 0
 20 IF I >= 10 THEN GOTO 50
 30 I = I + 1
 40 GOTO 20
 50 ...
Dijkstra 1930
Impératif structuré
✔ Séquence d’instructions
✔ Assignation
✔ Conditionnelle : If then else elseif
✔ Boucles : for, while, until
✔ Branchements : Goto ou appel de
procédures
41/82
LET I = 0
DO
   I = I + 1
LOOP WHILE I < 10
Orienté Objet
✔ (Classes ou prototype) : Définition de types
complexes
✔ Objets : Instances de ces types
public class Character {
    private final String name;
    public Character(String name) {
        this.name = name;
    }
}
public static void main(String[] args) {
    Character instance1 = new Character("Dupont");
    Character instance2 = new Character("Tintin");
}
42/82
Orienté Objet
✔ Propriétés : états de l’objet (attribut est
privé)
✔ Méthodes : comportements de l’objet
✔ Évènements : signal que peut émettre
l’objet (callback)
✔ Portée : private, package, protected, public
✔ Immutabilité : final
✔ Class / Instance : static
43/82
Orienté Objet : Concepts
✔ Encapsulation : Les données et les
méthodes qui les manipulent sont cachées
du reste de l’application
✔ Composition : Un objet peut en contenir un
autre dans ses attributs
✔ Délégation : Un objet peut en manipuler un
autre au travers sa variable d’instance
44/82
Orienté Objet : Dispatch
✔ L’objet est responsable de savoir quelle
méthode appeler
✔ Phénomène de surcharge (overload)
public class Dispatch {
public void method(String value) {
}
public void method(int value) {
}
}
45/82
Orienté Objet : Héritage
✔ Une classe peu hériter d’une autre classe
dans une relation de type “est un”
✔ Phénomène de spécialisation (override)
public class Animal {
    public void eat() {}
}
public class Lion extends Animal {
    public void eat() {
        // eat meat !
    }
}
46/82
Animal
eat()
Lion
eat()
Orienté Objet : Héritage
✔ Une classe peu hériter d’une autre classe
dans une relation de type “est un”
✔ Phénomène de spécialisation (override)
public class Animal {
    public void eat() {}
}
public class Lion extends Animal {
    public void eat() {
        // eat meat !
    }
}
47/82
Animal
eat()
Lion
eat()
Hiérarchie de classes
48/82
Animal
eat()
Carnivor Vegetarian
Lion Tiger Antelope Elephant
Héritage multiple
✔ En C++ : héritage multiple
✔ Problèmes de masquage
✔ Les interfaces en Java
contournent les
problème :
✔ Pas d’état et pas de
méthodes
✔ Classes abstraites sont
un intermédiaire (mais
toujours pas d’héritage
multiple)
49/82
Animal
eat()
Carnivor
eat()
Vegetarian
eat()
Dog
Duck typing
✔ Dans les langages au typage dynamique,
forme de polymorphisme sans héritage
50/82
public class Dog {
    public void eat() {}
}
public class Duck {
    public void eat() {}
}
public void eat(animal) {
    animal.eat();
}
Orienté Objet : Polymorphisme
✔ Le sous typage est la faculté de référencer
la superclasse et d’en ignorer
l’implémentation
Animal animal;
// sub class is not known
animal = new Lion();
animal.eat();
51/82
Animal
eat()
Lion
eat()
Orienté Objet : Open recursion
✔ Faculté d’une méthode à appeler les
méthodes membre de l’objet (mot clé this
ou self)
public static class Recursion {
        
    public void loop10(int i) {
        if (i == 10) return;
// critère de sortie
        this.loop10 (i+1);
    }
}
52/82
Union and Intersection types
✔ Cas de Ceylon
✔ Union ( est du type X ou Y )
✔ Intersection ( a les interfaces X et Y )
53/82
void write(String|Integer|Float printable) { ... }
void store(Persistent&Printable&Identifiable obj)
{ ... }
AOP, MOP
✔ MOP : Meta Object Protocol, possibilité de
modifier la structure de la classe (ou du
prototype) par programmation
✔ AOP : Séparation des responsabilités (on
isole les problématiques transverses)
✔ AspectJ : Par injection de code à des
points donnés (Tissage de greffons)
✔ MOP + FP = AOP
54/82
Impératif vs Fonctionnel
✔ Deux grandes familles :
✔ Programmation impérative
✔ Manipulation d’état (changement d’état
effets de bord)
✔ Décrit le “comment”
✔ Programmation fonctionnelle
✔ Manipule le comportement et réfute la
mutation d’état
✔ Programmation déclarative (le “quoi“)
55/82
56/82
Langage
machine
Langage
machine
Impératif
Non structuré
Impératif
Non structuré
Impératif
Structuré
Impératif
Structuré
OOPOOP
AOP / MOPAOP / MOP
FonctionnelleFonctionnelle
LogiqueLogique
Concurentielle
Partage d’états
Concurentielle
Partage d’états
Contrainte
Concurentielle
Contrainte
Concurentielle
FRPFRP
Programmation
par contrainte
Programmation
par contrainte
Logique
Concurentielle
Logique
Concurentielle
Patterns &
function object
Patterns &
function object
Programmation fonctionnelle
✔ Fonctions dites pures (sans état)
✔ Récursion
57/82
(defun it (&optional (i 0))
  (if (>= i 10)
      i
      (it (+ i 1))
Lisp
Programmation fonctionnelle
✔ Transparence référencielle
✔ pas de changement d’états
✔ Impératif :
✔ Fonctionnel :
58/82
int plusone(int x) : return x + 1;
X = X + 1
Programmation fonctionnelle
✔ Fonctions d’ordre supérieur :
✔ Peuvent prendre une fonction en
paramètre
✔ Ou renvoyer une fonction comme résultat
✔ Ou les deux
✔ Map – Filter – Fold (reduce) - Zip
59/82
Map
Map
60/82
Stream.of(1, 2, 3, 4, 5)
  .map((item) ­> "The number is : " + item)
  .forEach(System.out::println);
The number is : 1
The number is : 2
The number is : 3
The number is : 4
The number is : 5
Filter
61/82
Stream.of(1, 2, 3, 4, 5, 6, 7, 8)
  .filter((item) ­> item % 2 == 0)
  .forEach(System.out::println);
2
4
6
8
Filter
Reduce ( fold )
62/82
Stream.of(1, 2, 3, 4, 5, 6, 7, 8)
.reduce((a, b) ­> a + b).get()
36
Fold
Zip
Zip
63/82
Stream.of(1, 2, 3, 4, 5)
  .map((item) ­> "The number is : " + item)
  .forEach(System.out::println);
The number is : 1
The number is : 2
The number is : 3
The number is : 4
The number is : 5
Function object
✔ But : Intégrer le paradigme fonctionnel
dans les langages à Objets
✔ Généralisation du patron Strategy ou
Command
✔ Lambdas = sucre syntaxique
✔ C# 3.0 (.NET Framework 3.5)
✔ Java 8
64/82
Function object
✔ Thomas Kühn - Patron de conception
✔ Un objet qui représente une fonction
65/82
En Java
66/82
List<String> names = Arrays.asList("Jean", "Paul", "Claude", "Charles");
Function<String, String> formater = new Function<String, String>() {
    @Override
    public String apply(String t) {
        return "The name is " + t + ".";
    }
};
names.stream().map(formater).forEach(new Consumer<String>() {
    @Override
    public void accept(String t) {
        System.out.println(t);
    }
});
Avec lambdas
67/82
✔ Concision
✔ Expressivité
✔ Lisibilité
✔ Programmation déclarative
✔ Debug difficile !
List<String> names = Arrays.asList("Jean", "Paul", "Claude", "Charles");
Function<String, String> formater = (String t) ­> "The name is " + t + ".";
names.stream().map(formater).forEach(System.out::println);
Programmation par contrat
✔ Principe : ajouter des contraintes aux
variables et méthodes
✔ Pré-condition : garanti la cohérence des
valeurs d’entrée d’une fonction
✔ Post-condition : garanti la cohérence des
valeurs de sortie d’une fonction
✔ Invariant : garanti que la valeur est
cohérente tout au long de l’exécution (pour
des variables)
68/82
Contrat en Java (Cofoja)
69/82
interface Time {
  @Ensures({
    "result >= 0",
    "result <= 23"
  })
  int getHour();
 
  @Requires({
    "h >= 0",
    "h <= 23"
  })
  @Ensures("getHour() == h")
  void setHour(int h);
}
Programmation logique par
contrainte (PLC)
✔ Exemple : ProLog
✔ Énumération des contraintes du système
✔ Sous forme de règles logiques
✔ Idéal pour résoudre des problèmes de
satisfaction : SAT-Solver
✔ Comme le Sudoku
✔ Problème des 8 dames
✔ Programmation déclarative par excellence
70/82
PLC en Java (Choco solver)
71/82
// 1. Create a Model
Model model = new Model("my first problem");
// 2. Create variables
IntVar x = model.intVar("X", 0, 5);                 // x in [0,5]
IntVar y = model.intVar("Y", new int[]{2, 3, 8});   // y in {2, 3, 8}
// 3. Post constraints
model.arithm(x, "+", y, "<", 5).post(); // x + y < 5
model.times(x,y,4).post();              // x * y = 4
// 4. Solve the problem
model.getSolver().solve();
// 5. Print the solution
System.out.println(x); // Prints X = 2
System.out.println(y); // Prints Y = 2
Programmation Réactive
72/82
✔ Maintenant que Java et C# ont introduit le
paradigme fonctionnel
✔ Paradigme en cours de développement
✔ Rx.Net, Rx Java, Reactor, React4J
✔ https://github.com/YannCaron/React4J/wiki
FRP - Idée
✔ Un programme impératif s’exécute de
façon linéaire
✔ Les déclarations ne sont pas toujours juste
dans le temps
73/82
Integer a = 0;
Integer b = 0;
Integer sum = a + b;
System.out.println("Sum = " + sum); // Sum = 0
a = 7;
b = 8;
System.out.println("Sum = " + sum); // Sum = 0
FRP - React4J
74/82
final Var<Integer> a = new Var<>(0);
final Var<Integer> b = new Var<>(0);
Operation<Integer> sum = Operation
  .mergeOperation(() ­> a.getValue() + b.getValue(), a, b); 
// reactive sum = reactive a + reactive b
System.out.println("Sum = " + sum.getValue()); // Sum = 0
a.setValue(7);
b.setValue(8);
System.out.println("Sum = " + sum.getValue()); // Sum = 15
Toujours vérifiable
Actualisé 2 x
FRP - Concepts
✔ Réaction continue : un processus centralisé
actualise périodiquement les signaux
✔ Réaction discrète : basé sur un modèle
évènementiel. Les foncteurs sont chaînés.
Chaque foncteur renvoie un nouveau
réactif basé sur le précédent.
75/82
FRP - RxJava
76/82
React4J - Exemple
77/82
Var<String> mouseAndTime = MouseReact.button1()
.map(arg1 ­> arg1 ? "pressed" : "released")
.toVar("no button yet !")
.merge(MouseReact.positionX().toVar(0), 
(arg1, arg2) ­> arg1 + " ( x=" + arg2)
.merge(MouseReact.positionY().toVar(0), 
(arg1, arg2) ­> arg1 + ", y=" + arg2 + ")");
label1.setText(mouseAndTime);
Toujours vérifiable
FRP - React4J
78/82
79/82
FRP – Cas d’utilisation
✔ Synchroniser des messages de serveurs
SNMP distants
80/82
O1O1
A1A1
O3O3
SS
O2O2 O1O1
A1A1
O3O3O2O2
Synchronisation
Agents
Synchronisation
OIDs
Synchronisation
Service
merge
sync
React4J - Démonstration
81/82
Merci de votre attention

Contenu connexe

Tendances

Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)rezgui mohamed
 
C2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieC2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieLoic Yon
 
Langage C
Langage  CLangage  C
Langage Cjwilili
 
Cours de programmation en c
Cours de programmation en cCours de programmation en c
Cours de programmation en cbenouini rachid
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage cEbrima NJIE
 
C3 - Langage C - ISIMA 1 - Troisieme partie
C3 - Langage C - ISIMA 1 - Troisieme partieC3 - Langage C - ISIMA 1 - Troisieme partie
C3 - Langage C - ISIMA 1 - Troisieme partieLoic Yon
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018salah fenni
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage Ccoursuniv
 
Interception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelInterception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelThierry Gayet
 
Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5Laurent BUNIET
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018salah fenni
 
Seance 1 - Programmation en langage C
Seance 1 - Programmation en langage CSeance 1 - Programmation en langage C
Seance 1 - Programmation en langage CFahad Golra
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzlesMicrosoft
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage cDaoua Lotfi
 
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)Stéphanie Hertrich
 

Tendances (20)

Theme2
Theme2Theme2
Theme2
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 
C2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieC2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partie
 
Langage C
Langage  CLangage  C
Langage C
 
Cours de programmation en c
Cours de programmation en cCours de programmation en c
Cours de programmation en c
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage c
 
C3 - Langage C - ISIMA 1 - Troisieme partie
C3 - Langage C - ISIMA 1 - Troisieme partieC3 - Langage C - ISIMA 1 - Troisieme partie
C3 - Langage C - ISIMA 1 - Troisieme partie
 
Cours langage-c
Cours langage-cCours langage-c
Cours langage-c
 
Chapitre2 prog dsplf3
Chapitre2 prog dsplf3Chapitre2 prog dsplf3
Chapitre2 prog dsplf3
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018
 
Programmation en C
Programmation en CProgrammation en C
Programmation en C
 
Le langage C
Le langage CLe langage C
Le langage C
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage C
 
Interception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelInterception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appel
 
Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018
 
Seance 1 - Programmation en langage C
Seance 1 - Programmation en langage CSeance 1 - Programmation en langage C
Seance 1 - Programmation en langage C
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage c
 
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
 

Similaire à Théorie des langages - 03 - Principes et paradigmes

Théorie des langages - 02 - Code gen
Théorie des langages - 02 - Code genThéorie des langages - 02 - Code gen
Théorie des langages - 02 - Code genYann Caron
 
Chapitre 3 - Généralités sur le langage C.pdf
Chapitre 3 - Généralités sur le langage C.pdfChapitre 3 - Généralités sur le langage C.pdf
Chapitre 3 - Généralités sur le langage C.pdfShiniGami0o0
 
Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)ISIG
 
Algorithme et programmation.pdf
Algorithme et programmation.pdfAlgorithme et programmation.pdf
Algorithme et programmation.pdfGhassenHaamdi
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptxMED B
 
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1Beligh HAMDI
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Fahad Golra
 
0419-langages-de-programmation-et-compilation.pdf
0419-langages-de-programmation-et-compilation.pdf0419-langages-de-programmation-et-compilation.pdf
0419-langages-de-programmation-et-compilation.pdfFATI432465
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Aziz Darouichi
 
Formation Langage c.pptx
Formation Langage c.pptxFormation Langage c.pptx
Formation Langage c.pptxValdy Ngouabira
 
Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...
Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...
Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...cppfrug
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11Microsoft
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap IInes Ouaz
 
Test unitaires - refactoring - clean code
Test unitaires - refactoring - clean codeTest unitaires - refactoring - clean code
Test unitaires - refactoring - clean codeHadrien Blanc
 
Cours langage C et C++
Cours langage C et C++Cours langage C et C++
Cours langage C et C++mohamednacim
 

Similaire à Théorie des langages - 03 - Principes et paradigmes (20)

Théorie des langages - 02 - Code gen
Théorie des langages - 02 - Code genThéorie des langages - 02 - Code gen
Théorie des langages - 02 - Code gen
 
Formation VBA Excel
Formation VBA ExcelFormation VBA Excel
Formation VBA Excel
 
Chapitre 3 - Généralités sur le langage C.pdf
Chapitre 3 - Généralités sur le langage C.pdfChapitre 3 - Généralités sur le langage C.pdf
Chapitre 3 - Généralités sur le langage C.pdf
 
Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)
 
Algorithme et programmation.pdf
Algorithme et programmation.pdfAlgorithme et programmation.pdf
Algorithme et programmation.pdf
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptx
 
Boost.SIMD
Boost.SIMDBoost.SIMD
Boost.SIMD
 
Algorithme chap 1
Algorithme chap 1Algorithme chap 1
Algorithme chap 1
 
Python
PythonPython
Python
 
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C
 
Chap1_Entrees_Sorties.pptx
Chap1_Entrees_Sorties.pptxChap1_Entrees_Sorties.pptx
Chap1_Entrees_Sorties.pptx
 
0419-langages-de-programmation-et-compilation.pdf
0419-langages-de-programmation-et-compilation.pdf0419-langages-de-programmation-et-compilation.pdf
0419-langages-de-programmation-et-compilation.pdf
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Formation Langage c.pptx
Formation Langage c.pptxFormation Langage c.pptx
Formation Langage c.pptx
 
Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...
Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...
Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap I
 
Test unitaires - refactoring - clean code
Test unitaires - refactoring - clean codeTest unitaires - refactoring - clean code
Test unitaires - refactoring - clean code
 
Cours langage C et C++
Cours langage C et C++Cours langage C et C++
Cours langage C et C++
 

Plus de Yann Caron

Théorie des langages - 04 Théorie des langages
Théorie des langages - 04 Théorie des langagesThéorie des langages - 04 Théorie des langages
Théorie des langages - 04 Théorie des langagesYann Caron
 
Théorie des langages - 01.1 - Parcours d'arbres
Théorie des langages - 01.1 - Parcours d'arbresThéorie des langages - 01.1 - Parcours d'arbres
Théorie des langages - 01.1 - Parcours d'arbresYann Caron
 
Théorie des langages - 00 - Introduction
Théorie des langages - 00 - IntroductionThéorie des langages - 00 - Introduction
Théorie des langages - 00 - IntroductionYann Caron
 
Algea - 04 - conclusion
Algea - 04 - conclusionAlgea - 04 - conclusion
Algea - 04 - conclusionYann Caron
 
Algea - 03 - ennemis
Algea - 03 - ennemisAlgea - 03 - ennemis
Algea - 03 - ennemisYann Caron
 
Algea - 02 - gemmes
Algea - 02 - gemmesAlgea - 02 - gemmes
Algea - 02 - gemmesYann Caron
 
Algea - 01 - hero
Algea - 01 - heroAlgea - 01 - hero
Algea - 01 - heroYann Caron
 
ALGEA - 00 - introduction
ALGEA - 00 - introductionALGEA - 00 - introduction
ALGEA - 00 - introductionYann Caron
 
Programmation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - GeomatiqueProgrammation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - GeomatiqueYann Caron
 
Programmation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteProgrammation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteYann Caron
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web servicesYann Caron
 
Programmation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeProgrammation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeYann Caron
 
Programmation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancéesProgrammation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancéesYann Caron
 
Programmation Android - 06 - Publication
Programmation Android - 06 - PublicationProgrammation Android - 06 - Publication
Programmation Android - 06 - PublicationYann Caron
 
Programmation Android - 05 - Google map
Programmation Android - 05 - Google mapProgrammation Android - 05 - Google map
Programmation Android - 05 - Google mapYann Caron
 
Programmation Android - 04 - Databases
Programmation Android - 04 - DatabasesProgrammation Android - 04 - Databases
Programmation Android - 04 - DatabasesYann Caron
 
Programmation Android - 03 - IHM bases
Programmation Android - 03 - IHM basesProgrammation Android - 03 - IHM bases
Programmation Android - 03 - IHM basesYann Caron
 
Programmation Android - 02 - Android
Programmation Android - 02 - AndroidProgrammation Android - 02 - Android
Programmation Android - 02 - AndroidYann Caron
 
Programmation Android - 01 - Introduction
Programmation Android - 01 - IntroductionProgrammation Android - 01 - Introduction
Programmation Android - 01 - IntroductionYann Caron
 
Programmation Android - 00 - Présentation
Programmation Android - 00 - PrésentationProgrammation Android - 00 - Présentation
Programmation Android - 00 - PrésentationYann Caron
 

Plus de Yann Caron (20)

Théorie des langages - 04 Théorie des langages
Théorie des langages - 04 Théorie des langagesThéorie des langages - 04 Théorie des langages
Théorie des langages - 04 Théorie des langages
 
Théorie des langages - 01.1 - Parcours d'arbres
Théorie des langages - 01.1 - Parcours d'arbresThéorie des langages - 01.1 - Parcours d'arbres
Théorie des langages - 01.1 - Parcours d'arbres
 
Théorie des langages - 00 - Introduction
Théorie des langages - 00 - IntroductionThéorie des langages - 00 - Introduction
Théorie des langages - 00 - Introduction
 
Algea - 04 - conclusion
Algea - 04 - conclusionAlgea - 04 - conclusion
Algea - 04 - conclusion
 
Algea - 03 - ennemis
Algea - 03 - ennemisAlgea - 03 - ennemis
Algea - 03 - ennemis
 
Algea - 02 - gemmes
Algea - 02 - gemmesAlgea - 02 - gemmes
Algea - 02 - gemmes
 
Algea - 01 - hero
Algea - 01 - heroAlgea - 01 - hero
Algea - 01 - hero
 
ALGEA - 00 - introduction
ALGEA - 00 - introductionALGEA - 00 - introduction
ALGEA - 00 - introduction
 
Programmation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - GeomatiqueProgrammation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - Geomatique
 
Programmation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteProgrammation Android - 10 - Spatialite
Programmation Android - 10 - Spatialite
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web services
 
Programmation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeProgrammation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridge
 
Programmation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancéesProgrammation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancées
 
Programmation Android - 06 - Publication
Programmation Android - 06 - PublicationProgrammation Android - 06 - Publication
Programmation Android - 06 - Publication
 
Programmation Android - 05 - Google map
Programmation Android - 05 - Google mapProgrammation Android - 05 - Google map
Programmation Android - 05 - Google map
 
Programmation Android - 04 - Databases
Programmation Android - 04 - DatabasesProgrammation Android - 04 - Databases
Programmation Android - 04 - Databases
 
Programmation Android - 03 - IHM bases
Programmation Android - 03 - IHM basesProgrammation Android - 03 - IHM bases
Programmation Android - 03 - IHM bases
 
Programmation Android - 02 - Android
Programmation Android - 02 - AndroidProgrammation Android - 02 - Android
Programmation Android - 02 - Android
 
Programmation Android - 01 - Introduction
Programmation Android - 01 - IntroductionProgrammation Android - 01 - Introduction
Programmation Android - 01 - Introduction
 
Programmation Android - 00 - Présentation
Programmation Android - 00 - PrésentationProgrammation Android - 00 - Présentation
Programmation Android - 00 - Présentation
 

Dernier

présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...maach1
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 

Dernier (11)

présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 

Théorie des langages - 03 - Principes et paradigmes