Types et langages 
1. Langages typés ou non 
Quelques  langages  sont  très  souples  avec  les  variables.  Vous  pouvez  tout  d’abord  y  mettre  des  nombres,  puis  du 
texte, puis de nouveau des nombres. Ces langages sont dits "non typés". Certains poussent le raisonnement assez 
loin  :  une  variable  peut  contenir  le  chiffre  3,  et  l’autre  le  texte  "3  petits  cochons",  il  pourra  les  additionner  (ce  qui 
devrait donner 6) ! C’est le cas du PHP par exemple : le type de la variable dépend alors de son contexte d’utilisation, 
le langage tentant de convertir son contenu quand c’est possible ! 
À  l’inverse,  d’autres  langages  sont  de  "typage  fort"  où  toutes  les  variables  doivent  être  déclarées  de  manière 
extrêmement précise : type, signe, longueur, et les éventuelles conversions doivent être explicites. 
En  algorithmique,  vous  vous  contenterez  de  donner  le  nom,  le  type  et  éventuellement  la  taille  de  la  variable,  qui 
gardera ses propriétés tout au long de l’algorithme, sa valeur pouvant bien entendu évoluer. 
2. La gestion de la mémoire 
La gestion de la mémoire est le calvaire des programmeurs en langages de bas niveau ou même de haut niveau quand 
ceux­ci laissent au programmeur la tâche de gérer la mémoire lui­même. C’est le cas de langages comme le C ou le 
C++.  Imaginez  une  chaîne  de  caractères  «  Hello  World  !  ». Celle­ci  est  composée  de  12  caractères  en  comptant  la 
ponctuation et l’espace. Comme une chaîne se termine par un caractère nul, il faut, selon le principe qu’un caractère 
est codé en ASCII, 13 octets pour stocker cette chaîne en mémoire. 
En algorithmique, vous n’avez pas à vous soucier de l’occupation mémoire de vos variables et chaînes. En Java, ou 
encore en PHP, non plus : ces langages disposent de mécanismes appelés "ramasse­miettes" qui le font pour vous. 
Mais en C par exemple, ce serait à vous de déclarer votre variable de manière à ce que son contenu puisse contenir 
jusqu’à 13 octets en déclarant, en fait, 13 cases mémoires d’un octet. Voici la méthode dite statique : 
char texte[13] ;
ou encore la méthode dynamique : 
char *texte=malloc(13*sizeof(char));
Ce n’est pas tout. En effet avec cette dernière syntaxe le malheur veut que outre cette tâche complexe d’allocation 
mémoire, vous deviez libérer vous­même la mémoire, sinon votre programme continuera à consommer celle­ci jusqu’à 
la fin de son exécution. Mais ce système de gestion de la mémoire est­il vraiment un inconvénient ? Prenez en compte 
ces quelques allégations : 
q La gestion de la mémoire de manière dynamique nécessite une connaissance avancée de la taille des variables 
utilisées, de la quantité de mémoire nécessaire et de la mémoire physique de la machine. 
q L’accès  à  la  mémoire  passe  par  l’utilisation  de  variables  particulières  appelées  pointeurs  car  elles  ne 
représentent  pas  une  valeur  mais  l’adresse  d’une  case.  Une  fois  maîtrisées,  celles­ci  se  révèlent  être  très 
puissantes et pratiques. 
q L’allocation  dynamique  permet  d’utiliser  uniquement  la  quantité  de  mémoire  nécessaire  à  un  instant  donné. 
C’est certes insignifiant pour quelques octets, mais s’il s’agit de manipuler de grosses images ou des films, ça 
compte. 
q La mémoire inutilisée peut être libérée dès qu’elle n’est plus nécessaire. Avec les méthodes dites statiques, 
elle l’est uniquement à la fin du programme (ou d’un bloc d’instructions). 
q L’allocation mémoire est la plus grande source d’erreurs dans un programme, pouvant occasionner du simple 
dysfonctionnement  au  plantage  complet  du  programme,  voire  même  de  graves  problèmes  de  sécurité 
(piratage) dans des applications critiques. 
Partant du principe qu’un langage de haut niveau ne doit pas embêter le programmeur avec une quelconque gestion 
du  matériel,  Java  gère  la  mémoire  à  votre  place  et  donc  vous  n’avez  pas  à  vous  soucier  de  libérer  la  mémoire  de 
manière si complexe en apparence. 
- 1 -
© ENI Editions - All rigths reserved - Jonifar lina
46
Précédent

- 46/220

Suivant