![Unixプログラミングとは実際に何を意味しますか? [閉鎖]](https://linux33.com/image/40894/Unix%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A8%E3%81%AF%E5%AE%9F%E9%9A%9B%E3%81%AB%E4%BD%95%E3%82%92%E6%84%8F%E5%91%B3%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
その言葉がどういう意味か分かりそうだったのにUnixプログラミングしかし、カーネル/ Cプログラミングの文脈でこれを読んだ後、この用語が何を意味するのかを明確にする必要があるようです。
これが次のことを意味するかどうかはわかりません。
- シェルプログラミング、
- Unixプログラミングツール、
- Unixコマンドラインツールを使用したプログラミングの特定のスタイル/モード(「Unixシェルプログラミング」のパイプスタイルに同意)
- 他のもの。
答え1
「Unixプログラミング」は、特にUnix環境用のプログラミングを意味します。これには関連規格(例:POSIX)。ただし、同様に標準化されたシステムインタフェースとリソースを明示的に使用しながら、すべての言語でプログラミングすることも含まれます(これは* nixの世界に固有のものと仮定)。
たとえば、C または C++ のサードパーティ ライブラリを持たないネットワーク プログラミングはどの標準でも説明しないため、移植性はありません。 C/C++ のネットワーキングは OS 指定インタフェースを使って実装されるのに対し、 *nix-ish システムではこれがやや普遍的なので、そのコードを Windows に変更せずに移植できず、その逆の場合も同様です。したがって、CやC++でネットワーク作業をするということは移植可能なライブラリを使うかプラットフォームを対象とするという意味で、Unixは後者の場合も可能なので、それが「Unixプログラミング」(そしてCやC++プログラミングとネットワークプログラミング)である。1
しかし、ネットワークプログラミングは、Perl、Python、Javaなどの多くの高度な言語を使用して行われます。はい移植可能です。これらの言語は通常Cで実装されていますが、実装の詳細はプラットフォームによって異なりますが、インターフェイスはそうではありません。したがって、Perlでネットワークコードを書くことができ、コードはPerlを実行しているすべてのシステムで実行する必要があります。 Unixシステムでは、これはインタプリタの実装によって適切な基本呼び出しに変換されますが、Windowsシステムでは他の方法で変換されます。実際のPerlコードはPerl以外のものに限定されないので、Unixプログラミングではありません。これはネットワークプログラミングであり、Perlプログラミングですが、Unixプログラミングではありません。
1. C と Unix の間の緊密な歴史的関係のために、C がオペレーティングシステムを構築するために最も一般的に使用される言語であるという事実と、「オペレーティングシステム」の性質のために、「オペレーティングシステム」には多くのものがあります。カテゴリOS関連のCプログラミング」 – ネットワーキング以外の別の日常的な例は、ファイルの計算やディレクトリの読み込みなどのファイルシステム指向のものです。関連する特定の要素は、PerlやJavaなどの移植性のある言語の場合には該当しません。この場合、この本のトピックはシステムPerl プログラミング」または単に「Perl プログラミング」である可能性が高いです。