Programming paradigms · Paradigmes de programmation
What is a paradigm?
- A programming paradigm is a style of organising a program.
- The same problem can be solved in different styles.
- Python lets you mix several paradigms in one program.
Qu'est-ce qu'un paradigme ?
- Un paradigme de programmation est un style d'organisation d'un programme.
- Un même problème peut être résolu de différentes manières.
- Python permet de combiner plusieurs paradigmes dans un même programme.
Imperative and procedural
- Imperative code is a list of steps that change the program's state.
- It says how to do something, step by step (loops, assignments).
- Procedural style groups those steps into reusable procedures and functions.
Impératif et procédural
- Le code impératif est une liste d'étapes qui modifient l'état du programme.
- Il dit comment faire quelque chose, étape par étape (boucles, affectations).
- Le style procédural groupe ces étapes dans des procédures et fonctions réutilisables.
def total(nums):
result = 0
for n in nums:
result = result + n
return result
print(total([2, 4, 6]))
Object-oriented
- Object-oriented code bundles data and the methods that act on it into objects.
- You model the problem as a set of classes that talk to each other.
- It suits large programs because each class is a self-contained part.
Orienté objet
- Le code orienté objet regroupe les données et les méthodes qui agissent dessus dans des objets.
- Vous modélisez le problème comme un ensemble de classes qui communiquent entre elles.
- Il convient aux grands programmes car chaque classe est une partie autonome.
class Counter:
def __init__(self):
self.count = 0
def add(self):
self.count = self.count + 1
c = Counter()
c.add()
c.add()
print(c.count)
Declarative
- Declarative code says what you want, not how to compute it.
- The language or library works out the steps for you.
- Examples: a database query (SQL), or a Python list comprehension.
Déclaratif
- Le code déclaratif dit ce que vous voulez, pas comment le calculer.
- Le langage ou la bibliothèque détermine les étapes pour vous.
- Exemples : une requête de base de données (SQL), ou une compréhension de liste Python.
nums = [1, 2, 3, 4, 5]
print(sum(nums)) # say WHAT: the total
print([n * n for n in nums]) # a list comprehension
Low-level
- Low-level code is close to the machine: assembly and machine code.
- The CPU runs it directly, so it is fast but hard to write.
- High-level languages like Python are translated down to it before running.
Niveau bas
- Le code bas niveau est proche de la machine : assembleur et code machine.
- Le CPU l'exécute directement, donc c'est rapide mais difficile à écrire.
- Les langages haut niveau comme Python y sont traduits avant l'exécution.
Common mistakes
- Procedural is steps; object-oriented is objects with data and methods; declarative describes the result.
- Match the paradigm to the problem.
Erreurs courantes
- Procédural = étapes ; orienté objet = objets avec données et méthodes ; déclaratif décrit le résultat.
- Choisissez le paradigme adapté au problème.
Now you try
- Each task solves a small problem in a different paradigm.
- Press Check answer to test your code.
À vous maintenant
- Chaque tâche résout un petit problème selon un paradigme différent.
- Appuyez sur Vérifier la réponse pour tester votre code.
Procedural style. Write sum_list(nums) that uses a loop and an accumulator to add up the list and return · rendement the total. · Style procédural. Écrivez sum_list(nums) qui utilise une boucle et un accumulateur pour additionner la liste et retourner le total.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Declarative style. Write evens(nums) that returns · rendements a list of the even numbers, using a single list comprehension [... for ... if ...]. · Style déclaratif. Écrivez evens(nums) qui retourne une liste des nombres pairs, en utilisant une unique list comprehension [... for ... if ...].
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Object-oriented style. Write a class Bag whose __init__(self, items) stores a list, and whose method total(self) returns · rendements the sum of those items. · Style orienté objet. Écrivez une classe Bag dont le __init__(self, items) stocke une liste, et dont la méthode total(self) retourne la somme de ces éléments.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.