Hopp til innhold
NorscodeNorscode

Typer som fanger feil før du kjører

ArtikkelAv Norscode-prosjektet

Statisk typing og nc check tar en hel klasse feil før programmet i det hele tatt starter.

Feil fanget før kjøring feil type mangler funksjon gal verdi nc check nc run — rent

Det finnes to tidspunkter en feil kan dukke opp på: mens du skriver koden, eller mens brukeren kjører den. Det første er billig å rette. Det andre kan koste deg en telefon midt på natten. Norscode flytter så mange feil som mulig til det første.

Typer med norske navn

Hver verdi i Norscode har en type: tekst, heiltall, boolsk, liste_heltall, ordbok_tekst. Funksjoner sier hva de tar imot og hva de gir tilbake. Det er ikke byråkrati — det er en avtale kompilatoren kan sjekke.

nc check før nc run

Kommandoen nc check leser koden og sammenlikner avtalene. Sender du en tekst der en heiltall var lovet, eller kaller en funksjon som ikke finnes, får du beskjed med en gang — ikke først når koden er ute i produksjon. En hel klasse skrivefeil og misforståelser tas før programmet får kjøre.

Hvorfor det betyr mest for de store programmene

I et lite skript holder du hele bildet i hodet. I et program som vokser, gjør du ikke det. Da er statisk typing som et sikkerhetsnett under hver endring: flytter du på noe, sier kompilatoren fra om noe annet ikke lenger henger sammen. Du tør å gjøre endringer, fordi du får vite når de brekker noe.

Ikke i veien for nybegynneren

Typene er der, men de er skrevet på norsk og leses som vanlig tekst. funksjon storst(tall: liste_heltall) -> heiltall sier nesten av seg selv hva den gjør. Sikkerheten koster ikke lesbarhet — den legger til presisjon.

Hva typesjekken faktisk fanger

Tenk deg at en funksjon lover å ta imot et heltall, men du kaller den med en tekst. I et dynamisk språk oppdager du det kanskje ikke før koden kjører — i verste fall hos en bruker. nc check fanger det med en gang, før programmet får starte. Det samme gjelder å kalle en funksjon som ikke finnes, eller å glemme et argument. En hel klasse skrivefeil og misforståelser tas på det billigste mulige tidspunktet.

Signaturer som dokumentasjon

En funksjonssignatur forteller mye på én linje. funksjon storst(tall: liste_heltall) -> heiltall sier at funksjonen tar en liste med heltall og gir ett heltall tilbake. Du trenger ikke lese kroppen for å vite hvordan den brukes. På den måten er typene også dokumentasjon — en som aldri blir utdatert, fordi kompilatoren håndhever den.

Trygghet uten tunghet

Statisk typing har rykte på seg for å være tungvint. I Norscode er den lett å leve med: typene har norske navn og leses som vanlig tekst, og du skriver dem der det teller — på funksjoners inn- og utdata — ikke på hver eneste variabel. Resultatet er presisjon uten seremoni: koden sier hva den mener, og kompilatoren passer på at den holder ord.

Les også

Tilbake til oversikten