टीईसीओ (टेक्स्ट एडिटर)

टेको, टेक्स्ट एडिटर और करेक्टर के लिए शॉर्टकट, एक चरित्र-उन्मुख टेक्स्ट संपादक और एक प्रोग्रामिंग भाषा दोनों है, जिसे 1962 में  डिजिटल उपकरण निगम  कंप्यूटरों पर उपयोग के लिए विकसित किया गया था, और तब से यह पीसी और यूनिक्स पर उपलब्ध हो गया है। डैनियल मर्फी (कंप्यूटर वैज्ञानिक) ने मैसाचुसेट्स की तकनीकी संस्था (एमआईटी) में एक छात्र के रूप में टीईसीओ विकसित किया था।

मर्फी के अनुसार, प्रारंभिक परिवर्णी शब्द टेप एडिटर और करेक्टर था क्योंकि हमारे पीडीपी-1 पर प्रोग्राम स्रोत के भंडारण के लिए कागज का टेप ही एकमात्र माध्यम था। कोई हार्ड डिस्क, फ्लॉपी डिस्क, मैग्नेटिक टेप (मैग्टेप) या नेटवर्क नहीं था। जब तक टीईसीओ को सामान्य उपयोग के लिए उपलब्ध कराया गया, तब तक नाम टेक्स्ट एडिटर और करेक्टर बन चुका था, पीडीपी-1 संस्करण के बाद से भी तब तक अन्य मीडिया का समर्थन किया गया था। इसके बाद में इसे कई अन्य लोगों द्वारा संशोधित किया गया था और एमएसीएस का प्रत्यक्ष पूर्वज है, जिसे मूल रूप से टीईसीओ मैक्रोज़ में प्रयुक्त किया गया था।

विवरण
टीईसीओ न केवल एक संपादक है चूँकि टेक्स्ट हेरफेर के लिए एक व्याख्या की गई प्रोग्रामिंग भाषा भी है। टेक्स्ट को खोजने और संशोधित करने के लिए इच्छानुसार कार्यक्रम (जिन्हें "मैक्रोज़" कहा जाता है) इसे महान शक्ति प्रदान करते हैं। चूँकि नियमित अभिव्यक्तियों के विपरीत, भाषा अनिवार्य थी, चूँकि कुछ संस्करणों में स्ट्रिंग खोज में "या" ऑपरेटर था।

टीईसीओ में वास्तव में वाक्य - विन्यास  नहीं है; एक कार्यक्रम में प्रत्येक चरित्र एक अनिवार्य कमांड है, जो उसके संबंधित रूटीन को भेजा जाता है। वह दिनचर्या प्रोग्राम स्ट्रीम (स्ट्रिंग आर्ग्युमेंट्स का प्रभाव देते हुए) से आगे के पात्रों को पढ़ सकती है, प्रोग्राम काउंटर की स्थिति को बदल सकती है (नियंत्रण संरचनाओं का प्रभाव दे सकती है), या वैल्यू स्टैक पर मूल्यों को पुश कर सकती है (नेस्टेड कोष्ठकों का प्रभाव दे रही है). किंतु किसी टिप्पणी के बीच में कूदने जैसे संचालन को रोकने के लिए कुछ भी नहीं है, क्योंकि कोई सिंटैक्स नहीं है और कोई पार्सिंग नहीं है।

टीईसीओ केस और व्हाइटस्पेस चरित्र को अनदेखा करता है (टैब चरित्र को छोड़कर, जो एक इंसर्शन कमांड है)।

कंप्यूटर प्रोग्रामिंग पर एक व्यंग्यपूर्ण निबंध, रियल प्रोग्रामर्स डोन्ट यूज़ पास्कल, ने सुझाव दिया कि टीईसीओ प्रशंसकों के लिए एक सामान्य खेल कमांड अनुक्रम के रूप में अपना नाम अंकित करना था, और फिर यह पता लगाने का प्रयाश करें कि क्या होगा। टीईसीओ का वर्णन करने में एक ही निबंध ने याफ़ीगी का संक्षिप्त नाम गढ़ा, जिसका अर्थ है कि आपने इसके लिए कहा, आपने इसे प्राप्त किया (वाईएसआईवाईजी के विपरीत)।

प्रभाव
एमएसीएस संपादक मूल रूप से डेविड ए. मून और गाइ एल. स्टील जूनियर द्वारा प्रारंभ किया गया था, जिसे टीईसीओ में संपादक मैक्रोज़ के एक सेट के रूप में प्रयुक्त किया गया था। 1964 में एमआईटी के प्रोजेक्ट मैक में विकसित एक डिजिटल इक्विपमेंट कॉरपोरेशन (दिसम्बर) पीडीपी-6 कार्यान्वयन के बाद टीईसीओ का अधिक व्यापक रूप से उपयोग किया जाने लगा। इस कार्यान्वयन ने कैथोड रे ट्यूब स्क्रीन पर दृश्य रूप से संपादित टेक्स्ट को निरंतर प्रदर्शित किया था और एक इंटरैक्टिव ऑनलाइन संपादक के रूप में उपयोग किया गया। टीईसीओ के बाद के संस्करण विभिन्न दिसम्बर आरएस-232 वीडियो टर्मिनलों जैसे वीटी52 या वीटी100 पर फुल-स्क्रीन मोड चलाने में सक्षम थे।

पीडीपी-1 कंप्यूटर, पीडीपी-8 (ओएस/8 के तहत), सहित कई ऑपरेटिंग सिस्टम और कंप्यूटरों के लिए टीईसीओ उपलब्ध था। पीडीपी-6 और पीडीपी-10 पर असंगत टाइमशेयरिंग सिस्टम (आईटीइस), और पीडीपी-10 पर टॉप्स-10 और टॉप्स-20। टीईसीओ का एक संस्करण सभी डीईसी ऑपरेटिंग सिस्टम के साथ प्रदान किया गया था; आरटी11 के लिए उपलब्ध संस्करण जीटी40 ग्राफिक्स डिस्प्ले को चलाने में सक्षम था जबकि आरएसटीएस/ई के लिए उपलब्ध संस्करण को बहु-उपयोगकर्ता रन-टाइम सिस्टम के रूप में प्रयुक्त किया गया था और इसे उपयोगकर्ता के पूर्ण ऑपरेटिंग वातावरण के रूप में उपयोग किया जा सकता था; उपयोगकर्ता को वास्तव में कभी भी टीईसीओ से बाहर नहीं निकलना पड़ा। वीटीईडीआईटी (वीडियो टर्मिनल एडिटर) टीईसीओ मैक्रो का उपयोग आमतौर पर आरएसटीएस/ई और वैक्स सिस्टम पर किया जाता था, जिसमें प्रत्यक्ष-कर्सर नियंत्रण (जैसे वीटी52 और वीटी100) में सक्षम टर्मिनल होते थे, जो समसामयिक रूप से विकसित एमएसीएस के फंक्शन में समान फुल-स्क्रीन विज़ुअल एडिटर प्रदान करते थे।

टीईसीओ को वीएसआई द्वारा ओपनवीएमएस में सम्मिलित किया जाना प्रसारित है, और इसे    कमांड के साथ प्रयुक्त किया जाता है।

पीडीपी-10 के लिए वितरित संस्करण डीईसी का वंशज एमएस-डॉस/ माइक्रोसॉफ़्ट विंडोज़ पर्यावरण के लिए कई आंशिक कार्यान्वयन के साथ-साथ अभी भी इंटरनेट पर उपलब्ध है।

इतिहास
टीईसीओ मूल रूप से एमआईटी में विकसित किया गया था लगभग 1963 में डैनियल एल. मर्फी द्वारा दो पीडीपी-1 कंप्यूटरों पर उपयोग के लिए विभिन्न विभागों से संबंधित, दोनों एमआईटी की बिल्डिंग 26 में रखे गए थे। इन मशीनों पर, सामान्य विकास प्रक्रिया में छिद्रित पेपर टेप की एक सतत पट्टी पर ऑफ़लाइन स्रोत कोड तैयार करने के लिए फ्रीडम फ्लेक्सोराइटर का उपयोग सम्मिलित था। बड़े आईबीएम मेनफ्रेम के प्रोग्रामर्स ने मुख्य पंचों का उपयोग करते हुए, छिद्रित कार्ड पर अपने स्रोत कोड को कस्टमाइज किया जाता है  जो प्रत्येक कार्ड के शीर्ष पर मानव-पठनीय  डॉट मैट्रिक्स  वर्णों को उसी समय मुद्रित करते थे, जब वे प्रत्येक मशीन-पठनीय वर्ण कुंजी पंच करते थे। इस प्रकार आईबीएम प्रोग्रामर डेक में कार्डों को भौतिक रूप से जोड़कर कोड की पंक्तियों को पढ़, सम्मिलित, हटा और स्थानांतरित कर सकते हैं। छिद्रित पेपर टेप में ऐसी कोई सुविधा नहीं थी, जिससे ऑनलाइन संपादन का विकास हुआ।

