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

Contenu supprimé Contenu ajouté
Tavernier (discussion | contributions)
→‎Texte : + todo
Tavernier (discussion | contributions)
→‎Texte : ajout titres et bricoles
Ligne 254 :
 
=== Texte ===
 
=== ASCII ==
 
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.
 
=== ISO 646 et ISO 8859 ===
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é à :
 
RapidementL'ascii se trouva 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 enpour ceaugmenter le nombre de caractères senscodables 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>
Ligne 265 ⟶ 269 :
<code>{ a[i]='\n'; }</code>
 
L'autre solution adoptée fut d'utiliser un huitième bit supplémentaire afin d'obtenir 128 combinaisons supplémentaires (l'ascii n'utilise que 7 bits). 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.
 
=== L'Unicode (ISO 10646) ===
 
L'Unicode définit actuellement plus de {{formatnum:120000}} caractères en utilisant jusqu'à 31 bits pour chacun. Il renferme également un mécanisme de plages qui adapte le nombre de bits nécessaires pour chaque caractère en fonction de sa nature. Il existe 6 plages, la première occupant 1 octet, la dernière en utilisant 6. La première plage se reconnait à ce que le premier bit de l'octet est positionné à 0, les 7 bits suivants respectent la norme ascii. Un caractère unicode de cette plage est donc de la forme 0xxxxxxx et se trouve entièrement compatible avec un système ascii. Les plages suivantes se reconnaissant à ce que le bit de poids fort de chaque octet est positionné à 1, les bits de poids fort du premier octet permettent de connaître la plage (110xxxxx pour la plage à deux octets, 1110xxxx pour celle à 3, 11110xxx pour 4, 111110xx pour 5 et 1111110x pour 6), et les deux bits de poids fort des octets suivant sont systématiquement positionnés à 10 afin d'indiquer leur appartenance à une suite d'octets unicode. Un caractère de la deuxième plage est donc de la forme suivante : 110xxxxx 10xxxxxx ; et propose donc 11 bits utiles, ce qui permet <math>2^{11}=2048</math> caractères différents.