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).
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.
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.
Eller sagt på ein annan måte:
Du treng teknologi for å henta fram slik informasjon som vi diskuterer her (korrekt sorteringsdata), og denne teknologien heiter språkteknologi. Det er ei svakheit ved OS-a at dei ikkje bruker tilgjengeleg teknologi og data (dvs "ordlister") for å gje det resultatet brukarane vil ha. Eg står fast på konklusjonen min om at det er OS-produsentane som burde gjera ein betre jobb.
Det er kanskje MS sin feil at det ikkje er implementert noko slikt i Windows, og tilsvarande for Apple og OSX
Ja, det er det.
- men som oftast vil du sjå mangelen på bruk av slik teknologi i
programvare som ingen av dei har laga
MacOS X tilbyr OS-funksjonar for å sortera tekst i samsvar med brukarinnstillingane, og eg vil tru at Windows gjer det same. God programvare bruker slike tenester for å få konsistent oppførsel frå program til program.
(og på Linux og andre OS har sjeldan distributørane ansvar for slikt i programvaren som dei leverar).
For Linux kan jo du og eg gjera det - i prinsippet i alle fall. Distributørane har ingen ting med saka å gjera, der er vi samd.
Vidare må ein sjå på kor mange språk der dette faktisk er ei relevant problemstilling
Mange, men fyrst og fremst for skriftspråk baserte på det latinske alfabetet.
- engelsk som ofte får litt for stor relevans i utvikling av slag
teknologi har det definitivt ikkje.
Etter det eg veit skal a og á sorterast likt på engelsk - då må sorteringsrutinen kunna abstrahera over ASCII- eller Unicode-kodar. Med t.d. ICU er dette ferdig (og effektivt) implementert.
Vidare vil ein for all del ikkje kople inn slik teknologi alle plassar der noko skal sorterast,
Nei, sjølvsagt ikkje, berre der det er relevant med lokalesensitive lister (typisk, men ikkje berre, i brukargrensesnittet).
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.
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.
Dersom nokon faktisk ynskte å gjere noko sånt, så vil eg tru at ein raskast kunne få effekt i programvare slik som KDE, der ein i det minste har standard listekomponentar for bruk i GUI, men eg veit ikkje om dei forskjellige applikasjonane som brukar desse komponentane også brukar felles sorteringsfunksjonalitet (normalt sett er det ikkje noko problem å spesialisere dette per applikasjon).
KDE vil vera ein rimeleg plass.
Personleg meiner eg det vil vere fullstendig feil å ha "norsk sortering" ein einaste plass i normal programvare, utanom i lister der ein veit at der kun skal vere eigennamn, og at desse er norske - og det einaste tilfellet som alle vil møte er kontaktlister (telefonkatalogar, etc) og kanskje sortering av epost på avsendar. Desse kan/bør i så tilfelle handterast spesielt. Sjølv søk vil verte skadelidande dersom norsk sortering er i bruk, dersom ein ikkje også sjekkar om søkjetermen kanskje kan vere eit norsk særnamn (men kanskje er det ikkje det, det er berre skrive som eit norsk særnamn).
Ein skal ikkje ha *norsk* sortering - ein skal ha *internasjonalisert* sortering, dvs sortering som enkelt kan endrast etter kva språk brukaren vil ha lister sorterte etter. Eg ventar på den dagen det finst støtte for samisk sortering i KDE/tilsvarande, Windows (der er kanskje samisk sortering alt på plass), MacOS X, og Java. Rett og slett fordi det finst datatypar som *skal* sorterast alfabetisk, og der ventar brukarane seg at det skal vera det. I nokre tilfelle krev dette meir enn berre å laga ein tabell over korrekt rekkjefylgje, som for norsk og dansk Aa/aa, t.d. ved samansette ord, og der kan språkteknologi brukast til å laga velfungerande løysingar. Velfungerande betyr at det funkar for alle stort sett heile tida. Dei løysingane vi har i dag fungerer som vi alle har konstatert ikkje.
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.
men at å bruke numerisk sortering vil vere rett (og alltid enklast) i suverent flest tilfelle.
Sjølvsagt vil det vera mange slike tilfelle, men i dei "suverent flest tilfella" der ein skal presentera tekstlister til brukaren, vil ei alfabetisk korrekt liste vera det beste. Det betyr at aa som a og aa som å begge bør sorterast rett. 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.
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.
Mvh, Lars Ivar Igesund
Beste helsing Sjur