Text Editor and Corrector

Поделись знанием:
Перейти к: навигация, поиск
TECO
Тип

Текстовый редактор

Автор

Dan Murphy

Первый выпуск

1962/63

К:Википедия:Статьи без изображений (тип: не указан)К:Программное обеспечение, разработанное в 1962 году

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>

Напишите отзыв о статье "Text Editor and Corrector"

Примечания

  1. [scientopia.org/blogs/goodmath/2010/11/30/the-glorious-horror-of-teco/ The Glorious Horror of TECO] (англ.) (30 November 2010). [www.webcitation.org/6I0JukoGA Архивировано из первоисточника 10 июля 2013].
  2. [www.gnu.org/software/emacs/manual/html_node/efaq/Origin-of-the-term-Emacs.html The GNU Emacs FAQ] Where does the name “Emacs” come from? (англ.). [www.webcitation.org/6JKTWg8ms Архивировано из первоисточника 2 сентября 2013].
  3. [h71000.www7.hp.com/doc/83final/9996/9996pro_72.html HP OpenVMS system documentation.] Как вызвать TECO.


Отрывок, характеризующий Text Editor and Corrector

– Прошу извинить, прошу извинить! Видит Бог не знал, – пробурчал старик и, осмотрев с головы до ног Наташу, вышел. M lle Bourienne первая нашлась после этого появления и начала разговор про нездоровье князя. Наташа и княжна Марья молча смотрели друг на друга, и чем дольше они молча смотрели друг на друга, не высказывая того, что им нужно было высказать, тем недоброжелательнее они думали друг о друге.
Когда граф вернулся, Наташа неучтиво обрадовалась ему и заторопилась уезжать: она почти ненавидела в эту минуту эту старую сухую княжну, которая могла поставить ее в такое неловкое положение и провести с ней полчаса, ничего не сказав о князе Андрее. «Ведь я не могла же начать первая говорить о нем при этой француженке», думала Наташа. Княжна Марья между тем мучилась тем же самым. Она знала, что ей надо было сказать Наташе, но она не могла этого сделать и потому, что m lle Bourienne мешала ей, и потому, что она сама не знала, отчего ей так тяжело было начать говорить об этом браке. Когда уже граф выходил из комнаты, княжна Марья быстрыми шагами подошла к Наташе, взяла ее за руки и, тяжело вздохнув, сказала: «Постойте, мне надо…» Наташа насмешливо, сама не зная над чем, смотрела на княжну Марью.
– Милая Натали, – сказала княжна Марья, – знайте, что я рада тому, что брат нашел счастье… – Она остановилась, чувствуя, что она говорит неправду. Наташа заметила эту остановку и угадала причину ее.
– Я думаю, княжна, что теперь неудобно говорить об этом, – сказала Наташа с внешним достоинством и холодностью и с слезами, которые она чувствовала в горле.
«Что я сказала, что я сделала!» подумала она, как только вышла из комнаты.
Долго ждали в этот день Наташу к обеду. Она сидела в своей комнате и рыдала, как ребенок, сморкаясь и всхлипывая. Соня стояла над ней и целовала ее в волосы.
– Наташа, об чем ты? – говорила она. – Что тебе за дело до них? Всё пройдет, Наташа.
– Нет, ежели бы ты знала, как это обидно… точно я…
– Не говори, Наташа, ведь ты не виновата, так что тебе за дело? Поцелуй меня, – сказала Соня.
Наташа подняла голову, и в губы поцеловав свою подругу, прижала к ней свое мокрое лицо.
– Я не могу сказать, я не знаю. Никто не виноват, – говорила Наташа, – я виновата. Но всё это больно ужасно. Ах, что он не едет!…
Она с красными глазами вышла к обеду. Марья Дмитриевна, знавшая о том, как князь принял Ростовых, сделала вид, что она не замечает расстроенного лица Наташи и твердо и громко шутила за столом с графом и другими гостями.


