Fiche : Paradigmes Fonctionnel & Logique
Paradigme Fonctionnel
Définition
- Basé sur les fonctions
- Programmation déclarative
- Transformation de données
- effets de bord Modification de valeurs d'un programme autres que celles explicitement spécifiées lors de l'appel d'une fonction ou d'un sous-programme.
Caractéristiques
- Fonctions pures
- Immutabilité (données non modifiables)
- Pas d’effets de bord
- Récursion au lieu des boucles
- Fonctions d’ordre supérieur (map, filter)
Principes clés
- Fonction pure : même entrée → même sortie
- Immutabilité : aucune modification des données
- Lazy evaluation : calcul seulement si nécessaire
- Composition : combiner les fonctions
Avantages
- Code prévisible
- Moins de bugs
- Facile à tester
- Concurrence facilitée
Langages
Haskell, OCaml, F#, Scala, Clojure
Paradigme Logique
Définition
- Basé sur des faits et des règles
- Programmation déclarative
- Résolution automatique par le système
Caractéristiques
- Faits + règles = base de connaissances
- Requêtes pour obtenir des réponses
- Moteur d’inférence
Principes clés
- Déclarativité : dire ce qu’on veut
- Unification : correspondance des variables
- Backtracking : exploration des solutions
- Inférence : déduction automatique
Avantages
- Très lisible
- Automatisation du raisonnement
- Idéal pour IA et systèmes experts
Langages
Prolog, Datalog, ASP
Comparaison
- Fonctionnel : transforme les données avec des fonctions
- Logique : déduit des résultats avec des règles
- Fonctionnel : exécution contrôlée par le programme
- Logique : exécution contrôlée par le moteur
Exemples simples
Fonctionnel : f(x) = x + 1
Logique : parent(X,Y) → enfant(Y,X)
Programmation Logique et Cybersécurité
Points forts
- Déclaratif : moins d’erreurs liées au contrôle du flux
- Raisonnement logique : facilite la vérification des règles de sécurité
- Moins d’effets de bord : réduit certains comportements imprévus
- Utilisé en sécurité : systèmes experts, détection d’intrusions
Points faibles
- Moins répandu : moins d’outils de sécurité disponibles
- Performance : peut être plus lent → vulnérable à certaines attaques (DoS)
- Complexité des règles : erreurs logiques difficiles à détecter
Risques spécifiques
- Injection de règles : manipulation des faits ou règles
- Fuite d’information : via les réponses logiques
- Backtracking : exploitation pour épuiser les ressources
La sécurité dépend fortement de la rigueur des règles logiques définies.
Programmation Fonctionnelle et Cybersécurité
Points forts
- Immutabilité : données non modifiables → réduit les attaques
- Pas d’effets de bord : comportement prévisible
- Fonctions pures : facilite les tests et la vérification
- Moins d’états globaux : limite les erreurs et failles
Points faibles
- Courbe d’apprentissage : plus difficile à maîtriser
- Interopérabilité : avec du code impératif parfois risquée
- Performance : certaines implémentations coûteuses
Risques spécifiques
- Mauvaise gestion des entrées : toujours vulnérable aux injections
- Fuite mémoire : si récursion mal maîtrisée
- Dépendances : bibliothèques externes vulnérables
La programmation fonctionnelle est souvent plus sûre par conception, mais nécessite une bonne maîtrise.