Mikä on keskikieli?

Tietokoneohjelmoinnissa, kun kääntäjä jäsentää ihmisen luettavan lähdekoodin, kääntäjä kääntää lähdekomennot usein ohjesarjaksi, joka ei ole aivan natiivi konekoodi, mutta jota kääntäjä tai muu ohjelmisto voi edelleen käsitellä, optimoida tai koota työkaluja. Tuotetut tiedostot sisältävät ohjeita, joiden sanotaan olevan välikielellä, koska kääntäjän käyttämä kieli ei ole merkityksellinen suuremmalle käyttöjärjestelmälle eikä kieli, jota ohjelmoija on käyttänyt koodin kirjoittamiseen, vaan on kieli, joka toimii siltana ohjelman kirjoittamisen ja suorittamisen välillä. Välikieliä käytetään joskus, jotta kääntäjä voi tehdä erittäin tarkkoja optimointeja, jotta ohjelma toimii tehokkaammin, mutta sitä voidaan käyttää myös tuottamaan tulostiedostoja, jotka ovat kannettavia eri yhteensopimattomien järjestelmien välillä. Kielen todellinen syntaksi voi muistuttaa konekoodia tai muita ei-luettavissa olevia tavukoodeja, tai kieli voi olla vain olemassa oleva alustanvälinen tietokoneohjelmointikieli.

Kun sitä käytetään kääntäjän optimointiin, kielen kääntäjä ottaa jokaisen lauseen lähdekooditiedostoon ja jakaa komennon välikieleksi. Yksi ihmisen luettava ohjelmointilauseke voi jakautua kymmeniin konekielisiin käskyihin, joten välikieli luo abstraktion tason, jonka avulla kääntäjä voi tunnistaa koodin alueet, joilla voidaan tehdä optimointeja ilman, että koodia on ensin sidottava kaikki alkuperäiset toteutukset tai kirjastot. Kun välitunnistetiedosto on valmis, se voidaan sitten koota edelleen alkuperäisen binääritiedoston muodostamiseksi tai se voidaan ajaa toisen tulkin avulla tunnetun ohjelman kautta, joka suorittaa koodin kääntämällä sen tarvittaessa natiivikomentoihin.

Jotkut kielet, kuten Java®, luovat optimoituja, mutta myös muihin tietokonejärjestelmiin kannettavia koottuja tiedostoja välikielellä. Tämäntyyppinen koodi tunnetaan joskus tavukoodina ja muistuttaa konekoodia tai kokoonpanokieltä. Tavukoodi tallennetaan tiedostoihin alustasta riippumattomalla tavalla, mikä tarkoittaa, että se voidaan siirtää mihin tahansa tietokonejärjestelmään tai laitteeseen, joka voi käyttää tulkkia. Kun tavukoodi on järjestelmässä, se voidaan joko ajaa tulkittuna ohjelmana tai se voidaan koota toimimaan natiivina kohdejärjestelmässä.

Joissakin tapauksissa tietokoneen kieli on suunniteltu helpottamaan ohjelmointia tiettyyn päähän, kuten interaktiiviseen verkkosovellukseen, mutta suunnittelijat eivät halua sisällyttää mukautettuja kääntäjiä, tulkkeja tai laajennuksia eri järjestelmiin. Näissä tapauksissa kääntäjän välikieli voi olla olemassa oleva kieli, jolla on jo vakiintuneet alustojenväliset tulkit. Tuloksena oleva välikieli on tässä tapauksessa ihmisen luettavissa. Yksi esimerkki tietokoneohjelmointikielestä, jota käytetään myös välikielenä, on JavaScript®, jonka etuna on, että se voi toimia lähes missä tahansa verkkoselaimessa millä tahansa alustalla vuodesta 2011 lähtien.