Prg fonctionnelle et logique 2ème Année Filière Informatique Khaled Ben Lamine
Prg fonctionnelle et logique 2ème Année Filière Informatique Khaled Ben Lamine 2018-2019 Plan • Donner une vue globale sur les langages et les paradigmes de programmation avec une focalisation sur deux paradigmes qui sont la programmation fonctionnelle et la programmation logique 1. Historique des langages de programmation 2. Paradigmes de programmation 3. La programmation fonctionnelle 4. La programmation Logique Historique: Les pionniers de la programmation • Charles Babbage (1791-1871): Invente la « machine analytique ». Sa compagne, Ada Augusta Lovelace, est considérée comme la première programmeur. • Konrad Zuse (1942): Développe Plankalkül. Cette notation (implémentée seulement en 1975 à titre historique) fut un précurseur des langages de programmation. Historique: Langages de très bas niveau • Ces langages machines et assembleurs sont dépendant du hardware. Initialement binaires, puis éventuellement symboliques. • Il y a un unique langage machine, et habituellement un seul langage assembleur pour chaque type de processeur. • La compatibilité ascendante est souvent très difficile: Aller des 386 vers 486 , ou du 486 aux Pentium, …. Historique: Fortran: 1954-1990 • Le premier langage de haut niveau à avoir été implémenté et ayant introduit les variables, tel que nous les connaissons, les boucles, procédures, étiquettes… • Développé pour le calcul scientifique. • La première version avait plusieurs caractéristiques uniques, souvent disgracieuses, mais conservées pour maintenir une compatibilité descendante. • Encore utilisé pour des applications d’ingénierie nécessitant beaucoup de manipulations de tableaux et bénéficiant d’une bibliothèque importante de programmes • La dernière version, Fortran 90, converge vers les autres langages de programmation. Historique: Algol 60 • Le premier langage à introduire les blocs et la récursivité, et à être défini formellement. N’est plus utilisé mais est un ancêtre de plusieurs langages contemporains. • Souvent considéré comme le langage le plus innovateur de l’histoire des langages de programmation. Historique: Cobol • Orienté vers le traitement de données (applications de gestion) • Organisation très stricte • Structures de contrôles faibles • Structures de données élaborées, les enregistrements (records) sont introduits. • Populaire dans le monde des affaires et des services gouvernementaux, moins dans les universités. • A vécu un regain d’intérêt lors de la « crise » du bug du passage à l’an 2000. Historique: PL/I • Une combinaison des meilleurs éléments (tel qu’on pensait à l’époque) de Fortran, Algol 60 et Cobol. • Conçu pour être complètement général, pour être utilisé pour toute application de l’époque. • Encouragé par IBM • Peu utilisé aujourd’hui. • Introduit la manipulation d’événements (event handling). Historique: Basic • Le premier langage utilisé en informatique personnelle (personal computing). • Le premier langage appris par plusieurs programmeurs: Conçu pour être facile à apprendre. • Très simple, puissance limitée, mais peut être utilisé dans plusieurs domaines d’applications. • Les versions de Basic utilisées aujourd’hui sont plus complexes. Historique: Simula 67 • Une extension d’Algol 60 conçu pour la simulation de processus concurrents. • Introduit les concepts de programmation orientée objet: classes et encapsulation. • Prédécesseur de Smalltalk et C++. • N’est plus très utilisé. Historique: Algol 68 • Sa conception est d’une élégance toujours inégalée. • Très difficile à implémenter. • Une description formelle habile, mais difficile à comprendre. • Jamais vraiment utilisé. Historique: Pascal • Une version simplifiée d’Algol 68. • Populaire pour l’enseignement de la programmation structurée. • Un « bon » « premier langage » à apprendre, favorise de bonnes habitudes de programmation. • Ses extensions (comme Delphi) sont des systèmes de programmation complets, aussi puissant que des environnements Java, par exemple. Historique: Modula-2 • Un successeur de Pascal, plus conceptuellement uniforme. • Mécanismes de programmation concurrente (plusieurs processus en parallèle). • Peu utilisé, bien que ce soit un bon langage. • Ses successeurs, Modula-3 et Oberon, sont encore plus attrayants, pratiques — et peu utilisés, (supplantés par C++.) Historique: Ada • Le résultat d’un processus de conception très élaboré, à plusieurs étapes, et une tentative plus réussie que PL/I d’obtenir un langage général. • Complètement standardisé: ne possède aucun dialecte ( tout comme Java). • 2 standards: Ada 83 (original), et Ada 95. • Permet la concurrence de façon élégante et systématique. Historique: C • Utilisé pour implémenter Unix. • Utile pour la programmation système et le développement pour les ordinateurs personnels. • Populaire dans le passé, toujours utilisé, mais supplanté par C++. • De bas niveau / haut niveau. Historique: LISP • Un des premiers langages de programmation. • Basé sur l’évaluation de fonctions. Utile pour le calcul symbolique. • Initialement l’unique langage de l’intelligence artificielle (Prolog est plus jeune de 12 ans). • Plusieurs dialectes: Scheme, Common Lisp. • Des successeurs très élégants (Miranda, ML, Haskell) mais peu utilisés. Historique: Prolog • Un langage de très haut niveau. • Déclaratif, basé sur un sous-ensemble de la logique, les preuves sont interprétées comme les calculs. • Puissant: • Gère le Non-déterminisme (backtracking intégré). • Appariement flexible et élaboré. • Mémoire Associative: accès par le contenu • Un outil puissant, entre des mains habiles. Historique: Smalltalk • Programmation orientée objet très pure (plus que Java, beaucoup plus que C++). • Intégré à un environnement de programmation et une interface usagée. • Un outil puissant, entre des mains habiles. Historique: C++ • L’extension orientée objet du langage impératif C. • De conception hybride, avec les concepts orientés objet ajoutés à un langage qui n’était pas conçu pour cela. • Syntaxe compliquée, sémantique difficile. • Très en vogue et en demande. Java ne l’a pas encore supplanté, classé comme le langage le plus demandé en 2016, Historique: Java • Une version modifiée de C++ beaucoup plus élégante. • Pleinement orienté objet (Quoi que pas aussi consistant que Smalltalk) • Conçu pour la programmation pour Internet, mais d’utilisation générale. • En vogue. Historique: Langage Script • Traitement de fichiers texte • Perl • Python • Programmation du web • JavaScript • PHP Historique: Spécialisation d’un Langage • Langages à usage général: • la plupart des langages que vous connaissez, • Langages spécialisés: par exemple • Matlab; Octave (mathématiques), • Cobol (production de rapports), • SQL (bases de données), • Perl (adapté au traitement et à la manipulation de fichiers texte, langage interprété intermédiaire entre C et des langages script comme Shell ou Sed) , Historique: Liens Historiques entre les Langages Historique: Liens Historiques entre les Langages Historique: Liens Historiques entre les Langages Historique: Classement des Langages de Programmation: Historique: Classement des Langages de Programmation: • Se limiter aux dix premiers est un choix très difficile dans la mesure où la suite du classement est également intéressante. • On retrouve par exemple de la 11e à la 20e place : • Arduino (#11), • Ruby (#12), • Assembleur (#13), • Scala (#14), • Matlab (#15), • HTML (#16), • Shell (#17), • Perl (#18), • Visual Basic (#19) • Cuda (#20). SOMMAIRE 1. Introduction 2. Aperçu Historique 3. Paradigmes de Programmation 4. Programmation fonctionnelle 5. Programmation logique Paradigmes de programmation Définition • Un Paradigme est un modèle de pensée qui oriente la recherche et la réflexion scientifique (Larousse) • Un paradigme de programmation est une façon de penser qui oriente l’analyse, la conception et le codage d’un programme, • Chaque paradigme permet d’autres techniques de programmation: Les paradigmes sont complémentaires Paradigmes de programmation classification • Le nombre de paradigmes est de l’ordre de 29 paradigmes réellement utilisés, mais le nombre de LP est beaucoup plus important, • Chaque paradigme est défini par un ensemble de concepts de programmation, Paradigmes de programmation classification • 2 grandes approche dans la programmation • Une approche "impérative" (opérationnelle) totalement déterministe, où l'on décrit à la machine, exactement ce qu'elle doit faire (un programme = suite d'instruction à exécuter par la machine) • Une approche déclarative, totalement non déterministe : on décrit à la machine ce que l'on veut qu'elle calcule (c'est à elle de trouver l'algo) des langages s'en approche Prolog, CAML, Lisp • Les langages impératifs au départ étaient voué au calcul numérique opposé au calcul symbolique. Paradigmes de programmation classification • Programmation impérative: • ce type de programmation présente 3 propriétés: • traitement séquentiel des instructions, • usage de variables représentant des espaces mémoires ou des états, • usage d’affectations pour changer les valeurs des variables, ou les états • Exemples: Pascal, C, C++, Java …., • Programmation déclarative: • ce type de programmation permet au programmeur de déclarer diverses entités sans se soucier de la façon dont celles-ci seront utilisées. Le programme pourra ensuite utiliser ces déclarations pour résoudre le problème, exemples: Prolog, Lisp Paradigmes de programmation Classification Paradigmes de programmation Classification Paradigmes de programmation Programmation Impérative • Programmation procédurale: • Le programme est divisé en blocs pouvant contenir des variables locales, ainsi que d’autres blocs: (Fortran, Pascal, C,), • la programmation est basée sur des instructions/commandes “fais quelque chose”, • Programmation orientée objet: • Des objets se rapportant au problème sont définis, avec leurs attributs et leur façon de réagir à différents événements, • Le problème est résolu grâce à des structures de contrôles basées sur l’envoi de messages entre ces objets: (Java, Smalltalk, C++, C#, Eiffel) Paradigmes uploads/Histoire/ cours-prg-fonctionnelle-logique.pdf
Documents similaires
-
16
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Aoû 01, 2022
- Catégorie History / Histoire
- Langue French
- Taille du fichier 2.3402MB