Kas yra kompiliatorius?

Kompiliatorius yra specialus kompiuterio programos tipas, kuris verčia žmogui suprantamą tekstinį failą į formą, kurią kompiuteris gali lengviau suprasti. Paprasčiausiu lygiu kompiuteris gali suprasti tik du dalykus – 1 ir 0. Šiame lygyje žmogus veiks labai lėtai ir ilgoje 1 ir 0 eilutėje esanti informacija bus nesuprantama. Kompiliatorius yra kompiuterinė programa, kuri užpildo šią spragą.

Iš pradžių kompiliatoriai buvo labai paprastos programos, kurios galėjo išversti simbolius tik į bitus, 1 ir 0, kompiuteris suprato. Programos taip pat buvo labai paprastos, sudarytos iš eilės veiksmų, kurie iš pradžių buvo ranka išversti į kompiuteriui suprantamus duomenis. Tai buvo labai daug laiko reikalaujanti užduotis, todėl šios užduoties dalys buvo automatizuotos arba užprogramuotos, ir buvo parašytas pirmasis kompiliatorius. Ši programa surinko arba sukompiliavo veiksmus, reikalingus žingsnis po žingsnio programai vykdyti.

Šie paprasti kompiliatoriai buvo naudojami sudėtingesniam kompiliatoriui sukurti. Naudojant naujesnę versiją, į kompiliatoriaus programą galima įtraukti daugiau taisyklių, kad žmogaus programuotojas galėtų dirbti natūralesnę kalbos struktūrą. Tai palengvino programų rašymą ir leido daugiau žmonių pradėti rašyti programas. Kai vis daugiau žmonių pradėjo rašyti programas, buvo pasiūlyta daugiau idėjų apie programų rašymą ir panaudota kuriant sudėtingesnius kompiliatorius. Tokiu būdu kompiliatorių programos toliau tobulėja, tobulėja ir tampa lengviau naudojamos.

Kompiliatorių programos taip pat gali būti specializuotos. Tam tikros kalbos struktūros yra geriau pritaikytos konkrečiai užduočiai nei kitos, todėl konkrečioms užduotims ar kalboms buvo sukurti specialūs kompiliatoriai. Kai kurie kompiliatoriai yra daugiapakopiai arba daugiapakopiai. Pirmasis leidimas gali būti labai natūralios kalbos ir padaryti ją artimesnę kompiuteriui suprantama kalba. Antrasis ar net trečiasis leidimas gali nuvesti jį į paskutinį etapą – vykdomąjį failą.

Tarpinė daugiapakopio kompiliatoriaus išvestis paprastai vadinama pseudokodu, nes kompiuteris jo negali naudoti. Pseudokodas yra labai struktūrizuotas, kaip kompiuterinė programa, nėra laisvai tekantis ir žodinis kaip natūralesnė kalba. Galutinė išvestis vadinama vykdomuoju failu, nes tai yra tai, ką iš tikrųjų vykdo arba paleidžia kompiuteris. Padalijus užduotį taip tapo lengviau sukurti sudėtingesnius kompiliatorius, nes kiekviena antrinė užduotis yra skirtinga. Taip pat kompiuteriui buvo lengviau nurodyti, kur jam sunku suprasti, ko buvo prašoma padaryti.

Klaidos, kurios riboja kompiliatoriaus supratimą apie programą, vadinamos sintaksės klaidomis. Programos veikimo klaidos vadinamos logikos klaidomis. Logikos klaidas daug sunkiau pastebėti ir ištaisyti. Sintaksės klaidos yra kaip rašybos klaidos, o logikos klaidos yra šiek tiek panašios į gramatikos klaidas.
Taip pat buvo sukurtos kryžminės kompiliatorių programos. Kryžminis kompiliatorius leidžia sudaryti tekstinių failų instrukcijų rinkinį, skirtą vienam konkretaus gamintojo sukurtam kompiuteriui, ir paleisti kitam kompiuteriui kito gamintojo. Pavyzdžiui, programa, kuri buvo parašyta veikti „Intel“ kompiuteryje, kartais gali būti sukompiliuota, kad būtų paleista „Motorola“ sukurtame kompiuteryje. Tai dažnai neveikia labai gerai. Kompiuterių programų veikimo lygiu kompiuterio aparatinė įranga gali atrodyti labai skirtingai, net jei ji gali atrodyti panaši į jus.
Kryžminis kompiliavimas skiriasi nuo to, kad vienas kompiuteris emuliuoja kitą kompiuterį. Jei kompiuteris imituoja kitą kompiuterį, jis apsimeta tuo kitu kompiuteriu. Emuliacija dažnai yra lėtesnė nei kryžminis kompiliavimas, nes vienu metu veikia dvi programos: programa, kuri apsimeta kitu kompiuteriu, ir programa, kuri veikia. Tačiau, kad kryžminis kompiliavimas veiktų, reikia ir originalaus natūralios kalbos teksto, kuriame aprašoma programa, ir kompiuterio, kuris būtų pakankamai panašus į pradinį kompiuterį, kuriame programa galėtų veikti ir paleisti kitame kompiuteryje. Tai ne visada įmanoma, todėl naudojami abu būdai.