Hva er systemprogrammering?
Alle programmerere skriver kjørbar kode for datamaskiner, men det som skiller systemprogrammerere fra applikasjonsprogrammerere er formålet med programvaren de skriver. Programmeringsprogrammer produserer programvare som gjør at datamaskinens maskinvare genererer noe for brukeren, det være seg et regneark eller grafikken for et spill. Systemprogrammering produserer programvare som får tilgang til og kontrollerer den indre funksjonen til datamaskinens maskinvare og operativsystem.
Programmeringsprogrammering innebærer generelt å utstede systemkommandoer for å bruke de grunnleggende funksjonene til datamaskinens maskinvare og operativsystem, for eksempel å lagre et bestemt stykke data i datamaskinens fysiske minne eller en fil på harddisken. Denne typen programmer er ikke opptatt av detaljer om hvordan harddisken eller det fysiske minnet fungerer. Motsatt bekymrer systemprogrammerere seg for detaljene om hvordan et operativsystem og maskinvarekomponenter fungerer. Dette lar dem bygge programvaren som defragmenterer harddisker og kontrollerer integriteten til datamaskinens fysiske minne.
I tillegg til å kunne bygge slike verktøy, er systemprogrammerere typisk eksperter på kjernefunksjonen til operativsystemer. Alle programmerere er kjent med systemanrop, trådhåndtering og håndtering av input / output, men systemprogrammering krever at programvareingeniøren kan manipulere disse operativsystemmekanismene. Dette lar en systemprogrammerer utføre spesialiserte installasjoner og automatisere systemvedlikeholdsoppgaver.
Kunnskap om et operativsystem kjernen er også nødvendig for å maksimere en applikasjons ytelse på en bestemt maskinvarekonfigurasjon. For eksempel trenger veldig travle forhandlere på nettet sine nettsteder og transaksjonsbehandlingssystemer for å kjøre så effektivt og pålitelig som mulig. Ved å bruke sin kunnskap om den interne mekanikken i operativsystemer og maskinvarekomponenter, for eksempel hvordan du lager et bestemt operativsystem til å optimalisere trådhåndteringen eller hvilke algoritmer som kjører raskest på hvilke maskinvarekomponenter, kan en systemprogrammerer bidra til å finjustere en applikasjons ytelse.
Denne detaljerte tilgangen til den indre funksjonen til maskinvare- og operativsystemkomponenter krever at systemprogrammering gjøres på et språk som tillater denne typen maskinvareilgang på lavt nivå. Språk som Java®, Python ™ eller Ruby on Rails® er det programmerere refererer til som høyt nivå språk. Dette betyr at de letter applikasjonsprogrammering ved ikke å gjøre programmereren håndtere de fine detaljene i maskinvarestyring. Systemprogrammering krever nøyaktig denne typen tilgang, så systemprogrammerere bruker et språk på lavt nivå som C eller C ++.