Cours PLURITAL 2013-2014
Cours n° 1 (révision du 7 octobre 2013)
Des
octets au code ASCII
- Idée
générale
- Fichiers
- Le
nom
- Fichiers
locaux (local files)
- Fichiers
distants (remote files)
- Information,
interprétation
- Information
- Interprétation
- Le
but de ce premier cours
- Le
matériel présenté dans cette page s'organise en 4 sections.
- Information, bits & octets
- Interprétation numérique
- Outils de base (éditeurs hexa)
- Fichiers
en texte pur
Idée
générale
-
Fichiers
-
Le
nom
L'objet de base de toute manipulation informatique est le fichier
(en anglais file, en allemand Kartei).
La langue française a repris le mot qui désigne les boîtes de fiches
utilisées en mécanographie [Wikipédia], l'allemand itou [W]
;
pour l'anglais les choses sont moins claires : le sens normal du mot file
en contexte administratif est dossier, mais ce peut
aussi être fichier,
(dans d'autres contextes, le même mot désigne aussi une lime
!).
Disons que, comme il est de règle, l'opposition sémantique entre fichier
et
dossier ne recouvre pas exactement la
distinction entre file et folder...
-
Fichiers
locaux (local files)
Principalement, vos fichiers sont logés sur le disque dur de votre
ordinateur, et votre système d'exploitation vous les montre sous forme
de pretites images de formes diverses (que le jargon technique dénomme
religieusement des icônes). Voyez ci-dessous...
Pour utiliser un fichier, vous l'ouvrez en cliquant sur l'icône qui le
représente.
Ce
qui se passe alors - disons, la nature du spectacle qui vous est offert
- dépend de la forme de l'icône, comme vous l'avez mainte fois
éprouvé.
Vous êtes peut-être tenté(e) d'en déduire que deux icônes
de formes différentes représentent des fichiers de natures
différentes.
Il n'en est rien ! Tous les fichiers sont de la même
nature. Nous allons voir quelle est cette nature.
-
Fichiers
distants (remote files)
Mais d'autres fichiers vous arrivent par le réseau !
Quand vous lisez
une page Web, notamment, votre navigateur va chercher un fichier au
loin, le télécharge et vous le donne à lire
exactement comme votre
éditeur de textes favori le fait pour un fichier pris sur votre disque.
Au
lieu d'être lu sur le disque, le fichier arrive dans la mémoire
centrale de votre ordinateur via votre connexion au réseau, où il est
ensuite traité par votre navigateur.
Vous retrouvez dans le
comportement du navigateur la distinction entre les formes des icônes
pour les fichiers locaux :
- tantôt il affiche le contenu dans sa fenêtre sans
faire d'histoires (cas le plus fréquent, fichiers HTML)
- tantôt il fait appel proprio motu
à un autre logiciel "spécialiste" (appelé un plug-in)
: par exemple, pour afficher un fichier pdf.
- tantôt il désespère et vous demande de choisir entre
- lui indiquer avec quel outil il doit ouvrir le
fichier
- sauvegarder le fichier sur votre disque
Ici aussi, la diversité des comportements ne doit pas vous cacher
l'identité naturelle des fichiers.
Les fichiers distants sont de la même nature que les fichiers locaux !
-
Information,
interprétation
-
Information
Ce premier cours est consacré à la "substance"
qui est contenue dans
les fichiers,
et qui est échangée à travers le réseau.
Cette substance a un nom, c'est de
l'information.
Son unité de base est le bit, mais en pratique on emploie couramment
une unité plus
grosse qui est l'octet (8 bits).
Le contenu d'un fichier, sa "substance", est
constitué d'une
séquence d'octets.
Peut-on voir ce contenu, le toucher, le manipuler ?
Jamais d'une manière directe, il faut nécessairement faire appel à un
outil, qui opère une interprétation.
Or, il y a toujours plusieurs interprétations possibles : il appartient
à l'observateur de choisir celle qui l'intéresse,
c'est-à-dire choisir son outil d'observation, et s'assurer qu'il est
convenablement réglé.
Ce qui n'est pas toujours facile !
-
Interprétation
Du point de vue pratique, le choix de l'outil correspond à
celui du logiciel avec lequel on "ouvre" le fichier.
Les usagers de Linux ont l'habitude de se voir demander "ouvrir
avec ?", ceux de Windows et de MacOS
au contraire sont habitués à ce que leur système d'exploitation associe
au fichier un logiciel chargé de l'ouvrir.
Ils ont donc l'illusion d'une interprétation canonique attachée au
fichier, alors qu'il ne s'agit que
d'une commodité, visant l'usage le plus fréquent, et qui peut être
révoquée ad nutum
en modifiant les propriétés du fichier, qui sont
gérées par le système (sous MacOS, on les appelle informations),
sans aucunement modifier son contenu.
Le choix de ce logiciel privilégié par le système est lié au nom que
porte le fichier, et plus spécialement à son extension
(".txt", ".doc", ".html",
etc). Changez l'extension et vous verrez le comportement du système
changer !
Le choix de l'icône qui visualise le fichier sur l'écran relève de la
même logique : arbitraire !
Voici quelques exemples pour illustrer la diversité
des interprétations possibles pour un même fichier.
- Exécution.
Les fichiers directement exécutables (en ligne de commande) portent
souvent l'extension ".exe
" sous Windows,
pas d'extension sous Unix et sous MacOS (p.ex. le "a.out
"
produit par le compilateur C).
Ils sont formés d'octets comme tout les autres ! On peut donc les
examiner avec un éditeur hexa.
D'autres fichiers sont exécutables via un interprète explicitement
nommé
(comme les fichiers Perl ou PHP, ou les ".class
"
engendrés par le compilateur Java).
Les fichiers Perl ou PHP sont des textes ordinaires, les fichiers Java
un peu moins lisibles.
- Affichage
Il s'agit d'interpétations qui donnent à voir (ou à entendre) le
contenu du fichier, suivant diverses modalités.
- Pour un fichier quelconque, un éditeur hexadécimal
montrera les octets, donnés en hexa.
- Pour des textes, soit on montrera la séquence
de caractères "telle quelle",
en n'interprétant que blancs, les tabulations et les sauts de ligne,
(cas des éditeurs dits "en texte pur" comme NotePad)
soit on interprétera certaines parties du texte comme des indications
de mise en forme
(cas de RTF
interprété par Word et de HTML
interprété par un
navigateur).
- Pour des images, les octets sont décodés en
fonction du procédé employé, qui doit être connu à l'avance
(extensions ".gif
", ".jpg
",
".png
" ou ".pdf
") et
les pixels sont envoyés à l'écran.
L'indication du procédé est en général fournie au début du fichier
(d'une manière plus ou moins limpide)
ce qui permet à un même logiciel de traiter plusieurs procédés.
- Pour des sons, même chose, sauf que le décodage
donne lieu à un signal audio envoyé à des hauts-parleurs.
- Pour de la vidéo...
- Édition (au
sens anglais du terme : modification)
L'affichage d'un fichier vous permet de le lire, mais en général pas de
le modifier (écrire dans le fichier).
Aujourdhui, avec le développement des interfaces graphiques, les
logiciels qui permettent la modification
permettent aussi l'affichage, vu comme base du processus de
modification, suivant le slogan WYSIWYG
(what you see is what you get). Mais il n'en a pas
toujours été ainsi !
La fonction de modification est logiquement distincte de celle
d'affichage.
On le voit bien avec un navigateur, qui affiche les fichiers HTML mais
ne permet pas de les modifier,
tandis qu'un éditeur HTML permet les deux.
Un fichier HTML peut ainsi être interprété de trois manières :
- Affichage avec mise en forme (navigateur)
- Édition avec mise en forme (éditeur HTML)
- Édition sans mise en forme (en texte pur)
Dans le domaine de l'image, on fait également la différence entre les
nombreux logiciels d'affichage
et ceux comme PhotoShop qui permettent la
modification.
-
Le
but de ce premier cours
est de "faire toucher du doigt" cette
multiplicité d'interprétations, en particulier grâce aux éditeurs hexadécimaux.
Nous examinerons ici deux interprétations très différentes :
- Les octets vus comme des caractères, et le fichier
tout
entier lu comme un texte.
Cette interprétation est le point de départ de cette série de cours.
Ce point de départ est matérialisé par le code ASCII, dont on va
montrer l'importance théorique et pratique.
La suite du cours peut être envisagée comme des variations
autour du code ASCII.
- Les bits vus comme des chiffres (en base 2) et le
fichier
comme la représentation d'un nombre.
En elle-même, cette interprétation ne nous concernera pas dans la suite
de ce cours.
Mais comme elle est omniprésente dans la pratique, on essaiera ici de
tirer les choses au clair
une fois pour toutes.
Le
matériel présenté dans cette page s'organise en 4 sections.
- Sur la nature de l'information, les bits et les octets,
voir le texte détaillé Bits,
octets, caractères.
Ce texte tente d'élucider les notions d'information, de quantité
d'information,
et leurs rapports avec la représentation des nombres en base 2 et en
base 16 (hexadécimale).
Il aboutit à la présentation du code ASCII, qu'il est
indispensable de bien connaître.
Comme première application de ce discours, on a détaché une note sur la
représentation du saut de ligne
à laquelle vous aurez probablement à vous reporter dans l'avenir.
Le langage Perl possède deux fonctions standard pack
et unpack
qui permettent de manipuler les différentes interprétations
que peut recevoir une suite d'octets. Je vous propose d'en prendre connaissance et de réfléchir à leur signification.
- En marge de ce développement, on propose un point de vue
sur la
représentation des nombres (entiers).
Vous y trouverez de quoi
représenter des entiers (pas trop grands, donnés en notation
décimale)
dans la base de votre choix (au plus 36), et réciproquement.
Il est important de bien saisir la différence de nature entre information
et nombre :
(re)voyez le paragraphe Interprétation
numérique.
De manière à bien vous persuader que vos fichiers sont effectivement
justiciables de ces considérations,
je vous propose d'essayer un outil artisanal
qui affiche (pour un petit fichier) son contenu en binaire
(reconstitué par calcul !), en octal et en hexadécimal (trois
représentations équivalentes de la même information),
ainsi que le nombre entier correspondant (en notation décimale).
- Il faut absolument se familiariser avec les outils
"professionnels" propres à révéler l'anatomie d'un fichier,
et permettant même d'y pratiquer des interventions chirurgicales
: les éditeurs hexadécimaux.
- L'outil Unix hexdump
permet d'examiner le contenu d'un fichier octet par octet.
Son emploi peut s'avérer extrêmement utile lorsque vos fichiers sont
corrompus
par la présence de caractères non-imprimables, que votre éditeur de
textes favori croira ne pas devoir vous révéler,
mais que l'application envisagée ne trouvera pas à son goût (exemple).
- Mais, s'il permet un diagnostic, il ne propose pas de
moyen pour remédier au problème...
Il faut pour cela faire appel à un instrument offrant une interface
graphique pour l'édition.
En voici deux, téléchargeables sans frais :
- Sous Windows, l'éditeur Hackman de Technologismiki.
- Sous MacOS, l'éditeur 0xED, de Suavetech.
- Les fichiers de caractères (alias "en texte pur") seront
désormais l'objet de notre étude.
Mais il faut bien se persuader que la plupart du temps leur rôle est
celui d'une base pour des interprétations ultérieures.
Vous trouverez ci-joint une esquisse présentant
sommairement deux exemples de ces situations,
- le format RTF (Rich Text Format)
interprétable par notamment Microsoft Word,
- et le format HTML, destiné aux navigateurs Web.
Bonne
lecture ! Tous vos commentaires sont les bienvenus.