Mes notes sur l’apprentissage du langage Python
À strictement parler, un ordinateur n’est rien d’autre qu’une machine effectuant
des opérations simples sur des séquences de signaux électriques, lesquels sont
conditionnés de manière à ne pouvoir prendre que deux états seulement (par
exemple un potentiel électrique maximum ou minimum). Ces séquences de
signaux obéissent à une logique du type « tout ou rien » et peuvent donc être
considérés conventionnellement comme des suites de nombres ne prenant
jamais que les deux valeurs 0 et 1. Un système numérique ainsi limité à deux
chiffres est appelé système binaire.
L’essentiel du travail effectué par un programme d’ordinateur consiste à
manipuler des données. Ces données peuvent être très diverses (tout ce qui est
numérisable, en fait6), mais dans la mémoire de l’ordinateur elles se ramènent
toujours en définitive à une suite finie de nombres binaires.
Une variable apparaît dans un langage de programmation sous un nom de
variable à peu près quelconque mais pour l’ordinateur il s’agit d’une référence
désignant une adresse mémoire, c’est-à-dire un emplacement précis dans la
mémoire vive.
À cet emplacement est stockée une valeur bien déterminée. C’est la donnée
proprement dite, qui est donc stockée sous la forme d’une suite de nombres
binaires, mais qui n’est pas nécessairement un nombre aux yeux du langage de
programmation utilisé. Cela peut être en fait à peu près n’importe quel « objet »
susceptible d’être placé dans la mémoire d’un ordinateur, par exemple : un
nombre entier, un nombre réel, un nombre complexe, un vecteur, une chaîne de
caractères typographiques, un tableau, une fonction, etc.
Pour distinguer les uns des autres ces divers contenus possibles, le langage de
programmation fait usage de différents types de variables (le type entier, le type
réel, le type chaîne de caractères, le type
liste, etc.).
Les termes « affecter une valeur » ou « assigner une valeur » à une variable sont
équivalents. Ils désignent l’opération par laquelle on établit un lien entre le nom
de la variable et sa valeur (son contenu).
En Python comme dans de nombreux autres langages, l’opération d’affectation
est représentée par le
signe égale.
• trois noms de variables, à savoir n, msg et pi ;
• trois séquences d’octets, où sont encodées le nombre entier 7, la
chaîne de caractères Quoi de neuf ? et le nombre réel 3,14159.
Les trois instructions d’affectation ci-dessus ont eu pour effet chacune
de réaliser plusieurs opérations
dans la mémoire de l’ordinateur :
• créer et mémoriser un nom de variable ;
• lui attribuer un type bien déterminer ;
• créer et mémoriser une valeur particulière ;
• établir un lien (par un système interne de pointeurs) entre le nom de
la variable et l’emplacement mémoire de la valeur correspondante.
Les trois noms de variables sont des références, mémorisées dans une
zone particulière de la mémoire que l’on appelle espace de noms, alors
que les valeurs correspondantes sont situées ailleurs, dans des
emplacements parfois fort éloignés les uns des autres.
Sous Python, il n’est pas nécessaire d’écrire des lignes de programme
spécifiques pour définir le type des variables avant de pouvoir les
utiliser. Il vous suffit en effet d’assigner une valeur à un nom de
variable pour que celle-ci soit automatiquement créée avec le type qui
correspond au mieux à la valeur fournie. Dans l’exercice précédent, par
exemple, les variables n, msg et pi ont été créées automatiquement
chacune avec un type différent (« nombre entier » pour n, « chaîne
de caractères »
pour msg, « nombre à virgule flottante » (ou « float », en anglais)
pour pi).
Ceci constitue une particularité intéressante de Python, qui le rattache
à une famille particulière de langages où l’on trouve aussi par exemple
Lisp, Scheme, et quelques autres. On dira à ce sujet que le typage des
variables sous Python est un typage dynamique, par opposition au
typage statique qui est de règle par exemple en C++ ou en Java. Dans
ces langages, il faut toujours – par des instructions distinctes –
d’abord déclarer (définir) le nom et le type des variables, et ensuite
seulement leur assigner un contenu, lequel doit bien entendu être
compatible avec le type déclaré.
L’un des concepts les plus importants en programmation est celui de
fonction. Les fonctions permettent en effet de décomposer un programme
complexe en une série de sous-programmes plus simples, lesquels
peuvent à leur tour être décomposés en fragments plus petits, et ainsi de
suite.
D’autre part, les fonctions sont réutilisables : si nous disposons d’une
fonction capable de calculer une racine carrée, par exemple, nous
pouvons l’utiliser un peu partout dans nos programmes sans avoir à la
réécrire à chaque fois.
Les actions sur les objets sont plus généralement appelées des méthodes.
Elles sont très similaires aux fonctions, si ce n’est qu’elles appartiennent à
un type et donc s’appliquent sur des objets en particulier (sur les objets de
ce type).