É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
….