WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте
TECO
Тип Текстовый редактор
Автор Dan Murphy
Разработчик Дэниэл Мерфи[d]
Первый выпуск 1962/63

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

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

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 стал известным, начиная с реализации для компьютера-мейнфрейма PDP-6 фирмы Digital Equipment Corporation, разработанной в МТИ в 1964 году. Эта реализация непрерывно отображала текст на ЭЛТ-дисплее, и использовалась в качестве интерактивного редактора (хотя это не было изначально предполагаемым способом его использования).

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

Компания Hewlett-Packard, купив Compaq (которая купила Digital Equipment Corporation), начала поставлять TECO со своей операционной системой OpenVMS.[3] Потомок версии, которую 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. The Glorious Horror of TECO (англ.) (30 November 2010). Архивировано 10 июля 2013 года.
  2. The GNU Emacs FAQ. Where does the name “Emacs” come from? (англ.). Архивировано 2 сентября 2013 года.
  3. HP OpenVMS system documentation. Архивная копия от 13 июня 2011 на Wayback Machine Как вызвать TECO.

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии