diff --git a/theorie/formats.tml b/theorie/formats.tml index 8d25ce5..43c1eef 100644 --- a/theorie/formats.tml +++ b/theorie/formats.tml @@ -11,12 +11,361 @@
-En construction... +Un fichier informatique est une suite de nombres compris entre 0 et +255 (chacun de ces nombres est ce qu'on appelle un octet). 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 format. +
+ ++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 +mémo sur les formats. +
+ +Les deux sous-sections qui suivent décrivent les deux grandes familles +de formats informatiques.
+ ++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 page +sur les encodages et les langues. +
+ ++Des suites de caractères (plus ou moins nombreux) griffonnés sur un +papier ont donc ceci de commun qu'il s'agit de texte brut. 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). +
+ ++Lorsque vous avez une fichier sous un format « texte brut », vous +pouvez le modifier avec n'importe quel éditeur de texte, de +même que pour écrire sur un bout de papier, vous pouvez utiliser +n'importe quel stylo. +
+ +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 : +
+ ++La page Web que vous lisez est au format HTML (plus précisément, +il s'agit d'XHTML 1.0 Strict). En plus de contenir du texte en +français « brut », certaines balises 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> +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> ++ +
Ainsi par exemple, ce qui se trouve entre <p> et +</p> est un paraphaphe, ou encore un lien hypertexte est dans +une balise <a>.
+ ++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 : +
+ ++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 ++ +
+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 : +
++/* bonjour.c : comment dire « Bonjour. » en C */ +#include <stdio.h> + +int main (int argc, char **argv) { + printf("Bonjour.\n"); + return(0); +} ++ +
+#!/bin/sh +# Comment dire « Bonjour. » en Shell +exec echo Bonjour. ++ +
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 compilateur. +
+ +À 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.
+ ++Avant de continuer, précisons que les noms de fichiers comportent souvent +une extension, par exemple dans Le_coucou_au_fond_des_bois.ogg, +l'extension est ogg. 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 +file) ! +
+ +Voici brièvement quelques exemples : +
+ +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 +(par exemple 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 bmp 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 : png, +jpg). +
+ +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 wav, au +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 ogg et mp3. +
+ +Il existe d'autres manières de stocker de la « musique », les +fichiers midi, 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. +
+ ++Évidemment, la qualité musicale qui sort des hauts-parleurs quand vous +jouez des fichiers midi est très loin d'être à la hauteur de ce qui +parvient à vos oreilles quand vous écoutez un orchestre composé de +musiciens talentueux ! +
+ +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. +
+ ++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 +plusieurs 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. +
+ +
+À l'opposé, certains traitements de textes utilisent un format texte,
+de façon similaire au format HTML
utilisé sur le Web. C'est
+par exemple le cas du programme
+LaTeX. Toutes les informations
+vous mettez dans un fichier LaTeX (extension tex
) 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 :
+
+\documentclass{article} +\usepackage[francais]{babel} +\usepackage[T1]{fontenc} +\usepackage[latin1]{inputenc} + +\begin{document} +Ceci est un fichier \TeX. +\end{document} ++ +
+Vous devez utiliser le programme latex
pour mettre en page
+votre fichier tex
. Il va ainsi écrire un fichier binaire
+dans un format particulier dvi
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. »
+
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).
+ +pdf
)+Mais, encore une fois, il existe plusieurs formats de ce type. Nous avons +déjà évoqué ci-desus le format dvi utilisé par LaTeX. On +dispose aussi du format pdf (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 dvi et pdf sont au +format binaire. +
+ +ps
)+Un autre format important dans ce contexte est le format +PostScript (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). +
+ +
+Dans certaines situations, il peut être commode de mettre plusieurs
+fichiers dans un seul, on appelle cela une archive. 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 tar
.
+
+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 ext2
, ext3
ou
+ReiserFS
, sous Windows, il y a des systèmes de fichiers
+fat
, NTSC
, etc...
+
+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 gz). Ainsi par exemple, un fichier PostScript +dea.ps, une fois comprimé s'appelle dea.ps.gz. +
+ +
+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 .tar.gz
(que certains
+abrègent en .tgz
) ; 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.