पीडीपी-1 के प्रारंभिक संपादक का नाम "एक्सपेंसिव टाइपराइटर" था। स्टीफ़न डी. पाइनर द्वारा लिखित, यह सबसे अल्पविकसित कल्पनीय लाइन-उन्मुख संपादक था, जिसमें खोज-और-प्रतिस्थापन क्षमताओं का भी अभाव था। इसका नाम "कोलोसल टाइपराइटर" कहे जाने वाले पुराने, किंतु फूले हुए संपादक पर व्यंग्यपूर्ण प्रहार के रूप में चुना गया था। उन दिनों भी, ऑनलाइन संपादन डिबगिंग चक्र में समय बचा सकता था। पीडीपी-1 हैकर्स द्वारा लिखा गया एक अन्य प्रोग्राम इसी तरह से एक्सपेंसिव डेस्क कैलकुलेटर था।

टीईसीओ का मूल घोषित उद्देश्य पीडीपी-1 का अधिक कुशल उपयोग करना था। जैसा कि मैनुअल में कल्पना की गई है, सिस्टम कंसोल पर बैठकर बड़े मापदंड पर संपादन करने के अतिरिक्त, केवल दोषपूर्ण टेक्स्ट की जांच करेगा और टेक्स्ट पर किए जाने वाले संपादन कार्यों का वर्णन करते हुए एक सुधार टेप तैयार करेगा। कोई स्रोत टेप और सुधार टेप को इसकी उच्च-गति (200 वर्ण प्रति सेकंड) रीडर के माध्यम से पीडीपी-1 में दक्षतापूर्वक फीड करेगा। टीईसीओ चलाकर यह तुरंत एक संपादित टेप को अपनी उच्च गति (60 वर्ण प्रति सेकेंड) पंच के साथ पंच करेगा। ऑनलाइन संपादन में कोई समय व्यर्थ किए बिना, कोई तुरंत असेंबलर को लोड और चलाने के लिए आगे बढ़ सकता है।

टीईसीओ के परिष्कृत खोज अभियान इस तथ्य से प्रेरित थे कि ऑफ़लाइन फ्लेक्सोराइटर प्रिंटआउट लाइन-नंबर नहीं थे। इसलिए संपादन स्थानों को पंक्ति संख्या के अतिरिक्त संदर्भ द्वारा निर्दिष्ट करने की आवश्यकता है। सुधार टेप के लिए पर्याप्त वर्णनात्मक शक्ति प्रदान करने के लिए विभिन्न लूपिंग और नियमानुसार निर्माण (जो टीईसीओ ट्यूरिंग-पूर्ण बनाते हैं) सम्मिलित  किए गए थे। संक्षिप्त सिंटैक्स ने सुधार टेप तैयार करने के लिए आवश्यक कीस्ट्रोक्स की संख्या को कम कर दिया था ।

सुधार टेप एक प्रोग्राम था, और किसी अन्य प्रोग्राम की तरह ही डिबगिंग की आवश्यकता थी। सरलतम वैश्विक खोज-और-प्रतिस्थापन के हानि भी जल्द ही स्पष्ट हो गए। व्यवहार में, टीईसीओ संपादन ऑनलाइन किया गया था जैसा कि एक्सपेंसिव टाइपराइटर के साथ किया गया था (चूँकि टीईसीओ निश्चित रूप से एक्सपेंसिव टाइपराइटर की तुलना में अधिक फीचर-पूर्ण संपादक था, इसलिए टीईसीओ के साथ संपादन अधिक कुशल था)। मूल पीडीपी-1 संस्करण में कोई स्क्रीन डिस्प्ले नहीं था। संपादन प्रक्रिया के समय टेक्स्ट की स्थिति का निरीक्षण करने का एकमात्र तरीका कमांड टाइप करना था जिससे कंसोल टाइपराइटर पर टेक्स्ट (या उसके भाग) को टाइप किया जा सके।

1964 तक, टीईसीओ (टीईसीओ-6) का एक विशेष संस्करण एमआईटी में पीडीपी-6 पर प्रयुक्त किया गया था। उस संस्करण ने स्क्रीन डिस्प्ले का उपयोग करके दृश्य संपादन का समर्थन किया, जो वास्तविक समय में संपादन बफ़र की पदार्थ को दिखाता है, जैसे-जैसे यह बदलता है, अपडेट होता है। टीईसीओ-6 के रचनाकारों में रिचर्ड ग्रीनब्लाट (प्रोग्रामर) और स्टीवर्ट नेल्सन (हैकर) थे।

