Digitalisaatio - hyvät ja huonot puolet

Liittynyt
02.08.2022
Viestejä
188
Legacy-koodit eivät tiedä tällaisesta mitään vaan ne on kirjoitettu oletuksella 1 tavu = 1 merkki. On vähän vaikeaa arvioida miten paljon tämän oletuksen särkyminen rikkoo koodia. Eihän esim. alimerkkijonoihin pääse enää käsiksi suoraan indeksoimalla (esim. tekstirivillä 5 saraketta vakiopaikoissa ja halutaan poimia 4. sarakkeessa oleva numero ja konvertoida se liukuluvuksi). Hyvin tavallinen tehtävä, kun luetaan tekstitiedostosta dataa sisään. Toki voi pitäytyä ASCII-merkistössä mutta entäs kun 2. sarakkeessa lukeekin "Hyvinkää"?

Ihanko varmasti, jos käytetään jotain binääriä (esim. vanha kirjasto), jossa nämä kutsut on inline-optimoitu suoraan assembleriksi? Enää näin ei voi tehdä, jolloin suorituskyky kärsii.

Ehkä toimii, jos todella kutsutaan jotain funktiota mutta monet merkkijonofunktiot on tehty inline-assemblerina. Ei taida toimia, jos on koodattu jokin toiminnallisuus itse käsin.
Legacy-ohjelma, joka ei tiedä UTF-8'sta mitään, näkee nuo enkoodatut pätkät tilanvarauksensa mukaisina hivenen pitempinä pätkinä. Pääsääntöisesti tuo ei haittaa mitään. Esimerkiksi tuota tekstitiedostoa (vaikka CSV) parsiessa etsit jonkinlaisia column-markereita, joilla jaat tekstin sarakkeiksi. Nuo löytyvät ihan samalla tavalla kuin ennenkin. Se "hyvinkää" parsiutuu sieltä ihan oikein. strlen() palauttaa sille oikean tilanvarauksen mukaisen arvon, jolla voi tarvittaessa varata oikean määrän muistia. Ja vaikka strncpy kopioi sen varattuun bufferiin oikein, vaikka sovellus ei ole ikinä unicodesta kuullutkaan. Ja ei haittaa, vaikka kaikki nuo olisi inlinetetty binääriin, se strlen on edelleen ihan sama toteutus.

Sitten jos sulla on vaikka legacy tekstieditori, niin toki sillä saa generoitua rikkinäisiä utf-8 payloadeja: menet vaikka lisäämään välilyönnin keskelle tuollaista enkoodattua blobia. Mutta niiden esimerkiksi deletoiminen tai copy-paste toimii ihan oikein. Tällainen käyttötapaus sopii hyvin tilanteeseen, jossa tiedoston payload on pääasiassa ASCII, mutta voi sisältää pieniä määriä muita merkkejä.
 
Liittynyt
02.08.2022
Viestejä
188
Unicode on tarpeellinen tapauksissa, joissa saman dokumentin on pystyttävä näyttämään eri kirjoitusjärjestelmien merkkejä, siis esimerkiksi sekä koodisivulta IBM850 että japanilaisten kirjoitusjärjestelmästä löytyviä merkkejä.
Hyöty unicodesta tulee jo ihan siitä, että jokaisen tiedoston mukana ei tarvitse erikseen olla jossain toisaalla metatietona, millä koodisivulla se on kirjoitettu. Ääkköset ja muutkin yli 128'n olevat merkit menevät heti pieleen, jos tietoa siirtäessä lähettäjä ja vastaanottaja käyttävät eri koodisivua. UTF-8 pystyy esittämään kerralla kaikki unicode-speksin määrittelemät merkit, ei pelkkää 256-merkin subsettia. No, meille Suomessa on tuttua jo kymmenien vuosien takaa, että ääkköset voivat mennä pieleen, mutta käytännössä nämä paikat ovat koko ajan vähentyneet. Ja tässä unicode on ratkaisu, ei ongelma. Ongelma ovat nuo toisistaan irralliset 8-bittiset merkistöt.

Ja näinä päivinä tietty ihan mikä teksti vaan voi sisältää vaikka hymiöitä.
 
