Sammanställning och exekvering är två distinkta faser i processen att driva ett datorprogram, särskilt de som är skrivna på sammanställda språk som C, C ++ eller GO (i motsats till tolkade språk som Python eller JavaScript). Här är uppdelningen:
sammanställning:
* vad det är: Kompilering är processen för att översätta källkod (mänsklig läsbar kod skriven av en programmerare) till maskinkod (binära instruktioner som en dators processor direkt kan förstå och köra). Kompilatorn är ett speciellt program som utför denna översättning.
* Utgång: Utgången från kompilering är en körbar fil (t.ex. en ".exe" -fil på Windows eller en enkel binär på Linux/MacOS). Den här filen innehåller maskinkodinstruktionerna.
* Process: Kompilatorn kontrollerar källkoden för fel (syntaxfel, semantiska fel etc.). Om fel hittas misslyckas sammanställningen och programmeraren måste fixa felen i källkoden innan du försöker igen. Om inga fel hittas genererar kompilatorn den körbara filen.
* När det händer: Kompilering sker * innan * programmet körs. Det är ett separat steg.
exekvering:
* vad det är: Exekvering är processen att faktiskt köra det sammanställda programmet. Datorns processor hämtar och kör maskinkodinstruktionerna en efter en.
* Input: Ingången för exekvering är den körbara filen som skapats under kompilering. Det kan också involvera inmatningsdata som tillhandahålls till programmet medan det körs (t.ex. användarinmatning, data från en fil).
* Utgång: Utgången från exekveringen kan vara många saker:data som visas på skärmen, data skrivna till en fil, ändringar som gjorts i systemet eller helt enkelt programmets utgångsstatus (indikerar framgång eller misslyckande).
* När det händer: Exekvering sker * efter * sammanställning. Det är scenen där programmet utför sina avsedda uppgifter.
Analogi:
Tänk på att skriva en bok (källkod) och sedan ha den tryckt (kompilering). Den tryckta boken är den körbara filen. Att läsa den tryckta boken är exekveringen. Du kan inte läsa boken (kör) förrän den har skrivits ut (sammanställts).
Tolkade språk:
Tolkade språk har inte ett separat sammanställningssteg på samma sätt. En tolk läser och kör källkodlinjen för rad utan att skapa en separat körbar fil i förväg. Vissa tolkade språk använder emellertid just-in-time (JIT) sammanställning för att förbättra prestandan genom att sammanställa delar av koden till maskinkod under körningen. Men även med JIT är skillnaden mellan översättningssteget och exekveringssteget mindre tydligt än på sammanställda språk.