Évaluation des langages de programmation
Transcription
Évaluation des langages de programmation
Concepts des langages de programmation Critères d’évaluation des langages de programmation Besoin d’évaluation Étant donnée la prolifération de langages de programmation, il est important de pouvoir évaluer ces langages afin de pouvoir les choisir de manière appropriée et de les améliorer Trois critères d’évaluation sont généralement utilisés 2 la lisibilité, la facilité d’écriture, et la fiabilité Besoin d’évaluation (suite) La lisibilité correspond a la facilité avec laquelle un programme peut-être lu et compris La facilité d’écriture correspond a la facilité avec laquelle un langage peut être utilisé pour créer un programme La fiabilité correspond au degré de confiance avec lequel un programme peut être exécuté sous différentes conditions et aboutir aux mêmes résultats Un autre critère important est le coût de ce langage 3 Quelques caractéristiques des langages qui affectent les critères d'évaluation Critères Caractéristique Simplicité/Orthogonalité Structure de Contrôle Type et Structure des Données Conception Syntaxique Soutien pour l’Abstraction Expressivité Vérification de Type Traitement d’Exceptions 4 Lisibilité Écriture Fiabilité •• •• •• •• •• •• •• •• • • Critères affectant la lisibilité La simplicité S’il y a beaucoup de composantes de bases, il est difficile de toutes les connaître S’il existe plusieurs façons d’exprimer une commande, il est aussi difficile de toutes les connaître Si les operateurs peuvent être surchargés, cela constitue une autre source de difficulté pour la lecture Néanmoins, la simplicité ne doit pas être poussée trop loin car, paradoxalement, elle cause la difficulté de lecture 5 Trouver un compromis entre la simplicité et la facilité d'écriture Critères affectant la lisibilité (suite) L’orthogonalité L'orthogonalité dans un langage de programmation signifie que toutes les combinaisons de primitives sont légales et significatives L'ordre, l'imbrication, … De plus, la signification d’un élément du langage doit être indépendante du contexte dans lequel il apparait Si le degré d’orthogonalité est bas, il y aura beaucoup d’exceptions à ses règles, et cela causera beaucoup de difficultés pour la lecture, la compréhension et la production de code fiable 6 Faudrait apprendre toutes les exceptions aux règles pour éviter des bugs/erreurs Critères affectant la lisibilité (suite) Instructions de contrôle Il est très important, pour la lisibilité d’un langage de programmation d’avoir des structures de contrôle adéquates Par exemple, l’un des plus grands problèmes du premier BASIC est que sa seule instruction de contrôle était le "goto" Cela créait des situations ou le lecteur était renvoyé à différents points du programme et cassait son "flot régulier" Depuis la fin des années 1960, la plupart des langages incluent des instructions de contrôle adéquates 7 Instructions conditionnelles, itérations, … Critères affectant la lisibilité (suite) Types et structures de données 8 La présence de moyens appropriés pour définir des types et des structures de données dans un langage peut améliorer considérablement la lisibilité Par exemple, la présence du type "Booleen" peut clarifier certaines instructions De même la possibilité de créer des enregistrements à types variés ("records") peut clarifier des expressions qui seraient, sans leur présence, indiquées par plusieurs tableaux … un tableau pour chaque type Critères affectant la lisibilité (suite) La syntaxe 9 Voici des exemples où la syntaxe peut influencer la lisibilité : La forme des identificateurs (noms de variables) : des identificateurs trop courts peuvent rendre la lecture difficile Les mots clès : ces mots peuvent aider a la compréhension (par exemple "begin", "end", "if", "and", "or", etc.) Néanmoins, si ces mots peuvent aussi être utilisés comme identificateurs, cela rendra la lecture plus difficile Si chaque construction a la même signification dans des contextes différents, la lecture sera plus aisée Critères affectant la facilité d'écriture La simplicité et l'orthogonalité Si un langage contient une grande variation de constructeurs syntaxiques, il est fort possible que certains programmeurs ne les connaissent pas tous 10 Dans ce cas il se peut que ces programmeurs n’utilisent pas les meilleures constructions présents De même, il se peut que le programmeur ne connaisse certains constructeurs que superficiellement et les utilises de manière erronée Critères affectant la facilité d'écriture (suite) L'abstraction L ’abstraction est la possibilité de définir des structures ou des opérations compliquées tout en cachant leurs détails L’abstraction est très importante dans l’écriture d’un programme car elle peut rendre l’écriture beaucoup plus aisée Il y a deux types d’abstractions : abstraction de processus (bloc d'instruction) et abstraction de données 11 Critères affectant la facilité d'écriture (suite) L'abstraction (suite) Quand un processus est abstrait dans un sous-programme il n’est pas nécessaire de répéter son code à chaque fois qu’il est utilisé Les données peuvent être abstraites par les langages de programmation de haut niveau (C++, Java, C#, Ruby, Python,…) dans des objets à interfaces simples 12 Un simple appel de la procédure/fonction est suffisant Le programmeur n'a pas à connaître les détails d'implémentation pour les utiliser Exemple : arbres, tables de hachage, … Critères affectant la facilité d'écriture (suite) L'expressivité Un langage est expressif s’il offre des outils simples, commodes et intuitifs pour permettre au programmeur d'exprimer les différents concepts de programmation Exemples 13 Utiliser des boucles "for" et "while" au lieu de "goto" C "count++" est plus commode et plus simple que "count = count + 1" Programmer avec des threads Modifier les objets et les classes au cours de l'exécution (méta programmation) L'expressivité est déterminante pour le choix d'un langage pour effectuer une tâche donnée Critères affectant la fiabilité Vérification de types La vérification de type signifie qu’un langage est capable de détecter les erreurs relatives aux types de données Quand un langage (C par exemple), ne détecte pas ces erreurs, le programme peut-être exécuté, mais les résultats ne seront pas significatifs 14 Soit lors de la compilation Soit lors de l'exécution Par exemple, l’étendue des tableaux n’est pas vérifiée en C, et lorsque les indices dépassent les limites, le programme ne s’arrête pas et accède ainsi à des zones mémoire autres que celles du tableau Critères affectant la fiabilité (suite) Prise en Charge des Exceptions La possibilité pour un programme d’intercepter les erreurs faites pendant l’exécution, de les corriger, et de continuer l’exécution augmente de beaucoup la fiabilité du langage de programmation Des langages tels que Ada, C++ et Java, Ruby, C# ont des capacités étendues de prise en charge des exceptions, mais de tels capacités sont absentes dans d'autres langages tels que le C ou le FORTRAN 15 Critères affectant la fiabilité (suite) Lisibilité et facilité d'écriture La lisibilité et la facilite d’écriture influencent la fiabilité des langages de programmation En effet, si il n’y a pas de moyens naturels d’exprimer un algorithme, des solutions complexes seront utilisées (si possible), et le risque d'erreurs (bugs) augmente Les programmes qui sont difficiles à lire peuvent aussi être difficiles à écrire et donc à modifier ou à maintenir 16 Les programmes qui résultent sont donc également moins fiables Coût d’un langage de programmation Ces coûts dépendent de plusieurs facteurs : Si le langage n’est pas simple et orthogonal alors : 17 les coûts de formation de programmeurs seront plus élevés l'écriture de programmes coûtera plus cher Néanmoins, un bon environnement de programmation intégré (IDE) peut beaucoup aider à réduire ces coûts Coût d’un langage de programmation (suite) Autres facteurs Les coûts de la compilation et de l’exécution de programmes Les coûts de la maintenance de programmes L’optimisation peut néanmoins réduire le coût de l’exécution … mais elle induit aussi des coûts d'optimisation 18 Coût d’un langage de programmation (suite) Un autre facteur est le coût de la mise en marche du langage Un autre coût est le coût lié au manque de fiabilité Si cette mise en œuvre ou la machine sur laquelle le langage peut être exécuté est chère, il y a peu de chance que le langage devienne populaire Si le programme s'arrête dans le cas d’une centrale nucléaire ou une machine à rayons X, les dommages peuvent être lourds et coûter cher Enfin, le coût de la maintenance du langage (correction, modification et ajout de nouvelles fonctionnalités) 19 Coût d’un langage de programmation (suite) Les trois plus grands facteurs du coût d’un langage de programmation sont : Le développement de programmes Leur maintenance Leur fiabilité Étant donné que ces facteurs dépendent de la lisibilité des programmes et de la facilité de les écrire, ces critères sont, en conséquence, les plus importants Néanmoins, il y a aussi d’autres critères tels que : 20 La portabilité La généralité/spécificité La précision et la complétude de la description La vitesse d'exécution ….