Title: Paradigmes de Programmation
1Paradigmes de Programmation
2Paradigmes
- Programmation impérative le programme est
constitué d' une séquence dénoncés à être
exécutés séquentiellement - Programmation logique le programme décrit les
propriétés de la solution recherchée et un
mécanisme d'inférence propose des solutions
répondant à ces critères. - Programmation fonctionnelle le programme est vu
comme une transformation des données d' entrée
afin d'obtenir la sortie désirée. - Programmation orientée objet le programme se
décompose en un ensemble dobjets interagissant
entre eux par léchange de messages. - Programmation concurrente le programme autorise
la répartition des tâches à accomplir en un
ensemble de plusieurs processus asynchrones
pouvant être exécutés en parallèle.
3Pourquoi étudier les langages de programmation?
- Faciliter l'expression des idées par l'emploi
d'un langage de programmation expressif en regard
de l'application visée. - Donner les connaissances permettant à un
programmeur de choisir un langage approprié. - Comprendre comment un concept informatique peut
être mis en application par la programmation. - Utiliser de façon plus efficace un langage.
- Accroître l'efficacité du code résultant.
- Faciliter l'apprentissage de nouveaux langages.
- Comprendre la relation qui existe entre un
algorithme et un langage. - Donner un aperçu de létat de l'art en
programmation. - Etre en mesure de comparer les différents
langages existants. - Donner la possibilité de concevoir un nouveau
langage.
4Différents langages
- Une opération peut être exprimée dans différents
langages, puis exécutée sur la même machine. - Différent langages permettent de résoudre
différents problèmes de façon différente. - Différence entre ces langages
- syntaxe (forme, apparence)
- sémantique
5Discussion de Paradigmes
- // Factoriel en Java
- public static double factorial(int n)
-
- if (n lt 0) return 0.0
- double fact 1.0
- while(x gt 1)
- fact fact n
- n n - 1
-
- return fact
// Factoriel en Prolog factorial(0,1).
factorial(N,F) - Ngt0, N1 is N-1,
factorial(N1,F1),
F is N F1.
6Critères dans lévaluation dun langage
- Expressivité
- Expressivité des structures de contrôle et de
données. - Quest-ce qui est plus facile à lire et
maintenir - un long programme bâti à partir déléments
simples? - -ou-
- un programme bref bâti à partir déléments
complexes? - Exemples dexpressivité la récursivité, le
retour arrière incorporé de Prolog, la recherche
dans les langages de base de données. - Exemple de peu dexpressivité instructions
dassembleur.
7Critères de choix dun langage
- Facilité de lecture
- La lisibilité dun langage est essentielle, en
particulier, pour des fins dévolution, de
maintenance, et de mise à jour des logiciels. - Abstraction permettre la généralité des
programmes, labstraction procédurale, et
labstraction des données. - Absence dambiguïtés
- Absence dune surabondance de choix Par exemple,
certains langages permettent décrire les boucles
de plusieurs façons différentes.
8Critères de choix dun langage
- Facilité décriture
- Abstraction comme pour la lecture
- Simplicité
- Pascal est simple
- Prolog est conceptuellement simple, mais
difficile en pratique. - C et Java?
- Modularité aussi la présence doutils de
modularisation et la capacité dêtre incorporé
dans un environnement de programmation intégré.
9Critères de choix dun langage
- Orthogonalité
- labsence de restrictions sur la façon de
combiner les primitives du langage.(Il est plus
facile de constater le manque dorthogonalité.) - Exemple Un tableau peut-il contenir des éléments
de nimporte quel type? - Il en résulte en une diminution du nombre de cas
spéciaux.
10Critères de choix dun langage
- Facilité dapprentissage
- Petit langage avec peu de restrictions
- Scheme
- Une (seule) façon simple de faire les choses
- Peu de mots clés
- C
- Facilité de détection des erreurs
- Java
11Critères de choix dun langage
- Facilité dutilisation
- Facile à lire, facile à écrire, facile Ã
apprendre - Bons outils de développement, bonne documentation
- Peu de code à écrire afin de solutionner un
problème
12Critères dans lévaluation dun langage
- Simplicité le fait de n' inclure qu' un nombre
limité de composantes dont l'usage est naturel et
cohérent. - Abstraction le fait de pouvoir représenter une
structure complexe tout en ignorant des détails
jugés non essentiels. - Portabilité jusquà quel point ce langage a été
standardisé, si plusieurs dialectes du langage
coexistent. - Modularité de quelle facon le programme peut
être subdivisé en unités cohérentes. - Robustesse détection précoce des erreurs,
vérification des types. - Uniformité le langage devrait utiliser avec
consistance les notations et conventions
habituellement admises.
13Critères dans lévaluation dun langage
- Traduisibilité devrait permettre la traduction
efficace du langage en code machine. - Précision le fait que le langage ait été
clairement defini, que toute séquence donne des
résultats prédictibles. - Extensibilité la structure devrait permettre d'
y ajouter de nouveaux concepts, de nouvelles
options, permettant ainsi au langage dévoluer
harmonieusement - Restricabilité si il existe plusieurs facon d'
utliser le langage, ou un sous-ensemble de
celui-ci de facon a limiter la complexité de son
usage au besoin. - Support l'existence d'outils de développement
intégrés. - Apparence la facon dont se présente le code
- Élégance la facon dont se présente les solutions
14Critères de choix dun langage
- Tous les langages de programmation ont
- variables, constantes, strucutres de données
- règles de portée
- types,
- expressions
- structures de contrôle (selection, iteration)
- récursivité (pour la plupart des langages)
- sous-programmes
- ...
- En Prolog et en Scheme, données et programmes ont
la même forme - En Scheme, toutes les données ont les même
privilèges (incluant les fonctions) - Java offre une grande variété de données et
structures
15Critères de choix dun langage
- Fiabilité Vérification des types, traitement des
exceptions et erreurs, labsence dambiguïtés (et
en général la lisibilité et laptitude Ã
lécriture). - Coût associé à lutilisation du langage.
- Temps nécessaire au développement (facilité de
programmation, disponibilité de code, de
librairies et de documentation). - Facilité dimplémentation (affecte la
disponibilité et le coût des compilateurs).
Limplémentation de Pascal, C, C et Java ont
été de grands succès. - Temps nécessaire pour traduire, et lefficacité
du code résultant. - Portabilité et standardisation.
16Critères de choix dun langage
- Chaque langage vient avec son modèle dexécution
- Compilé ou interprété?
- Tourne-t-il sur une machine virtuelle?
- Est-il concu pour être portable? efficace?
expressif?
17Programme source
Séquence dunités lexicales
Analyse lexicale (scanning)
Analyse syntaxique(parsing)
Table de symboles
Arbre syntaxique
Optimisation du code
Analyse sémantique
Programme abstrait(code intermédiaire)
Programme abstrait(optimisé)
Chargeur/Éditeur de liens (Loader/Linker)
Génération du code
Code exécutable(object code)
Programme résultant
Données de sortie
Données dentrée
Ordinateur
18Points forts et faibles dun langage
- Globalement, chaque langage de programmation a
des points forts, et des points faibles - Java
- Prolog
- Scheme
- Pascal
- C C
19Choix dun langage de programmation
- Choisir le meilleur langage
- par application
- Traitement du langage
- Retour-arrière (jeux)
- Simulations
-
- par familiarisation
- pour travailler en équipe
- par gout ?