Wat is systeemprogrammering?
Alle programmeurs schrijven uitvoerbare code voor computers, maar wat systeemprogrammeurs onderscheidt van applicatieprogrammeurs, is het doel van de software die ze schrijven. Applicatieprogrammering produceert software die ervoor zorgt dat de hardware van een computer iets voor de gebruiker genereert, of het nu een spreadsheet is of de grafische weergave voor een game. Systeemprogrammering produceert software die toegang heeft tot en de interne werking van de hardware en het besturingssysteem van een computer bestuurt.
Toepassingsprogrammering omvat in het algemeen systeemopdrachten om de basisfuncties van de hardware en het besturingssysteem van een computer te gebruiken, zoals het opslaan van een bepaald stuk gegevens in het fysieke geheugen van de computer of een bestand op de harde schijf. Dit soort programma's houden zich niet bezig met details over hoe de harde schijf of het fysieke geheugen werkt. Omgekeerd houden systeemprogrammeurs zich bezig met de details van hoe een besturingssysteem en hardwarecomponenten werken. Hiermee kunnen ze de software bouwen die harde schijven defragmenteert en de integriteit van het fysieke geheugen van een computer controleert.
Naast het kunnen bouwen van dergelijke tools, zijn systeemprogrammeurs doorgaans experts in de kernwerking van besturingssystemen. Alle programmeurs zijn bekend met systeemaanroepen, threadbeheer en invoer / uitvoerverwerking, maar voor systeemprogrammering moet de software-engineer deze besturingsmechanismen kunnen manipuleren. Hierdoor kan een systeemprogrammeur gespecialiseerde installaties uitvoeren en systeemonderhoudstaken automatiseren.
Kennis van de kern van een besturingssysteem is ook noodzakelijk om de prestaties van een toepassing op een bepaalde hardwareconfiguratie te maximaliseren. Zo hebben zeer drukke online retailers hun websites en transactieverwerkingssystemen nodig om zo efficiënt en betrouwbaar mogelijk te werken. Met behulp van zijn of haar kennis over de interne mechanismen van besturingssystemen en hardwarecomponenten, zoals hoe een bepaald besturingssysteem de threadverwerking te optimaliseren of welke algoritmen het snelst draaien op welke hardwarecomponenten, kan een systeemprogrammeur de prestaties van een toepassing helpen afstemmen.
Deze gedetailleerde toegang tot de interne werking van hardware- en besturingssysteemcomponenten vereist dat systeemprogrammering wordt uitgevoerd in een taal die dit soort hardware-toegang op laag niveau mogelijk maakt. Talen zoals Java®, Python ™ of Ruby on Rails® noemen programmeurs hoogtalen. Dit betekent dat ze het programmeren van applicaties eenvoudiger maken door de programmeur niet in staat te stellen de fijne details van hardwarebeheer te verwerken. Systeemprogrammering vereist precies dit soort toegang, dus systeemprogrammeurs gebruiken een taal van laag niveau zoals C of C ++.