Ich dachte, ich hätte verstanden, was der Begriff Unix-Programmierung bedeutet, aber jetzt, nachdem ich ihn in einem Kernel / C-Programmierkontext gelesen habe, muss ich die Bedeutung dieses Begriffs klären.
Mir ist nicht klar, ob es bedeutet:
- Shell-Programmierung,
- Unix-Programmiertools,
- eine bestimmte Art / ein bestimmtes Muster für die Programmierung von Unix-Befehlszeilentools (z. B. um mit der Pipeline-Methode für die "Unix-Shell-Programmierung" übereinzustimmen) oder
- etwas anderes.
programming
unix-philosophy
Brandt
quelle
quelle
Antworten:
"Unix-Programmierung" bezieht sich auf die explizite Programmierung für eine Unix-Umgebung. Dies würde die Programmierung für Shells einschließen, die einem relevanten Standard entsprechen (wie z. B. POSIX ). Es würde jedoch auch das Programmieren in einer beliebigen Sprache einschließen, wobei explizit Systemschnittstellen und Ressourcen verwendet werden, die ähnlich standardisiert sind, vorausgesetzt, diese sind spezifisch für die * nix-Welt.
Beispielsweise ist die Netzwerkprogrammierung ohne eine Bibliothek eines Drittanbieters in C oder C ++ nicht portierbar, da keiner der Standards etwas darüber aussagt. Das Netzwerk in C / C ++ wird über eine vom Betriebssystem vorgegebene Schnittstelle implementiert. Auf * nix-ischen Systemen ist dies mehr oder weniger universell. Sie können diesen Code jedoch nicht unverändert auf (z. B.) Windows portieren und umgekehrt. Netzwerkarbeiten in C oder C ++ zu erledigen bedeutet daher, eine tragbare Bibliothek zu verwenden oder auf eine Plattform abzuzielen, und Unix ist im späteren Fall eine Möglichkeit, daher ist dies "Unix-Programmierung" (und C- oder C ++ - Programmierung und Netzwerkprogrammierung). 1
Die Netzwerkprogrammierung in vielen höheren Sprachen wie Perl, Python oder Java ist jedoch portabel. Diese Sprachen werden im Allgemeinen in C implementiert, die Details der Implementierung unterscheiden sich zwar von Plattform zu Plattform, die Schnittstelle jedoch nicht. Daher können Sie Netzwerkcode in Perl schreiben, der auf jedem System ausgeführt werden soll, auf dem Perl ausgeführt wird. Auf einem Unix-System wird dies von der Interpreter-Implementierung in die entsprechenden nativen Aufrufe übersetzt, und auf einem Windows-System wird es anders übersetzt. Da Ihr tatsächlicher Perl-Code nur für Perl spezifisch ist, handelt es sich nicht um Unix-Programmierung. Es ist Netzwerkprogrammierung und Perl-Programmierung, aber keine Unix-Programmierung.
1. Aufgrund der engen historischen Beziehung zwischen C und Unix, der Tatsache, dass C die Sprache ist, die am häufigsten zum Schreiben von Betriebssystemen verwendet wird, und der Art, was ein "Betriebssystem" ist, gibt es eine Menge Dinge in der Kategorie " Betriebssystemspezifische C-Programmierung "- ein weiteres alltägliches Beispiel neben der Vernetzung sind dateisystemorientierte Dinge wie Dateien und Leseverzeichnisse. Daher gibt es verschiedene Bücher vom Typ "Unix-Programmierung in C", da die grundlegende Programmierung in C zwangsläufig viele betriebssystemspezifische Elemente umfasst. Dies ist bei tragbareren Sprachen wie Perl oder Java nicht der Fall. in diesem Fall wird das Thema des Buchs wahrscheinlich „sein System in Perl - Programmierung“, oder was wahrscheinlicher ist , einfach nur „Programmierung mit Perl“.
quelle