Vad är ett mellanspråk?
Vid datorprogrammering, när mänsklig läsbar källkod analyseras av en kompilator, översätter kompilatorn ofta källkommandona till en sekvens av instruktioner som inte är riktigt ursprungliga maskinkoder men kan bearbetas, optimeras eller kompileras av kompilatorn eller annan mjukvara verktyg. Filerna som produceras innehåller instruktioner som sägs vara på ett mellanspråk, eftersom det språk som används av kompilatorn varken är meningsfullt för det större operativsystemet eller det språk som programmeraren använder för att skriva koden i första hand, utan istället är ett språk som fungerar som en bro mellan skrivandet och genomförandet av programmet. Ibland används ett mellanspråk för att göra det möjligt för en kompilator att göra mycket exakta optimeringar så att programmet körs mer effektivt, men det kan också användas för att producera utdatafiler som är portabla mellan olika, inkompatibla system. Språkets faktiska syntax kan likna maskinkod eller andra typer av icke-mänsklig läsbar bytkod, eller språket kan bara vara ett befintligt datorprogrammeringsspråk för datorer.
När den används för kompilatoroptimering tar en språkkompilerare varje uttalande i en källkodfil och delar upp kommandot till mellanspråket. Ett enda mänskligt läsbart programmeringsförklaring kan delas upp i dussintals maskinspråkinstruktioner, så mellanspråket skapar en abstraktionsnivå som kompilatorn kan använda för att identifiera områden i koden där optimeringar kan göras utan att först behöva binda koden till alla inhemska implementationer eller bibliotek. När den är klar kan den mellanliggande kodfilen sedan sammanställas ytterligare för att skapa en inbyggd binär fil, eller så kan den köras genom ett annat program, känt som en tolk, som kommer att köra koden genom att sammanställa den till inbyggda instruktioner efter behov.
Vissa språk, som Java®, använder ett mellanspråk för att skapa sammanställda filer som är optimerade men också bärbara till andra datorsystem. Denna typ av kod kallas ibland bytekod och liknar maskinkod eller monteringsspråk. Bytecode lagras i filer på ett sätt som är plattformsoberoende, vilket innebär att det kan överföras till alla datorsystem eller enheter som kan köra en tolk. När bytekoden finns på ett system kan den antingen köras som ett tolkat program eller så kan det kompileras för att köra nativt på målsystemet.
I vissa fall är ett datorspråk utformat för att göra det enkelt att programmera mot ett specifikt ändamål, till exempel en interaktiv webbapplikation, men formgivarna vill inte inkludera anpassade kompilatorer, tolkar eller plug-ins för olika system. I dessa fall kan kompilatorns mellanspråk vara ett befintligt språk som redan har etablerat tolkar över plattformar. Det resulterande mellanspråket i detta fall är mänskligt läsbart. Ett exempel på ett datorprogrammeringsspråk som också används som mellanspråk är JavaScript®, som har fördelen att kunna köras i nästan vilken webbläsare som helst på vilken plattform som helst, från och med 2011.