Je n'ai jamais compris ce que signifiait la programmation système. La définition habituelle donnée est "... faire quelque chose près des Os ou étendre les fonctionnalités d'Os ...".
Est-ce que l'utilisation directe de l'API Windows plutôt que de certaines bibliothèques pour dire que les entrées / sorties de fichiers en font une programmation système? Écrivait la programmation du système Android OS? Si j'écris quelque chose qui exposerait le noyau Linux via une console comme une application sur Android, est-ce que je fais de la programmation système? Si j'écris un logiciel pour contrôler une machine à laver, est-ce que j'écris la programmation du système?
Je suis un débutant en programmation et cela m'embrouille sans fin. Veuillez expliquer le contraste avec la "programmation d'application".
la source
Réponses:
Personnellement, j'aime la définition de Wikipedia :
la source
Vous pouvez vous poser plusieurs questions pour vous entraîner à décider de cette question.
troff
ont été portés sur pratiquement n'importe quel système avec peu de changements, ce sont donc des applications, même si elles sont situées vers le bas de la chaîne d'outils que les gens utilisent généralement. Le système de fichiers dans lequel TeX écrit sa sortie, par exemple UFS ou VFAT, est un cas limite. Vous pouvez porter un système de fichiers vers un système d'exploitation différent s'il était totalement génial, mais généralement, les gens prennent le contrôle d'idées géniales et écrivent leur propre système de fichiers pour leur propre système d'exploitation. Cela fait des logiciels système de systèmes de fichiers.À vos questions, écrire le système d'exploitation Android était définitivement une programmation système. L'écriture d'un programme qui utilise des appels API Windows est une programmation d'application. Il n'est pas aussi portable que si vous utilisiez des bibliothèques multi-plateformes telles que SDL ou OpenGL, mais il peut en principe être porté, il s'agit d'un code tiers et il s'exécute dans l'espace utilisateur. Une application console qui expose l'état du noyau Linux est une expérience de réflexion intéressante. Je dirais certainement que cela implique la programmation de systèmes, car il faudrait en savoir beaucoup sur la structure de Linux (notez que "Linux" n'est correctement que le noyau, pas la distribution) pour écrire, et probablement même pour l'utiliser!
la source
En bref: un logiciel d'écriture qui étend ou améliore le fonctionnement d'un système d'exploitation, comme les pilotes, les mises à jour des utilitaires système pour les systèmes d'exploitation ou même les tout nouveaux systèmes d'exploitation.
Il s'agit principalement de la gestion de la mémoire; Opérations d'E / S dans le sens le plus large du terme comme mise en réseau, accès aux fichiers et gestion des périphériques; gestion des processus (multitâche, administration des processus, etc.); Méthodes d'interaction avec l'utilisateur <-> système (en entrée et en sortie) et administration des utilisateurs. Fondamentalement, tout ce qui fait partie du système d'exploitation qui n'est pas une application est une programmation système.
la source
L'utilisation directe de l'API Windows était, à un moment donné, un moyen courant d'écrire des applications pour Windows. Donc non, ce n'est pas de la programmation système.
La programmation des systèmes n'est pas seulement «proche du système d'exploitation» - c'est quelque chose d'essentiel au fonctionnement de base du système informatique. L'écriture d'un système d'exploitation est donc une programmation système. L'écriture de pilotes vidéo, de pilotes de système de fichiers, de pilotes réseau pour ce système d'exploitation est une programmation système. L'écriture d'un compilateur pour une combinaison particulière de langage / chipset est une programmation système.
la source
Normalement, il fait référence à "des éléments de bas niveau que les utilisateurs finaux non techniques ne connaissent pas ou qui ne savent pas très clairement qu'ils utilisent ou ce qu'ils font".
Quelques exemples qui seraient souvent considérés comme de la programmation système:
création de distribution, c'est-à-dire la création d'images de l'espace utilisateur.
Cela implique notamment normalement de sélectionner la bibliothèque standard C, le système init et les composants de base de l'utilisateur comme un shell.
Systèmes de programmation est souvent fait dans les langues de niveau inférieur compilé sans la collecte des ordures automatique comme C ou de montage, et ont tendance à un accès moins système commun appelle souvent par le biais d' interfaces C POSIX .
Je maintiens un tutoriel pratique qui couvre plusieurs sujets de programmation système ici .
la source
Lors de la définition de cela, j'éviterais tout détail technique. Ensuite, cela devient facile.
Une application permet à un utilisateur de faire quelque chose d'utile avec un morceau de technologie. La programmation d'applications vise donc à fournir des fonctionnalités à un utilisateur, de manière assez directe.
D'un autre côté, la programmation système jetterait les bases d'une programmation d'applications possible. Il fournit des fonctionnalités au programmeur d'application plutôt qu'à l'utilisateur.
Cette définition tiendra, mais c'est une question de perspective, de contexte et de rôles. Pour un programmeur informatique, les outils de programmation sont des applications. Pour un utilisateur final, ils sont dénués de sens, juste hors de vue.
la source
En bref, la programmation système par rapport à la programmation d'application est que le SP gère le logiciel OS pour travailler avec les ressources matérielles et AP gère l'activité des utilisateurs finaux.
la source