TECO (Tee'koh [1] / / т я к oʊ / ), текстовый редактор & Корректор [2] [3] [4] является как символ-ориентированный текстовый редактор и язык программирования, [5] [6] который был разработан в 1962 году для использования на компьютерах Digital Equipment Corporation и с тех пор стал доступен для ПК и Unix . Дэн Мерфи разработал TECO, будучи студентом Массачусетского технологического института (MIT). [5]
Автор (ы) оригинала | Дэн Мерфи |
---|---|
Первый выпуск | 1962/63 |
Операционная система | OS / 8 , ITS , TOPS-10 , TOPS-20 , RT-11 , RSTS / E , RSX-11 , OpenVMS |
Тип | Текстовый редактор |
По словам Мерфи, первоначальной аббревиатурой было «Ленточный редактор и корректор», потому что « перфолента была единственным носителем для хранения исходного кода программы на нашем PDP-1. Не было жесткого диска, дискеты, магнитной ленты (магнитной ленты), или сеть ". [5] К тому времени, когда TECO стал доступен для общего использования, его название стало «Текстовый редактор и корректор» [4], поскольку даже версия PDP-1 к тому времени поддерживала другие носители. [5] Впоследствии он был модифицирован многими другими людьми [7] и является прямым предком Emacs , который изначально был реализован в макросах TECO. [8] [9] [10]
Описание
TECO - это не только редактор, но и интерпретируемый язык программирования для работы с текстом. Произвольные программы (называемые «макросами») для поиска и изменения текста придают ему огромные возможности. Однако, в отличие от регулярных выражений , язык был обязательным , хотя в некоторых версиях был оператор «или» при поиске строк.
У TECO на самом деле нет синтаксиса ; каждый символ в программе - это императивная команда, отправляемая соответствующей программе. Эта процедура может считывать дополнительные символы из потока программы (давая эффект строковых аргументов), изменять положение «счетчика программ» (давая эффект управляющих структур) или помещать значения в стек значений (давая эффект вложенных круглые скобки). Но нет ничего, что могло бы предотвратить такие операции, как переход в середину комментария, поскольку нет синтаксиса и нет синтаксического анализа.
TECO игнорирует регистр и пробелы (кроме табуляции , которая является командой вставки). [11]
В сатирическом эссе о компьютерном программировании « Настоящие программисты не используют Паскаль» предполагалось, что обычная игра для фанатов TECO - ввести свое имя в виде последовательности команд, а затем попытаться выяснить, что же произойдет. В том же эссе, описывающем TECO, была введена аббревиатура YAFIYGI , что означает «Вы просили об этом, вы получили это» (например, WYSIWYG ).
Влияние
Ричард Столлман «s Emacs редактор был первоначально реализован в TECO. TECO стал более широко использоваться после реализации PDP-6 Digital Equipment Corporation (DEC), разработанной в MIT Project MAC в 1964 году. Эта реализация непрерывно отображала отредактированный текст визуально на экране ЭЛТ и использовалась в качестве интерактивного онлайн-редактора. Более поздние версии TECO были способны управлять полноэкранным режимом на различных видеотерминалах DEC RS232, таких как VT52 или VT100 .
TECO был доступен для нескольких операционных систем и компьютеров, в том числе PDP-1 компьютер, тем PDP-8 ( в соответствии с OS / 8), [12] [13] Несовместимая Мультисобственность системы (ИТС) на PDP-6 и PDP-10 , а также TOPS-10 и TOPS-20 на PDP-10 . Версия TECO была предоставлена со всеми операционными системами DEC; версия, доступная для RT11, могла управлять графическим дисплеем GT40, в то время как версия, доступная для RSTS / E, была реализована как многопользовательская система времени выполнения и могла использоваться как полная операционная среда пользователя; пользователю фактически никогда не приходилось выходить из TECO. Макрос TECO VTEDIT (редактор видеотерминалов) обычно использовался в системах RSTS / E и VAX с терминалами, способными управлять прямым курсором (например, VT52 и VT100 ), чтобы обеспечить полноэкранный визуальный редактор, аналогичный по функциям разрабатываемому в то время Emacs .
TECO продолжает быть включен в OpenVMS через VSI и вызывается с помощью EDIT/TECO
команды. [14]
Потомок версии DEC, распространяемой для PDP-10, все еще доступен в Интернете вместе с несколькими частичными реализациями для среды MS-DOS / Microsoft Windows .
История
TECO был первоначально разработан в Массачусетском технологическом институте [15] примерно в 1963 году Даниэль Л. Мерфи для использования на двух PDP-1 компьютеров, принадлежащих к разным ведомствам, и размещается в здании Массачусетского технологического института 26. [16] На этих машинах, нормальный процесс развития вовлечен использование Friden Flexowriter для автономной подготовки исходного кода на непрерывной полосе перфоленты. Программисты крупных мэйнфреймов IBM обычно перфорировали свой исходный код на карточках , используя штампы клавиш, которые печатали удобочитаемые символы точечной матрицы в верхней части каждой карты одновременно с перфорацией каждого машиночитаемого символа. Таким образом, программисты IBM могли читать, вставлять, удалять и перемещать строки кода, физически манипулируя картами в колоде. Перфорированная бумажная лента не предлагала таких удобств, что привело к развитию онлайн-редактирования.
Один из первых редакторов PDP-1 назывался « Дорогая пишущая машинка ». Написанный Стивеном Д. Пинером, это был самый примитивный линейно-ориентированный редактор, в котором не было даже возможностей поиска и замены. Его название было выбрано как шутка в адрес более раннего, довольно раздутого редактора под названием « Колоссальная пишущая машинка ». Даже в те дни онлайн-редактирование могло сэкономить время в цикле отладки. Еще одна программа, написанная хакерами PDP-1, была похожа на Exicing Desk Calculator .
Первоначально заявленная цель TECO заключалась в более эффективном использовании PDP-1. Как предусмотрено в руководстве, вместо того, чтобы выполнять «дорогостоящее» редактирование, сидя за пультом , можно просто изучить ошибочный текст и подготовить «исправительную ленту», описывающую операции редактирования, которые необходимо выполнить с текстом. Можно было бы эффективно подавать исходную и корректирующую ленту в PDP-1 через его высокоскоростной (200 символов в секунду) считыватель. Запустив TECO, он сразу же пробивал отредактированную ленту своим высокоскоростным (60 символов в секунду) перфоратором. После этого можно было сразу приступить к загрузке и запуску ассемблера, не теряя времени на редактирование в режиме онлайн.
В то время сложные поисковые операции TECO были мотивированы тем фактом, что автономные распечатки Flexowriter не имели нумерации строк. Следовательно, места редактирования необходимо указывать по контексту, а не по номеру строки. Были включены различные циклические и условные конструкции (которые сделали TECO полным по Тьюрингу ), чтобы обеспечить достаточную описательную мощность для корректирующей ленты. Лаконичный синтаксис сводил к минимуму количество нажатий клавиш, необходимых для подготовки ленты с исправлениями.
Корректирующая лента была программой и требовала отладки, как и любую другую программу. Вскоре стали очевидны подводные камни даже самого простого глобального поиска и замены. На практике редактирование TECO выполнялось онлайн так же, как и в случае с дорогой пишущей машинкой (хотя TECO, безусловно, был более полнофункциональным редактором, чем дорогая пишущая машинка, поэтому редактирование с TECO было намного эффективнее). Исходная версия PDP-1 не имела экранного дисплея. Единственный способ наблюдать за состоянием текста в процессе редактирования - это вводить команды, которые заставляли бы текст (или его части) печататься на консольной пишущей машинке.
К 1964 году специальная версия TECO ( TECO-6 ) была реализована на PDP-6 в Массачусетском технологическом институте. Эта версия поддерживала визуальное редактирование с использованием экрана, который отображал содержимое буфера редактирования в реальном времени, обновляясь по мере его изменения. [17] Среди создателей TECO-6 были Ричард Гринблатт и Стюарт Нельсон . [18]
В Массачусетском технологическом институте, развитие TECO продолжил осенью 1971 г. [ править ] Карл Миккельсен был реализован режим редактирования в реальном времени , свободно на основе команд TECO-6 графических консольных, но работать с вновь установленным Datapoint текстовых дисплеев -3300 ЭЛТ. [19] Реализация буфера TECO, однако, была ужасно неэффективной для обработки функций вставки или удаления одного символа - редактирование занимало 100% PDP-10. При поддержке Ричарда Гринблатта летом 1972 года Карл заново реализовал буферную память TECO и преобразовал макросы в собственный код PDP-10. [ необходима цитата ] Поскольку вход в режим реального времени осуществлялся путем ввода cntl+ R, это было известно как режим control-R. В то же время Rici Liknaitski добавил макросы времени ввода ( cntl+ ]), которые работали, когда командная строка была прочитана, а не при выполнении. [ необходима цитата ] Макросы времени чтения сделали более полезными вспомогательные текстовые буферы TECO, называемые Q-регистрами. [ необходима цитата ] Карл расширил пространство имен Q-регистра. Благодаря макросам времени чтения, большому пространству имен Q-регистров и эффективным операциям с буфером была установлена сцена для привязки каждого ключа к макросу. [20] Эти макросы редактирования эволюционировали в Emacs . [21]
Реализация VMS имеет долгую историю - она началась как TECO-8, реализованная в сборке PDP-8. Этот код был переведен в сборку PDP-11 для создания TECO-11. TECO-11 использовался в ранних версиях VAX / VMS в режиме совместимости с PDP-11. Позже он был переведен из сборки PDP-11 в сборку VAX для производства TECO32. Затем TECO32 был преобразован с помощью утилит двоичного преобразования VEST и AEST, чтобы сделать его совместимым с OpenVMS на Alpha и Itanium соответственно. [22] [23] [24]
Команда OS / 8 MUNG
Команда OS / 8 CCL MUNG вызвала TECO для чтения и выполнения указанного макроса .TE TECO. Дополнительные параметры командной строки дали дополнительную адаптивность. [25]
Как инструмент программиста
Во время и вскоре после эры перфокарт существовали исходные программы, которые начинались как основанные на перфокартах . Комментарии часто представляли собой серию строк, включающих одиночные звездочки на полях и полные верхние / нижние строки звездочек. После того, как карты были переведены в онлайн, перестроить маргинальные звезды стало непростой задачей. TECO спешит на помощь ... [26] [27]
Как язык программирования
Неизвестность языка программирования TECO описана в следующей цитате из письма Эда Поста в Datamation, июль 1983 г., « Настоящие программисты не используют Паскаль »:
Было замечено, что последовательность команд TECO больше похожа на шум линии передачи, чем на читаемый текст. Одна из самых увлекательных игр с TECO - это ввести свое имя в командной строке и попытаться угадать, что он делает. Практически любая возможная опечатка во время разговора с TECO, вероятно, разрушит вашу программу или, что еще хуже, внесет тонкие и загадочные ошибки в некогда работающую подпрограмму. [28]
По словам Крейга Finseth, автор Ремесла редактирования текста , [29] TECO был описан как « только для записи » язык, это означает , что когда - то программа написана на TECO, крайне трудно понять , что он сделал без подходящего документация.
Несмотря на свой синтаксис, язык команд TECO был чрезвычайно мощным, и клоны все еще доступны для MS-DOS и для Unix .
Команды TECO представляют собой символы (включая управляющие символы), а подсказка представляет собой одну звездочку:
*
Клавиша escape отображается в виде знака доллара, ее нажатие после того, как обозначает конец команды, требующей аргумента, и двойное нажатие инициирует выполнение введенных команд:
* $$
Пример кода
Дан файл hello.c со следующим содержимым:
int main ( int argc , char ** argv ) { printf ( "Привет, мир! \ n " ); возврат 0 ; }
можно использовать следующий сеанс TECO (учитывая, что подсказка - это «*», а «$» - это то, как отображается ESC), чтобы изменить «Hello» на «Goodbye»:
* EBhello.c $$ Открыть файл для чтения / записи с резервным копированием* P $$ Читать на первой странице* SHello $ 0TT $$ Найдите "Hello" и распечатайте строку (указатель помещается после искомой строки) printf ("Привет, мир! \ n"); Линия* -5DIGoodbye $ 0TT $$ Удалить пять символов перед указателем (например, «Hello»), вставить «Goodbye» и распечатать строку printf ("Прощай, мир! \ n"); Обновленная линия* EX $$ Скопируйте оставшуюся часть файла и выйдите.
Эти две программы-примеры представляют собой простой вид обмена текущим текстовым буфером, основанный на 1-м символе каждой строки, взятом из Руководства пользователя PDP-11 TECO. Показаны версии « goto » и « структурированная ».
Пример 1
!НАЧАЛО! j 0aua! перейти к началу, загрузить 1-й символ в регистр A!! CONT! l 0aub! загрузить первый символ следующей строки в регистр B!qa-qb "g xa k -l ga 1uz '! если A> B, переключить строки и установить флаг в регистре Z!qbua! загрузить B в A!l z -. "g -l @ o / CONT / '! вернуться назад, если в буфере есть другая строка!qz "g 0uz @ o / START / '! повторить, если переключение было выполнено на последнем проходе!
Пример 2
0uz! снять флаг повтора!загрузить 1-й символ в регистр A! <0aub! загрузить 1-й символ следующей строки в B!qa-qb "g xa k -l ga -1uz '! если A> B, переключить строки и установить флаг!qbua! загрузить B в A!l.-z;>! зациклиться, если в буфере есть другая строкаqz;>! повторить, если переключение было сделано на последнем проходе!
Заметки
- ^ "DEC Timesharing". DEC Professional .
- ^ "Мощный и сложный текстовый редактор TECO (Текстовый редактор и корректор) ... Белл, К. Гордон; Мадж, Дж. Крейг; Макнамара, Джон Э. (2014). Компьютерная инженерия: взгляд DEC на проектирование аппаратных систем . ISBN 1483221105.
- ^ Название на обложке руководства DEC-10-UTECA-AD от DEC - «Введение в TECO (текстовый редактор и корректор)».
- ^ а б Руководство по небольшому компьютеру PDP 8 / e . 1970. С. 2–30.
- ^ а б в г Мерфи, Дэн (октябрь – декабрь 2009 г.). «Истоки TECO» (PDF) . IEEE Annals of the History of Computing . 31 (4): 110–115. DOI : 10,1109 / mahc.2009.127 .
- ^ со ссылкой на Comm. ACM (см. том 19, № 12, 1976 г.)
- ^ «ТЕКО» . Файл жаргона . v.4.4.7. ibiblio .
- ^ «История EMACS» .
- ^ Марио Бьяджоли; Питер Язи; Марта Вудманси (2015). Создание и уничтожение интеллектуальной собственности: творческое производство . ISBN 022617249X.
EMACS изначально был построен на базе TECO
- ^ Харли Хан (2016). Полевое руководство по Emacs Харли Хана . п. 9. ISBN 1484217039.
- ^ «Карманный справочник TECO» .
text $, Вставляет указанный текст, которому предшествует табуляция. - ^ «Стандартный текстовый редактор и корректор TECO» .
Стандартный TECO. Текстовый редактор и корректор для. VAX, PDP-11, PDP-10 и. PDP-8.
- ^ "Часто задаваемые вопросы DEC PDP-8 Дуга Джонса" .
Какие языки программирования поддерживались PDP-8? ... Текстовый редактор TECO был включен в стандартные дистрибутивы OS / 8.
- ^ "Словарь VSI OpenVMS DCL: AZ" (PDF) . vmssoftware.com . Апрель 2020 . Проверено 13 сентября 2020 .
- ^ «Сводка команд TECO» . Из коллекции бумажных лент MIT PDP-1 в Музее истории компьютеров. Архивировано из оригинала на 2008-01-18 . Проверено 12 сентября 2007 .
- ^ Мерфи, Дэн (2009). «Истоки TECO» (PDF) . IEEE Annals of the History of Computing . 31 (4): 110–115.
- ^ Самсон, Питер (23 июля 1965 г.). "ПДП-6 ТЕКО" (PDF) . Меморандум МАК-М-250. п. 9 . Проверено 12 сентября 2007 .
- ^ Эдвардс, Дэниел Дж. (29 октября 1964 г.). «ТЕКО 6» . Меморандум MAC-M-191. п. 2. Архивировано из оригинала на 2007-09-28 . Проверено 12 сентября 2007 .
- ^ «Для пользователей компьютеров с разделением времени: Datapoint 3300» (PDF) . Computer Terminal Corporation . Проверено 27 октября 2009 .
- ^ «Теко редактор» . c2.com . 16 августа 2010 . Проверено 17 августа 2013 .
- ^ «Введение в редактор EMACS» (PDF) . Массачусетский технологический институт. Январь 1978 . Проверено 15 ноября 2016 .
- ^ "Tecox Readme" . github.com . 2019-06-10 . Проверено 13 сентября 2020 .
- ^ «Режим совместимости VAX PDP11» . comp.os.vms.narkive.com . 2019-08-06 . Проверено 13 сентября 2020 .
- ^ «На пенсии Энди Гольдштейн» . comp.os.vms.narkive.com . 2009-06-12 . Проверено 13 сентября 2020 .
- ^ «Справочное руководство компании TECO по цифровому оборудованию» (PDF) .
- ^ Мартин Принг (июль 1982 г.), Почему Теко
- ↑ Он написал это через несколько лет после того, как его коллега Карл Б. Марбах стал редактором периодического издания, ориентированного на DEC, и написал «Почему Teco?». Оба материала были опубликованы вместе.
- ^ Пост, Эд (июль 1983 г.). «Настоящие программисты не используют PASCAL» . Датамация . 29 (7): 263–265.
- ^ Финсет, Крейг А. (2006). Ремесло редактирования текста . Lulu.com . ISBN 978-1-4116-8297-9.
Рекомендации
- Карманный справочник TECO . Корпорация цифрового оборудования . 1978. Архивировано из оригинала на 2008-02-07 . Проверено 24 мая 2012 .
- Мерфи, Дэн (2009). «Истоки TECO» (PDF) . IEEE Annals of the History of Computing . 31 (4): 110–115.
- Исторический архив ТЕКО . 1990 г.
Внешние ссылки
- Персональный сайт Дэна Мерфи
- Коллекция TECO Пита Симсена
- Страница TECO Тома Алми. Включает TECO на основе документации TECOC и DECUS Пита Симсена. Существуют версии MS-DOS, Windows (консоль), Linux, Mac OS X и OS / 2.
- Введение в синтаксис TECO
- Информация TECO
Эта статья частично основана на файле жаргона , который находится в общественном достоянии.
- Руководство TECO (OS / 8)