Can you summarize the following document?
        
  管道的概念是在Unix的發源地貝爾實驗室由Douglas McIlroy在Unix開發期間主張的。與Unix的管道有關的更早期獨立工作是Ken Lochner在1960年代為開發的“通訊檔案”。Tony Hoare在1978年提出的通訊順序程序(CSP),進一步發展了McIlroy的管道,但它用於通訊的無緩衝區通道不是第一類物件。CMS管道是開始於1980年的將管道想法向IBM的VM/CMS和z/OS系統的移植。  狹窄些說,管道是線性的和單向的,最典型的是Unix shell最初提供的管道語法。但是這個術語有時也應用於更一般性的流(flow)。例如,一個基本上單向的管道,可以有在另一個方向上一些通訊,叫做“返回通道”或“反向通道”,就像在中那樣,也有管道可以是完全雙向的。有著單向樹和有向無環圖拓撲的流,由於沒有環路而相對簡單,使得它們表現得類似於(線性的)管道,因此也可以寬泛的稱為“管道”。  除了基於位元組流(stream)的管道,還有物件管道。在物件管道中,處理元素輸出物件而非文字。Windows PowerShell包含了一種內部的物件管道,在PowerShell執行時系統之內於函式之間傳輸.NET物件。在Limbo程式語言中的通道,是這種的另一個例子。  管道和,可以被看作使用位元組流作為資料物件的一種形式的函數語言程式設計;更具體的說,它們可以被看作是特定形式的I/O單子。
管道(pipeline),本源是使用訊息傳遞的程序間通訊機制,它構成自連結起來的處理元素(程序、執行緒、協程和函式等),它們被安置為每個元素的輸出都是下一個元素的輸入;這個名字類比於物理上的管道運輸。在連貫的元素之間,通常會提供一定數量的緩衝區。在管道中流動的資訊,經常是記錄、位元組或位的流(stream),而管道的元素可以叫做。將元素連線成管道類似於。在軟體工程中,稱之為管道與過濾器設計模式。