« Programmation/Abstraction » : différence entre les versions

Contenu supprimé Contenu ajouté
Tavernier (discussion | contributions)
réserve
Tavernier (discussion | contributions)
Ligne 249 :
== Représentation des données ==
 
Cependant les ordinateurs ne sont pas de simples calculatrices : ils peuvent afficher du texte, des images, des animations... autant de types de données qui demandent des codes de conversion entre leur existence binaire et leur restitution à l'écran.
Avec 8 bits ( un octet ) on peut représenter 256 caractères différents (2<sup>8</sup>) dont toutes les lettres de l'alphabet latin incluant majuscules, minuscules, quelques caractères accentués, les caractères de ponctuations et les caractères spéciaux ( ? ! , ; : / <> () [] {} µ % $ * - = + ^ @ # " | & ' € etc) ainsi que les caractères de contrôles (fin de ligne, espace, ...).
 
== Texte ==
 
Au contraire des nombres qui peuvent être convertis entres différentes bases de manière équivalente et absolue (du moins en théorie), les informations non numériques demandent l'usage d'un code de communication qui fixe arbitrairement les correspondances entres les informations et leur équivalent numérique. Pour que l'émetteur et le récepteur puissent se comprendre, il est nécessaire que chacun utilise le même code : la nécessité de standardisation est donc primordiale ici. Il y a de nombreux exemples de standards de communication tout au long de l'histoire, du [[Morse]] au [[w:Home Riggs Popham|code Popham]], du [[:w:code Baudot|code Baudot]] au [[:w:en:Fieldata|code Fieldata]]. Nous ne nous arrêterons que sur ceux qui sont effectivement utilisés dans le cadre de l'informatique, et plus précisément ceux qui sont rencontrés par les programmeurs.
 
Le [[#code source|code source]] même d'un programme est constitué d'un texte. Pour restituer un texte, la quasi-totalité des système informatiques utilisent le standard ASCII, ou un dérivé de celui-ci. Constitué en 1963 puis complété en 1967 il permet de coder sur 7 [[#bit|bits]] l'alphabet latin sans les diacritiques, en majuscules et en minuscules, les 10 chiffres du système décimal, des caractères de ponctuation, des symboles mathématiques et financiers ($%&), et des codes de contrôle destinées à superviser la communication.
 
Rapidement limité pour représenter les caractères accentués et autres symboles non américains. L'[[w:ISO 646|ISO 646]] fut la première tentative en ce sens mais elle posa des problèmes d'incompatibilité car le système restait basé sur 7 bits, ne créant pas de nouveaux codes mais réassignant ceux existants, les codes de contrôle servant à définir quel jeu de caractères s'appliquait à tel morceau de texte. Mais ces codes étaient souvent omis, ou bien les traitements de texte n'étaient pas conçus pour les prendre en charge si bien qu'un programmeur non américain était dès lors souvent confronté à :
 
<code>ä aÄiÜ='Ön'; ü</code>
 
au lieu de
 
<code>{ a[i]='\n'; }</code>
 
L'autre solution adoptée fut d'utiliser un huitième bit afin d'obtenir 128 combinaisons supplémentaires. La norme [[w:ISO 8859|ISO 8859]] propose 16 jeux de caractères différents couvrant chacun un ensemble linguistique plus ou moins local : l'ISO 8859-1 pour les langues européennes occidentales, l'ISO 8859-5 pour le cyrillique, l'ISO 8859-11 pour le thaï... l'ISO 8859-15 ajoute le support du symbole Euro (€) et de quelques diacritiques manquantes du français (Œ, œ, et Ÿ).
 
Cependant devant l'extension mondiale de l'informatique et la limitation d'un système à 8 bits qui ne permet pas d'utiliser par exemple plusieurs alphabets différents dans un même document, l'ISO travaille depuis 1988 à l'élaboration d'un code universel : l'Unicode.
 
{{todo|rapide topo sur différences entre ASCII, ISO, UTF..;}}