Erinevused tõlkijate ja tõlkide vahel

Enne Java ja C # programmeerimiskeeled ilmusid, arvutiprogrammid olid ainult koostatud või tõlgendatud. Sellised keeled nagu Assembly Language, C, C ++, Fortran, Pascal kompileeriti peaaegu alati masinkoodiks. Tavaliselt tõlgendati selliseid keeli nagu Basic, VbScript ja JavaScript.

Mis vahe on koostatud programmi ja tõlgendatud programmi vahel?

Kompileerimine

Programmi kirjutamiseks toimige järgmiselt.

  1. Muutke programmi
  2. Kompileerige programm masinkoodifailidesse.
  3. Linkige masinkoodifailid käivitatava programmiga (tuntud ka kui exe-fail).
  4. Siluge või käivitage programm

Mõne keelega, näiteks Turbo Pascal ja Delphi, on sammud 2 ja 3 ühendatud.

Masinkoodifailid on masinkoodi iseseisvad moodulid, mis vajavad lõpliku programmi loomiseks omavahel linkimist. Eraldi masinkoodifailide olemasolu on tõhusus; kompilaatorid peavad ainult uuesti kompileerima lähtekood mis on muutunud. Muutmata moodulite masinkoodifaile kasutatakse uuesti. Seda nimetatakse rakenduse tegemiseks. Kui soovite kogu lähtekoodi ümber kompileerida ja uuesti üles ehitada, siis nimetatakse seda ehitamiseks.

instagram viewer

Lingimine on tehniliselt keeruline protsess, kus kõik erinevate moodulite vahelised funktsioonikõned on omavahel ühendatud ja mälu asukohad eraldatud muutujad ja kogu kood pannakse mällu, kirjutatakse seejärel kettale tervikliku programmina. See on sageli aeglasem samm kui kompileerimine, kuna kõik masinkoodi failid tuleb mällu lugeda ja omavahel ühendada.

Tõlgendamine

Programmi tõlgi kaudu käitamise sammud on järgmised

  1. Muutke programmi
  2. Siluge või käivitage programm

See on palju kiirem protsess ja see aitab algajatel programmeerijatel oma koodi kiiremini redigeerida ja testida kui kompilaatori kasutamine. Puuduseks on see, et tõlgendatud programmid töötavad palju aeglasemalt kui kompileeritud programmid. Nii palju kui 5-10 korda aeglasem kui iga koodirida tuleb uuesti läbi lugeda ja seejärel uuesti töödelda.

Sisestage Java ja C #

Mõlemad keeled on osaliselt koostatud. Nad genereerivad tõlgendamiseks optimeeritud vahekoodi. See vahekeel ei sõltu aluseks olevast riistvarast ja see muudab portimise hõlpsamaks programme, mis on kirjutatud mõlemale teisele töötlejale, kui selleks on kirjutatud tõlk riistvara.

Java, kui see on kompileeritud, loob baidikoodi, mida tõlgendatakse Java Virtual Machine (JVM) käitustasemel. Paljud JVM-id kasutavad just-in-Time kompilaatorit, mis teisendab baidikoodi natiivseks masinkoodiks ja käivitab selle koodi tõlgendamise kiiruse suurendamiseks. Tegelikult kompileeritakse Java lähtekood kaheetapilises protsessis.

C # kompileeritakse ühisesse vahekeelde (CIL), mida varem tunti kui Microsofti vahekeelt MSIL. Seda haldab Common Language Runtime (CLR), mis on osa .NET raamistikust - keskkond, mis pakub tugiteenuseid nagu prügivedu ja ajaliselt kompileerimine.

Nii Java kui ka C # kasutavad kiirustehnikaid, nii et efektiivne kiirus on peaaegu sama kiire kui puhta kompileeritud keele puhul. Kui rakendus kulutab palju aega sisestusele ja väljundile, näiteks ketaste failide lugemiseks või töötamiseks andmebaas päringuid, siis on kiiruse erinevus vaevumärgatav.

Mida see minu jaoks tähendab?

Kui teil pole väga konkreetset kiirusevajadust ja kui peate suurendama kaadrisagedust paar kaadrit sekundis, võite kiiruse unustada. Ükskõik milline C, C ++ või C # pakub mängudele, kompilaatoritele ja opsüsteemidele piisavat kiirust.