Chyba v triedeni cs_CZ & sk_SK

Michal Kubecek mike na mk-sys.cz
Čtvrtek Květen 29 12:39:31 CEST 2003


On Thu, May 29, 2003 at 09:16:05AM +0000, Honza Pazdziora wrote:

> A proč jste to vlastně dělal? Proč jste implementoval řazení jiné než
> podle ordinálních hodnot ASCII znaků, když jenom tohle se Vám jeví
> rozumné? Nebylo to náhodou proto, že uživatelé (= normální lidé), pro

Ani slůvkem jsem nenaznačil, že se mi to jeví rozumné. Považoval bych
například za naprosto nepřijatelné, pokud by porovnávání řetězců mělo
záviset na použité znakové sadě (tj. jestli to bude v Kamenických,
CP852 nebo KOI8-CS; po nějakých ISO 8859-2, Windows-1250 nebo dokonce
Unicode tehdy nebylo ani vidu ani slechu).

> jak to obejít a vokecat, ale prostě dodáte výstup řazený podle
> očekávaných postupů? Plus mínus?
...
> Popravdě řečeno, pokud se zeptáte náhodně lidí na ulici, asi nebudou
> mít jednotný názor na to, jak se má řadit Karel IV vs. Karel II.
...
> s textem normy. Čili ano, bylo by pěkné s tou skrytou informací
> pracovat, ale od jisté úrovně náklady na takové zpracování převýší
> návratnost. A nemá cenu kvůli tomu truchlit nebo nespat.
...
> :-) To správné fórum pro změnu pravidel řazení češtiny tady opravdu
> není, a pokud se zeptáte na názor knihovníků / jazykovědců, tak Vám
> řeknou, že přece ta norma pravidla obsahuje. Mám ji před sebou a nic
> mlhavého tam nevidím.

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
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,
proč by nemělo být stejné porovnávání používáno i pro ruční zpracování?

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.

> Na druhou stranu pokud máte pocit, že počítačové implementace normy
> a zažitých zvyklostí by měly být lepší, sem s nápady -- nějakou
> souvislost s Linuxem tam asi ještě pořád dohledáme. :-)

Rozdělil bych své nápady do několika stupňů. Předpokládám, že míra
konsensu bude pro jednotlivé stupně klesat.

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
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
'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í.

                                                        Michal Kubeček


Další informace o konferenci Linux