Orsak at eg kverulerar litt - er ikkje prinsipielt mot korrekt sortering, stiller meg berre litt tvilande til at ein slik sorteringsteneste vil verte tilgjengeleg med det fyrste.
On Monday 10 November 2008 18:24:50 Sjur Nørstebø Moshagen wrote:
Den 10. nov. 2008 kl. 14.33 skrev Lars Ivar Igesund:
On Monday 10 November 2008 12:35:01 Sjur Nørstebø Moshagen wrote:
Den 10. nov. 2008 kl. 11.10 skrev Lars Ivar Igesund:
On Monday 10 November 2008 09:53:38 Sjur Nørstebø Moshagen wrote:
Konklusjon: i staden for å kritisera sorteringsreglane, vil eg heller retta kritikken mot OS-produsentane - dei kan gjera det betre enn dei gjer det no!
Dette er då vitterleg ikkje eit teknisk problem i seg sjølv, men derimot at ord og namn ikkje kjem med informasjon om korleis dei sorterast (utover seg sjølv for å sei det sånn). Om det var vanleg at ord hadde innebygde sorteringsmetadata, så hadde dette vore løyst forlengst. Og sidan ein ikkje kan krevje at den som skriv inn noko legg ved slik informasjon, er einaste reelle tekniske moglegheita og fornuftige løysinga at ordlister vert utvida med sorteringsinformasjon.
Vel, det var akkurat det eg skreiv. Språkteknologi bruker ein nettopp til å få fram ulik informasjon om orda (og setningane, m.m.) i ein tekst. Og grunndata for all språkteknologi er nettopp "ordlister" i ein eller annan forstand.
Det eg peika på er at sjølv om slike lister finst (og dei finst), og sjølv om språkteknologi finst (som eg skreiv), så blir det ikkje brukt i dei vanlege OS-a i dag.
Vel, om ein kanskje ser vekk i frå Windows, så er det sjeldan OS'et si oppgåve å sortere noko som helst. For dei fleste operativsystem er ikkje eingong filsystemet ein del av OS'et, og filsystema gjer uansett fint lite utanom å gi deg ein haug med usorterte (dog ofte grupperte) data.
Det er mange plassar ein har bruk for å sortera data. Det vi her pratar om gjeld brukargrensesnittet, dvs korleis OS-et presenterer ein viss datatype (lister) til brukaren, og korleis brukaren venter seg at slike lister skal presenterast (t.d. sortert alfabetisk korrekt etter reglane for språket brukaren har valt i grensesnittet).
Mitt poeng er at eg i utgangspunktet ikkje ser på dette som OS-et si oppgåve, først og fremst fordi OS-et ikkje har data som som vil ha behov for slik sortering. Men det kan for all del ha ein slik teneste.
I den Unicode-verda vi no lever i er korrekt sortering for alle språk ei kompleks oppgåve, og oftast både sentralisert for heile OS-et, og bygd på data frå sentrale lokale-repositorium. Det best kjende dømet er kanskje IBM sitt bibliotek for i18n-tilpassa programvare (ICU - International Components for Unicode [http://icu-project.org/], både for C/C++ og Java), som er open kjeldekode og tilgjengeleg for alle.
Jau, eg er godt kjent med collation, både gjennom ICU og bibliotek som eg sjølv har vore med å utvikla. Det er då heller ikkje dette eg ser på som eit problem (orsak, utfordring som er til for å løysast).
Og sjølv om desse listene finnast, så betyr ikkje det at det ikkje finnast duplikatar på andre språk som ikkje skal sorterast etter norsk måte - korleis veit ein at noko faktisk er meint å skulle tolkast som norsk? Må brukaren krysse av for det dersom det er snakk om eit søkjefelt?
Både på MacOS X og i Windows (og eg vil tru i Linux òg) kan ein velja sorteringsrekkjefylgje for lokale-sensitive lister, vanlegvis i eit kontrollpanel eller liknande. Ein vel sorteringsrekkjefylgje ved å velgja kva for språk sorteringa skal fylgja. Vanleg praksis for ord som fell utanfor alfabetdefinisjonen til språket er å falla tilbake på standard Unicode-sortering.
Kanskje det, eg sorterar aldri lenger, eg søkjer :)
spesielt ikkje berre fordi norsk _kan_ vere i bruk, ettersom det ville gjere eit trivielt sorteringsproblem (basert på numerisk eigenverdi av teksten) om til ein merkbart dyrare operasjon (iallfall isolert sett, på ein desktop PC vil ein sannynlegvis ikkje tenkje over dette).
ICU tilbyr ein effektiv implementasjon, men det er sjølvsagt meir kostbart enn om ein berre sorterer på ASCII-verdi. Men ASCII er ikkje eit svar det folk treng i dag. Unicode er det.
Eg må få påpeike at sjølv om Unicode-sortering til ei viss grad er dyrare enn ASCII-sortering, så var det ikkje det eg meinte - eg jobbar stort sett kun med Unicode sjølv. Eg meinte at å involvere ordlister og andre metadata vil vere fordyrande (og det på eit heilt anna nivå enn Unicode vs ASCII fordi operasjonane på det nivået foregår meir "lokalt" i teksten, per Unicode-eining (code point)).
Vidare må det nemnast at det på ingen måte er ein teneste frå operativ-systemet å sortere tekst, derimot er dette noko som er implementert om att og om att opp og ned i mente, og å endre alle desse til å bruke ein sentralisert teneste (ikkje nødvendigvis ein dum ide reint teknisk) ville vere eit enormt arbeid (men ikkje teknisk vanskeleg).
Som eg skreiv over, er dette standard funksjonar frå OS-et i det minste i MacOS X, og det er etter kvart meiningslaust å prøva å laga locale-sensitiv sortering sjølv. Det er komplekst, og det finst som sagt ferdige bibliotekpakker for det, både frå OS-a og som open kjeldekode frå IBM. Det er altså ingen grunn til *ikkje* å gjera det. Det betyr ikkje at det ikkje er mykje arbeid å skriva om gamal kode - det er det sjølvsagt.
Eg kan for syns skyld gå med på at ICU kan sjåast på som ein slik sentral teneste, sjølv om den per i dag ikkje løyser den aktuelle problemstillinga.
Jamnt over kan eg seie (som ein som til dagleg utviklar programvare og teoretisk sett kunne ha vorte tvinga til å implementere dette) at det vil vere eit semantisk mareritt å få 100% korrekt,
Derfor er det nokon som har teke på seg jobben, og laga ICU. Dermed slepp alle andre det, inkl. du. Det er berre å lasta ned, installera, og lenka det inn i koden din.
ICU kan berre hjelpe med korrekt sortering på teikn/bokstavnivå; ordlister, språkdata, metadata, mm. må til for å løyse det vidare problemet (og som sjølv då vil vere umogleg å få heilt korrekt i alle tilfelle).
Det er svært enkelt å senda lista til ein språkteknologikomponent laga for formålet, og få tilbake ei liste med tilleggsinformasjon om sorteringsnykkel. Det går dessutan raskt.
Sånn passe for normale brukargrensesnitt iallfall :)
Vi har teknologien, og i dag finst kunnskapen om korleis det kan gjerast. Det finst ingen grunn til å akseptera dei problema som har vorte trekte fram her lenger. Og problemet er ikkje norsk (eller andre språk si) sorteringsrekkjefylgje.
Greit nok, det ville vere flott med ei slik tenste. I mellomtida kan ein jo slå seg laus med søkjinga som jo likevel er enklare enn å sortere (så lenge ein ikkje treng treff basert på linguistiske metadata ;).
Mvh, Lars Ivar Igesund