एमआईटी में, टीईसीओ का विकास 1971 के पतन में जारी रहा कार्ल मिकेलसेन ने टीईसीओ-6 ग्राफिक कंसोल कमांड के आधार पर एक वास्तविक समय संपादन मोड प्रयुक्त किया था, किंतु नए स्थापित डेटापॉइंट-3300 सीआरटी टेक्स्ट डिस्प्ले के साथ काम कर रहे थे। चूँकि टीईसीओ बफ़र कार्यान्वयन एकल वर्ण सम्मिलित करने या हटाने के कार्यों को संसाधित करने के लिए बहुत अक्षम था - संपादन में PDP-10 का 100% खर्च होता था। रिचर्ड ग्रीनब्लाट के समर्थन से, 1972 की गर्मियों में कार्ल ने टीईसीओ बफर स्टोरेज को फिर से प्रयुक्त किया और मैक्रोज़ को मूल PDP-10 कोड के रूप में सुधार किया। चूंकि वास्तविक समय मोड में प्रवेश  टाइप करके किया जाता था, इसे नियंत्रण के रूप में जाना जाता था- आर मोड. उसी समय, रिसी लिकनेत्स्की ने इनपुट-टाइम मैक्रोज़ जोड़ा, जो निष्पादित होने के अतिरिक्त कमांड स्ट्रिंग को पढ़ने के रूप में संचालित होता था। रीड-टाइम मैक्रोज़ ने टीईसीओ सहायक टेक्स्ट बफ़र्स बनाए, जिन्हें क्यू-रजिस्टर कहा जाता है, अधिक उपयोगी। कार्ल ने क्यू-रजिस्टर नाम स्थान का विस्तार किया। रीड-टाइम मैक्रोज़, एक बड़े क्यू-रजिस्टर नाम स्थान और कुशल बफर संचालन के साथ, प्रत्येक कुंजी को मैक्रो में बाइंड करने के लिए चरण निर्धारित किया गया था। ये संपादन मैक्रोज़ एमएसीएस में विकसित हुए।

वीएमएस कार्यान्वयन का एक लंबा इतिहास रहा है - यह टीईसीओ-8 के रूप में प्रारंभ हुआ जिसे पीडीपी-8 असेंबली में कार्यान्वित किया गया। टीईसीओ-11 का उत्पादन करने के लिए इस कोड का पीडीपी-11 असेंबली में अनुवाद किया गया था। पीडीपी-11 अनुकूलता मोड में वैक्स/वीएमएस के शुरुआती संस्करणों में टीईसीओ-11 का उपयोग किया गया था। इसे बाद में टीईसीओ32 का उत्पादन करने के लिए पीडीपी-11 असेंबली से वैक्स असेंबली में अनुवादित किया गया। टीईसीओ32 को क्रमशः अल्फा और इटेनियम पर ओपनवीएमएस के साथ संगत बनाने के लिए वेस्ट और एईएसटी बाइनरी अनुवाद उपयोगिताओं के साथ परिवर्तित किया गया था।

OS/8 मूंग कमांड
OS/8 संक्षिप्त कमांड लैंग्वेज मूंग कमांड ने निर्दिष्ट टीई टीईसीओ मैक्रो को पढ़ने और निष्पादित करने के लिए टीईसीओ का आह्वान किया। वैकल्पिक कमांड लाइन मापदंडों ने अतिरिक्त अनुकूलता प्रदान की गई थी।

ग्रामर के उपकरण के रूप में
पंच कार्ड युग में कंप्यूटर प्रोग्रामिंग के वर्षों के समय और उसके तुरंत बाद, ऐसे स्रोत कार्यक्रम थे जो पंच कार्ड-आधारित के रूप में प्रारंभ हुए थे। टिप्पणियां अधिकांशतः पंक्तियों की एक श्रृंखला होती थीं जिनमें एकल सीमांत तारक और शीर्ष/नीचे तारांकन की पूर्ण पंक्तियां सम्मिलित होती थीं। एक बार कार्डों को ऑनलाइन स्थानांतरित कर दिए जाने के बाद, सीमांत सितारों को पुनः प्राप्त करना एक काम था। बचाव के लिए टीईसीओ ...

एक प्रोग्रामिंग भाषा के रूप में
टीईसीओ प्रोग्रामिंग भाषा की अस्पष्टता का वर्णन "रियल प्रोग्रामर्स डोंट यूज़ पास्कल" के निम्नलिखित उद्धरण में किया गया है, जो एड पोस्ट से डेटामेशन जुलाई 1983 को लिखा गया एक पत्र है:

