Les types de données

Ce guide est actuellement en cours de rédaction : si quelque chose vous semble mal expliqué ou peu clair, n'hésitez pas à me faire un retour sur github ou par mail

Une nouvelle feuille sera publiée chaque semaine : si vous souhaitez être averti·e des nouveaux contenus, abonnez-vous par mail ou suivez-moi sur twitter

Qu'est ce qu'un type de donnée ?

En programmation, quand on déclare une variable, elle toujours d'un certain type : il peut s'agir d'un booléen, d'un nombre, ou d'une chaîne de caractères... Mais aussi de types plus complexes comme des tableaux, des collections, des objets... C'est ce qu'on désigne par types de données.

Dans la mémoire de l'ordinateur, la valeur d'une variable est toujours stockée dans un emplacement mémoire sous forme d'une séquence de bits, comme par exemple 11000000 (on a ici 8 bits, soit un octet). Du point de vue de la machine, il n'y a pas de nombres, de chaînes de caractères ou de booléen, seulement des séquences de bits, plus ou moins longues.

C'est le langage de programmation qui interprète ensuite ces séquences de bits comme étant un nombre, une chaîne de caractères ou autre ; en lui assignant justement un type : ainsi le programme ne stocke pas simplement la valeur 11000000 en mémoire ; mais aussi le type de donnée que cet octet (ou plusieurs octets) représente pour lui ; afin de savoir comment l'interpréter.

L'interprétation de 11000000 dépend du type qui lui est assigné. Si le type est "entier non-signé" (u8 en Rust), la séquence de bits sera interprétée comme un nombre décimal valant 192

EXPLICATION

(2^7 + 2^8) = 192
1

Si le type était en entier signé (i8), la séquence de bits sera interprétée comme le nombre décimal négatif -64

EXPLICATION

Le bit le plus à gauche est utilisé pour indiquer si le nombre est négatif ou positif. On considère que 0 veut dire + et 1 veut dire -. Il nous reste ensuite seulement 7 bits pour le calcul :

-(2^7) = -64
1

Sur la même logique, 11000000 pourrait aussi bien représenter un caractère de la norme ISO/CEI 8859-1, un emoji, ou tout autre chose que le langage aura décidé de lui faire représenter.

Vue d'ensemble des types de données de Rust

On peut diviser les types de données de Rust en 4 grandes catégories, que l'on va voir en détail dans les chapitres suivant.

  • les primitifs atomiques
  • les primitifs composés (collections de primitifs atomiques)
  • les collections
  • les types personnalisés (custom, crée par le développeur)