В этот вечер Ростовы поехали в оперу, на которую Марья Дмитриевна достала билет.
Наташе не хотелось ехать, но нельзя было отказаться от ласковости Марьи Дмитриевны, исключительно для нее предназначенной. Когда она, одетая, вышла в залу, дожидаясь отца и поглядевшись в большое зеркало, увидала, что она хороша, очень хороша, ей еще более стало грустно; но грустно сладостно и любовно.
«Боже мой, ежели бы он был тут; тогда бы я не так как прежде, с какой то глупой робостью перед чем то, а по новому, просто, обняла бы его, прижалась бы к нему, заставила бы его смотреть на меня теми искательными, любопытными глазами, которыми он так часто смотрел на меня и потом заставила бы его смеяться, как он смеялся тогда, и глаза его – как я вижу эти глаза! думала Наташа. – И что мне за дело до его отца и сестры: я люблю его одного, его, его, с этим лицом и глазами, с его улыбкой, мужской и вместе детской… Нет, лучше не думать о нем, не думать, забыть, совсем забыть на это время. Я не вынесу этого ожидания, я сейчас зарыдаю», – и она отошла от зеркала, делая над собой усилия, чтоб не заплакать. – «И как может Соня так ровно, так спокойно любить Николиньку, и ждать так долго и терпеливо»! подумала она, глядя на входившую, тоже одетую, с веером в руках Соню.
«Нет, она совсем другая. Я не могу»!
Наташа чувствовала себя в эту минуту такой размягченной и разнеженной, что ей мало было любить и знать, что она любима: ей нужно теперь, сейчас нужно было обнять любимого человека и говорить и слышать от него слова любви, которыми было полно ее сердце. Пока она ехала в карете, сидя рядом с отцом, и задумчиво глядела на мелькавшие в мерзлом окне огни фонарей, она чувствовала себя еще влюбленнее и грустнее и забыла с кем и куда она едет. Попав в вереницу карет, медленно визжа колесами по снегу карета Ростовых подъехала к театру. Поспешно выскочили Наташа и Соня, подбирая платья; вышел граф, поддерживаемый лакеями, и между входившими дамами и мужчинами и продающими афиши, все трое пошли в коридор бенуара. Из за притворенных дверей уже слышались звуки музыки.
– Nathalie, vos cheveux, [Натали, твои волосы,] – прошептала Соня. Капельдинер учтиво и поспешно проскользнул перед дамами и отворил дверь ложи. Музыка ярче стала слышна в дверь, блеснули освещенные ряды лож с обнаженными плечами и руками дам, и шумящий и блестящий мундирами партер. Дама, входившая в соседний бенуар, оглянула Наташу женским, завистливым взглядом. Занавесь еще не поднималась и играли увертюру. Наташа, оправляя платье, прошла вместе с Соней и села, оглядывая освещенные ряды противуположных лож. Давно не испытанное ею ощущение того, что сотни глаз смотрят на ее обнаженные руки и шею, вдруг и приятно и неприятно охватило ее, вызывая целый рой соответствующих этому ощущению воспоминаний, желаний и волнений.
Две замечательно хорошенькие девушки, Наташа и Соня, с графом Ильей Андреичем, которого давно не видно было в Москве, обратили на себя общее внимание. Кроме того все знали смутно про сговор Наташи с князем Андреем, знали, что с тех пор Ростовы жили в деревне, и с любопытством смотрели на невесту одного из лучших женихов России.
Наташа похорошела в деревне, как все ей говорили, а в этот вечер, благодаря своему взволнованному состоянию, была особенно хороша. Она поражала полнотой жизни и красоты, в соединении с равнодушием ко всему окружающему. Ее черные глаза смотрели на толпу, никого не отыскивая, а тонкая, обнаженная выше локтя рука, облокоченная на бархатную рампу, очевидно бессознательно, в такт увертюры, сжималась и разжималась, комкая афишу.
– Посмотри, вот Аленина – говорила Соня, – с матерью кажется!
– Батюшки! Михаил Кирилыч то еще потолстел, – говорил старый граф.
– Смотрите! Анна Михайловна наша в токе какой!
– Карагины, Жюли и Борис с ними. Сейчас видно жениха с невестой. – Друбецкой сделал предложение!
– Как же, нынче узнал, – сказал Шиншин, входивший в ложу Ростовых.
Наташа посмотрела по тому направлению, по которому смотрел отец, и увидала, Жюли, которая с жемчугами на толстой красной шее (Наташа знала, обсыпанной пудрой) сидела с счастливым видом, рядом с матерью.
Позади их с улыбкой, наклоненная ухом ко рту Жюли, виднелась гладко причесанная, красивая голова Бориса. Он исподлобья смотрел на Ростовых и улыбаясь говорил что то своей невесте.
«Они говорят про нас, про меня с ним!» подумала Наташа. «И он верно успокоивает ревность ко мне своей невесты: напрасно беспокоятся! Ежели бы они знали, как мне ни до кого из них нет дела».
Сзади сидела в зеленой токе, с преданным воле Божией и счастливым, праздничным лицом, Анна Михайловна. В ложе их стояла та атмосфера – жениха с невестой, которую так знала и любила Наташа. Она отвернулась и вдруг всё, что было унизительного в ее утреннем посещении, вспомнилось ей.