TECO (editor de texto)

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

TECO (), abreviatura de Editor de texto & Corrector es tanto un editor de texto orientado a caracteres como un lenguaje de programación que se desarrolló en 1962 para su uso en computadoras de Digital Equipment Corporation y desde entonces está disponible para PC y Unix. Dan Murphy desarrolló TECO cuando era estudiante en el Instituto Tecnológico de Massachusetts (MIT).

Según Murphy, el acrónimo inicial era Editor y corrector de cintas porque "la cinta de papel perforado era el único medio para el almacenamiento de la fuente del programa en nuestro PDP -1. No había disco duro, disquete, cinta magnética (magtape) ni red." Cuando TECO estuvo disponible para uso general, el nombre se había convertido en "Editor y corrector de texto", ya que incluso la versión PDP-1 por entonces apoyado por otros medios. Posteriormente fue modificado por muchas otras personas y es un antepasado directo de Emacs, que se implementó originalmente en macros TECO.

Descripción

TECO no es solo un editor, sino también un lenguaje de programación interpretado para la manipulación de texto. Los programas arbitrarios (llamados "macros") para buscar y modificar texto le dan un gran poder. Sin embargo, a diferencia de las expresiones regulares, el lenguaje era imperativo, aunque algunas versiones tenían un 'o'. operador en la búsqueda de cadenas.

TECO realmente no tiene sintaxis; cada carácter en un programa es un comando imperativo, enviado a su rutina correspondiente. Esa rutina puede leer más caracteres del flujo del programa (dando el efecto de argumentos de cadena), cambiar la posición del "contador de programa" (dando el efecto de estructuras de control), o insertando valores en una pila de valores (dando el efecto de paréntesis anidados). Pero no hay nada que evite operaciones como saltar en medio de un comentario, ya que no hay sintaxis ni análisis.

TECO ignora mayúsculas y minúsculas y espacios en blanco (excepto el tabulador, que es un comando de inserción).

Un ensayo satírico sobre la programación de computadoras, Los programadores reales no usan Pascal, sugirió que un juego común para los fanáticos de TECO era ingresar su nombre como una secuencia de comandos y luego tratar de averiguar qué sucedería. El mismo ensayo al describir a TECO acuñó el acrónimo YAFIYGI, que significa "Lo pediste, lo tienes" (en contraste con WYSIWYG).

Impacto

El editor de EMACS iniciado originalmente por David A. Moon y Guy L. Steele Jr. se implementó en TECO como un conjunto de Editor MACroS. TECO se volvió más ampliamente utilizado luego de una implementación PDP-6 de Digital Equipment Corporation (DEC) desarrollada en el Proyecto MAC del MIT en 1964. Esta implementación mostraba continuamente el texto editado visualmente en una pantalla CRT y se usaba como un editor interactivo en línea.. Las versiones posteriores de TECO eran capaces de funcionar en modo de pantalla completa en varios terminales de video DEC RS-232, como el VT52 o el VT100.

TECO estaba disponible para varios sistemas operativos y computadoras, incluida la computadora PDP-1, la PDP-8 (bajo OS/8), el Sistema de tiempo compartido incompatible (ITS) en la PDP-6 y PDP-10, y TOPS -10 y TOPS-20 en el PDP-10. Se proporcionó una versión de TECO con todos los sistemas operativos DEC; la versión disponible para RT11 podía controlar la pantalla gráfica GT40, mientras que la versión disponible para RSTS/E se implementó como un sistema de tiempo de ejecución multiusuario y se podía usar como el entorno operativo completo del usuario; el usuario nunca tuvo que salir de TECO. La macro TECO VTEDIT (Editor de terminal de video) se usaba comúnmente en sistemas RSTS / E y VAX con terminales capaces de control directo del cursor (por ejemplo, VT52 y VT100) para proporcionar un editor visual de pantalla completa similar en función al Emacs desarrollado contemporáneamente.

TECO continúa siendo incluido en OpenVMS por VSI y se invoca con el comando EDIT/TECO.

Un descendiente de la versión DEC distribuida para el PDP-10 todavía está disponible en Internet, junto con varias implementaciones parciales para el entorno MS-DOS/Microsoft Windows.

Historia

TECO fue desarrollado originalmente en el MIT alrededor de 1963 por Daniel L. Murphy para su uso en dos computadoras PDP-1, pertenecientes a diferentes departamentos, ambas ubicadas en el Edificio 26 del MIT. En estas máquinas, el proceso normal de desarrollo involucró el uso de un Friden Flexowriter para preparar el código fuente fuera de línea en una tira continua de cinta de papel perforado. Los programadores de los grandes mainframes de IBM solían perforar su código fuente en las tarjetas, usando perforaciones clave que imprimían caracteres de matriz de puntos legibles por humanos en la parte superior de cada tarjeta al mismo tiempo que perforaban cada carácter legible por máquina. Así, los programadores de IBM podían leer, insertar, eliminar y mover líneas de código manipulando físicamente las cartas de la baraja. La cinta de papel perforada no ofrecía tales comodidades, lo que condujo al desarrollo de la edición en línea.

Uno de los primeros editores de la PDP-1 se llamaba "Máquina de escribir costosa". Escrito por Stephen D. Piner, era el editor orientado a líneas más rudimentario imaginable, que carecía incluso de capacidades de búsqueda y reemplazo. Su nombre fue elegido como un toque irónico a un editor anterior, bastante inflado, llamado 'Colossal Typewriter'. Incluso en aquellos días, la edición en línea podía ahorrar tiempo en el ciclo de depuración. Otro programa escrito por los piratas informáticos PDP-1 fue Expensive Desk Calculator, en una línea similar.

El propósito original declarado de TECO era hacer un uso más eficiente del PDP-1. Como se prevé en el manual, en lugar de realizar la edición de forma "costosa" al sentarse en una consola, uno simplemente examinaría el texto defectuoso y prepararía una "cinta de corrección" describiendo las operaciones de edición a realizar sobre el texto. Uno alimentaría eficientemente la cinta de origen y la cinta de corrección en el PDP-1 a través de su lector de alta velocidad (200 caracteres por segundo). Ejecutando TECO, inmediatamente pinchaba una cinta editada con su punzonado de alta velocidad (60 caracteres por segundo). Luego, uno podría proceder inmediatamente a cargar y ejecutar el ensamblador, sin perder tiempo en la edición en línea.

Las sofisticadas operaciones de búsqueda de TECO estaban motivadas por el hecho de que las impresiones de Flexowriter fuera de línea no tenían numeración de línea. Por lo tanto, las ubicaciones de edición debían especificarse por contexto en lugar de por número de línea. Los diversos bucles y construcciones condicionales (que hicieron de TECO Turing-completo) se incluyeron para proporcionar suficiente poder descriptivo para la cinta correctora. La concisa sintaxis minimizó el número de pulsaciones de teclas necesarias para preparar la cinta correctora.

La cinta correctora era un programa y requería depuración como cualquier otro programa. Las trampas de incluso la búsqueda y reemplazo global más simple pronto se hicieron evidentes. En la práctica, la edición de TECO se realizaba en línea tal como se había hecho con Expensive Typewriter (aunque TECO era sin duda un editor más completo que Expensive Typewriter, por lo que la edición era mucho más eficiente con TECO). La versión original de PDP-1 no tenía pantalla. La única forma de observar el estado del texto durante el proceso de edición era escribir comandos que hicieran que el texto (o partes del mismo) se escribiera en la máquina de escribir de la consola.

En 1964, se implementó una versión especial de TECO (TECO-6) en el PDP-6 en el MIT. Esa versión admitía la edición visual, utilizando una pantalla que mostraba el contenido del búfer de edición en tiempo real, actualizándose a medida que cambiaba. Entre los creadores de TECO-6 estaban Richard Greenblatt y Stewart Nelson.

En el MIT, el desarrollo de TECO continuó en el otoño de 1971. Carl Mikkelsen había implementado un modo de edición en tiempo real basado libremente en los comandos de la consola gráfica TECO-6, pero trabajando con las pantallas de texto Datapoint-3300 CRT recién instaladas. Sin embargo, la implementación del búfer TECO fue terriblemente ineficiente para procesar funciones de inserción o eliminación de un solo carácter: la edición consumía el 100 % del PDP-10. Con el apoyo de Richard Greenblatt, en el verano de 1972, Carl volvió a implementar el almacenamiento en búfer TECO y reformó las macros como código PDP-10 nativo. Como ingresar al modo de tiempo real fue tecleando cntl+R, esto se conocía como control- Modo R. Al mismo tiempo, Rici Liknaitski agregó macros de tiempo de entrada (cntl+]), que operaban ya que la cadena de comando se leyó en lugar de cuando se ejecutó. Las macros de tiempo de lectura hicieron que los búferes de texto auxiliares de TECO, llamados registros Q, fueran más útiles. Carl amplió el espacio de nombres del registro Q. Con macros de tiempo de lectura, un gran espacio de nombres de registro Q y operaciones de búfer eficientes, se preparó el escenario para vincular cada tecla a una macro. Estas macros de edición se convirtieron en Emacs.

La implementación de VMS tiene una larga historia: comenzó como TECO-8, implementada en el ensamblaje de PDP-8. Este código se tradujo al ensamblado PDP-11 para producir TECO-11. TECO-11 se usó en las primeras versiones de VAX/VMS en modo de compatibilidad con PDP-11. Más tarde se tradujo del ensamblaje PDP-11 al ensamblaje VAX para producir TECO32. Luego, TECO32 se convirtió con las utilidades de traducción binaria VEST y AEST para hacerlo compatible con OpenVMS en Alpha e Itanium, respectivamente.

Comando OS/8 MUNG

El comando OS/8 CCL MUNG invocó a TECO para leer y ejecutar la macro.TE TECO especificada. Los parámetros de línea de comando opcionales dieron mayor adaptabilidad.

Como herramienta de programador

Durante y poco después de los años de la era de las tarjetas perforadas, había programas fuente que habían comenzado como basados en tarjetas perforadas. Los comentarios eran a menudo una serie de líneas que incluían asteriscos marginales individuales y líneas completas de asteriscos arriba/abajo. Una vez que las tarjetas se transfirieron en línea, fue una tarea ardua realinear las estrellas marginales. TECO al rescate...

Como lenguaje de programación

La oscuridad del lenguaje de programación TECO se describe en la siguiente cita de 'Real Programmers Don't Use Pascal', una carta de Ed Post a Datamation, julio de 1983:

Se ha observado que una secuencia de comandos TECO se asemeja más estrechamente al ruido de la línea de transmisión que al texto legible. Uno de los juegos más entretenidos para jugar con TECO es escribir su nombre como línea de comandos y tratar de adivinar lo que hace. Casi cualquier posible error de escribir mientras hablar con TECO probablemente destruirá su programa, o incluso peor - introducir errores sutiles y misteriosos en una subrutina de trabajo una vez.

Según Craig Finseth, autor de The Craft of Text Editing, TECO se ha descrito como una herramienta de "solo escritura" lenguaje, lo que implica que una vez que un programa está escrito en TECO, es extremadamente difícil comprender lo que hizo sin la documentación adecuada.

A pesar de su sintaxis, el lenguaje de comandos de TECO era tremendamente poderoso y todavía hay clones disponibles para MS-DOS y Unix.

Los comandos TECO son caracteres (incluidos los caracteres de control) y el indicador es un solo asterisco:

*

La tecla de escape se muestra como un signo de dólar, se presiona una vez que delinea el final de un comando que requiere un argumento y se presiona dos veces para iniciar la ejecución de los comandos ingresados:

*$$

Código de ejemplo

Dado un archivo llamado hello.c con los siguientes contenidos:

 int principal()int argc, char #argv) {} printf()"¡Hola mundo!n"); retorno 0; }

se podría usar la siguiente sesión TECO (observando que el aviso es "*" y "$" es cómo se repite ESC) para cambiar "Hola" en "Adiós":

*EBhello.c$$ Archivo abierto para leer/escribir con respaldo
*P$$$ Leer en la primera página
*SHello$0TT$$$ Buscar "Hola" e imprimir la línea (punto colocado después de la cadena registrada)
printf("Hola mundo!n"); La línea
*-5DIAdiós$0TT$ Eliminar cinco caracteres antes del puntero (es decir, "Hola"), insertar "Adiós", e imprimir la línea
printf("Goodbye world!n"); La línea actualizada
*EX$$ Copia el resto del archivo y salida

Estos dos programas de ejemplo son un tipo de intercambio simple del búfer de texto actual, basado en el primer carácter de cada línea, tomado de la Guía del usuario de PDP-11 TECO. Un "ir a" y "estructurado" se muestra la versión.

Ejemplo 1

! START! J 0aua! saltar al principio, cargar 1er char en el registro A !
! ¡Cont! ¡I 0aub! cargar el primer char de la siguiente línea en el registro B !
qa-qb"g xa k -l ga 1uz ' ! si A títuloB, cambiar líneas y establecer la bandera en el registro Z !
qbua! Carga B en A!
l z-."g -l @o/CONT/ ' ! ¡Retrocede si otra línea en buffer!
qz"g 0uz @o/START/ '! repetir si se hizo un interruptor en el último paso!

Ejemplo 2

¡0uz! bandera de repetición clara!
¡No! cargar 1er char en el registro A!
¡No! cargar 1er char de la siguiente línea en B!
qa-qb"g xa k -l ga -1uz ' ! si A títuloB, cambiar las líneas y establecer la bandera !
qbua! Carga B en A!
l.-z; español! ¡Retrocede si otra línea en buffer!
¡QZ! ¡Repetir si se hizo el último paso!
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save