Assembler vs Interpreter
Generelt er compiler et computerprogram, der læser et program skrevet på ét sprog, som kaldes kildesproget, og oversætter det til et andet sprog, som kaldes målsproget. Traditionelt er kildesprog et sprog på højt niveau, såsom C++, og målsprog er et sprog på lavt niveau, såsom Assembly-sprog. Der er dog compilere, der kan konvertere et kildeprogram skrevet i Assembly-sprog og konvertere det til maskinkode eller objektkode. Samlere er sådanne værktøjer. På den anden side er tolke værktøjer, der udfører instruktioner skrevet på et eller andet programmeringssprog. Tolken kan enten udføre direkte kildekode på højt niveau eller oversætte dem til mellemkode og derefter fortolke den eller udføre prækompileret kode.
Hvad er en Assembler?
Assembler er software eller et værktøj, der oversætter Assembly-sprog til maskinkode. Så en assembler er en type compiler, og kildekoden er skrevet på Assembly sprog. Assembly er et sprog, der kan læses af mennesker, men det har typisk et en-til-én-forhold til den tilsvarende maskinkode. Derfor siges en assembler at udføre isomorf (en til en mapping) oversættelse. Avancerede assemblere giver yderligere funktioner, der understøtter programudvikling og fejlfindingsprocesser. For eksempel giver den type assemblers, der kaldes macro assemblers, en makrofacilitet.
Hvad er en tolk?
En tolk er et computerprogram eller et værktøj, der udfører programmeringsinstruktioner. En tolk kan enten udføre kildekoden direkte eller konvertere kilden til en mellemkode og udføre den direkte eller udføre prækompileret kode produceret af en compiler (nogle tolkesystemer inkluderer en compiler til denne opgave). Sprog som Perl, Python, MATLAB og Ruby er eksempler på programmeringssprog, der bruger en mellemkode. UCSD Pascal fortolker en prækompileret kode. Sprog som Java, BASIC og Samlltalk kompilerer først kilden til en mellemkode kaldet bytecode og fortolker den derefter.
Hvad er forskellen mellem en assembler og en tolk?
En assembler kan betragtes som en speciel type compiler, som kun oversætter Assembly-sprog til maskinkode. Tolke er værktøjer, der udfører instruktioner skrevet på et eller andet sprog. Tolkesystemer kan inkludere en compiler til at prækompilere kode før fortolkning, men en fortolker kan ikke kaldes en speciel type af en compiler. Assemblere producerer en objektkode, som måske skal sammenkædes ved hjælp af linkerprogrammer for at kunne køre på en maskine, men de fleste fortolkere kan selv fuldføre eksekveringen af et program. En assembler vil typisk lave en en til en oversættelse, men dette er ikke sandt for de fleste tolke. Fordi Assembly-sproget har en en-til-en-mapping med maskinkode, kan en assembler bruges til at producere kode, der kører meget effektivt til lejligheder, hvor ydeevne er meget vigtig (for f.eks. grafikmotorer, indlejrede systemer med begrænsede hardwareressourcer sammenlignet med en personlig computer) mikrobølger, vaskemaskiner osv.). På den anden side bruges tolke, når du har brug for høj portabilitet. For eksempel kan den samme Java-bytekode køres på forskellige platforme ved at bruge den passende fortolker (JVM).