Je pensais avoir compris ce que signifiait le terme programmation Unix , mais maintenant, après avoir lu à ce sujet dans un contexte de programmation noyau / C, je sens que je dois clarifier le sens de ce terme.
Je ne sais pas si cela signifie:
- Programmation shell,
- Outils de programmation Unix,
- une manière ou un schéma particulier de programmation des outils de ligne de commande Unix (par exemple, pour être d'accord avec la méthode du pipeline de "programmation shell Unix"), ou
- autre chose.
programming
unix-philosophy
Brandt
la source
la source
Réponses:
"Programmation Unix" fait référence à la programmation explicite pour un environnement Unix. Cela comprend la programmation de shells conformes à une norme pertinente (telle que POSIX ). Cependant, il inclurait également la programmation dans n'importe quel langage tout en utilisant explicitement des interfaces système et des ressources qui sont également standardisées, en supposant qu'elles sont spécifiques au monde * nix.
Par exemple, la programmation réseau sans bibliothèque tierce en C ou C ++ n'est pas portable, car aucune norme ne dit rien à ce sujet. La mise en réseau en C / C ++ est implémentée à l'aide d'une interface dictée par le système d'exploitation, et sur les systèmes * nix-ish, cela est plus ou moins universel, vous ne pouvez pas porter ce code inchangé vers (par exemple) Windows, et vice versa. Par conséquent, faire des trucs de réseau en C ou C ++ signifie utiliser une bibliothèque portable ou cibler une plate-forme, et Unix est une possibilité dans le dernier cas, donc, c'est la "programmation unix" (et la programmation C ou C ++ et la programmation réseau). 1
Cependant, la programmation en réseau dans de nombreux langages de niveau supérieur tels que perl ou python ou java est portable; ces langages sont généralement implémentés en C, mais bien que les détails de l'implémentation diffèrent d'une plateforme à l'autre, l'interface ne le fait pas. Par conséquent, vous pouvez écrire du code réseau en perl qui devrait s'exécuter sur n'importe quel système sur lequel perl s'exécute; sur un système Unix, cela est traduit par l'implémentation de l'interpréteur dans les appels natifs appropriés, et sur un système Windows, il sera traduit différemment. Puisque votre code perl réel n'est spécifique à rien d'autre qu'à perl, ce n'est pas de la programmation Unix. C'est la programmation réseau et la programmation Perl, mais pas la programmation Unix.
1. En raison de la relation historique intime entre C et Unix, le fait que C a été le langage le plus utilisé pour écrire les systèmes d'exploitation en général, et la nature de ce qu'est un "système d'exploitation", il y a beaucoup de choses dans la catégorie " Programmation C spécifique au système d'exploitation "- un autre exemple de tous les jours, outre la mise en réseau, concerne les éléments orientés systèmes de fichiers, tels que le formatage de fichiers et la lecture de répertoires. Par conséquent, il existe divers livres de type "Programmation Unix en C", car la programmation de base en C implique inévitablement de nombreux éléments spécifiques au système d'exploitation. Ce n'est pas le cas avec des langages plus portables tels que perl ou java; dans ce cas, le sujet du livre sera probablement " Programmation des systèmes en Perl", ou plus probablement, simplement "Programmation avec Perl".
la source