ТЕКО (текстовый редактор)
Оригинальный автор(ы) | И Мерфи |
---|---|
Первоначальный выпуск | 1962/63 |
Операционная система | OS/8 , ITS , TOPS-10 , TOPS-20 , RT-11 , RSTS/E , RSX-11 , OpenVMS , Multics |
Тип | Текстовый редактор |
ТЕКО ( / ˈtiːkoʊ iːkoʊ/ [1] ), сокращение от «Текстовый редактор и корректор» , [2] [3] [4] является одновременно символьно-ориентированным текстовым редактором и языком программирования , [5] [6] который был разработан в 1962 году для использования на компьютерах Digital Equipment Corporation и с тех пор стал доступен на ПК и Unix . Дэн Мерфи разработал TECO, будучи студентом Массачусетского технологического института (MIT). [5]
По словам Мерфи, первоначальной аббревиатурой было «Редактор ленты и корректор» , потому что « перфолента была единственным носителем для хранения исходного кода программы на нашем PDP-1. Не было жесткого диска, дискеты, магнитной ленты (magtape) или сети. ." [5] К тому времени, когда TECO стал доступен для общего использования, название стало «Текстовый редактор и корректор». [4] поскольку даже версия PDP-1 к тому времени поддержали другие СМИ. [5] Впоследствии он был изменен многими другими людьми. [7] и является прямым предком Emacs , который изначально был реализован в макросах TECO. [8] [9] [10]
Описание
[ редактировать ]TECO — это не только редактор, но и интерпретируемый язык программирования для работы с текстом. Произвольные программы (называемые «макросами») для поиска и изменения текста придают ему огромные возможности. в отличие от регулярных выражений Однако этот язык был императивным , хотя в некоторых версиях для поиска строк использовался оператор «или».
В TECO на самом деле нет синтаксиса ; каждый символ в программе является императивной командой, отправляемой соответствующей процедуре. Эта процедура может считывать дополнительные символы из программного потока (давая эффект строковых аргументов), изменять положение «программного счетчика» (давая эффект управляющих структур) или помещать значения в стек значений (давая эффект вложенных скобки). Но нет ничего, что могло бы помешать таким операциям, как переход в середину комментария, поскольку здесь нет синтаксиса и синтаксического анализа.
TECO игнорирует регистр и пробелы (кроме табуляции , которая является командой вставки). [11]
В сатирическом эссе о компьютерном программировании « Настоящие программисты не используют Паскаль » предполагалось, что обычная игра для фанатов TECO заключалась в том, чтобы ввести свое имя в виде последовательности команд, а затем попытаться выяснить, что произойдет. В том же эссе при описании TECO была использована аббревиатура YAFIYGI , означающая «Вы просили, вы получили» (в отличие от WYSIWYG ).
Влияние
[ редактировать ]Редактор EMACS, первоначально созданный Дэвидом А. Муном и Гаем Л. Стилом-младшим, был реализован в TECO как набор редактора MACroS. TECO стал более широко использоваться после Digital Equipment Corporation (DEC), реализации PDP-6 разработанной в рамках проекта MAC Массачусетского технологического института в 1964 году. Эта реализация постоянно отображала отредактированный текст визуально на ЭЛТ- экране и использовалась в качестве интерактивного онлайн-редактора. Более поздние версии TECO были способны работать в полноэкранном режиме на различных DEC RS-232 видеотерминалах , таких как VT52 или VT100 .
TECO был доступен для нескольких операционных систем и компьютеров, включая компьютер PDP-1 , PDP-8 (под OS / 8), [12] [13] Несовместимая система разделения времени (ITS) на 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] На этих машинах обычный процесс разработки включал использование Flexowriter Friden для подготовки исходного кода в автономном режиме на непрерывной полосе перфоленты. Программисты больших мэйнфреймов IBM обычно наносили свой исходный код на карты , используя удары клавиш , которые печатали удобочитаемые точечно-матричные символы в верхней части каждой карты одновременно с перфорацией каждого машиночитаемого символа. Таким образом, программисты IBM могли читать, вставлять, удалять и перемещать строки кода, физически манипулируя картами в колоде. Перфолента не давала таких удобств, что привело к развитию онлайн-редактирования.
Один из первых редакторов PDP-1 назывался « Дорогая пишущая машинка ». Написанный Стивеном Д. Пайнером, это был самый элементарный построчно-ориентированный редактор, который только можно себе представить, в котором не было даже возможностей поиска и замены. Его название было выбрано в качестве насмешки над более ранним, довольно раздутым редактором под названием « Колоссальная пишущая машинка ». Даже в те времена онлайн-редактирование могло сэкономить время в цикле отладки. PDP-1, Еще одной программой, написанной хакерами была Expensive Desk Calculator , выполненная в аналогичном ключе.
Первоначальной заявленной целью TECO было более эффективное использование PDP-1. Как предусмотрено в руководстве, вместо того, чтобы выполнять «дорогостоящее» редактирование, сидя за консолью , можно просто изучить ошибочный текст и подготовить «исправляющую ленту», описывающую операции редактирования, которые необходимо выполнить над текстом. Исходную ленту и корректирующую ленту можно было бы эффективно подавать в PDP-1 через высокоскоростной (200 символов в секунду) считыватель. Запустив TECO, он сразу же протыкал отредактированную ленту своей высокоскоростной (60 символов в секунду) перфорацией. После этого можно было сразу же приступить к загрузке и запуску ассемблера, не тратя времени на онлайн-редактирование.
Сложные поисковые операции TECO были мотивированы тем фактом, что автономные распечатки Flexowriter не имели нумерации строк. Поэтому места редактирования необходимо было указывать по контексту, а не по номеру строки. Различные циклические и условные конструкции (которые сделали TECO полным по Тьюрингу ) были включены, чтобы обеспечить достаточную описательную силу корректирующей ленты. Краткий синтаксис свел к минимуму количество нажатий клавиш, необходимых для подготовки корректирующей ленты.
Корректирующая лента была программой и требовала отладки, как и любая другая программа. Вскоре стали очевидными подводные камни даже простейшего глобального поиска и замены. На практике редактирование TECO выполнялось онлайн, как и в случае с Expensive Typewriter (хотя TECO, безусловно, был более функциональным редактором, чем Expensive Typewriter, поэтому редактирование с TECO было гораздо более эффективным). Исходная версия PDP-1 не имела экрана. Единственным способом наблюдать за состоянием текста в процессе редактирования было вводить команды, которые заставляли бы текст (или его части) набираться на консольной пишущей машинке.
К 1964 году специальная версия TECO ( TECO-6 ) была реализована на PDP-6 в Массачусетском технологическом институте. Эта версия поддерживала визуальное редактирование с использованием экрана, на котором в реальном времени отображалось содержимое буфера редактирования, обновляющееся по мере его изменения. [17] Среди создателей ТЕКО-6 были Ричард Гринблатт и Стюарт Нельсон . [18]
В Массачусетском технологическом институте разработка TECO продолжилась осенью 1971 года. [ нужна ссылка ] Карл Миккельсен реализовал режим редактирования в реальном времени, основанный на командах графической консоли TECO-6, но работающий с недавно установленными текстовыми дисплеями Datapoint -3300 CRT. [19] Однако реализация буфера TECO была крайне неэффективна для обработки функций вставки или удаления одного символа — редактирование занимало 100% ресурсов PDP-10. При поддержке Ричарда Гринблатта летом 1972 года Карл заново реализовал буферное хранилище TECO и преобразовал макросы в собственный код PDP-10. [ нужна ссылка ] Поскольку вход в режим реального времени осуществлялся путем ввода cntl+ R, это было известно как режим Control-R. В то же время Ричи Ликнаицки добавил макросы времени ввода ( 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]
Как инструмент программиста
[ редактировать ]В течение и вскоре после эпохи перфокарт существовали исходные программы, которые начинались как основанные на перфокартах . Комментарии часто представляли собой серию строк, состоящих из одиночных звездочек на полях и полных звездочек сверху/снизу. После того, как карты были перенесены в Интернет, перегруппировка маргинальных звезд стала сложной задачей. ТЕКО спешит на помощь... [26] [27]
Как язык программирования
[ редактировать ]Неизвестность языка программирования TECO описана в следующей цитате из « Настоящие программисты не используют Паскаль письма Эда Поста в Datamation » от июля 1983 года:
Было замечено, что последовательность команд TECO больше напоминает шум линии передачи, чем читаемый текст. Одна из самых увлекательных игр с TECO — это ввести свое имя в командной строке и попытаться угадать, что она делает. Любая возможная ошибка ввода во время разговора с TECO, вероятно, разрушит вашу программу или, что еще хуже, внесет тонкие и загадочные ошибки в когда-то работающую подпрограмму. [28]
По словам Крейга Финсета, автора книги «Мастерство редактирования текста» , [29] TECO описывается как язык «только для записи», подразумевая, что после того, как программа написана на TECO, чрезвычайно трудно понять, что она делает, без соответствующей документации.
Несмотря на свой синтаксис, командный язык TECO был чрезвычайно мощным, и его клоны до сих пор доступны для MS-DOS и Unix .
Команды TECO представляют собой символы (включая управляющие символы), а подсказка представляет собой одну звездочку:
*
Клавиша escape отображается в виде знака доллара. Ее нажатие указывает на конец команды, требующей аргумента, а двукратное нажатие запускает выполнение введенных команд:
*$$
Пример кода
[ редактировать ]Дан файл hello.c со следующим содержимым:
int main(int argc, char **argv)
{
printf("Hello world!\n");
return 0;
}
можно использовать следующий сеанс TECO (обратив внимание, что приглашение «*» и «$» — это то, как отображается ESC), чтобы изменить «Привет» на «До свидания»:
*EBhello.c$$ Open file for read/write with backup
*P$$ Read in the first page
*SHello$0TT$$ Search for "Hello" and print the line (pointer placed after searched string)
printf("Hello world!\n"); The line
*-5DIGoodbye$0TT$$ Delete five characters before pointer (ie "Hello"), insert "Goodbye", and print the line
printf("Goodbye world!\n"); The updated line
*EX$$ Copy the remainder of the file and exit
Эти два примера программ представляют собой простую разновидность текущего текстового буфера, основанную на первом символе каждой строки, взятую из Руководства пользователя PDP-11 TECO. [12] « переход » и « структурированная Показаны » версия. Во второй программе изначально была ошибка, которая не позволяла завершить работу программы, и вместо этого здесь используется исправленная версия.
Пример 1
[ редактировать ]!START! j 0aua ! jump to beginning, load 1st char in register A ! !CONT! l 0aub ! load first char of next line in register B ! qa-qb"g xa k -l ga 1uz ' ! if A>B, switch lines and set flag in register Z ! qbua ! load B into A ! l z-."g -l @o/CONT/ ' ! loop back if another line in buffer ! qz"g 0uz @o/START/ ' ! repeat if a switch was made on last pass !
Пример 2
[ редактировать ]<0uz ! clear repeat flag ! j 0aua l ! load 1st char into register A ! <0aub ! load 1st char of next line into B ! qa-qb"g xa k -l ga -1uz ' ! if A>B, switch lines and set flag ! qbua ! load B into A ! l .-z;> ! loop back if another line in buffer ! qz;> ! repeat if a switch was made last pass !
Примечания
[ редактировать ]- ^ «Разделение времени DEC». Профессионал DEC .
Ти'ко
- ^ "Мощный и сложный текстовый редактор TECO (Текстовый редактор и корректор)... Белл, К. Гордон; Мадж, Дж. Крейг; Макнамара, Джон Э. (2014). Компьютерная инженерия: взгляд DEC на проектирование аппаратных систем . Цифровая пресса. ISBN 978-1483221106 .
- ^ Название на обложке руководства DEC-10-UTECA-AD от DEC: «Введение в TECO (текстовый редактор и корректор)».
- ^ Перейти обратно: а б Небольшой компьютерный справочник PDP 8/e . 1970. стр. 2–30.
- ^ Перейти обратно: а б с д Мерфи, Дэн (октябрь – декабрь 2009 г.). «Начало ТЕКО» (PDF) . IEEE Анналы истории вычислений . 31 (4): 110–115. дои : 10.1109/mahc.2009.127 . S2CID 18805607 .
- ^ со ссылкой на сообщение. АКМ (см. т. 19, № 12, 1976 г.)
- ^ «ТЕКО» . Файл жаргона . v.4.4.7. ибиблио .
- ^ «История EMACS» .
- ^ Марио Бьяджоли; Питер Яси; Марта Вудманси (2015). Создание и уничтожение интеллектуальной собственности: творческое производство . ISBN 022617249X .
EMACS изначально была построена на базе TECO.
- ^ Харли Хан (2016). Полевое руководство по Emacs Харли Хана . Апресс. п. 9. ISBN 978-1484217030 .
- ^ «Карманный справочник ТЕКО» .
<tab>text$, вставляет указанный текст, которому предшествует табуляция.
- ^ Перейти обратно: а б «Стандартный текстовый редактор и корректор TECO» .
Стандартное ТЕКО. Текстовый редактор и корректор. ВАКС, ПДП-11, ПДП-10 и. ПДП-8.
- ^ «Часто задаваемые вопросы о DEC PDP-8 Дуга Джонса» .
Какие языки программирования поддерживались PDP-8? ... TECO, текстовый редактор, был включен в стандартные дистрибутивы OS/8.
- ^ «Словарь VSI OpenVMS DCL: AZ» (PDF) . vmssoftware.com . Апрель 2020 года . Проверено 13 сентября 2020 г.
- ^ «Сводка команд TECO» . Из коллекции бумажных лент MIT PDP-1 в Музее истории компьютеров. Архивировано из оригинала 18 января 2008 г. Проверено 12 сентября 2007 г.
- ^ Мерфи, Дэн (2009). «Начало ТЕКО» (PDF) . IEEE Анналы истории вычислений . 31 (4): 110–115. дои : 10.1109/MAHC.2009.127 . S2CID 18805607 .
- ^ Самсон, Питер (23 июля 1965 г.). «ПДП-6 ТЕКО» . Меморандум МАК-М-250. п. 9. HDL : 1721,1/5917 . Проверено 12 сентября 2007 г.
- ^ Эдвардс, Дэниел Дж. (29 октября 1964 г.). «ТЕКО 6» . Меморандум MAC-M-191. п. 2. Архивировано из оригинала 28 сентября 2007 г. Проверено 12 сентября 2007 г.
- ^ «Для пользователей компьютеров с разделением времени: Datapoint 3300» (PDF) . Корпорация компьютерных терминалов . Проверено 27 октября 2009 г.
- ^ «Редактор Теко» . c2.com . 16 августа 2010 года . Проверено 17 августа 2013 г.
- ^ «Введение в редактор EMACS» (PDF) . Массачусетский технологический институт. Январь 1978 г. Архивировано из оригинала (PDF) 27 октября 2020 г. Проверено 15 ноября 2016 г.
- ^ «Readme для tecox» . github.com . 10.06.2019 . Проверено 13 сентября 2020 г.
- ^ «Режим совместимости VAX PDP11» . comp.os.vms.narkive.com . 06.08.2019 . Проверено 13 сентября 2020 г.
- ^ «Отставка Энди Гольдштейна» . comp.os.vms.narkive.com . 12 июня 2009 г. Проверено 13 сентября 2020 г.
- ^ «Справочное руководство по цифровому оборудованию TECO» (PDF) .
- ^ Мартин Принг (июль 1982 г.), Почему Teco
- ↑ Он написал это спустя годы после того, как его коллега Карл Б. Марбах стал редактором периодического издания, ориентированного на DEC, и написал «Почему Teco?». Оба материала были опубликованы вместе.
- ^ Пост, Эд (июль 1983 г.). «Настоящие программисты не используют PASCAL» . Датаматизация . 29 (7): 263–265.
- ^ Финсет, Крейг А. (2006). Мастерство редактирования текста . Лулу.com . ISBN 978-1-4116-8297-9 .
Ссылки
[ редактировать ]- Карманный справочник TECO . Корпорация цифрового оборудования . 1978. Архивировано из оригинала 7 февраля 2008 г. Проверено 24 мая 2012 г.
- Мерфи, Дэн (2009). «Начало ТЕКО» (PDF) . IEEE Анналы истории вычислений . 31 (4): 110–115. дои : 10.1109/MAHC.2009.127 . S2CID 18805607 .
- Исторический архив ТЕКО . 1990.
Внешние ссылки
[ редактировать ]- Персональный сайт Дэна Мерфи
- Коллекция TECO Пита Симсена
- Страница TECO Тома Алми. Включает TECO, основанный на документации Пита Симсена TECOC и DECUS. Существуют версии для MS-DOS, Windows (консоль), Linux, Mac OS X и OS/2.
- Введение в синтаксис TECO
- Информация ТЕКО
Эта статья частично основана на файле жаргона , который находится в свободном доступе.