Japonų rašto transliteravimas į lotyniškąją abėcėlę nėra mandagus tipografinis formalumas; tai kietas dviejų visiškai skirtingų informacinių paradigmų susidūrimas. Vienoje barikadų pusėje stovi lotyniškoji abėcėlė – lakoniškas, griežtai linijinis 26 ženklų rinkinys, suprojektuotas Viduržemio jūros pirklių sandoriams ir vėliau pritaikytas mechaninėms rašomosioms mašinėlėms. Kitoje pusėje stūkso unikali japonų rašto sistema – trijų lygmenų ortografinis darinys, sudarytas iš dviejų grynų fonetinių skiemenynų (Hiraganos ir Katakanos) bei tūkstančių logografinių kiniškų hieroglifų (Kanji). Norint deterministiškai sujungti šiuos du pasaulius, būtina suprasti ne tik morinę fonologiją, bet ir elementariąją bitų fiziką šviesolaidžiuose.
Japonų rašto fizika: 3 baitų UTF-8 ir šviesolaidžių fotonų realybė
Vakarų programuotojai, išlepinti ASCII standarto paprastumo, yra įpratę manyti, jog vienas simbolis prilygsta vienam baitui. Įprastam lotyniškam ženklui pakanka 0x00–0x7F intervalo, ramiai telpančio į vieną aštuonių bitų langelį. Japonų Kana priklauso visiškai kitai svorio kategorijai: Hiragana gyvena U+3040–U+309F, o Katakana – U+30A0–U+30FF Unicode blokuose. Pagal UTF-8 kintamojo ilgio kodavimo specifikaciją, kiekvienas šių skiemenynų ženklas binariniu lygmeniu privalo būti koduojamas lygiai trimis baitais pagal šabloną 1110xxxx 10xxxxxx 10xxxxxx. Pavyzdžiui, bazinis Hiraganos garsas A (あ, U+3042) tinkle keliauja kaip trijų šešioliktainių baitų seka 0xE3 0x81 0x82.
Tai nėra abstrakti teorinė smulkmena duomenų bazės schemoje; tai materiali termodinaminė našta pasauliniam ryšių tinklui. Standartinis Ethernet kadras su 1500 baitų MTU (Maximum Transmission Unit) riba geba pernešti apie 1460 nekompresuotų ASCII simbolių. Tas pats karkasas, užpildytas natūralia japonų Kana, pasiekia fizinį limitą jau ties 480 simbolių riba. Šviesolaidžio gysloje lazeriniai diodai ir elektroabsorbciniai moduliatoriai privalo tris kartus dažniau pulsuoti fotonų pliūpsniais, kad perneštų tą pačią semantinę prasmę per silicio stiklą. Maršrutizatorių paketų apdorojimo procesoriai išskiria tris kartus daugiau Džoulio šilumos, apdorodami ir tikrindami gryną japonų UTF-8 srautą. Konvertuojant Kaną į lotynišką Romaji, duomenų pėdsakas suspaudžiamas beveik tris kartus, taupant procesoriaus spartinančiąją atmintį (cache lines) bei tinklo pralaidumą.
Kana prieš Kanji: deterministinis skiemenynas prieš NLP košmarą
Hiraganos ir Katakanos grožis slypi jų nepriekaištingame matematinime determinizme. Skirtingai nuo anglų kalbos, kur raidžių junginys „ough“ gali skambėti net aštuoniais skirtingais būdais (palyginkite through, rough, bough ar thought), japonų Kana yra griežtas morinis skiemenynas. Kiekvienas simbolis atitinka tiksliai vieną morą – fiksuotos trukmės fonetinį vienetą. Kadangi tarp Kanos glifo ir garso egzistuoja abipusiai vienareikšmis ryšys, transliteracija į Romaji atliekama deterministiškai per baigtinių būsenų lenteles su nuline klaidų tikimybe.
Priešinga situacija ištinka susidūrus su Kanji (iš Kinijos pasiskolintais hieroglifais). Čia determinizmas akimirksniu subyra. Kanji ženklas neatspindi konkretaus garso; jis reprezentuoja prasmę ir slepia daugybę istorinių tarimų, skirstomų į On'yomi (kiniškus) ir Kun'yomi (vietinius japoniškus). Pavyzdžiui, elementarus hieroglifas 生, priklausomai nuo gramatinio konteksto, gali būti tariamas kaip sei, shou, iki, uma, nama, ki ar fu. Arbitralių Kanji hieroglifų perrašymas į lotynų rašmenis nebegali būti atliekamas deterministinėmis formulėmis – tam reikalingi griozdiški 50 MB MeCab ar Kuromoji natūralios kalbos apdorojimo (NLP) morfologiniai žodynai ir statistinis spėliojimas. Sąmoningai apribodamas veikimą ties Kana, TOOL GIGA užtikrina 100% matematinį tikslumą be bereikalingų serverio bibliotekų ir lėtų kreipimųsi į dirbtinį intelektą.
Gojūon matrica: 50 garsų kaip elegantiškas baigtinių būsenų automatas
Japonų fonetinės sistemos šerdis yra Gojūon (五十音, pažodžiui „Penkiasdešimt garsų“) – nepriekaištingai sukalibruota 5×10 garsų matrica, kurią dar ankstyvaisiais viduramžiais sudarė budistų kalbininkai, įkvėpti sanskrito fonologijos. Ši matrica sistemingai kryžmina penkis pagrindinius balsius (A, I, U, E, O) su dešimčia priebalsinių eilučių: grynieji balsiai, K, S, T, N, H, M, Y, R ir W, o viską vainikuoja autonomiška nosinė mora N (ん).
Ši simetrija tobulai persikelia į garso modifikavimą. Japonų kalba naudoja du diakritinius ženklus: Dakuten (du brūkšneliai arba tenten, ゛), paverčiantį dusliuosius priebalsius skardžiaisiais (K tampa G, S -> Z, T -> D, o H -> B), ir Handakuten (apskritimas arba maru, ゜), paverčiantį H eilutę sprogstamaisiais P garsais. Šiuolaikinėje Unicode architektūroje šie fonetiniai virsmai atspindimi deterministiniais bitų poslinkiais kodų lentelėje. Tai, kas vakariečiui atrodo kaip egzotiška Rytų kaligrafija, kompiuterių mokslo požiūriu tėra elegantiškas, griežtai indeksuotas baigtinių būsenų automatas.
Istorija: nuo vienuolių stenografijos iki Hepburno ir Kunrei karų
Abu Kanos skiemenynai atsirado iš būtinybės pasipriešinti lingvistiniam svetimkūniui. IX amžiuje budistų vienuoliai, versdami sudėtingus klasikinius kinų tekstus, susikūrė kampuotą stenografiją – Katakaną, išskaptuotą iš kiniškų hieroglifų detalių. Tuo pat metu Heiano epochos dvaro aristokratės, kurioms patriarchalinės taisyklės draudė mokytis oficialių kinų hieroglifų, ištobulino grakščią, banguojančią Hiraganą. Būtent šiuo „moteriškuoju raštu“ (onnade) rūmų dama Murasaki Shikibu sukūrė pirmąjį pasaulio romaną „Sakmė apie princą Gendži“, kol dvaro vyrai vargo mėgdžiodami sustabarėjusią kinišką kanceliariją.
Japonijai atsivėrus Vakarams Meidži eroje, kilo tikri „romanizacijos karai“. 1886 m. amerikiečių gydytojas ir misionierius Jamesas Curtisas Hepburnas išleido savo garsųjį žodyną, įtvirtinusį Hepburno sistemą. Ji buvo orientuota į anglų kalbos fonetiką: vietoje griežtos schemos ji fiksavo gyvą tarimą, rašydama shi vietoje si, chi vietoje ti ir tsu vietoje tu. 1937 m. nacionalistinė Japonijos vyriausybė išleido dekretą, reikalaujantį naudoti griežtai struktūrinę Kunrei-shiki sistemą (si, ti, tu), nepriklausomai nuo to, ar užsieniečiai sugeba tai ištarti. Tai sukėlė dešimtmečius trunkantį chaosą: Užsienio reikalų ministerija pasams reikalauja Hepburno standarto, Japonijos geležinkeliai (JR) naudoja Hepburną greitųjų traukinių stotyse, o pradinėse mokyklose vaikai mokomi Kunrei. Šis įrankis remiasi globaliai triumfavusiu Hepburno standartu, garantuojančiu tarptautinį fonetinį suderinamumą.
Komercinio SaaS farsas: ketvirčio amžiaus senumo C kodo perpakavimas
Šiuolaikinis internetas išgyvena keistą techninės amnezijos ir prenumeratų karštinės etapą. Pabandykite paieškos sistemoje susirasti japonų rašto transliteratorių: jus akimirksniu pasitiks blizgantys startuolių puslapiai, pasipuošę dirbtinio intelekto etiketėmis, reikalaujantys susikurti paskyrą, siūlantys „nemokamą bandomąjį laikotarpį“, brukantys mokamus planus ir verčiantys registruotis per trečiųjų šalių OAuth2 vartus, kad galėtumėte tiesiog išversti vieną žodį.
Už šios rinkodaros dūmų uždangos slepiasi techninė komedija: fonetinis japonų Kanos virsmas į lotynų rašmenis yra grynai deterministinis procesas. Čia nereikia jokių stochastinių neuroninių tinklų, eikvojančių gigavatus elektros energijos ir spėliojančių tikimybes. Šią problemą dar 1999 metais tobulai išsprendė IBM, „Apple“ ir Unicode konsorciumo inžinieriai, sukūrę International Components for Unicode (ICU) – žemo lygio, grynuoju C ir C++ parašytą algoritmų rinkinį. Tai matematiškai nepriekaištingas baigtinių būsenų keitiklis (finite-state transducer), gebantis akimirksniu pakeisti ženklų registrą ir fonetiką be menkiausios klaidos tikimybės.
Šiuolaikiniai komerciniai „debesų servisai“ tėra ploni, gremėzdiški HTTP apvalkalai aplink tą pačią ketvirčio amžiaus senumo C biblioteką. Jie paima atvirojo kodo inžinerinį šedevrą, apipina jį lėtais „JavaScript“ karkasais, įdiegia vartotojų elgsenos sekimo pikselius ir bando parduoti kaip stebuklingą debesų technologijų proveržį. TOOL GIGA atmeta šį sintetinį teatrą. Mūsų konverteris kreipiasi tiesiai į serverio PHP ext-intl branduolį: jokių registracijų, jokio vartotojų sekimo, jokių dirbtinių užklausų limitų – tik gryna, submilisekundinė C kodo elegancija jūsų naršyklėje.