Il existe des langages de programmation, et en particulier des langages de script (voir annexe A), dans lesquels il n’est pas besoin d’associer un "type" à une variable. Ceci ce prête bien à des manipulations rapides faites par un seul programmeur.
On a X et on a Y, on affecte une valeur à X une autre à Y … et si au fond on veut juste afficher ces valeurs le langage se débrouille pour toujours obtenir quelque chose.
Les utilisations possibles de X et de Y sont connues du programmeur et il va se débrouiller pour que son code soit cohérent.
Prenons donc un exemple en Groovy
(dans ce qui va suivre on
notera simplement que signe =
va exprimer une affectation pas une égalité et /
indique une division; les lignes de commentaires -non exécutées- commencent par //
):
//soit la variable nommée x qui prend la valeur 100 def x = 100 def y = 25 def z = x/y println( z )
Le résultat va afficher :
4
Si un peu plus loin nous faisons
y = 33 z = x/y
alors nous aurons :
3.0303030303
(n’oubliez pas que dans la plupart des langages de programmation la notation "avec virgule" se note en fait avec un point - c’est le standard américain qui s’impose ici -. Autre remarque: à un moment donné le résultat s’arrête de donner des chiffres supplémentaires après la virgule!)
A ce niveau, on peut ne pas tenir compte du nombre de chiffres après la virgule … mais nous allons voir que ce résultat, aussi sympathique soit-il, ne va pas de soi!
Reprenons d’abord une autre partie du même script … Que se passe-t’il si nous écrivons:
// nous affectons à y un littéral chaîne de caractères (noté entre guillemets) // en fait ce pourrait être le résultat d'une saisie par l'utilisateur y = "33" println( x + y)
ce qui s’affiche:
10033
peut-être pas tout à fait ce à quoi nous nous attendions!
Et si nous faisons:
println (x / y)
L’exécution est carrément refusée et le langage passe en erreur.
On voit donc ici que le programmeur qui a déclaré une variable générale qui peut prendre n’importe quelle valeur le fait dans un cadre étroit qui peut être:
println(x)
mais pas x/y
).
Le programmeur peut aussi choisir une autre perspective et déclarer une variable à laquelle sont associées des contraintes précises (dans nos cours d’algèbre nous avons des déclarations comme "soit X appartenant à l’ensemble N" etc.)
Certains langages de programmation comme Java
sont très stricts et imposent une déclaration précise d’un type associé à toute déclaration de variable.
L’utilisation des variables pose de réels problèmes qu’il faut savoir cerner:
En gros se pose la problématique de la portée d’une variable. Ceci englobe également un autre cas: que se passe-t’il si deux programmeurs utilisent le même nom pour deux choses différentes?
Non seulement le programmeur doit se poser des questions de portée et d’utilisation (et donc de type) mais il doit aussi obéir à des règles de bienséance:
compteEnBanque
pour un langage et compte_en_banque
pour un autre (il est extrêmement rare
d’avoir des langages qui tolèrent des espaces à l’intérieur des "noms". Par ailleurs les règles syntaxiques propres au langage limitent ces caractères
et leur utilisation: par ex. d2r2
serait correct mais pas 6po
et encore moins Smith&Wesson
)…
Le respect de ces règles permet de rendre les codes plus lisibles par tous et plus facile à maintenir.