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

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

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

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

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

प्रभाव
EMACS संपादक मूल रूप से डेविड ए. मून और गाइ एल. स्टील जूनियर द्वारा शुरू किया गया था, जिसे TECO में संपादक MACROS के एक सेट के रूप में लागू किया गया था। 1964 में MIT के प्रोजेक्ट मैक में विकसित एक डिजिटल इक्विपमेंट कॉरपोरेशन (DEC) PDP-6 कार्यान्वयन के बाद TECO का अधिक व्यापक रूप से उपयोग किया जाने लगा। इस कार्यान्वयन ने कैथोड रे ट्यूब स्क्रीन पर दृश्य रूप से संपादित पाठ को लगातार प्रदर्शित किया, और एक इंटरैक्टिव ऑनलाइन संपादक के रूप में उपयोग किया गया। TECO के बाद के संस्करण विभिन्न DEC RS-232 वीडियो टर्मिनलों जैसे VT52 या VT100 पर फुल-स्क्रीन मोड चलाने में सक्षम थे।

पीडीपी-1 कंप्यूटर, पीडीपी-8 (ओएस/8 के तहत), सहित कई ऑपरेटिंग सिस्टम और कंप्यूटरों के लिए टीईसीओ उपलब्ध था। PDP-6 और PDP-10 पर असंगत टाइमशेयरिंग सिस्टम (ITS), और PDP-10 पर TOPS-10 और TOPS-20। टीईसीओ का एक संस्करण सभी डीईसी ऑपरेटिंग सिस्टम के साथ प्रदान किया गया था; RT11 के लिए उपलब्ध संस्करण GT40 ग्राफिक्स डिस्प्ले को चलाने में सक्षम था जबकि RSTS/E के लिए उपलब्ध संस्करण को बहु-उपयोगकर्ता रन-टाइम सिस्टम के रूप में लागू किया गया था और इसे उपयोगकर्ता के पूर्ण ऑपरेटिंग वातावरण के रूप में उपयोग किया जा सकता था; उपयोगकर्ता को वास्तव में कभी भी टीईसीओ से बाहर नहीं निकलना पड़ा। VTEDIT (वीडियो टर्मिनल एडिटर) TECO मैक्रो का उपयोग आमतौर पर RSTS/E और VAX सिस्टम पर किया जाता था, जिसमें डायरेक्ट-कर्सर कंट्रोल (जैसे VT52 और VT100) में सक्षम टर्मिनल होते थे, जो समसामयिक रूप से विकसित Emacs के फंक्शन में समान फुल-स्क्रीन विज़ुअल एडिटर प्रदान करते थे।

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

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

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

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

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

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

1964 तक, TECO (TECO-6) का एक विशेष संस्करण MIT में PDP-6 पर लागू किया गया था। उस संस्करण ने स्क्रीन डिस्प्ले का उपयोग करके दृश्य संपादन का समर्थन किया, जो वास्तविक समय में संपादन बफ़र की सामग्री को दिखाता है, जैसे-जैसे यह बदलता है, अपडेट होता है। TECO-6 के रचनाकारों में रिचर्ड ग्रीनब्लाट (प्रोग्रामर) और स्टीवर्ट नेल्सन (हैकर) थे। MIT में, TECO का विकास 1971 के पतन में जारी रहा। कार्ल मिकेल्सन ने TECO-6 ग्राफ़िक कंसोल कमांड के आधार पर एक रीयल-टाइम संपादन मोड लागू किया था, लेकिन नए स्थापित डेटाप्वाइंट-3300 CRT टेक्स्ट डिस्प्ले के साथ काम कर रहा था। टीईसीओ बफर कार्यान्वयन, हालांकि, एकल वर्ण डालने या कार्यों को हटाने के प्रसंस्करण के लिए बहुत अक्षम था - पीडीपी -10 का 100% संपादन किया गया। रिचर्ड ग्रीनब्लाट (प्रोग्रामर) के समर्थन से, 1972 की गर्मियों में कार्ल ने टीईसीओ बफर स्टोरेज को फिर से लागू किया और मैक्रोज़ को मूल पीडीपी-10 कोड के रूप में सुधार दिया। रीयल-टाइम मोड में प्रवेश के रूप में टाइप कर रहा था, इसे कंट्रोल-आर मोड के रूप में जाना जाता था। उसी समय, रिक्की लिकनित्सकी ने इनपुट-टाइम मैक्रोज़ , जिसे कमांड स्ट्रिंग के रूप में संचालित किया गया था, निष्पादित होने के बजाय पढ़ा गया था। रीड-टाइम मैक्रोज़ ने TECO सहायक पाठ बफ़र्स, जिन्हें Q-रजिस्टर कहा जाता है, को अधिक उपयोगी बना दिया है। कार्ल ने क्यू-रजिस्टर नाम स्थान का विस्तार किया। रीड-टाइम मैक्रोज़ के साथ, एक बड़ा क्यू-रजिस्टर नाम स्थान, और कुशल बफर ऑपरेशंस, प्रत्येक कुंजी को मैक्रो से बाँधने के लिए चरण निर्धारित किया गया था। ये एडिट मैक्रोज़ Emacs में विकसित हुए। VMS कार्यान्वयन का एक लंबा इतिहास रहा है - यह TECO-8 के रूप में शुरू हुआ, जिसे PDP-8 असेंबली में कार्यान्वित किया गया। TECO-11 का उत्पादन करने के लिए इस कोड का PDP-11 असेंबली में अनुवाद किया गया था। PDP-11 अनुकूलता मोड में VAX/VMS के शुरुआती संस्करणों में TECO-11 का उपयोग किया गया था। इसे बाद में TECO32 का उत्पादन करने के लिए PDP-11 असेंबली से VAX असेंबली में अनुवादित किया गया। TECO32 को क्रमशः अल्फा और इटेनियम पर OpenVMS के साथ संगत बनाने के लिए VEST और AEST बाइनरी अनुवाद उपयोगिताओं के साथ परिवर्तित किया गया था।

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

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

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

"It has been observed that a TECO command sequence more closely resembles transmission line noise than readable text. One of the more entertaining games to play with TECO is to type your name in as a command line and try to guess what it does. Just about any possible typing error while talking with TECO will probably destroy your program, or even worse - introduce subtle and mysterious bugs in a once working subroutine."

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

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

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

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

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

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

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

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

बाहरी संबंध

 * Dan Murphy's personal site
 * Pete Siemsen's TECO collection
 * Tom Almy's TECO page. Includes a TECO based on Pete Siemsen's TECOC and DECUS documentation.  There are MS-DOS, Windows (console), Linux, Mac OS X, and OS/2 versions.
 * Introduction to the TECO syntax
 * TECO Information


 * TECO Manual (OS/8)