تيكو (محرر نصوص)
التاريخ

تم تطوير محرر TECO في البداية في معهد ماساتشوستس للتقنية  حوالي عام 1963 عن طريق دانيال مورفي Daniel L. Murphy من أجل استخدامه على حواسب [PDP-1 ]، والتي تنتمي إلي أقسام مختلفة، موضوعة في المبنى رقم 26 في معهد ماساتشوستس للتقنية. وعلى هذه الآلات، اشتملت عملية التطوير العادية على استخدام [آلة طباعة Friden Flexowriter] لإعداد كود مصدري غير متصل على قطاع مستمر من شريط ورقي مثقب. فقد ثقب مبرمجو النظم الكبيرة لشركة أي بي إم [IBM mainframes] كود مصدري الخاص بهم على [بطاقات cards]، باستخدام [مثقاب key punches] والتي طبعت حروف [مصفوفة نقطية dot-matrix] يمكن لبشر قراءتها على قمة كل بطاقة في نفس الوقت الذي تثقب فيه كل حرف يمكن للآلة قراءته. وبالتالي استطاع مبرمجو أي بي إم أن يقرؤوا ويضعوا ويمحوا ويحركوا سطور الكود عن طريق معالجة البطاقات ماديا في وحدة الأشرطة. والشريط الورقي المثقب لم يقدم تلك الخصائص، والضرورة كانت أم التحرير المتصل.
وكان هناك محرر مبكر لحاسب PDP-1 يسمى [برنامج Expensive Typewriter]. ومن خلال كتابته عن طريق ستيفين دي بينر Stephen D. Piner، فقد كان أول محرر يمكن تخيله متوجه صوب السطر، مع افتقاره لقدرات البحث والاستبدال. وتم اختيار اسمه على أنه بوك مصغر للمحرر الضخم المبكر الذي يسمى [Colossal Typewriter]. وحتى في هذه الأيام، استطاع التحرير المتصل أن يوفر وقتا في دورة تصحيح الأخطاء. وهناك برنامج أخر كتبه [PDP-1 hackers] وهو [برنامج Expensive Desk Calculator]، على منوال مشابه.
والغرض الأصلي المذكور لمحرر TECO هو الاستفادة من الحاسب PDP-1. وكما هو متصور في الدليل، فبدلا من القيام بالتحرير بطريقة باهظة من خلال الجلوس عند لوحة طرفية للتحكم، فيمكن للمرء فحص النص الخطأ ببساطة وإعداد «شريط تصحيح» يصف عمليات التحرير التي ينبغي القيام بها في النص. ويمكن للشخص تغذية الشريط المصدر بكفاءة وشريط التصحيح في حاسب PDP-1 عبر قارئه عالي السرعة (200 حرف في الثانية). ومن خلال تشغيل TECO، فسوف يقوم بثقب شريط محرر بسرعته العالية (60 حرفا في الثانية) في الثقب. وبعد ذلك يمكن للشخص أن يستمر في التعبئة والتجميع بدون تضييع وقت في التحرير المتصل.
وبعد ذلك تم تحفيز عمليات البحث المعقدة للمحرر TECO من خلال الحقيقة التي تقول أن مطبوعات آلة الطباعة غير المتصلة لم تكن مرقمة بالسطر، وبالتالي احتاجت مواقع التحرير إلي أن تكون محددة من خلال السياق وليس من خلال رقم السطر. وقد تم إدراج العديد من المفاهيم الحلقية والشرطية (التي جعلت TECO آلة تورنغ) من أجل توفير قوة وصفية كافية لشريط التصحيح. وقد قلل النحو المحكم من عدد ضربات المفاتيح اللازمة لإعداد شريط التصحيح.
وكان شريط التصحيح هو برنامج، وقد تطلب تصحيحا مثل أي برنامج أخر. وكانت مخاطر البحث والاستبدال الشامل واضحة. ومن الناحية العملية، تم القيام بتحرير TECO متصلا تمام كما كان مع برنامج Expensive Typewriter (على الرغم من أن TECO كان محررا أكثر كمالا من Expensive Typewriter، وبالتالي كان التحرير أكثر كفاءة مع TECO). والنسخة الأصلية من حاسب PDP-1 لم تكن لها شاشة عرض. والطريقة الوحيدة لمراقبة حالة النص أثناء عملية التحرير كانت كتابة الأوامر التي يمكن أن تجعل النص (أو أجزاء منه) يكتب على طابعة العارضة.
وفي عام 1964، تم تنفيذ نسخة خاصة من TECO(TECO-6) على جهاز [PDP-6] بمعهد ماسيشوتس للتقنية. وقد دعمت تلك النسخة التحرير المرئي، أي استخدمت شاشة عرض توضح محتويات مخزن التحرير في الوقت الحقيقي، وتحديثه كلما تغير. ومن بين مبتكري TECO-6 كان [ريتشارد جرين بلات Richard Greenblatt] و[ستيوارت نيلسون Stewart Nelson].
وفي معهد ماسيشوتس للتقنية، استمر تطوير محرر TECO في خريف 1971. وقد نفذ Carl Mikkelsen طريقة تحرير في الوقت الحقيقي بناء على أوامر عارضة التحكم البيانية في TECO-6، لكنها تعمل مع شاشة عرض النص في حاسب [Datapoint-3300 CRT]. ومع هذا، فتنفيذ مخزن محررTECO كان غير كفء بشكل فظيع في معالجة وضع حرف واحد أو محو وظائف- فقد استهلك التحرير 100% من جهاز PDP-10. ومع دعم المبرمج [Richard Greenblatt ]، قام Carl في صيف 1972 بإعادة تنفيذ مخزن TECO وأعاد تشكيل الماكرو على أنه كود PDP-10 أصلي. ولأن إدخال طريقة الوقت الحقيقي من خلال كتابة <cont> يمين، فكان هذا معروفا بطريقة كنترول يمين. في نفس الوقت، أضاف Rici Liknaitski وحدات ماكرو لإدخال الوقت (<contl>]) والتي عملت عندما تمت قراءة سلسلة الأوامر وليس عند تنفيذها.  وقد جعلت وحدات ماكرو زمن القراءة مخزن النص المساعد لمحرر TECO والتي تسمى مسجلات Q أكثر فائدة.وقد وسع Carl مكان اسم مسجل Q. فمع وحدات ماكرو وقت القراءة، ومكان الاسم الضخم لمسجل Q، وعمليات التخزين الفعالة، تم ضبط الوضع لربط كل مفتاح بوحدة ماكرو. وهذه الوحدات التحريرية قد تحولت إلي إيماكس.