MakingSenseofStreamProcessing / Pipes and Composability


Pipes and Composability?

  • オペレーティングシステムに付属するツールは一般的ですが、アプリケーション固有のタスクを実行できる大きなプログラムにまとめて構成できるように設計されています。 この設計アプローチから得られたUnixの設計者のメリットは、数十年後に登場したAgileとDevOps?の動きのアイデアとよく似ています。 ラピッドプロトタイピング、増分反復、実験にやさしく、大規模なプロジェクトを管理可能なチャンクに分割することができます。
  • シェルでパイプ文字を使用して2つのコマンドを結合すると、シェルは両方のプログラムを同時に開始し、最初のプロセスの出力を2番目のプロセスの入力に接続します。
  • この接続機構は、オペレーティングシステムによって提供されるパイプsyscallを使用します。
  • この配線は、プログラム自体では行われないことに注意してください。 これはシェルによって行われます。これにより、プログラムの疎結合が可能になり、入力がどこから来ているのか、どこから出力されるのか心配する必要はありません。
  • Unixチームはまた、プロセス間通信メカニズム(パイプ)がファイルの読み書きのためのI / Oメカニズムと非常によく似ていることを早期に認識しました。 この入力リダイレクション(プロセスの入力としてファイルの内容を使用する)と出力の出力(プロセスの出力をファイルに書き込む、図4-6)を呼び出します。
  • プログラムは、stdinの読み書き、stdoutの書き出し、ファイルの読み書きやネットワーク経由の通信、グラフィカルユーザーインターフェイスの描画など、他の作業を行うこともできます。 しかし、stdin / stdout通信は、あるUnixツールから別のUnixツールにデータを流すための主な手段と考えられています。
  • stdin / stdoutインターフェースの素晴らしい点は、誰でも簡単にどのプログラミング言語でも実装できることです。 このインターフェイスに準拠した独自のツールを開発することができ、オペレーティングシステムの一部として出荷されるすべての標準ツールでうまく動作します。
  • 一旦ツールを書いた後は、前に説明したデータ処理パイプラインに組み込むことができます(図4-8)。 これはしばらくの間Unixで作業していたのであれば、はっきりと明らかに思えるかもしれませんが、私は自分のコードがオペレーティングシステムで提供されているツールと同等の条件で実行されていることを強調したいと思います。
  • グラフィカルユーザーインターフェイスやWebアプリケーションを使用したアプリケーションは、このように単純に拡張して配線することはできません。 Gmailを別の検索エンジンアプリにパイプして、結果をwikiに投稿することはできません。 今日では、Unixツールと同じようにスムーズに動作するプログラムを持つことは例外であり、標準ではありません。

担当者のつぶやき

みんなの突っ込み