Liittynyt
16.10.2016
Viestejä
17 075
Hyöty unicodesta tulee jo ihan siitä, että jokaisen tiedoston mukana ei tarvitse erikseen olla jossain toisaalla metatietona, millä koodisivulla se on kirjoitettu. Ääkköset ja muutkin yli 128'n olevat merkit menevät heti pieleen, jos tietoa siirtäessä lähettäjä ja vastaanottaja käyttävät eri koodisivua. UTF-8 pystyy esittämään kerralla kaikki unicode-speksin määrittelemät merkit, ei pelkkää 256-merkin subsettia. No, meille Suomessa on tuttua jo kymmenien vuosien takaa, että ääkköset voivat mennä pieleen, mutta käytännössä nämä paikat ovat koko ajan vähentyneet. Ja tässä unicode on ratkaisu, ei ongelma. Ongelma ovat nuo toisistaan irralliset 8-bittiset merkistöt.

Ja näinä päivinä tietty ihan mikä teksti vaan voi sisältää vaikka hymiöitä.
Puhumattakaan siitä, että noin 2/3 maailmasta käyttää jotain muita aakkosia kuin latinalaisia.
 
Viimeksi muokattu:
Liittynyt
17.10.2016
Viestejä
15 363
Hämmentävää lukea, että joku haikailee suppeita merkistöjä, jotka eivät siis kykene kattamaan edes kaikkia länsieurooppalaisten kielien tarvitsemia merkkejä, puhumattakaan muusta maailmasta. Se, että ohjelmoija on paska eikä kykene toimimaan UTF-8:n kanssa ja on saanut oppinsa 80-luvulla ei ole mikään peruste luopua siitä ja palata johonkin puutteellisen Latin-1:een. Devaaja on hyvä ja siirtyy 2000-luvulle. UTF-8-enkoodaus on todella toimiva ratkaisu, eikä ihme että se on saavuttanut laajan tuen.

Mutta miten ihmeessä tämä nyt sitten liittyy digitalisaatioon? En tiedä. Taas jotain ihme vänkäämistä uusista ja vanhoista protokollista, mikä varmaan kuuluisi jonnekin muualle. EDIT: No ehkä niin, että merkistöongelmat olivat ihan oikea ja paha ongelma digitalisaation alkuvaiheessa: nimet olivat väärin, vieraskieliset sanat oli väärin, piti muuttaa kirjaimia vääriksi ja sen jälkeen samalla sanalla olikin useita kirjoitusasuja ja haku ei toiminut oikein, sama sana näkyi eri tavalla eri käyttäjille jne. UTF-8 ja tietenkin Unicode ovat tuoneet tähän todella hyvän ja toimivan ratkaisun. EI nyt jumalauta kukaan tervejärkinen voi kaivata jotain vanhoja merkistöjä :facepalm:
 
Viimeksi muokattu:
Liittynyt
16.10.2016
Viestejä
17 075
Legacy-koodit eivät tiedä tällaisesta mitään vaan ne on kirjoitettu oletuksella 1 tavu = 1 merkki. On vähän vaikeaa arvioida miten paljon tämän oletuksen särkyminen rikkoo koodia. Eihän esim. alimerkkijonoihin pääse enää käsiksi suoraan indeksoimalla (esim. tekstirivillä 5 saraketta vakiopaikoissa ja halutaan poimia 4. sarakkeessa oleva numero ja konvertoida se liukuluvuksi). Hyvin tavallinen tehtävä, kun luetaan tekstitiedostosta dataa sisään. Toki voi pitäytyä ASCII-merkistössä mutta entäs kun 2. sarakkeessa lukeekin "Hyvinkää"?
Tai jos siinä lukeekin 北京 tai 東京都. Puhumattakaan جِدَّة‎ tai תל אביב. Sitten on toki myös Αθήνα ja Hà Nội.
Suht nopeasti huomataan, että tuollaisia yksinkertaistuksia sisältävät legacy-koodit kuuluvat sinne roskakoriin kaksinumeroisten vuosilukujen ja 32 bittisten aikaleimojen kanssa.
 
Viimeksi muokattu:
Toggle Sidebar

Statistiikka

Viestiketjut
252 398
Viestejä
4 390 366
Jäsenet
72 989
Uusin jäsen
RoskaMäyrä

Hinta.fi

Ylös Bottom