Hjem > Programming > Tolket vs. kompilert

Tolket vs. kompilert

En datamaskin er egentlig ganske dum. Det eneste den forstår er 0 eller 1. 1/0 kan også tenkes på som på/av eller som strøm/ikke-strøm (spenning/ikke-spenning). Riktignok er ikke 0 eller 1 markert ved hjelp av strøm/ikke-strøm, men et gitt spenningsintervall. Grunnen til at det må være et intervall, og ikke en fast verdi, er fordi ingen elektroniske komponenter er helt like, og spenningen over de vil variere. Spenningsverdien som definerer en logisk status, kalles logisk level (logic level).

Altså:0: FALSE, Logic LOW
1: TRUE, Logic HIGH

Fordi en datamaskin ikke kan skjønne noe annet enn null og en kan vi omgjøre det vi skriver til kjørbarkode, dvs. enere og nullere, også kalt bytekode eller maskinkode. Det å forandre kode til maskinkode kalles kompilering, og gjøres ved hjelp av et program kalt en kompilator (compiler). Den totale prosessen fra kildekode til kjørbar fil kan sees på slik:

kildekode --> preprosessing --> kompilering (objektfil) --> linking (en eller flere objektfiler) --> kjørbar fil

  • kildekode: en fil med kode skrevet i et visst programmeringsspråk
  • preprosessing: pre-prosessordirektiver blir satt opp, include-filer blir hentet til kildekoden
  • kompilering: kildekoden blir til enere og nullere
  • linking: include-filer og objektfilen(e) blir linket sammen
  • kjørbar fil: en ferdig kjørbar fil

Algoritmen over kunne vært brukt på følgende program (skrevet i C, kalt minfil.c):

/*
* minfil.c
* ~kristy 040606
* dette er en kommentar, blir ignorert av kompileren
*/
/* pre-prosessordirektiv, inkluderer en header-fil */
#include <stdio.h>
/* selve programmet, blir en objektfil, så linket sammen med header-filen */
int main() {
printf("Et C-program!\n");
return 0;
}

Et kompilert program kjører «rett på hardwaren», dvs. det er laget for en bestemt prosessor (eller system). Dette er kompilatorens jobb; den omsetter kildekoden til en kjørbar arkitektur- eller prosessorspesifikkfil (eller begge deler). Prosessorene er laget etter forskjellige grunnprinsipper (arkitekturer) og de er derfor fysisk forskjellige. På grunn av det av arbeidet kompilatoren gjør, er kompilerte språk generelt sett mye raskere enn tolkede språk.

Eksempler på språk som må kompileres: C, C++, D, C#, Obj-C (Cocoa) Pascal, Delphi

Et tolket språk et et språk som ikke blir kjørt gjennom en kompilator, men som direkte blir tolket/kjørt av en tolker (interpreter). Tolkede språk blir enten tolket som de er, eller de gjøres om til bytekode før de blir tolket av tolkeren. Et program som blir tolket tar det lenger tid å kjøre fordi tolkeren må analysere koden og valgene hver gang det kjøres. Å aksessere variabler tar også lengre tid, ettersom mappingen til lagerområdene også må gjøres under kjøring, og ikke under kompilering. Det er likevel viktig å forstå at den totale tiden det tar å kjøre et tolket program kan være mindre enn den totale tiden det tar å kompilere og kjøre et program.

Eksempler på tolkede språk: HTML, XML, XHTML, Java, PHP, Perl, Python, BASIC, shellscript

Viktig å vite er at mange språk først blir gjort om til binærkode, for å bli tolket av en tolker. Et eksempel på dette er Java.

Advertisements
Kategorier:Programming
  1. Ingen kommentarer så langt.
  1. No trackbacks yet.

Legg igjen en kommentar

Fyll inn i feltene under, eller klikk på et ikon for å logge inn:

WordPress.com-logo

Du kommenterer med bruk av din WordPress.com konto. Logg ut / Endre )

Twitter picture

Du kommenterer med bruk av din Twitter konto. Logg ut / Endre )

Facebookbilde

Du kommenterer med bruk av din Facebook konto. Logg ut / Endre )

Google+ photo

Du kommenterer med bruk av din Google+ konto. Logg ut / Endre )

Kobler til %s

%d bloggers like this: