TECO (editor de texto) - TECO (text editor)

TECO
Autor (es) original (is) Dan Murphy
lançamento inicial 1962/63
Sistema operacional OS / 8 , ITS , TOPS-10 , TOPS-20 , RT-11 , RSTS / E , RSX-11 , OpenVMS , Multics
Modelo Editor de texto

TECO (Tee'koh / / t i k / ), Editor de Texto & Corrector é tanto um personagem-oriented editor de texto e uma linguagem de programação, que foi desenvolvido em 1962 para uso em Digital Equipment Corporation computadores, e desde então se tornou disponível em PCs e Unix . Dan Murphy desenvolveu o TECO enquanto era estudante no Massachusetts Institute of Technology (MIT).

De acordo com Murphy, a sigla inicial era "Tape Editor and Corrector" porque " fita de papel perfurado era o único meio de armazenamento da origem do programa em nosso PDP-1. Não havia disco rígido, disquete, fita magnética (fita magnética), ou rede. " Na época em que TECO foi disponibilizado para uso geral, o nome havia se tornado "Editor e Corretor de Texto", já que até a versão PDP-1 até então suportava outras mídias. Ele foi posteriormente modificado por muitas outras pessoas e é um ancestral direto do Emacs , que foi originalmente implementado em macros TECO.

Descrição

TECO não é apenas um editor, mas também uma linguagem de programação interpretada para manipulação de texto. Os programas arbitrários (chamados "macros") para pesquisar e modificar texto conferem-lhe um grande poder. Ao contrário das expressões regulares , no entanto, a linguagem era imperativa , embora algumas versões tivessem um operador "ou" na pesquisa de strings.

TECO realmente não tem sintaxe ; cada caractere em um programa é um comando imperativo, despachado para sua rotina correspondente. Essa rotina pode ler mais caracteres do fluxo do programa (dando o efeito de argumentos de string), alterar a posição do "contador do programa" (dando o efeito das estruturas de controle) ou enviar valores para uma pilha de valor (dando o efeito de aninhado parênteses). Mas não há nada que impeça operações como pular para o meio de um comentário, já que não há sintaxe e nem análise.

TECO ignora maiúsculas e minúsculas e espaços em branco (exceto a guia , que é um comando de inserção).

Um ensaio satírico sobre programação de computador, Real Programmers Don't Use Pascal , sugeriu que um jogo comum para os fãs do TECO era inserir seu nome como uma sequência de comando e, em seguida, tentar descobrir o que aconteceria. O mesmo ensaio ao descrever TECO cunhou a sigla YAFIYGI , que significa "Você pediu, você entendeu " (como WYSIWYG ).

Impacto

O editor EMACS originalmente iniciado por David A. Moon e Guy L. Steele Jr. foi implementado no TECO como um conjunto de Editor MACroS. O TECO tornou-se mais amplamente usado após uma implementação PDP-6 da Digital Equipment Corporation (DEC) desenvolvida no Projeto MAC do MIT em 1964. Essa implementação exibia continuamente o texto editado visualmente em uma tela CRT e era usada como um editor on-line interativo. Versões posteriores do TECO eram capazes de conduzir o modo de tela cheia em vários terminais de vídeo DEC RS232 , como o VT52 ou VT100 .

TECO estava disponível para vários sistemas operacionais e computadores, incluindo o computador PDP-1 , o PDP-8 (sob OS / 8), o Incompatible Timesharing System (ITS) no PDP-6 e PDP-10 , e TOPS-10 e TOPS-20 no PDP-10 . Uma versão do TECO foi fornecida com todos os sistemas operacionais DEC; a versão disponível para RT11 foi capaz de conduzir o display gráfico GT40 enquanto a versão disponível para RSTS / E foi implementada como um sistema de tempo de execução multiusuário e pode ser usada como o ambiente operacional completo do usuário; o usuário nunca teve que sair do TECO. O macro VTEDIT (Editor de Terminal de Vídeo) TECO era comumente usado em sistemas RSTS / E e VAX com terminais capazes de controle de cursor direto (por exemplo, VT52 e VT100 ) para fornecer um editor visual de tela inteira semelhante em função ao Emacs desenvolvido contemporaneamente .

TECO continua a ser incluído no OpenVMS pelo VSI e é chamado com o EDIT/TECOcomando.

Um descendente da versão DEC distribuída para o PDP-10 ainda está disponível na Internet, junto com várias implementações parciais para o ambiente MS-DOS / Microsoft Windows .

História

TECO foi originalmente desenvolvido no MIT por volta de 1963 por Daniel L. Murphy para uso em dois computadores PDP-1 , pertencentes a departamentos diferentes, ambos alojados no Edifício 26. do MIT. Nessas máquinas, o processo normal de desenvolvimento envolvia o uso de um Friden Flexowriter para preparar o código-fonte offline em uma tira contínua de fita de papel perfurada. Os programadores dos grandes mainframes IBM costumavam perfurar seu código-fonte em cartões , usando chaves que imprimiam caracteres matriciais legíveis por humanos ao longo do topo de cada cartão ao mesmo tempo em que perfuravam cada caractere legível por máquina. Assim, os programadores IBM podiam ler, inserir, excluir e mover linhas de código manipulando fisicamente as cartas do baralho. A fita de papel perfurada não oferecia tais amenidades, levando ao desenvolvimento da edição online.

Um dos primeiros editores do PDP-1 foi denominado " Máquina de escrever cara ". Escrito por Stephen D. Piner, foi o editor orientado a linhas mais rudimentar imaginável, sem recursos de pesquisa e substituição. Seu nome foi escolhido como uma provocação irônica a um editor anterior, bastante inchado, chamado " Máquina de escrever colossal ". Mesmo naquela época, a edição online podia economizar tempo no ciclo de depuração. Outro programa escrito pelos hackers do PDP-1 foi o Expensive Desk Calculator , em uma linha semelhante.

O objetivo original declarado do TECO era fazer um uso mais eficiente do PDP-1. Conforme previsto no manual, em vez de realizar a edição "cara" sentado em um console , alguém simplesmente examinaria o texto defeituoso e prepararia uma "fita de correção" descrevendo as operações de edição a serem realizadas no texto. Um alimentaria com eficiência a fita de origem e a fita de correção no PDP-1 por meio de seu leitor de alta velocidade (200 caracteres por segundo). Executando o TECO, ele imediatamente perfuraria uma fita editada com seu soco de alta velocidade (60 caracteres por segundo). Pode-se então prosseguir imediatamente para carregar e executar o montador, sem perder tempo com a edição online.

As sofisticadas operações de busca do TECO foram motivadas pelo fato de que as impressões do Flexowriter offline não eram numeradas por linha. Os locais de edição, portanto, precisavam ser especificados pelo contexto, e não pelo número da linha. Os vários construtos de looping e condicionais (que tornaram o TECO Turing-completo ) foram incluídos para fornecer poder descritivo suficiente para a fita de correção. A sintaxe concisa minimizou o número de pressionamentos de tecla necessários para preparar a fita de correção.

A fita corretiva era um programa e precisava ser depurada como qualquer outro programa. As armadilhas até mesmo da busca e substituição global mais simples logo se tornaram evidentes. Na prática, a edição do TECO era realizada online da mesma forma que o fazia com o Expensive Typewriter (embora o TECO fosse certamente um editor com mais recursos do que o Expensive Typewriter, então a edição era muito mais eficiente com o TECO). A versão PDP-1 original não tinha exibição na tela. A única maneira de observar o estado do texto durante o processo de edição era digitar comandos que fariam com que o texto (ou partes dele) fosse digitado na máquina de escrever do console.

Em 1964, uma versão especial do TECO ( TECO-6 ) foi implementada no PDP-6 no MIT. Essa versão suportava edição visual, utilizando uma tela que mostrava o conteúdo do buffer de edição em tempo real, atualizando-se conforme mudava. Entre os criadores do TECO-6 estavam Richard Greenblatt e Stewart Nelson .

No MIT, o desenvolvimento do TECO continuou no outono de 1971. Carl Mikkelsen implementou um modo de edição em tempo real vagamente baseado nos comandos do console gráfico TECO-6, mas trabalhando com os monitores de texto Datapoint -3300 CRT recém-instalados . A implementação do buffer TECO, no entanto, era terrivelmente ineficiente para processar funções de inserção ou exclusão de caractere único - a edição consumia 100% do PDP-10. Com o apoio de Richard Greenblatt , no verão de 1972 Carl reimplementou o armazenamento de buffer TECO e reformou as macros como código PDP-10 nativo. Como entrar no modo de tempo real era digitando cntl+ R, isso era conhecido como modo control-R. Ao mesmo tempo, Rici Liknaitski adicionou macros de tempo de entrada ( cntl+ ]), que operavam quando a string de comando era lida e não quando executada. As macros de tempo de leitura tornaram os buffers de texto auxiliares do TECO, chamados Q-registers, mais úteis. Carl expandiu o espaço de nomes do registro Q. Com macros de tempo de leitura, um grande espaço de nomes de registro Q e operações de buffer eficientes, o cenário foi definido para vincular cada chave a uma macro. Essas macros de edição evoluíram para o Emacs .

