”Hallittu koodi” on Microsoft® Coprorationin luoma termi. Tämä termi viittaa ohjelmakoodiin, joka edellyttää CLR (Common Language Runtime) -virtuaalikoneen käyttöä. Termiä “hallitsematon koodi” käytetään viittaamaan ohjelmakoodiin, joka ei vaadi tätä virtuaalikonetta.
Common Language Runtime kehitettiin siten, että ohjelmat voidaan suorittaa useilla tietokoneilla ja käyttöjärjestelmillä ilman muutoksia ohjelmakoodiin. Tätä varten tietokoneohjelmakoodi muunnetaan virtuaalikoneen tavukoodiksi. CLR -virtuaalikone tulkitsee tämän tavukoodin ja muuntaa sen käytettävän tietokoneen tavukoodiksi.
Hallittu koodi voi toimia millä tahansa tietokoneella, joka on varustettu CLR -virtuaalikoneella. Tämä korkea siirrettävyys antaa sille lopullisen edun hallitsemattomaan koodiin verrattuna. Hallitsematon koodi edellyttää, että ohjelmoijat muuttavat ohjelmakoodia eri koneille. Tämä prosessi ei voi vain olla hidas, vaan se voi myös johtaa moniin sovellusvirheisiin.
Toinen hallitun koodin etu on sen parannettu suojaus. Hallitsemattomalla koodilla tehdyn ohjelman turvallisuus riippuu suuresti ohjelmoijien toteuttamasta toteutuksesta. CLR -virtuaalikoneen käyttö auttaa poistamaan suuren osan tietoturvaongelmista ohjelmoijien harteilta. Suurin osa mahdollisista turvallisuusongelmista keskittyy suoraan virtuaalikoneeseen. Tämä itsessään auttaa keskittämään ongelmat, mikä nopeuttaa tietoturvakorjausten käyttöönottoa.
Tietokoneohjelmoijille on erittäin tärkeä kysymys siitä, onko tietty koodisarja hallittu koodi vai hallitsematon koodi. Hallitun koodin siirrettävyys on suurempi, mutta tämä siirrettävyys edellyttää, että Common Language Runtime on asennettu kohdetietokoneeseen. Hallitsematon koodi sitä vastoin voidaan ajaa ilman CLR: n lisäämistä.
Hallitun koodin käytöllä on monia etuja, mutta myös useita haittoja. Ensisijainen haitta on yleiskustannukset, joita CLR -virtuaalikoneen käyttö vaatii. Ero hallinnoidun koodin nopeuden ja hallitsemattoman koodin nopeuden välillä on usein vähäinen, mutta joissakin tapauksissa se luo erittäin havaittavan eron sovelluksen vasteajassa. Tämän seurauksena hallitsemattomalla koodilla on ratkaiseva rooli useimmissa sovelluksissa, jotka vaativat suurta nopeutta siirrettävyyden suhteen.