Mis on süsteemi programmeerimine?

Kõik programmeerijad kirjutavad arvutite jaoks käivitatavat koodi, kuid see, mis eristab süsteemi programmeerijaid rakenduste programmeerijatest, on nende kirjutatava tarkvara eesmärk. Rakendusprogrammeerimine toodab tarkvara, mis paneb arvuti riistvara kasutaja jaoks midagi genereerima, olgu see siis arvutustabel või mängu graafika. Süsteemi programmeerimine toodab tarkvara, mis pääseb juurde ja juhib arvuti riistvara ja operatsioonisüsteemi sisemist tööd.

Rakenduste programmeerimine hõlmab tavaliselt süsteemikäskude andmist arvuti riistvara ja operatsioonisüsteemi põhifunktsioonide kasutamiseks, näiteks teatud andmete salvestamine arvuti füüsilisse mällu või kõvakettal oleva faili. Seda tüüpi programmid ei puuduta kõvaketta või füüsilise mälu töö üksikasju. Seevastu süsteemi programmeerijad muretsevad operatsioonisüsteemi ja riistvarakomponentide toimimise üksikasjade pärast. See võimaldab neil luua tarkvara, mis defragmenteerib kõvakettad ja kontrollib arvuti füüsilise mälu terviklikkust.

Lisaks selliste tööriistade loomisele on süsteemi programmeerijad tavaliselt ka operatsioonisüsteemide põhifunktsioonide eksperdid. Kõik programmeerijad tunnevad süsteemikutseid, lõimehaldust ja sisendi/väljundi käsitlemist, kuid süsteemi programmeerimine eeldab, et tarkvarainsener oskab neid operatsioonisüsteemi mehhanisme manipuleerida. See võimaldab süsteemi programmeerijal teostada spetsiaalseid paigaldusi ja automatiseerida süsteemi hooldustöid.

Operatsioonisüsteemi tuuma tundmine on vajalik ka selleks, et maksimeerida rakenduse jõudlust konkreetse riistvarakonfiguratsiooni korral. Näiteks vajavad väga hõivatud veebimüüjad, et nende veebisaidid ja tehingute töötlemise süsteemid töötaksid võimalikult tõhusalt ja usaldusväärselt. Süsteemi programmeerija saab aidata rakenduse jõudlust peenhäälestada, kasutades oma teadmisi operatsioonisüsteemide ja riistvarakomponentide sisemise mehaanika kohta, näiteks kuidas panna konkreetne operatsioonisüsteem oma lõime käsitlemist optimeerima või millised algoritmid mis riistvarakomponentidel kõige kiiremini töötavad.

See üksikasjalik juurdepääs riistvara ja operatsioonisüsteemi komponentide sisemisele toimimisele nõuab süsteemi programmeerimist keeles, mis võimaldab seda tüüpi madalal tasemel juurdepääsu riistvarale. Selliseid keeli nagu Java®, Python™ või Ruby on Rails® nimetavad programmeerijad kõrgetasemelisteks keelteks. See tähendab, et need muudavad rakenduste programmeerimise lihtsamaks, kuna ei sunni programmeerijat käsitlema riistvarahalduse peeneid üksikasju. Süsteemi programmeerimine nõuab täpselt sellist juurdepääsu, nii et süsteemi programmeerijad kasutavad madala tasemega keelt, näiteks C või C++.