La page théorique sur les formats (enfin !).
This commit is contained in:
parent
dedb964fc7
commit
b00603acee
1 changed files with 351 additions and 2 deletions
|
@ -11,12 +11,361 @@
|
|||
<h1>Formats de fichiers</h1>
|
||||
|
||||
<p>
|
||||
<em>En construction...</em>
|
||||
Un fichier informatique est une suite de nombres compris entre 0 et
|
||||
255 (chacun de ces nombres est ce qu'on appelle un <a
|
||||
href="&url.jargon;#octets"><em>octet</em></a>). Suivant le type
|
||||
d'information que l'on veut stocker dans un fichier (texte brut, texte
|
||||
formatté, image, son, programmes, ...), les logiciels organisent les
|
||||
données de manière spécifique pour en faire des suites d'octets. La
|
||||
manière d'organiser un type de donnée pour en faire un fichier s'appelle
|
||||
un <em>format</em>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Cette page a pour but d'expliquer ce qu'est un format de fichier (sans
|
||||
entrer dans les détails techniques rébarbatifs). Pour savoir plus
|
||||
concrètement comment ouvrir tel ou tel fichier, ou comment convertir mon
|
||||
fichier dans un autre format, allez voir le
|
||||
<a href="">mémo sur les formats</a>.
|
||||
</p>
|
||||
|
||||
<h2>Les deux grands types de formats</h2>
|
||||
|
||||
<p>Les deux sous-sections qui suivent décrivent les deux grandes familles
|
||||
de formats informatiques.</p>
|
||||
|
||||
<h3>Les formats textes ou encore « lisibles par un humain »</h3>
|
||||
|
||||
<p>
|
||||
Quand vous prenez un stylo et un papier et que vous écrivez des
|
||||
lettres, des chiffres, des symboles de ponctuation, par exemple pour
|
||||
noter un numéro de téléphone, un cours, une dissertation, ou une lettre,
|
||||
n'importe quel autre être humain sachant lire pourra comprendre les
|
||||
informations que vous aurez écrit, au moins en supposant
|
||||
qu'il parle la même langue que vous, cf. notre <a href="encodages.html">page
|
||||
sur les encodages et les langues</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Des suites de caractères (plus ou moins nombreux) griffonnés sur un
|
||||
papier ont donc ceci de commun qu'il s'agit de <em>texte brut</em>. Le
|
||||
format informatique (générique) le plus simple est ainsi constitué de
|
||||
suites de caractères, et de retours à la ligne. À chaque caractère
|
||||
correspond un ou plusieurs octets, c'est-à-dire des nombres compris entre
|
||||
0 et 255, selon une règle définie par un encodage particulier (par
|
||||
exemple, dans l'encodage Latin-1 (le plus courant dans les pays
|
||||
occidentaux), un « A » est codé par le nombre 65 et à chaque caractère
|
||||
correspond un seul octet).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Lorsque vous avez une fichier sous un format « texte brut », vous
|
||||
pouvez le modifier avec <em>n'importe quel <a
|
||||
href="&url.tuteurs;unix/editeurs/">éditeur de texte</a></em>, de
|
||||
même que pour écrire sur un bout de papier, vous pouvez utiliser
|
||||
n'importe quel stylo.
|
||||
</p>
|
||||
|
||||
<p>On a vu que l'on pouvait noter tout et n'importe quoi dans un fichier
|
||||
texte, mais pour certains usages, on demande néanmoins à des fichiers au
|
||||
format texte de respecter certaines règles, une certaine syntaxe. Voici
|
||||
quelques exemples de tâches spécifiques qui utilisent des fichiers au
|
||||
format texte brut :
|
||||
</p>
|
||||
|
||||
<h4>Écrire des pages Web</h4>
|
||||
|
||||
<p>
|
||||
La page Web que vous lisez est au format <tt>HTML</tt> (plus précisément,
|
||||
il s'agit d'<tt>XHTML 1.0 Strict</tt>). En plus de contenir du texte en
|
||||
français « brut », certaines <em>balises</em> permettent de signifier à
|
||||
votre navigateur Web comment il doit afficher la page : une barre de
|
||||
navigation à gauche, nos choix de couleurs, etc... En voici un extrait :
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
<p>
|
||||
Quand vous prenez un stylo et un papier et que vous écrivez des
|
||||
lettres, des chiffres, des symboles de ponctuation, par exemple pour
|
||||
noter un numéro de téléphone, un cours, une dissertation, une lettre,
|
||||
n'importe quel autre être humain sachant lire (au moins en supposant
|
||||
qu'il parle la même langue que vous, cf. notre <a href="encodages.html">page
|
||||
sur les encodages et les langues</a>) pourra comprendre les informations
|
||||
que vous écrivez.
|
||||
</p>
|
||||
</pre>
|
||||
|
||||
<p>Ainsi par exemple, ce qui se trouve entre <tt><p></tt> et
|
||||
<tt></p></tt> est un paraphaphe, ou encore un lien hypertexte est dans
|
||||
une balise <tt><a></tt>.</p>
|
||||
|
||||
<h4>Envoyer un courrier électronique</h4>
|
||||
|
||||
<p>
|
||||
Quand vous envoyez un courrier électronique avec votre logiciel préféré,
|
||||
celui-ci va envoyer votre message dans un format particulier : les
|
||||
premières lignes constituent ce qu'on appelle l'en-tete du message,
|
||||
vient ensuite une ligne vide, et tout ce qui vient ensuite constitue le
|
||||
corps du message. L'en-tete du message sert à donner des informations sur
|
||||
l'expéditeur du message, la date, le sujet, l'encodage utilisé, etc...
|
||||
ainsi que quelques informations techniques. Voici un exemple :
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
Return-Path: <schtroumpfette@greement.non-existent.invalid>
|
||||
Delivered-To: scoubidou@greement.non-existent.invalid
|
||||
Received: (qmail 23265 invoked by uid 1033); 17 Sep 2003 15:55:14 -0000
|
||||
From: schtroumpfette@greement.non-existent.invalid
|
||||
Date: Wed, 17 Sep 2003 17:55:14 +0200
|
||||
To: Scoubidou <scoubidou@greement.non-existent.invalid>
|
||||
Subject: Bonjour
|
||||
Message-ID: <20030917155514.GA23246@greement.non-existent.invalid>
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Disposition: inline
|
||||
User-Agent: Mutt/1.5.4i
|
||||
|
||||
Bonjour,
|
||||
|
||||
J'aimerais discuter avec vous.
|
||||
|
||||
--
|
||||
La schtroumpfette
|
||||
</pre>
|
||||
|
||||
<h4>Programmer</h4>
|
||||
|
||||
<p>
|
||||
Les programmes que vous utilisez ont été développés dans différents
|
||||
langages : C, C++, Perl, Shell, etc...
|
||||
Les codes sources de ces programmes sont dans un format texte, ce qui ne
|
||||
les empêche pas de respecter une syntaxe précise. Voici à quoi cela
|
||||
peut ressembler :
|
||||
</p>
|
||||
<pre>
|
||||
/* bonjour.c : comment dire « Bonjour. » en C */
|
||||
#include <stdio.h>
|
||||
|
||||
int main (int argc, char **argv) {
|
||||
printf("Bonjour.\n");
|
||||
return(0);
|
||||
}
|
||||
</pre>
|
||||
|
||||
<pre>
|
||||
#!/bin/sh
|
||||
# Comment dire « Bonjour. » en Shell
|
||||
exec echo Bonjour.
|
||||
</pre>
|
||||
|
||||
<p>Suivant que le langage est interprêté ou compilé, il sera ou non
|
||||
nécessaire de convertir votre code source dans un format éxécutable en
|
||||
utilisant un <em>compilateur</em>.
|
||||
</p>
|
||||
|
||||
<h3>Les formats binaires</h3>
|
||||
|
||||
<p> À l'opposé des formats textes, se trouvent les formats binaires.
|
||||
L'information que l'on stocke dans de tels fichiers ne se résume pas à
|
||||
des suites de caractères.</p>
|
||||
|
||||
<p>
|
||||
Avant de continuer, précisons que les noms de fichiers comportent souvent
|
||||
une extension, par exemple dans <tt>Le_coucou_au_fond_des_bois.ogg</tt>,
|
||||
l'extension est <tt>ogg</tt>. L'extension permet souvent de savoir
|
||||
rapidement à quel format on a à faire. Attention cependant au fait que
|
||||
parfois derrière un fichier d'une certaine extension peut se cacher sous
|
||||
un autre (cf. le programme <a href="formats-memo.html#file">
|
||||
<tt>file</tt></a>) !
|
||||
</p>
|
||||
|
||||
<p>Voici brièvement quelques exemples :
|
||||
</p>
|
||||
|
||||
<h4>Images bitmap</h4>
|
||||
|
||||
<p>Une image peut-être stockée comme une grille de petits
|
||||
points (pixels), chaque pixel ayant une certaine « couleur ». Une fois que
|
||||
l'on a associé certains octets aux différentes couleurs
|
||||
(<em>par exemple</em> 3 octets, un pour la composante rouge, un autre pour la
|
||||
composante bleue, et un dernier pour la composante verte), on peut mettre
|
||||
au début du fichier la largeur et la hauteur de l'image, et ensuite
|
||||
parcourir l'image ligne par ligne, et écrire la séquence d'octets
|
||||
qui correspond à chaque pixel de l'image. Le type de format que je viens
|
||||
de décrire est extrêmement rudimentaire (dans cette famille de format, on
|
||||
trouve le format <tt>bmp</tt> par exemple) ; des fichiers dans un tel
|
||||
format occuperont beaucoup de place sur les disques durs, c'est pourquoi
|
||||
il existe des formats qui contiennent des optimisations pour réduire
|
||||
sensiblement la taille des fichiers d'images (exemples : <tt>png</tt>,
|
||||
<tt>jpg</tt>).
|
||||
</p>
|
||||
|
||||
<h4>Son échantillonné</h4>
|
||||
|
||||
<p>C'est comme pour les images : on découpe le son
|
||||
en intervalles de temps très brefs (il y a
|
||||
le plus souvent autour de quarante
|
||||
mille intervalles par seconde) et on note la valeur du signal
|
||||
électrique correspondant, ce qui donne un nombre entier (avec signe)
|
||||
que l'on peut stocker. Pour un enregistrement en stereo, on note
|
||||
parallèlement les valeurs gauche et droite. Comme formats de ce type, on
|
||||
trouve les formats <tt>wav</tt>, <tt>au</tt>
|
||||
De même que pour les images, il existe des techniques de compression qui
|
||||
permettent de réduire considérablement la taille qu'occupent les fichiers
|
||||
sonores. On dispose ainsi des formats <tt>ogg</tt> et <tt>mp3</tt>.
|
||||
</p>
|
||||
|
||||
<p> Il existe d'autres manières de stocker de la « musique », les
|
||||
fichiers <tt>midi</tt>, où ne sont enregistrées que des suites
|
||||
d'indications sur les notes que les musiciens jouent sur leurs
|
||||
instruments (d'une certaine manière, ces fichiers contiennent
|
||||
l'information contenue sur une « partition »). Quand vous lisez ces
|
||||
fichiers avec un programme convenable, un synthétiseur (logiciel ou
|
||||
matériel) va convertir ces données en un véritable son.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Évidemment, la qualité musicale qui sort des hauts-parleurs quand vous
|
||||
jouez des fichiers <tt>midi</tt> est très loin d'être à la hauteur de ce qui
|
||||
parvient à vos oreilles quand vous écoutez un orchestre composé de
|
||||
musiciens talentueux !
|
||||
</p>
|
||||
|
||||
<h4>Programmes éxécutables</h4>
|
||||
|
||||
<p>Suivant la famille du système
|
||||
d'exploitation que vous utilisez (Unix, Windows, Mac), et même à
|
||||
l'intérieur d'une famille suivant la variante du système ou le type de
|
||||
processeur, les programmes sont stockés dans un format différent. La
|
||||
partie la plus imporante d'un fichier éxécutable est la zone contenant le
|
||||
« langage machine » qui grosso modo contient la liste des instructions
|
||||
qui seront éxécutées par le processeur. On ne modifie pas
|
||||
directement un fichier éxécutable.
|
||||
</p>
|
||||
|
||||
<h2>Cas particuliers</h2>
|
||||
|
||||
<h3>Traitements de texte</h3>
|
||||
|
||||
<p>
|
||||
Certains logiciels de traitement de texte utilisent un format binaire
|
||||
pour stocker le texte avec son formattage (taille des fontes, caractères
|
||||
gras, italiques, etc...), plus précisément, ils utilisent
|
||||
<em>plusieurs</em> formats : d'une version à l'autre, le logiciel
|
||||
Microsoft Word utilise un format plus ou moins différent de la version
|
||||
précédente, ce qui pose beaucoup de problèmes, surtout si vous n'avez pas
|
||||
la version « dernier cri » du logiciel en question.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
À l'opposé, certains traitements de textes utilisent un format texte,
|
||||
de façon similaire au format <code>HTML</code> utilisé sur le Web. C'est
|
||||
par exemple le cas du programme
|
||||
<a href="&url.tuteurs;logiciels/latex/">LaTeX</a>. Toutes les informations
|
||||
vous mettez dans un fichier LaTeX (extension <code>tex</code>) sont
|
||||
lisibles et modifiables dans votre éditeur de texte préféré, et au moins
|
||||
vous être sûr que le format ne vas pas changer significativement d'une
|
||||
version à l'autre. En voici un échantillon :
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
\documentclass{article}
|
||||
\usepackage[francais]{babel}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[latin1]{inputenc}
|
||||
|
||||
\begin{document}
|
||||
Ceci est un fichier \TeX.
|
||||
\end{document}
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Vous devez utiliser le programme <code>latex</code> pour mettre en page
|
||||
votre fichier <code>tex</code>. Il va ainsi écrire un fichier binaire
|
||||
dans un format particulier <code>dvi</code> qui contient essentiellement
|
||||
beaucoup d'informations qui ressemblent à
|
||||
« À tel endroit de la page numéro 42, afficher MU dans une fonte qui
|
||||
fait 5.08 cm de hauteur. »
|
||||
</p>
|
||||
|
||||
<h3>Documents mis en page</h3>
|
||||
|
||||
<p>Ce sont des fichiers « prêts à être imprimés », ces fichiers
|
||||
contiennent toutes les instructions que l'on a pratiquement plus qu'à
|
||||
envoyer à l'imprimante (ce qui nécessite parfois une conversion).</p>
|
||||
|
||||
<h4>Portable Document Format (<code>pdf</code>)</h4>
|
||||
|
||||
<p>
|
||||
Mais, encore une fois, il existe plusieurs formats de ce type. Nous avons
|
||||
déjà évoqué ci-desus le format <tt>dvi</tt> utilisé par LaTeX. On
|
||||
dispose aussi du format <tt>pdf</tt> (Portable Document Format) développé
|
||||
par Adobe, vous avez très certainement déjà rencontré de tels fichiers en
|
||||
naviguant sur le Web. Les fichiers <tt>dvi</tt> et <tt>pdf</tt> sont au
|
||||
format binaire.
|
||||
</p>
|
||||
|
||||
<h4>PostScript (<code>ps</code>)</h4>
|
||||
|
||||
<p>
|
||||
Un autre format important dans ce contexte est le format
|
||||
<em>PostScript</em> (lui aussi développé par Adobe). Il est depuis
|
||||
quelques années utilisé par la plupart des imprimates laser. Son grand
|
||||
avantage est qu'il est en mode texte et qu'il ne fait pas d'hypothèse sur
|
||||
la résolution de l'imprimante par exemple, contrairement aux
|
||||
formats utilisés auparavant pour envoyer des instructions aux
|
||||
imprimantes ! Le format PostScript est un véritable langage de
|
||||
programmation (si on veut dessiner 100 fois la même chose, on a pas
|
||||
besoin de réécrire 100 fois les mêmes instructions par exemple).
|
||||
</p>
|
||||
|
||||
<h3>Méta-formats</h3>
|
||||
|
||||
<h4>Archives</h4>
|
||||
|
||||
<p>
|
||||
Dans certaines situations, il peut être commode de mettre plusieurs
|
||||
fichiers dans un seul, on appelle cela une <em>archive</em>. En général,
|
||||
au début d'un tel fichier se trouve les noms des fichiers contenus à
|
||||
l'intérieur avec leur taille (ainsi que d'autres informations
|
||||
techniques), puis viennent ensuite chacun des fichiers les uns à la suite
|
||||
des autres. Le format le plus courant pour les fichiers archives est le
|
||||
format <code>tar</code>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Plus généralement, on a la notion de système de fichiers : il s'agit de
|
||||
déterminer comment organiser les fichiers sur un disque dur et d'inscrire
|
||||
les méta-informations, à savoir d'écrire quelque part la liste des
|
||||
fichiers présents sur le disque ainsi que la position sur le disque où
|
||||
ils sont écrits. Là, encore, de nombreuses possibilités existent : sous
|
||||
Linux, on utilise en général <code>ext2</code>, <code>ext3</code> ou
|
||||
<code>ReiserFS</code>, sous Windows, il y a des systèmes de fichiers
|
||||
<code>fat</code>, <code>NTSC</code>, etc...
|
||||
</p>
|
||||
|
||||
<h4>Fichiers compressés</h4>
|
||||
|
||||
<p>
|
||||
Quand on a un fichier un peu long que l'on ne consulte pas
|
||||
régulièrement, on peut décider de le comprimer pour qu'il prenne moins de
|
||||
place sur le disque dur. Des outils sont faits pour cela. L'exemple
|
||||
typique de format compressé est donné par les fichiers « gzippés »
|
||||
(extension <tt>gz</tt>). Ainsi par exemple, un fichier PostScript
|
||||
<tt>dea.ps</tt>, une fois comprimé s'appelle <tt>dea.ps.gz</tt>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Le clou du spectacle s'obtient en combinant les deux méta-formats évoqués
|
||||
ci-dessus : comprimer un fichier d'archive comprenant plusieurs
|
||||
fichiers. On obtient alors un fichier <code>.tar.gz</code> (que certains
|
||||
abrègent en <code>.tgz</code>) ; c'est un général sous cette forme que
|
||||
l'on peut télécharger le code source de la plupart des logiciels libres.
|
||||
</p>
|
||||
|
||||
<div class="metainformation">
|
||||
Auteur : Joël Riou.
|
||||
Dernière modification le <date value="$Date: 2003-06-17 00:01:58 $" />.
|
||||
Dernière modification le <date value="$Date: 2003-09-17 17:13:54 $" />.
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
|
Loading…
Reference in a new issue