Chyba v triedeni cs_CZ & sk_SK

Honza Pazdziora adelton na fi.muni.cz
Čtvrtek Květen 29 13:29:56 CEST 2003


On Thu, May 29, 2003 at 10:40:44AM +0000, Michal Kubecek wrote:
> 
> Sám jste o pár odstavců výše připustil, že tam nejasné formulace
> jsou. Příkladů už tu padlo víc než dost, nemá je smysl pořád dokola

Ne, připustil jsem, že většině lidí jsou ty detaily jedno.

> opakovat. Sám operujete nějakým "Plus mínus". Tak proč není možné,
> aby ta "rozumná aproximace" byla jednoznačně určená? A když už bude,

No, já osobně bych problém viděl v tom, že ono hodně závisí na tom,
jaké softwarové možnosti aktuálně máte. Pokud použijete ISO-8859-2,
Windows-1250 nebo UTF-8, tak budete mít různé repertoáry znaků,
transliterací a možností, jak to nejen řadit, ale dokonce i jen zapsat
a uložit.

> Současný způsob je špatný především proto, že jednoznačný výklad
> neexistuje. Pro někoho je rozumnou aproximací to, že implementuje
> dvojí průchod a 'ch', pro jiného lexikografické porovnávání podle
> uspořádání písmen v české abecedě (bez 'ch'). A svým způsobem mají
> oba pravdu, protože nikde není dáno, co je ta "rozumná aproximace".
> 
> Takže v okamžiku, kdy si budou vyměňovat data, která mají být seřazená,
> může je jeden seřadit podle svého nejlepšího vědomí a svědomí, přesto
> si je ten druhý bude muset seřadit podle svého. Řekl bych, že smyslem
> norem je právě to, aby k takovým problémům nedocházelo.

Vnímám problém. Řešením by mohlo být UCA, byť i tam máte možnost se
implementačně rozhodnout, kolik "průchodů" uděláte.

Je ale samozřejmě otázka, nakolik je "seřazenost" či "seřaditelnost"
vlastností implicitně danou těmi daty. Protože jiný uživatel může
používat jiný jazyk, jiné locales a tudíž jiné řazení. Pak mi opravdu
přijde nejlepší, aby ta posloupnost byla zafixovaná třeba dodatečným
atributem určujícím pořadí elementu / záznamu.

> 1. Současná norma bez nejasností a skrytých informací. Jinak řečeno:
> dvouprůchodové porovnání, 'ch' chápáno jako jeden znak. U každého

Chceme-li začít opravdu zgruntu, tak bychom měli začít u porovnání
čtyřprůchodového -- v těch dalších průchodech se řeší velikost písmen
a slova.

> znaku ale musí být jednoznačné, zda je rozlišován v prvním průchodu
> nebo ve druhém. Tedy nic takového jako že ve 'sťal' se bere 'ť' až
> ve druhém průchodu, zatímco v 'traťmistr' už v prvním. Zrovna tak

Tohle se někdy někde děje? Podle normy nikoli, doufám.

> 'ch' se bere jako jedno písmeno vždy, bez ohledu na výslovnost.
> 
> 2. Totéž jako 1, ale 'ch' se chápe vždy jako dvojice písmen.
> 
> 3. Jako 2, ale porovnávání je jednoprůchodové.
> 
> Osobně bych dal přednost variantě 2, o něco méně 3, potom 1. Pokud
> ale nebude přijata varianta 2 nebo 3 (což bohužel nebude), považuji
> za žádoucí, aby s "písmenem" 'ch' bylo skutečně nakládáno jako s jedním
> písmenem (až na výjimky, kdy se o písmeno nejedná). Tedy samostatná
> Unicode reprezentace a její důsledné používání.

Tím jedním písmenem máte na mysli předpokládám to, že se nepřipouští
výjimka typu "mochodně", dvojice znaků "ch" se vždy řadí mezi "h"
a "i". Proč to ale je nutné vázat na to, že to bude i vnitřně
reprezentováno jako jeden znak? S tím, jak řadit dvojici znaků "ch"
přece žádný technický problém není. Resp. je jich výrazně míň než by
bylo problémů s tím, že do Latin2 a cp1250 dodatečný znak nenacpete
a i v Unicode by to byla záležitost na léta. ?

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
 .project: Perl, mod_perl, DBI, Oracle, auth. WWW servers, XML/XSL, ...
		Only self-confident people can be simple.


Další informace o konferenci Linux