इसलिए मैंने पीडीपी -10 / TOPS-10 मैनुअल की खोज करके इस पर थोड़ा शोध करने की कोशिश की ताकि पता लगाया जा सके कि पाइप से पहले कला की स्थिति क्या थी। मुझे यह पता चला , लेकिन TOPS-10 उल्लेखनीय रूप से Google के लिए कठिन है। पाइप के आविष्कार पर कुछ अच्छे संदर्भ हैं: McIlroy के साथ एक साक्षात्कार , UNIX के इतिहास और प्रभाव पर ।
आपको इसे ऐतिहासिक संदर्भ में रखना होगा। हमारे द्वारा दिए गए आधुनिक उपकरणों और उपयुक्तताओं में से कुछ अस्तित्व में हैं।
"शुरुआत में, थॉम्पसन ने खुद पीडीपी पर भी कार्यक्रम नहीं किया, बल्कि GE-635 मशीन पर GEMAP असेंबलर के लिए मैक्रोज़ के एक सेट का उपयोग किया।" (29) GE 635 पर एक पेपर टेप उत्पन्न किया गया और फिर इसका परीक्षण किया गया। PDP-7 तक, रिची के अनुसार, "एक आदिम यूनिक्स कर्नेल, एक संपादक, एक असेंबलर, एक साधारण शेल (कमांड इंटरप्रेटर), और कुछ यूटिलिटीज (जैसे यूनिक्स आरएम, बिल्ली, सीपीपी कमांड) पूरे हुए।" बिंदु, ऑपरेटिंग सिस्टम स्वावलंबी था, कार्यक्रमों को कागज के टेप का सहारा लिए बिना लिखा और परखा जा सकता था, और पीडी -7 पर ही विकास जारी रहा। "
एक पीडीपी -7 इस तरह दिखता है । इंटरेक्टिव डिस्प्ले या हार्ड डिस्क की कमी पर ध्यान दें। "फाइलसिस्टम" को चुंबकीय टेप पर संग्रहीत किया जाएगा। कार्यक्रमों और डेटा के लिए 64kB तक मेमोरी थी।
उस वातावरण में, प्रोग्रामर सीधे हार्डवेयर को संबोधित करने के लिए जाते हैं, जैसे कि टेप को स्पिन करने के लिए आदेश जारी करके और वर्णों को एक बार टेप इंटरफ़ेस से सीधे पढ़ा जाता है। UNIX ने इस पर अमूर्तताएं प्रदान कीं, ताकि "टेलेटाइप से पढ़ें" और "टेप से पढ़ें" के बजाय अलग-अलग इंटरफेस हो, उन्हें एक में जोड़ दिया गया, जिसमें डिस्क के साथ एक अस्थायी प्रतिलिपि संग्रहीत किए बिना "अन्य प्रोग्राम के आउटपुट से पढ़ा गया" के महत्वपूर्ण पाइप जोड़। या टेप ”।
यहाँ के आविष्कार पर McIlroy है grep
। मुझे लगता है कि यह प्री-यूनिक्स पर्यावरण में आवश्यक कार्य की मात्रा को समेटने का एक अच्छा काम करता है।
"मेरे लिए ग्रेप का आविष्कार किया गया था। मैं एक आवाज सिंथेसाइज़र के माध्यम से पाठ को जोर से पढ़ने के लिए एक कार्यक्रम बना रहा था। जैसा कि मैंने ध्वन्यात्मक नियमों का आविष्कार किया था, मैं उन शब्दों के लिए वेबस्टर के शब्दकोश की जांच करूंगा, जिस पर वे विफल हो सकते हैं। उदाहरण के लिए, आप डिग्राफ का सामना कैसे करते हैं। ' उई ', जिसे कई अलग-अलग तरीकों से उच्चारित किया जाता है:' फल ',' गिल्टी ',' दोषी ',' पीड़ा ',' इंटेइट ',' बेगुइन '? मैं शब्दकोश को उन टुकड़ों में तोड़ दूंगा जो एड के सीमित बफर में फिट होते हैं और उपयोग करते हैं? एक सूची का चयन करने के लिए एक वैश्विक आदेश। मैं इस सूची को बार-बार स्कैन करने के लिए एड के साथ नीचे गिरा दूंगा कि प्रत्येक प्रस्तावित नियम कैसे काम करता है। "
"प्रक्रिया थकाऊ, और बहुत ही बेकार थी, क्योंकि डिक्शनरी को विभाजित किया जाना था (एक लाइन पर विभाजन कॉपी छोड़ने का जोखिम नहीं उठा सकता था)। फिर एड ने प्रत्येक भाग को / tmp में कॉपी किया, जी कमांड को पूरा करने के लिए दो बार स्कैन किया। और अंत में इसे फेंक दिया, जिसमें समय भी लगता है। "
"एक दोपहर मैंने केन थॉम्पसन से पूछा कि क्या वह संपादक से नियमित अभिव्यक्ति पहचानकर्ता को उठा सकता है और इसे करने के लिए एक पास-पास बना सकता है। उसने कहा कि हाँ। अगली सुबह मुझे अपने मेल में एक नोट मिला जिसे grep नाम के एक कार्यक्रम की घोषणा की। यह एक आकर्षण की तरह काम करता है। जब उनसे पूछा गया कि उस मज़ेदार नाम का क्या मतलब है, तो केन ने कहा कि यह स्पष्ट था। यह संपादक के आदेश के लिए खड़ा था कि यह नकली, जी / रे / पी (वैश्विक नियमित अभिव्यक्ति प्रिंट)। "
cat names.txt | awk '{print $2 ", " $1}' | sort | uniq | column -c 100
उदाहरण के लिए उसके पहले भाग की तुलना करें । यदि आपके विकल्प "कमांड लाइन का निर्माण करते हैं" बनाम "विशेष रूप से उद्देश्य के लिए एक कार्यक्रम लिखें, हाथ से, असेंबलर में", तो यह कमांड लाइन बनाने के लायक है। भले ही इसे करने के लिए पेपर (पेपर) मैनुअल को पढ़ने में कुछ घंटे लगते हों। फिर आप इसे भविष्य के संदर्भ के लिए लिख सकते हैं।