"यह देखा गया है कि टीईसीओ कमांड अनुक्रम पठनीय पाठ की तुलना में ट्रांसमिशन लाइन ध्वनि से अधिक मिलता जुलता है। टीईसीओ के साथ खेलने के लिए अधिक मनोरंजक खेलों में से एक है कमांड लाइन के रूप में अपना नाम टाइप करना और यह अनुमान लगाने का प्रयास करना कि यह क्या करता है। टीईसीओ के साथ बात करते समय लगभग कोई भी संभावित टाइपिंग त्रुटि संभवतः आपके प्रोग्राम को नष्ट कर देगी, या इससे भी खराब - एक बार काम करने वाले सबरूटीन में सूक्ष्म और रहस्यमय बग प्रस्तूत कर देगी।."

द क्राफ्ट ऑफ टेक्स्ट एडिटिंग के लेखक क्रेग फिनसेथ के अनुसार, टीईसीओ को "केवल लिखने वाली" भाषा के रूप में वर्णित किया गया है, जिसका अर्थ है कि एक बार टीईसीओ में कोई प्रोग्राम लिखा जाता है, तो यह समझना बहुत कठिन है कि उपयुक्तता दस्तावेज़ीकरण के बिना उसने क्या किया है।.

इसके सिंटैक्स के अतिरिक्त टीईसीओ कमांड भाषा बहुत अधिक शक्तिशाली थी, और एमएस-डॉस और यूनिक्स के लिए क्लोन अभी भी उपलब्ध हैं।

टीईसीओ आदेश वर्ण हैं (नियंत्रण-वर्णों सहित) और संकेत एक एकल तारांकन चिह्न है: *

एस्केप कुंजी एक डॉलर चिह्न के रूप में प्रदर्शित होती है, एक बार दबाए जाने पर एक तर्क की आवश्यकता वाले कमांड के अंत को चित्रित किया जाता है और दो बार दबाए जाने पर अंकित कमांड के निष्पादन की प्रारंभ होती है: *$$

उदाहरण कोड
निम्नलिखित पदार्थ के साथ hello.c नाम की एक फ़ाइल दी गई है: हैलो को गुडबाय में बदलने के लिए कोई निम्नलिखित टीईसीओ सत्र का उपयोग कर सकता है (ध्यान दें कि संकेत * और $ है कि ईएससी कैसे प्रतिध्वनित होता है):

ये दो उदाहरण कार्यक्रम पीडीपी-11 टीईसीओ उपयोगकर्ता मार्गदर्शिका से ली गई प्रत्येक पंक्ति के पहले वर्ण के आधार पर, वर्तमान टेक्स्ट बफ़र का एक सरल इंटरचेंज सॉर्ट हैं। एक गोटो और संरचित प्रोग्रामिंग संस्करण दिखाया गया है।

उदाहरण 1
!प्रारंभ करना! जे ओआउआ! प्रारंभ में जाएं, रजिस्टर ए में पहला वर्ण लोड करें! !संपर्क करें! एल 0aub! रजिस्टर बी में अगली पंक्ति का पहला चार लोड करें! क्यूए-क्यूबी जी एक्सए के-एल गा 1यूज़ '! यदि ए> बी, लाइनों को स्विच करें और रजिस्टर जेड में ध्वज सेट करें! क्यूबुआ! बी को ए में लोड करें! एल जेड-। g -l @o/CONT/'! लूप बैक अगर बफर में एक और लाइन! qz g 0uz @o/START/' ! अगर पिछले पास पर स्विच किया गया था तो दोहराएं!

उदाहरण 2
0उज़! साफ दोहराना झंडा! <जे 0आउआ एल! पहले चार को रजिस्टर ए में लोड करें! <0औब! अगली पंक्ति का पहला वर्ण B में लोड करें! क्यूए-क्यूबी जी एक्सए के-एल जीए -1यूज़ '! अगर ए> बी, लाइनों को स्विच करें और ध्वज सेट करें! क्यूबुआ! बी को ए में लोड करें! एल .-z;> ! लूप बैक अगर बफर में एक और लाइन! क्यूजेड;> ! दोहराएँ अगर एक स्विच अंतिम पास बनाया गया था!

बाहरी संबंध

 * Dan Murphy's personal site
 * Peटीई Siemsen's टीईसीओ collection
 * Tom Almy's टीईसीओ page. Includes a टीईसीओ based on Peटीई Siemsen's टीईसीओC and दिसम्बरUS documentation.  There are MS-DOS, Windows (console), Linux, Mac OS X, and OS/2 versions.
 * Introduction to the टीईसीओ syntax
 * टीईसीओ Information


 * टीईसीओ Manual (OS/8)