Paradigmes de Programmation Discussion CSI 2520 Hiver 2007

  • Slides: 19
Download presentation
Paradigmes de Programmation Discussion CSI 2520, Hiver 2007

Paradigmes de Programmation Discussion CSI 2520, Hiver 2007

Paradigmes • Programmation impérative: le programme est constitué d' une séquence d’énoncés à être

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. CSI 2520, Hiver 2007

Pourquoi étudier les langages de programmation? • Faciliter l'expression des idées par l'emploi d'un

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. CSI 2520, Hiver 2007

Différents langages • Une opération peut être exprimée dans différents langages, puis exécutée sur

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 CSI 2520, Hiver 2007

Discussion de Paradigmes // Factoriel en Java // Factoriel en Prolog public static double

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, N 1 is N-1, factorial(N 1, F 1), F is N * F 1. CSI 2520, Hiver 2007

Critères dans l’évaluation d’un langage Expressivité • Expressivité des structures de contrôle et de

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. CSI 2520, Hiver 2007

Critères de choix d’un langage Facilité de lecture • La lisibilité d’un langage est

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. CSI 2520, Hiver 2007

Critères de choix d’un langage Facilité d’écriture • Abstraction: comme pour la lecture •

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é. CSI 2520, Hiver 2007

Critères de choix d’un langage Orthogonalité • l’absence de restrictions sur la façon de

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. CSI 2520, Hiver 2007

Critères de choix d’un langage • Facilité d’apprentissage – Petit langage avec peu de

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 CSI 2520, Hiver 2007

Critères de choix d’un langage • Facilité d’utilisation – Facile à lire, facile à

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 CSI 2520, Hiver 2007

Critères dans l’évaluation d’un langage • Simplicité: le fait de n' inclure qu' un

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. CSI 2520, Hiver 2007

Critères dans l’évaluation d’un langage • Traduisibilité: devrait permettre la traduction efficace du langage

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 CSI 2520, Hiver 2007

Critères de choix d’un langage Tous les langages de programmation ont: • variables, constantes,

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 CSI 2520, Hiver 2007

Critères de choix d’un langage • Fiabilité: Vérification des types, traitement des exceptions et

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. CSI 2520, Hiver 2007

Critères de choix d’un langage • Chaque langage vient avec son modèle d’exécution –

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? CSI 2520, Hiver 2007

Programme source Analyse lexicale (scanning) Séquence d’unités lexicales Analyse syntaxique (parsing) Table de symboles

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 CSI 2520, Hiver 2007

Points forts et faibles d’un langage Globalement, chaque langage de programmation a des points

Points forts et faibles d’un langage Globalement, chaque langage de programmation a des points forts, et des points faibles: q q q Java Prolog Scheme Pascal C C++ CSI 2520, Hiver 2007

Choix d’un langage de programmation Choisir le meilleur langage ü par application • Traitement

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 CSI 2520, Hiver 2007