Kehitys: Käännetyt kielet vastaan tulkatut kielet

Tulkatun ja käännetyn kielen ero on tulkinta- tai kääntämisprosessin tuloksessa. Tulkki tuottaa ohjelmasta tuloksen, kun taas kääntäjä tuottaa assembler-kielellä kirjoitetun ohjelman. Arkkitehtuurin assembleri muuttaa sitten tuloksena olevan ohjelman binäärikoodiksi.

Käännetty ohjelma ei ole ihmiselle luettavissa, vaan se on arkkitehtuurikohtaisella konekielellä. Se on sellainen, jossa ohjelma, kun se on käännetty, ilmaistaan kohdekoneen ohjeilla. Esimerkiksi lähdekoodissa oleva yhteenlaskuoperaatio ”+” voidaan kääntää suoraan konekoodin ”ADD”-käskyksi.

Käännetyn ohjelman luominen vaatii useita vaiheita. Ensin ohjelmoija kirjoittaa kehitystyökalun tai jopa yksinkertaisen tekstieditorin avulla lähdekoodin valitsemallaan tietokonekielellä. Jos ohjelma on monimutkainen, osia siitä voi olla hajautettuna useisiin tiedostoihin. Tämän jälkeen ohjelmoija kääntää ohjelman, lajittelee ja linkittää moduulit ja kääntää kaiken tietokoneen ymmärtämäksi konekoodiksi.Nykyään IDE-ohjelmissa (Interface Development Environment) kääntämisvaihe tapahtuu hyvin helposti ja saumattomasti, vain muutamalla napsautuksella.

Tulkatussa ohjelmassa lähdekoodi on kuitenkin tyypillisesti on ohjelma. Usein skripteiksi kutsutut ohjelmat vaativat tulkin, joka jäsentää ohjelmassa olevat komennot ja suorittaa ne sitten. Skriptin etuna on, että se on hyvin siirrettävissä. Kohdekone ei suorita käskyjä suoraan, vaan ne luetaan ja suoritetaan jollakin toisella ohjelmalla. Edellisen yhteenlaskuesimerkin mukaisesti saman ”+”-operaation tämäntyyppisissä kielissä tunnistaisi tulkki ajonaikana, joka sitten kutsuisi omaa ”add(a,b)”-funktiotaan sopivilla argumenteilla, joka sitten suorittaisi konekoodin ”ADD”-käskyn. Mikä tahansa tietokone, johon on asennettu asianmukainen tulkki, voi suorittaa ohjelman enemmän tai vähemmän muuttumattomana. Tämä on myös haitta, koska ohjelma ei toimi lainkaan, jos tulkkia ei ole käytettävissä. Yleensä tulkatut ohjelmat ovat hitaampia kuin käännetyt ohjelmat, mutta niitä on helpompi debugata ja muokata.

Käännetyllä kielellä voi tehdä mitä tahansa, mitä voi tehdä tulkatulla kielellä, ja päinvastoin ne ovat molemmat Turingin täydellisiä. Molemmilla on kuitenkin etuja ja haittoja toteutuksen ja käytön kannalta.

Käännettyjen kielten edut

Käännösprosessin aiheuttamien yleiskustannusten vuoksi käännetyt ohjelmat, jotka käännetään natiivikoodiksi käännöshetkellä, ovat yleensä nopeampia kuin ne, jotka käännetään suoritushetkellä.

Käännettyjen kielten haitat

Merkittävimmät haitat ovat :

  • Lisäaika, joka tarvitaan koko kääntämisvaiheen läpiviemiseen ennen testausta.
  • Tuotetun binäärikoodin alustariippuvuus.

Tulkattujen kielten haitat

Toteutuksen joustavuuden lisääminen käännetyistä toteutuksista. Koska tulkit suorittavat itse ohjelman lähdekoodin, itse koodi on alustariippumaton. Muita etuja ovat dynaaminen tyypitys ja pienempi suoritettavan ohjelman koko.

Tulkittujen kielten haitat

  • Tulkit voivat olla alttiita koodin injektiohyökkäyksille.
  • Vähäisempi suoritus verrattuna suoraan natiivin konekoodin suorittamiseen. Suorituskyvyn parantamiseen käytetty tekniikka on just-in-time-kääntäminen, joka muuntaa usein suoritettavat tulkattujen käskyjen jaksot isäntäkonekoodiksi.
  • Lähdekoodi voidaan lukea ja kopioida, tai sitä voidaan helpommin kääntää takaisinpäin heijastuksen avulla sovelluksissa, joissa henkisellä omaisuudella on kaupallista etua. Joissakin tapauksissa tätä vastaan käytetään osittaisena puolustuksena obfuskointia.

Wikipediasta löytyy luettelo käännetyistä kielistä:

Wikipediasta löytyy myös luettelo tulkatuista kielistä:

Viitta:

Viitta:

Jätä kommentti