A implementação do VMS tem uma longa história - começou como TECO-8, implementado na montagem do PDP-8. Este código foi traduzido em montagem PDP-11 para produzir TECO-11. TECO-11 foi usado nas primeiras versões do VAX / VMS no modo de compatibilidade PDP-11. Posteriormente, foi traduzido da montagem PDP-11 para a montagem VAX para produzir o TECO32. TECO32 foi então convertido com os utilitários de tradução binária VEST e AEST para torná-lo compatível com OpenVMS no Alpha e Itanium, respectivamente.

Comando OS / 8 MUNG

O comando OS / 8 CCL MUNG invocou TECO para ler e executar a macro .TE TECO especificada. Parâmetros opcionais de linha de comando deram adaptabilidade adicional.

Como uma ferramenta de programador

Durante e logo após os anos da era dos cartões perfurados , houve programas de origem que começaram como baseados em cartões perfurados . Os comentários geralmente eram uma série de linhas que incluíam asteriscos marginais únicos e linhas completas de asteriscos superiores / inferiores. Depois que os cartões foram transferidos online, foi uma tarefa realinhar as estrelas marginais. TECO para o resgate ...

Como uma linguagem de programação

A obscuridade da linguagem de programação TECO é descrita na seguinte citação de " Real Programmers Don't Use Pascal ", uma carta de Ed Post to Datamation, julho de 1983:

