Discussion des Paradigmes

publicité
Paradigmes de Programmation
Discussion
CSI2520, Hiver 2007
Paradigmes
• 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 d’objets 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.
CSI2520, Hiver 2007
Pourquoi é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.
CSI2520, Hiver 2007
Diffé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
CSI2520, Hiver 2007
Discussion de Paradigmes
// Factoriel en Java
// Factoriel en Prolog
public static double factorial(int n)
{
if (n < 0) return 0.0;
double fact = 1.0;
while(x > 1) {
fact = fact * n;
n = n - 1;
}
return fact;
}
factorial(0,1).
factorial(N,F) :- N>0,
N1 is N-1,
factorial(N1,F1),
F is N * F1.
CSI2520, Hiver 2007
Critères dans l’évaluation d’un
langage
Expressivité
• Expressivité des structures de contrôle et de données.
– Qu’est-ce qui est plus facile à lire et maintenir:
un long programme bâti à partir d’éléments simples?
-ouun programme bref bâti à partir d’éléments complexes?
– Exemples d’expressivité: la récursivité, le retour arrière incorporé
de Prolog, la recherche dans les langages de base de données.
– Exemple de peu d’expressivité: instructions d’assembleur.
CSI2520, Hiver 2007
Critères de choix d’un langage
Facilité de lecture
• La lisibilité d’un 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,
l’abstraction procédurale, et l’abstraction des données.
• Absence d’ambiguïtés
• Absence d’une surabondance de choix: Par exemple, certains
langages permettent d’écrire les boucles de plusieurs façons
différentes.
CSI2520, Hiver 2007
Critères de choix d’un 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 d’outils de modularisation et la
capacité d’être incorporé dans un environnement de
programmation intégré.
CSI2520, Hiver 2007
Critères de choix d’un langage
Orthogonalité
• l’absence de restrictions sur la façon de combiner les
primitives du langage.
(Il est plus facile de constater le manque d’orthogonalité.)
– Exemple: Un tableau peut-il contenir des éléments de
n’importe quel type?
– Il en résulte en une diminution du nombre de cas
spéciaux.
CSI2520, Hiver 2007
Critères de choix d’un langage
• Facilité d’apprentissage
– 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
CSI2520, Hiver 2007
Critères de choix d’un langage
• Facilité d’utilisation
– Facile à lire, facile à écrire, facile à apprendre
– Bons outils de développement, bonne
documentation
– Peu de code à écrire afin de solutionner un
problème
CSI2520, Hiver 2007
Critères dans l’évaluation d’un
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.
CSI2520, Hiver 2007
Critères dans l’évaluation d’un
langage
• Traduisibilité: devrait permettre la traduction efficace du langage en
code machine.
• Précision: le fait que le langage ait été clairement d´efini, 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
CSI2520, Hiver 2007
Critères de choix d’un 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
CSI2520, Hiver 2007
Critères de choix d’un langage
• Fiabilité: Vérification des types, traitement des exceptions et
erreurs, l’absence d’ambiguïtés (et en général la lisibilité et l’aptitude
à l’écriture).
• Coût associé à l’utilisation du langage.
– Temps nécessaire au développement (facilité de programmation,
disponibilité de code, de librairies et de documentation).
– Facilité d’implémentation: (affecte la disponibilité et le coût des
compilateurs). L’implémentation de Pascal, C, C++ et Java ont
été de grands succès.
– Temps nécessaire pour traduire, et l’efficacité du code résultant.
– Portabilité et standardisation.
CSI2520, Hiver 2007
Critères de choix d’un langage
• Chaque langage vient avec son modèle
d’exécution
– Compilé ou interprété?
– Tourne-t-il sur une machine virtuelle?
– Est-il concu pour être portable? efficace?
expressif?
CSI2520, Hiver 2007
Programme source
Analyse lexicale
(scanning)
Séquence d’unités
lexicales
Analyse syntaxique
(parsing)
Table de symboles
Optimisation
du code
Arbre syntaxique
Programme abstrait
(code intermédiaire)
Analyse
sémantique
Programme abstrait
(optimisé)
Génération
du code
Code exécutable
(object code)
Chargeur/Éditeur de liens
(Loader/Linker)
Programme résultant
Données d’entrée
Ordinateur
Données de sortie
CSI2520, Hiver 2007
Points forts et faibles d’un langage
Globalement, chaque langage de programmation
a des points forts, et des points faibles:





Java
Prolog
Scheme
Pascal
C C++
CSI2520, Hiver 2007
Choix d’un 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 
CSI2520, Hiver 2007
Téléchargement