Interested Article - Text Editor and Corrector

TECO ( МФА: [ˈtiːkoʊ] ; первоначально акроним для англ. Tape Editor and COrrector , позже - Text Editor and COrrector ) — текстовый редактор , первоначально разработанный в Массачусетском технологическом институте в 1960-x, после чего мог быть модифицирован «кем угодно» . TECO был прямым предком Emacs , который изначально был реализован как макрос для TECO.

Краткое описание

TECO был не только текстовым редактором, но ещё и интерпретируемым языком программирования для манипуляции текстами. Различные программы (называемые макросами) для поиска и модификации текста делали редактор довольно мощным. В отличие от регулярных выражений, язык программирования был императивным (хотя некоторые версии и имели оператор OR для поиска подстрок).

Язык TECO на самом деле не имел строгого синтаксиса , каждый символ рассматривался как императивная команда, выполняющая определённое действие. Это действие может быть чтением последующих символов из потока программы (дающее эффект «строкового аргумента»), сменой положения « счётчика команд » (дающее эффект применения управляющих операторов ) или помещением значений в стек значений (дающее эффект вложенных скобок). Но ничто не предотвращает переход в середину комментария, так как у языка нет строгого синтаксиса и нет грамматического разбора .

В классическом эссе о программировании « Настоящие программисты не используют Паскаль », говорится о том, что распространённой игрой для приверженцев редактора TECO было ввести своё имя в качестве последовательности команд, и посмотреть, что произойдёт. В том же эссе был впервые упомянут акроним YAFIYGI, означающий «You Asked For It You Got It» (с англ. «ты попросил об этом — ты это получил») и ставший антитезисом WYSIWYG («What You See Is What You Get», «что видишь, то и получишь»).

Ныне известный редактор Emacs был изначально реализован на TECO. Поздние версии Emacs, сначала Multics Emacs, а затем - GNU Emacs, были реализованы на языках Lisp и C соответственно. TECO стал известным, начиная с реализации для компьютера-мейнфрейма фирмы Digital Equipment Corporation , разработанной в МТИ в 1964 году . Эта реализация непрерывно отображала текст на ЭЛТ-дисплее и использовалась в качестве интерактивного редактора (хотя это не было изначально предполагавшимся способом его использования).

TECO был доступен для нескольких операционных систем и компьютеров, включая PDP-1 , (ITS) на и мейнфрейме PDP-10 , и ОС TOPS-10 и TOPS-20 на компьютере PDP-10 . Версия редактора TECO поставлялась со всеми операционными системами фирмы DEC. Версия, поставлявшаяся с RT-11 , могла управлять графическим дисплеем GT40, хотя версия, поставлявшаяся с RSTS/E , была реализована как многопользовательская система времени выполнения и могла быть использована в качестве полноценной рабочей среды, так что фактически пользователь никогда не выходил из среды TECO.

Компания Hewlett-Packard , купив Compaq (которая ранее купила Digital Equipment Corporation ), начала поставлять TECO со своей операционной системой OpenVMS . Потомок версии, которую DEC распространяла для PDP-10, до сих пор доступен в Интернете наряду с несколькими частичными реализациями для окружения MS-DOS / Microsoft Windows .

История

TECO был первоначально разработан в Массачусетском технологическом институте около 1963 года Дениелом Мёрфи для использования на двух компьютерах PDP-1 , принадлежащих различным подразделениям, которые оба были размещены в 26-м корпусе МТИ. На этих вычислительных машинах в процесс разработки включался Friden Flexowriter, на котором заранее готовился исходный код программы на отрезке перфорированной бумажной ленты. Программисты больших мейнфреймов IBM обычно записывали исходный код на перфокарты , используя ключевой перфоратор, на котором данные не только пробивались на карте в машиночитаемом виде, но также и печатались на матричном принтере вверху каждой карточки в обычном виде, понятном человеку. Таким образом, программисты IBM могли читать, вставлять, удалять и перемещать строки кода, физически перемещая перфокарты в колоде. При использовании перфоленты такой возможности уже не было, и это привело к необходимости редактирования в реальном времени.

Одна из первых версий редактора для PDP-1 была названа «Expensive Typewriter». Написанная Стивеном Пинером, она была элементарным строчно-ориентированным редактором, в котором отсутствовали даже функции поиска и замены текста. Его название было выбрано в качестве пародии на название более раннего редактора под названием «Colossal Typewriter». Даже в те дни редактирование в реальном времени могло сохранить немало времени на отладку. Другой программой, написанной активными пользователями PDP-1, был «Expensive Desk Calculator», названный в похожем стиле.

Примеры кода

Пример кода Пояснение
ER file $ открыть файл для чтения
[ q ] q поместить в стек … достать из стека регистр Q (операция может быть произведена с числом, текстом или кодом)
< code > итерация цикла; существуют коды для next , break , continue , и т. д.
n " X then-code | else-code условный оператор (X — проверяемый тип)

Примеры программ

Пример 1

!START! j 0aua               ! перейти к началу, загрузить первый символ в регистр 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

Это пример интерпретатора языка Brainfuck , написанный на TECO. Он работает путём выполнения текущего буфера как программы на языке Brainfuck, и демонстрирует возможности редактора.

 @^UB#@S/{^EQQ,/#@^UC#@S/,^EQQ}/@-1S/{/#@^UR#.U1ZJQZ\^SC.,.+-^SXQ-^SDQ1J#@^U9/[]-+<>.,/<@:-FD/^N^EG9/;>J30000<0@I/
 />ZJZUL30000J0U10U20U30U60U7@^U4/[]/@^U5#<@:S/^EG4/U7Q7;-AU3(Q3-91)"=%1|Q1"=.U6ZJ@i/{/Q2\@i/,/Q6\@i/}/Q6J0;'-1%1'
 >#<@:S/[/UT.U210^T13^TQT;QT"NM5Q2J'>0UP30000J.US.UI<(0A-43)"=QPJ0AUTDQT+1@I//QIJ@O/end/'(0A-45)"=QPJ0AUTDQT-1@I//
 QIJ@O/end/'(0A-60)"=QP-1UP@O/end/'(0A-62)"=QP+1UP@O/end/'(0A-46)"=-.+QPA^T(-.+QPA-10)"=13^T'@O/end/'(0A-44)"=^TUT
 8^TQPJDQT@I//QIJ@O/end/'(0A-91)"=-.+QPA"=QI+1UZQLJMRMB\-1J.UI'@O/end/'(0A-93)"=-.+QPA"NQI+1UZQLJMRMC\-1J.UI'@O/en
 d/'!end!QI+1UI(.-Z)"=.=@^a/END/^c^c'C>

Примечания

  1. (англ.) (30 ноября 2010). 10 июля 2013 года.
  2. . Where does the name “Emacs” come from? (англ.) . 2 сентября 2013 года.
  3. от 13 июня 2011 на Wayback Machine Как вызвать TECO.

Ссылки

Источник —

Same as Text Editor and Corrector