Završna faza stvaranja programa je prevođenje algoritma napisanog u jednom od programskih jezika (C/C++, Pascal, itd.) u strojni jezik niske razine. To je zbog činjenice da za obavljanje bilo kojeg zadatka, računalima treba dati naredbe na jeziku koji razumiju, bliskom binarnom i koji radi s primitivnim strukturama podataka (bit, bajt ili riječ). Proces prevođenja specifičnih izraza jezika visoke razine u binarni kod naziva se prijevod. Postoje dvije metode prijevoda - kompilacija i interpretacija.
Kompilator - što je to?
Analiza mnogih tumačenja pojmova "kompilator" i "kompilacija" omogućuje nam da istaknemo sljedeću definiciju. Prevoditelj je program dizajniran za prevođenje teksta izvornog algoritma s jezika visoke razine u ekvivalentan skup instrukcija u strojno orijentiranom jeziku. Ovo je takozvani objektni kod, za naknadno sastavljanje rezultirajućeg objektnog koda u programski modul spreman za korištenje.
Kompilator i tumač - sličnosti i razlike
Tumač je uslužni program kojikao i kompajler, dizajniran za prevođenje izvornog koda u strojni kod. Međutim, za razliku od prevoditelja, tumač se izvodi svaki put s programom i izvodi prijevod redak po red.
Možete reći da su prevodilac i interpreter jezični procesori koji omogućuju računalu da prepozna i izvrši naredbe koje je dao programer.
Klasifikacija kompajlera
Kompilatori se klasificiraju uglavnom prema značajkama koje se odnose na njihova područja praktične primjene.
Vektorizirajući prevodilac je uslužni program koji prevodi izvorni kod u objektni kod i prilagođen je za računala opremljena vektorskim procesorima.
Fleksibilni prevodilac je programiran na jeziku visoke razine na modularan način. Njegovo upravljanje provodi se pomoću tablica. Također ga je moguće izvršiti pomoću kompilatora kompilatora.
Inkrementalni prevodilac je jezični procesor koji ponovno prevodi zasebne fragmente izvornog koda i njegove dodatke. Međutim, izbjegava ponovno kompajliranje cijele aplikacije.
Interpretivni (stepping) prevodilac je uslužni program koji sekvencijalno izvodi neovisnu kompilaciju svake izjave ili naredbe izvornog koda visoke razine.
Prevoditelj prevoditelja je prevoditelj sposoban prihvatiti formalni opis za programski jezik i neovisno generirati kompilator za bilo koji jezik.
Kompilator za otklanjanje pogrešaka omogućuje vam da pronađete i popravite neke vrste sintaktičkih pogrešaka napravljenih prilikom pisanja izvornog koda
Stalni prevodilac zauzima stalno mjesto u RAM-u i stoga se može ponovno koristiti za širok raspon zadataka.
Samokompilirani prevodilac napisan je na istom jeziku kao i prijevod.
Univerzalni prevodilac temelji se na formalnom opisu semantičkih i sintaktičkih parametara jezika unosa. Glavne komponente takvog uslužnog programa su jezgra, sintaktički i semantički učitavači.
Uređaj kompajlera
Prevoditelj i povezivač su u srcu svakog prevoditelja. Često se prilikom prevođenja koristi vanjski linker, a sam prevodilac obavlja samo funkciju prijevoda. Također se događa da se prevodilac implementira kao neka vrsta menadžerskog programa koji je povezan s prevoditeljem (ili prevoditeljima, ako su se prilikom pisanja izvornog koda koristili različiti programski jezici) i povezivačem i po potrebi pokreće njihovo izvršavanje.
Programski jezici i metode prijevoda
Unatoč činjenici da se program napisan na bilo kojem programskom jeziku može i kompilirati i interpretirati, mnogi jezici visoke razine imaju predispoziciju za jednu ili drugu metodu prevođenja. Dakle, jezik C je izvorno dizajniran za kompilaciju, a Java - za interpretaciju napisanog programa. Razvijaju seC prevoditelji su prilično jednostavni, zahvaljujući relativno niskoj razini i malom broju strukturnih elemenata.
Prednosti i nedostaci kompilatora i interpretatora. Prijave
Napominjemo da su kompajlirane aplikacije brže od interpretiranih, ali u isto vrijeme, strojni kod dobiven kao rezultat kompilacije ovisi o hardverskoj platformi. Dakle, program napisan i sastavljen za Windows neće raditi, na primjer, u Linuxu. Stoga, u slučaju internetskih aplikacija, kada je nemoguće unaprijed reći u kojem će okruženju raditi, koriste interpretaciju ili bytecode (u ovom slučaju izvorni program se pretvara u srednji oblik koji se može izvršiti na različitim hardverima platforme).