- Classement alphabétique informatisé
-
Classement alphabétique informatisé
Le classement alphabétique est le classement des caractères d'une écriture dans un ordre défini par un alphabet (le plus souvent), pour une langue donnée. Cet article décrit la question d'un point de vue informatique. On se reportera à Classement alphabétique pour des explications plus générales et historiques.
Sommaire
Principe
Le principe consiste à comparer deux mots, caractère par caractère.
Si les n premiers caractères sont identiques, on prend le suivant. Si le n-ième caractère diffère, l'ordre est établi. Si le mot est fini, le mot est considéré comme venant en premier.
Il convient donc pour classer correctement de connaître :
- l'ordre dans lequel sont classées les lettres d'un alphabet donné, ordre qui dépend de règles historiques différant d'une langue à l'autre même si elles utilisent un alphabet très proche ;
- l'existence de graphèmes complexes (ligatures, digrammes) à prendre en compte (dans une langue, tel digramme comptera pour une lettre et aura son rang, dans telle autre, non).
Type ASCII
Pour des raisons d'habitudes, d'ancienneté du principe, ou de facilité de mise en œuvre, de nombreux développeurs de logiciel utilisent ou ont utilisé le classement selon l’ordre des codes dans le codage de caractères utilisé (par exemple ASCII ou UTF-8). Ce classement coïncide avec le classement alphabétique pour les mots contenant uniquement des lettres sans diacritique et toutes en majuscule (ou en minuscules), mais donne un résultat généralement incorrect dès qu’il y a des diacritiques, des espaces, des signes de ponctuations ou un mélange de lettres majuscules et minuscules (ce dernier point est toutefois facilement résolu en convertissant tout en majuscule).
MediaWiki
Actuellement (juillet 2009), MediaWiki utilise le classement selon l’ordre de codage des caractères dans UTF-8.
On trouvera ci-dessous des classements plus pertinents.
Pour les programmeurs
Les programmeurs d'application devront donc faire attention aux spécificités locales. Par exemple la fonction str[n]cmp de la bibliothèque string.h de C compare simplement des codes des caractères ASCII. Il faut, soit bricoler une amélioration de cette fonction, soit utiliser des fonctions propres des bibliothèques disponibles sous les systèmes d'exploitation cible.
ICU, Java, Python et Perl sont compatibles Unicode et portables. Visual Basic gère l'Unicode mais ne fonctionne pas sur des systèmes tels que Linux.
Bibliothèques de Microsoft
Par exemple en programmation pour Windows :
- on peut utiliser la fonction CompareString ;
- On peut utiliser la bibliothèque ICU.
Bibliothèque d'UNIX
- On peut utiliser la bibliothèque ICU.
[À développer]
Bibliothèque ICU
[À développer]
De nombreuses informations sont disponibles dans les sites suivants :
- introduction au tri ;
- French Secondary Sorting, (pour la langue française) ;
- exemples en C et en C++.
Bibliothèques de GNU/Linux
Sous GNU/Linux, on peut utiliser la bibliothèque ICU.
Bibliothèques de Java
Sous java, le tri est natif. Il est certainement paramétrable avec des locales.
PHP
[À développer]
PHP est utilisé par Wikipédia.
mySQL
mySQL est utilisé par Wikipédia. MySQL 4.0 sait faire du tri allemand avec un jeu de caractères étendu : latin1_de.
La fonction 4.1 semble savoir faire le vrai tri.
- voir le lien externe l'Unicode, avec mySQL 4.1
Un HOWTO sur le classement alphabétique
Ordre ASCII
Wikipédia considère l'ordre ASCII comme un ordre alphabétique.
Wikipédia sur ce point est touché par le bug 164. Pour les développeurs, on pourrait ajouter le commentaire suivant.
It looks like mySQL 4.1 support nationals collate of utf-8
http://dev.mysql.com/doc/mysql/en/Charset.html
http://bugzilla.wikipedia.org/show_bug.cgi?id=164
Articles connexes
- Classement alphabétique ;
- Classement alphabétique complexe ;
- alphabet ;
- digramme, ligature ;
- Unicode.
- chaînes de caractères.
Liens externes
Bibliographie
- Jonathon Green, Chasing the Sun: Dictionary-Makers and the Dictionaries They Made, Henry Holt & Co (1996) - ISBN 0712662162
- Donald Ervin Knuth, The Art of Computer Programming, Volume 3: Sorting and Searching, Addison-Wesley Professional; (1998) - ISBN 0201896850
- Michel Foucault, L'Ordre des choses
Algorithmes informatiques
- http://msdn.microsoft.com/library/FRE/cpref/html/frlrfSystemStringClassTopic.asp
- http://www.etudes.ecp.fr/appli-web/2003-2004/03/unicode.pdf
- http://hapax.qc.ca/pdf/whistler.pdf
- http://hapax.qc.ca/pdf/intro-Unicode.pdf
- http://www.afnic.fr/data/actu/public/2003/jres-unicode.pdf
- http://usenet-fr.news.eu.org/fur/chartes/comp.normes.unicode.html
- http://www.unicode.org/reports/tr10/
- introduction au tri
- French Secondary Sorting, (pour la langue française)
- exemples en C et en C++
Voir aussi
- Prefs.js, un fichier de configuration de Mozilla Thunderbird qui est classé alphabétiquement à l'exécution.
Catégories : Algorithmique | Bibliothèque logicielle | Classement alphabétique | Internationalisation en informatique
Wikimedia Foundation. 2010.