Kielimerkkaus, luku 4 Ongelmia kielimerkkauksen käytössä:

Ihmisten kielet ja tekniset notaatiot

Sanaa "kieli" käytetään yleisesti myös puhuttaessa erilaisista merkintätavoista kuten "matematiikan kielestä" tai "ohjelmointikielistä" tai "merkkauskielistä". Tämä aiheuttaa paljon sekaannuksia, kuten olen kuvannut dokumentissa Datatekniikan "kielet" - ehdotus käsitteiden selvennykseksi ja luokitteluksi.

Tässä tarkastellun kielimerkkauksen yhteydessä on kyse aina "oikeista" kielistä, sellaisista, joita ihmiset käyttävät puheessa ja kirjoituksessa, tai ainakin niitä vastaavista kielistä kuten kuvitteellisista kielistä, joita käytetään ihmiskielten tapaan, vaikkapa Keski-Maan haltiakieli tai klingonien kieli. Kyse ei välttämättä ole elävästä kielestä vaan myös esimerkiksi muinaisegypti, jonka suoranaisesti tunnemme vain kirjoitettuna, on ilman muuta kieli. Myös niin sanotut keinotekoiset kielet eli suunnitelmakielet (artificial languages, constructed languages) kuten volapük tai esperanto kuuluvat ilman muuta joukkoon, ainakin jos ne on suunniteltu samanlaiseen käyttöön kuin luonnolliset kielet. Tosin suunnitelmakieliä on tehty hyvin monenlaisia, ja jotkin niistä voitaisiin ehkä luokitella koodijärjestelmän ja ihmisten kieleksi tarkoitetun rakennelman välimaastoon.

Mutta ulkopuolelle siis jäävät monet "kieliksi" kutsutut merkintätavat, kuten esimerkiksi merkkauskieli HTML, tyylisääntökieli CSS tai ohjelmointikieli C. Kielikoodijärjestelmien määrittelyissä usein erikseen sanotaan, että ne on tarkoitettu ihmisten kieliä (human languages), ei tietokonekieliä varten. Miten sitten olisi meneteltävä, jos dokumentissa esitetään sellaisilla "kielillä" kirjoitettuja ilmaisuja eli jos vaikkapa haluaisimme puhua CSS:n font-family-ominaisuudesta nimeltä? Missään tapauksessa ei pidä ruveta antamaan vaikkapa CSS:lle kielikoodia ja käyttämään sitä. Eri asia on, että voisi olla hyvä, jos käytetyn koodin, merkintätavan, voisi ilmaista merkkauksella. Mutta tämä on pidettävä erossa kielimerkkauksesta.

Epäselvää on, tulisiko "tietokonekielten" ilmaisujen yhteydessä aina käyttää code-merkkausta HTML:ssä. Usein kyseistä merkkausta käytetään ulkoasun takia, tasalevyisen fontin aikaansaamiseksi. Mutta voisiko sillä olla myös looginen merkitys? Mielestäni voisi, koska code-elementin määrittely sanoo: "Designates a fragment of computer code." Esimerkiksi kielenkäännösohjelma (tai ihmiskääntäjä) voisi siitä päätellä, että ilmaisu on käännöksessä jätettävä sellaisekseen, vaikka se näyttäisi osittain olevan englantia. Valitettavasti nykyiset käännösohjelmat eivät näytä niin tekevän.

Mutta olisiko mainitunlaisten "kielten" yhteydessä kuitenkin käytettävä kielimerkkausta silloin, kun niissä esiintyvät merkkijonot on otettu jostain luonnollisesta kielestä? On selvää, että esimerkiksi merkkijonoa "function" ei pidä kääntää, kun se viittaa ohjelmointikielen varattuun sanaan. Mutta toisaalta se pitäisi lausua englannin mukaan, ainakin suunnilleen. Tämä on hankala kysymys etenkin, jos dokumentissa esiintyy paljon koodia. Puhe-esityksen kannalta ongelmana on, että esimerkiksi HTML-koodissa tai lähdekielisessä tietokoneohjelmassa on sekaisin englannista otettuja varattuja sanoja, välimerkkejä ja eri kielistä otettuja sanoja tai sanantapaisia ilmaisuja. Miten esimerkiksi seuraava pitäisi lukea ääneen?
<table class="tilasto">

Esimerkki osoittaa pieneltä osaltaan, että on mielekästä liittää koodinpätkään kielimäärite, joka on loogisesti riippumaton siitä, mikä on käytetty koodijärjestelmä, kuten tietokonekieli. Esimerkissämme merkkijono tilasto on yhtäältä osa HTML-merkkausta, toisaalta suomen kieltä siinä mielessä, että ääneen luettaessa se pitäisi lausua suomen sääntöken mukaan.

Ehkäpä voimme ainakin toistaiseksi lähteä siitä, että jos esimerkiksi HTML-, CSS- tai C-koodia kuunnellaan, kuulija ymmärtää englannista peräisin otetut sanat lausuttuina sen kielen mukaan, jolla dokumentti muutoin on kirjoitettu. Lausutaanhan sellaiset sanat muutenkin usein "kirjaimellisesti", esimerkiksi suomen mukaan luettuina. Se, että koodin eri osille kirjoitettaisiin erikseen kielimerkkaus, olisi huomattavan työlästä eikä tuottaisi mitään selvää käytännön etua.

"Tietokonekieliin" otetut englannin sanat on usein typistetty, esimerkiksi "lang", tai sanoja on sekä katkottu että yhdistelty, esimerkiksi "charset". Onpa niitä myös kirjoitettu väärin. Esimerkiksi HTTP-protokollan erään otsakkeen nimi on "Referer", koska joku alun perin kirjoitti englannin sanan "referrer" väärin. Kun se on kerran otettu protokollaan, sitä ei enää haluta muuttaa. Monia virheellisiä kirjoitusasuja sisältyy myös eliöiden tieteellisiin nimiin. Valitettavasti ei kielimerkkaukseen sisälly mitään tapaa ilmoittaa, että jokin sana on tiettyä kieltä mutta väärin kirjoitettu.

Tavallaan kielten ja notaatioiden välimaastoon kuuluvat sellaiset teksti-ilmaisut kuin SI-mittajärjestelmän mukaiset suureiden arvojen merkinnät, vaikkapa "40 km/h". Ne ovat osa yleismaailmallista järjestelmää ja ne tulisi aina kirjoittaa samalla tavoin, ympäröivästä kielestä riippumatta. Sen sijaan ne luetaan ympäröivän kielen mukaan, esimerkiksi "neljäkymmentä kilometriä tunnissa" tai "fourty kilometers per hour". Jälkimmäinen hoituu sillä, että ilmaisulle itselleen ei ole kielimerkkausta vaan sen kieli määräytyy tekstin rakenteen ylemmällä tasolla olevasta merkkauksesta. Sen sijaan kirjoitusasun osoittaminen kieliriippumattomaksi, niin että se esimerkiksi käännettäessä tulee pitää samana, vaatisi periaatteessa erityisen merkkauksen; käytännössä ei sopivaa merkkausta ole nykyisin käytettävissä.


Kirjoittamisen ajankohta: 2002-06-23. Päivitetty viimeksi 2007-12-03. Teknisiä korjauksia 2017-12-11.
Tämä sivu kuuluu Jukka "Yucca" Korpelan avoimeen tietosivustoon Datatekniikka ja viestintä.