Ennen Jaava ja C # -ohjelmointikielet ilmestyivät, tietokoneohjelmat olivat vain koottu tai tulkita. Kielet, kuten Assembly Language, C, C ++, Fortran, Pascal, koottiin melkein aina konekoodiin. Kielet, kuten Basic, VbScript ja JavaScript, tulkittiin yleensä.
Joten mitä eroa käännetyn ja tulkittavan ohjelman välillä on?
Kääntäminen
Ohjelman kirjoittaminen tapahtuu seuraavasti:
- Muokkaa ohjelmaa
- Käännä ohjelma konekooditiedostoihin.
- Yhdistä konekooditiedostot ajettavissa olevaan ohjelmaan (tunnetaan myös nimellä exe).
- Debug tai suorita ohjelma
Joidenkin kielten kuten Turbo Pascal ja Delphi kanssa vaiheet 2 ja 3 yhdistetään.
Konekooditiedostot ovat konekoodin itsenäisiä moduuleja, jotka vaativat linkittämistä lopullisen ohjelman rakentamiseksi. Syynä erillisiin konekooditiedostoihin on tehokkuus; kääntäjien on vain käännettävä uudelleen lähdekoodi jotka ovat muuttuneet. Muuttumattomien moduulien konekooditiedostot käytetään uudelleen. Tätä kutsutaan hakemuksen tekemiseen. Jos haluat kääntää ja rakentaa uudelleen kaikki lähdekoodit, se tunnetaan nimellä Build.
Yhdistäminen on teknisesti monimutkainen prosessi, jossa kaikki eri moduulien väliset toimintopuhelut kootaan yhteen, muistipaikat varataan muuttujat ja kaikki koodi asetetaan muistiin, sitten kirjoitetaan levylle kokonaisena ohjelmana. Tämä on usein hitaampi vaihe kuin kääntäminen, koska kaikki konekooditiedostot on luettava muistiin ja linkitettävä toisiinsa.
Tulkkaus
Ohjeet ohjelman tulkin välityksellä ovat seuraavat
- Muokkaa ohjelmaa
- Debug tai suorita ohjelma
Tämä on paljon nopeampi prosessi, ja se auttaa aloittelevia ohjelmoijia muokkaamaan ja testaamaan koodiaan nopeammin kuin kääntäjän käyttäminen. Haittana on, että tulkittavat ohjelmat toimivat paljon hitaammin kuin käännetyt ohjelmat. Jopa 5-10 kertaa hitaampi kuin jokainen koodirivi on luettava uudelleen ja käsiteltävä uudelleen.
Kirjoita Java ja C #
Molemmat kielet on osittain koottu. Ne luovat välitunnuksen, joka on optimoitu tulkintaa varten. Tämä välikieli on riippumaton taustalla olevasta laitteistosta ja tämä on helpompi portoida ohjelmat, jotka on kirjoitettu joko muille prosessoreille, kunhan tulkki on kirjoitettu siihen laitteisto.
Java käännettynä tuottaa tavukoodin, jonka Java-virtuaalikone (JVM) tulkitsee suorituksen aikana. Monet JVM: t käyttävät Just-In-Time-kääntäjää, joka muuntaa tavukoodin natiiviksi konekoodiksi ja suorittaa tämän koodin tulkinnanopeuden lisäämiseksi. Itse asiassa Java-lähdekoodi kootaan kaksivaiheisessa prosessissa.
C # käännetään yleiseksi välikieleksi (CIL, jota aiemmin tunnettiin nimellä Microsoft Intermediate Language MSIL. Tätä johtaa Common Language Runtime (CLR), osa .NET-kehystä, ympäristö, joka tarjoaa tukipalveluita, kuten roskien keräämistä ja Just-In-Time-kokoamista.
Sekä Java että C # käyttävät nopeutustekniikoita, joten tehokas nopeus on melkein yhtä nopea kuin puhdas käännetty kieli. Jos sovellus viettää paljon aikaa tekemällä syöttöä ja tulostusta, kuten lukea levytiedostoja tai suorittaa ohjelmia tietokanta kyselyjä, nopeusero on tuskin havaittavissa.
Mitä tämä tarkoittaa minulle?
Ellei sinulla ole erityistä nopeustarvetta ja sinun täytyy lisätä ruudunopeutta parilla ruudulla sekunnissa, voit unohtaa nopeuden. Mikä tahansa C, C ++ tai C # tarjoaa riittävän nopeuden peleille, kääntäjille ja käyttöjärjestelmille.