Vad är en kompilator?

En kompilator är en speciell typ av datorprogram som översätter en läsbar textfil till en form som datorn lättare kan förstå. På sin mest grundläggande nivå kan en dator bara förstå två saker, en 1 och en 0. På den här nivån kommer en människa att arbeta mycket långsamt och tycka att informationen i den långa strängen av 1:or och 0:or är obegriplig. En kompilator är ett datorprogram som överbryggar detta gap.

I början var kompilatorer väldigt enkla program som bara kunde översätta symboler till bitarna, 1:orna och 0:orna, förstod datorn. Program var också mycket enkla, sammansatta av en serie steg som ursprungligen översattes för hand till data som datorn kunde förstå. Detta var en mycket tidskrävande uppgift, så delar av denna uppgift automatiserades eller programmerades, och den första kompilatorn skrevs. Detta program sammanställde, eller kompilerade, stegen som krävdes för att köra steg-för-steg-programmet.

Dessa enkla kompilatorer användes för att skriva en mer sofistikerad kompilator. Med den nyare versionen kan fler regler läggas till kompilatorprogrammet för att tillåta en mer naturlig språkstruktur för den mänskliga programmeraren att arbeta med. Detta gjorde det enklare att skriva program och gjorde det möjligt för fler att börja skriva program. När fler började skriva program erbjöds fler idéer om skrivprogram och användes för att göra mer sofistikerade kompilatorer. På detta sätt fortsätter kompilatorprogram att utvecklas, förbättras och bli enklare att använda.

Kompilatorprogram kan också specialiseras. Vissa språkstrukturer är bättre lämpade för en viss uppgift än andra, så specifika kompilatorer utvecklades för specifika uppgifter eller språk. Vissa kompilatorer är flerstegs eller multipelpass. Ett första pass kan ta ett mycket naturligt språk och göra det närmare ett datorbegripligt språk. Ett andra eller till och med ett tredje pass kan ta det till slutskedet, den körbara filen.

Mellanutgången i en flerstegskompilator kallas vanligtvis pseudokod, eftersom den inte kan användas av datorn. Pseudo-koden är väldigt strukturerad, som ett datorprogram, inte fritt flödande och mångsidig som ett mer naturligt språk. Den slutliga utgången kallas den körbara filen, eftersom det är det som faktiskt körs eller körs av datorn. Att dela upp uppgiften så här gjorde det lättare att skriva mer sofistikerade kompilatorer, eftersom varje deluppgift är olika. Det gjorde det också lättare för datorn att peka ut var den hade problem med att förstå vad den blev ombedd att göra.

Fel som begränsar kompilatorn i att förstå ett program kallas syntaxfel. Fel i hur programmet fungerar kallas logiska fel. Logiska fel är mycket svårare att upptäcka och rätta till. Syntaxfel är som stavfel, medan logiska fel är lite mer som grammatiska fel.
Korskompilatorprogram har också utvecklats. En korskompilator tillåter att en textfiluppsättning instruktioner som är skrivna för en dator designad av en specifik tillverkare kompileras och körs för en annan dator av en annan tillverkare. Till exempel kan ett program som skrevs för att köras på en Intel-dator ibland korskompileras för att köra en på dator utvecklad av Motorola. Detta fungerar ofta inte särskilt bra. På den nivå som datorprogram fungerar på kan datorhårdvaran se väldigt olika ut, även om den kan se ut som dig.
Korskompilering skiljer sig från att låta en dator emulera en annan dator. Om en dator emulerar en annan dator låtsas den vara den andra datorn. Emulering är ofta långsammare än korskompilering, eftersom två program körs samtidigt, programmet som utger sig för att vara den andra datorn och programmet som körs. Men för att korskompilering ska fungera behöver du både den ursprungliga texten på naturligt språk som beskriver programmet och en dator som är tillräckligt lik originaldatorn som programmet kan fungera på för att köras på en annan dator. Detta är inte alltid möjligt, så båda teknikerna används.