web-dev-qa-db-ja.com

Unixプログラミングとはどういう意味ですか?

nixプログラミングという用語の意味は理解できたと思いましたが、カーネル/ Cプログラミングのコンテキストで読んだ後、この用語の意味を明確にする必要があるように感じました。

それが意味するかどうかは私には明らかではありません:

  1. シェルプログラミング、
  2. Unixプログラミングツール
  3. unixコマンドラインツールのプログラミングの特定の方法/パターン(たとえば、「Unixシェルプログラミング」のパイプラインの方法に同意するため)、または
  4. 他の何か。
10
Brandt

「Unixプログラミング」とは、UNIX環境用の明示的なプログラミングを指します。これには、関連する標準に準拠するシェルのプログラミングが含まれます( [〜#〜] posix [〜#〜] など)。ただし、* nixの世界に固有であると想定して、同様に標準化されているシステムインターフェイスとリソースを明示的に使用しながら、任意の言語でのプログラミングも含まれます。

たとえば、CまたはC++でサードパーティのライブラリを使用しないネットワークプログラミングは、どちらの標準もそれについて何も述べていないため、移植できません。 C/C++のネットワークは、オペレーティングシステムによって指示されたインターフェイスを使用して実装されます。* nix-ishシステムではこれは多かれ少なかれ普遍的であり、そのコードを変更せずに(たとえば)Windowsに移植したり、その逆を行ったりすることはできません。したがって、CやC++でネットワークに関することを行うとは、ポータブルライブラリを使用すること、またはプラットフォームをターゲットにすることを意味します。Unixは後者の場合の1つの可能性です。したがって、これは「UNIXプログラミング」(およびCまたはC++プログラミングとネットワークプログラミング)です。1

ただし、PerlやpythonまたはJavaのような多くの高レベル言語でのネットワークプログラミングは移植可能です;これら言語は通常Cで実装されますが、実装の詳細はプラットフォームごとに異なりますが、インターフェースはそうではありません。したがって、Perlが実行されるすべてのシステムで実行する必要があるPerlでネットワークコードを記述できます。Unixシステムでは、このインタプリタの実装によって適切なネイティブコールに変換され、Windowsシステムでは別の方法で変換されます。実際のPerlコードはPerl以外に固有のものではないため、UNIXプログラミングではありません。ネットワークプログラミングとPerlプログラミングです。 UNIXプログラミングではありません。


1. CとUnixの間の親密な歴史的関係、Cがオペレーティングシステムを一般的に記述するために最もよく使用される言語であるという事実、および「オペレーティングシステム」とは何かという性質のため、「カテゴリ」には多くのものがあります。 OS固有のCプログラミング」-ネットワーキング以外の日常的な例としては、ファイルシステムの記述、ファイルの読み取り、ディレクトリの読み取りなどがあります。したがって、Cの基本的なプログラミングには必然的に多くのOS固有の要素が含まれるため、さまざまな「Unixプログラミングin C」タイプの本が出回っています。これは、PerlやJavaなどの移植性の高い言語には当てはまりません。この場合、本の主題はおそらく「Perlでのシステムプログラミング」、あるいはもっと単純な「Programming with Perl」です。

14
goldilocks