Foi observado que uma sequência de comando TECO se assemelha mais ao ruído da linha de transmissão do que ao texto legível. Um dos jogos mais divertidos de jogar com TECO é digitar seu nome como uma linha de comando e tentar adivinhar o que ele faz. Praticamente qualquer erro de digitação possível ao falar com o TECO provavelmente destruirá seu programa, ou ainda pior - introduzirá bugs sutis e misteriosos em uma sub-rotina que já funcionava.

De acordo com Craig Finseth, autor de The Craft of Text Editing , TECO foi descrito como uma linguagem " somente para escrita ", o que implica que, uma vez que um programa é escrito em TECO, é extremamente difícil compreender o que ele fazia sem a documentação apropriada.

Apesar de sua sintaxe, a linguagem de comando TECO era tremendamente poderosa e clones ainda estão disponíveis para MS-DOS e Unix .

Os comandos TECO são caracteres (incluindo caracteres de controle), e o prompt é um único asterisco:

*

A tecla escape é exibida como um cifrão, pressionada uma vez que delineia o final de um comando que requer um argumento e pressionada duas vezes inicia a execução dos comandos inseridos:

*$$

Código de exemplo

Dado um arquivo denominado hello.c com o seguinte conteúdo:

 int main(int argc, char **argv)
 {
     printf("Hello world!\n");
     return 0;
 }

pode-se usar a seguinte sessão TECO (observando que o prompt é "*" e "$" é como ESC é ecoado) para alterar "Hello" para "Goodbye":

*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

Esses dois programas de exemplo são uma espécie de intercâmbio simples do buffer de texto atual, com base no primeiro caractere de cada linha, retirado do Manual do Usuário do PDP-11 TECO. Uma versão " goto " e " estruturada " são mostradas.

Exemplo 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 !

Exemplo 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 !

Notas

Referências

links externos

Este artigo é baseado em parte no Jargon File , que é de domínio público.