Tous les programmeurs écrivent du code exécutable pour les ordinateurs, mais ce qui distingue les programmeurs de système en dehors de programmeurs d'applications est le but du logiciel, écrivent-ils. L’application de la programmions produit un logiciel qui rend le matériel d'un ordinateur de générer quelque chose pour l'utilisateur, qu'il s'agisse d'une feuille de calcul ou les graphiques pour un jeu. La programmation du système produit des logiciels qui accède et contrôle les rouages de matériel d'un ordinateur et système d'exploitation.
La programmation d'applications implique généralement système de délivrance de commandes pour utiliser les fonctions de base du matériel d'un ordinateur et système d'exploitation, telles que le stockage d'un morceau particulier de données dans la mémoire physique de l'ordinateur ou un fichier sur le disque dur. Ces types de programmes ne sont pas concernés par les détails de la façon dont le disque dur ou la mémoire physique travaillent. Inversement, les programmeurs de système se préoccuper des détails de la façon dont un système d'exploitation et les composants matériels fonctionnent. Cela leur permet de construire le logiciel qui défragmente les disques durs et vérifie l'intégrité de la mémoire physique de l'ordinateur.
En plus d'être en mesure de construire de tels outils, les programmeurs système sont typiquement des experts dans le noyau fonctionnement de systèmes d'exploitation. Tous les programmeurs sont familiers avec les appels système, la gestion des threads, et le traitement d'entrée / sortie, mais la programmation du système nécessite l'ingénieur logiciel pour être en mesure de manipuler ces mécanismes du système d'exploitation. Cela permet à un système de programmation pour effectuer des installations spécialisées et d'automatiser les tâches de maintenance du système.
La connaissance du noyau d'un système d'exploitation est également nécessaire afin de maximiser la performance d'une application sur une configuration matérielle particulière. Par exemple, les détaillants en ligne très occupés ont besoin de leurs sites Web et de systèmes de traitement des transactions afin de fonctionner aussi efficacement, et de manière fiable, que possible. En utilisant ses connaissances sur les mécanismes internes des systèmes d'exploitation et des composants matériels, tels que la façon de faire un système d'exploitation particulier à optimiser sa gestion de fil ou les algorithmes fonctionnent plus rapide sur les composants matériels, un programmeur système peuvent aider à affiner les performances d'une application.
Cet accès détaillé aux rouages du matériel et des composants du système d'exploitation nécessite la programmation du système à faire dans une langue qui permet ce genre d'accès matériel bas niveau. Langages tels que Java , Python , ou Ruby on Rails sont ce que les programmeurs se réfèrent aux langues comme de haut niveau. Cela signifie qu'ils font programmation d'application plus facile en ne faisant pas gérer le programmeur les détails les plus fins de la gestion du matériel. La programmation du système nécessite exactement ce genre d'accès, de sorte que les programmeurs de systèmes utilisent un langage de bas niveau comme C ou C + +.