Flair.

NSI · Terminale générale

Langages et paradigmes de programmation

Calculabilité, récursivité, modularité, paradigmes impératif, fonctionnel, objet.

Paradigmes de programmation

Impératif
Décrit une séquence d'instructions qui modifient l'état du programme (variables, boucles, conditions). C'est le paradigme le plus naturel et le plus proche du fonctionnement machine. Exemples : C, Python procédural. Proche du Von Neumann : on décrit comment faire les choses pas à pas.
Fonctionnel
Calcul défini comme application de fonctions pures (sans effet de bord, résultat dépend uniquement des entrées). Données immuables. Avantages : facilite le raisonnement, la parallélisation, les tests. Exemples : Haskell, OCaml, Scala. Python supporte partiellement (map, filter, lambda, list comprehensions).
Orienté objet (POO)
Organise le code en objets regroupant données (attributs) et comportements (méthodes). Repose sur l'encapsulation, l'héritage et le polymorphisme. Exemples : Java, Python OOP, C++. La plupart des langages modernes sont multi-paradigmes et combinent ces approches selon les besoins.

Récursivité et calculabilité

Récursivité
Fonction qui s'appelle elle-même. Structure obligatoire : cas de base (condition d'arrêt) + appel récursif qui se rapproche du cas de base. Exemples : factorielle, Fibonacci, parcours d'arbre. Avantage : code élégant et naturel pour les structures récursives. Risque : dépassement de pile (stack overflow) si profondeur trop grande ou cas de base manquant.
Problème de l'arrêt et indécidabilité
Turing (1936) a prouvé qu'il n'existe aucun algorithme général capable de déterminer si tout programme arbitraire se terminera. Ce résultat établit des limites fondamentales de l'informatique : certains problèmes sont indécidables — on ne peut pas les résoudre algorithmiquement. Conséquence : l'anti-virus parfait n'existe pas en théorie.
Modularité et réutilisabilité
Organiser le code en modules indépendants (fonctions, bibliothèques, packages) ayant chacun une responsabilité unique (Single Responsibility Principle). Avantages : lisibilité, maintenance simplifiée, réutilisation entre projets, travail en équipe. En Python : import, from module import. Les modules limitent le couplage entre composants.
Réviser ce chapitre sur Flair →

Flashcards, mode examen et suivi de progression — gratuit pour commencer.

Toutes les fiches · Flair, ta plateforme de révision