Kompilatoren bygger seg selv
Norscode er selvhostende: verktøykjeden er skrevet i språket den kompilerer.
Kompilatoren, lenkeren og standardbiblioteket i Norscode er skrevet i Norscode selv. Det høres sirkulært ut — hvordan kan et språk kompilere seg selv før det finnes noen kompilator? Svaret er en prosess som kalles bootstrapping, og den er verdt å forstå, for den sier noe om hvor ferdig et språk egentlig er.
Hvordan et språk løfter seg selv
Det begynner med en liten oppstartsbinær — en enkel kjørbar fil som forstår akkurat nok Norscode til å kompilere den første, minimale versjonen av kompilatoren. Den versjonen kan så kompilere en litt rikere versjon, som igjen kan kompilere en enda mer komplett en. Trinn for trinn løfter språket seg selv opp fra nesten ingenting, til den fullstendige verktøykjeden står ferdig — skrevet i språket den selv oversetter.
Den strengeste prøven
En kompilator er et av de mest krevende programmene som finnes. Den er full av tekstbehandling, store datastrukturer, kronglete logikk og null rom for uklarhet — én feil ett sted forplanter seg til alt annet. Klarer et språk å uttrykke sin egen kompilator på en lesbar måte, har det bestått en test de aller fleste programmer aldri kommer i nærheten av. Det er en av grunnene til at selvhosting regnes som et tegn på modenhet.
Hvorfor det betyr noe for deg
At det ikke ligger et annet språk skjult under, har en praktisk konsekvens: den som kan Norscode, kan lese hele veien fra kildekode til kjørende program. Det er ingen fremmed verktøykjede i et annet språk mellom deg og hvordan koden din faktisk blir oversatt og kjørt. Vil du vite hvordan noe fungerer, kan du følge sporet selv.
Åpenhet gjennom hele stakken
Det betyr også færre svarte bokser å stole blindt på. Kompilatoren, kjøretiden med sin kapabilitetsmodell, og standardbiblioteket er alle skrevet i det samme, lesbare språket. Selvhosting er ikke et kunststykke for skryt — det er en måte å gjøre hele systemet gjennomsiktig på, fra første oppstartsbinær til den ferdige NCB-fila du kjører i produksjon.
Et språk som bygger seg selv, sier med det at det er ferdig nok til å tas på alvor.
Les også
- Nytt nettsted for språketnorscode.no handler nå om programmeringsspråket, med dokumentasjon, eksempler og nedlastinger.
- Hvorfor kjøretiden sier neiEn kort forklaring av kapabilitetsmodellen, og hvorfor den er slått på fra første stund.
- Hvorfor et programmeringsspråk på norsk?Norske nøkkelord er ikke en kuriositet, men et bevisst valg om hvem programmering skal være tilgjengelig for.