TECO (Tee'koh [1] / / t i k oʊ / ), Editor de texto y corrector [2] [3] [4] es a la vez un carácter orientado- editor de texto y un lenguaje de programación, [5] [6] que fue desarrollado en 1962 para su uso en computadoras de Digital Equipment Corporation , y desde entonces está disponible en PC y Unix . Dan Murphy desarrolló TECO mientras estudiaba en el Instituto de Tecnología de Massachusetts (MIT). [5]
Autor (es) original (es) | Dan Murphy |
---|---|
Versión inicial | 1962/63 |
Sistema operativo | OS / 8 , SU , TOPS-10 , TOPS-20 , RT-11 , RSTS / E , RSX-11 , OpenVMS |
Tipo | Editor de texto |
Según Murphy, el acrónimo inicial era "Tape Editor and Corrector" porque " la cinta de papel perforada 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), o red ". [5] Para cuando TECO estuvo disponible para uso general, el nombre se había convertido en "Editor y corrector de texto", [4] ya que incluso la versión PDP-1 admitía otros medios. [5] Posteriormente fue modificado por muchas otras personas [7] y es un antepasado directo de Emacs , que se implementó originalmente en macros TECO. [8] [9] [10]
Descripción
TECO no es solo un editor, sino también un lenguaje de programación interpretado para la manipulación de textos. Los programas arbitrarios (llamados "macros") para buscar y modificar texto le otorgan un gran poder. Sin embargo, a diferencia de las expresiones regulares , el lenguaje era imperativo , aunque algunas versiones tenían un operador "o" en la búsqueda de cadenas.
TECO realmente no tiene sintaxis ; cada carácter de 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 empujar valores en una pila de valores (dando el efecto de anidado paréntesis). Pero no hay nada que evite operaciones como saltar a la mitad de un comentario, ya que no hay sintaxis ni análisis.
TECO ignora el uso de mayúsculas y minúsculas y los espacios en blanco (excepto tabulador , que es un comando de inserción). [11]
Un ensayo satírico sobre programación de computadoras, Real Programmers Don't Use Pascal , sugirió que un juego común para los fanáticos de TECO era ingresar su nombre como una secuencia de comando y luego tratar de averiguar qué pasaría. El mismo ensayo en la descripción de TECO acuñó el acrónimo YAFIYGI , que significa "Usted lo pidió, lo consiguió" (como WYSIWYG ).
Impacto
El editor de Emacs de Richard Stallman se implementó originalmente en TECO. TECO se hizo más ampliamente utilizado después 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 utilizaba como editor interactivo en línea. Las versiones posteriores de TECO fueron capaces de manejar el modo de pantalla completa en varios terminales de video DEC RS232 como el VT52 o VT100 .
TECO estaba disponible para varios sistemas operativos y computadoras, incluida la computadora PDP-1 , la PDP-8 (bajo OS / 8), [12] [13] el Incompatible Timesharing System (ITS) en 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 pudo 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 podría usarse como el entorno operativo completo del usuario; el usuario nunca tuvo que salir de TECO. La macro VTEDIT (Video Terminal Editor) TECO 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 sigue estando incluido en OpenVMS por VSI y se invoca con el EDIT/TECO
comando. [14]
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 originalmente desarrollado en el MIT [15] en torno a 1963 por Daniel L. Murphy para su uso en dos PDP-1 ordenadores, pertenecientes a diferentes departamentos, tanto es el edificio del MIT 26. [16] En estas máquinas, el proceso de desarrollo normal involucrado el uso de un Friden Flexowriter para preparar el código fuente fuera de línea en una tira continua de cinta de papel perforada. Los programadores de los grandes mainframes de IBM solían perforar su código fuente en tarjetas , utilizando teclas 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, borrar 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 llevó al desarrollo de la edición en línea.
Uno de los primeros editores del PDP-1 se llamó " Máquina de escribir cara ". Escrito por Stephen D. Piner, era el editor orientado a líneas más rudimentario imaginable, careciendo incluso de capacidades de búsqueda y reemplazo. Su nombre fue elegido como un toque irónico a un editor anterior, bastante hinchado, llamado " Colossal Typewriter ". Incluso en esos días, la edición en línea podrí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 "costosa" sentándose en una consola , uno simplemente examinaría el texto defectuoso y prepararía una "cinta de corrección" que describa las operaciones de edición que se realizarán en el texto. Uno alimentaría eficientemente la cinta fuente y la cinta correctora en el PDP-1 a través de su lector de alta velocidad (200 caracteres por segundo). Al ejecutar TECO, inmediatamente perforaría una cinta editada con su perforación de alta velocidad (60 caracteres por segundo). A continuación, se puede proceder inmediatamente a cargar y ejecutar el ensamblador, sin perder tiempo en la edición en línea.
Las operaciones de búsqueda entonces sofisticadas de TECO estaban motivadas por el hecho de que las impresiones de Flexowriter fuera de línea no estaban numeradas en línea. Por lo tanto, las ubicaciones de edición debían especificarse por contexto en lugar de por número de línea. Las diversas construcciones de bucle y condicionales (que hicieron que TECO Turing fuera completo ) se incluyeron para proporcionar suficiente poder descriptivo para la cinta de corrección. La sintaxis concisa minimizó el número de pulsaciones de teclas necesarias para preparar la cinta de corrección.
La cinta de corrección era un programa y requería depuración como cualquier otro programa. Pronto se hicieron evidentes las trampas de incluso la búsqueda y reemplazo global más simple. En la práctica, la edición de TECO se realizó en línea tal como lo había sido con Expensive Typewriter (aunque TECO era ciertamente un editor con más funciones que Expensive Typewriter, por lo que la edición fue mucho más eficiente con TECO). La versión original del PDP-1 no tenía visualización en pantalla. La única forma de observar el estado del texto durante el proceso de edición era escribir comandos que harían 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. [17] Entre los creadores de TECO-6 se encuentran Richard Greenblatt y Stewart Nelson . [18]
En el MIT, el desarrollo de TECO continuó en el otoño de 1971. [ cita requerida ] 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 . [19] Sin embargo, la implementación del búfer de 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 intermedio de TECO y reformó las macros como código PDP-10 nativo. [ cita requerida ] Como entrar en el modo en tiempo real era escribiendo cntl+ R, esto se conocía como modo control-R. Al mismo tiempo, Rici Liknaitski agregó macros de tiempo de entrada ( cntl+ ]), que operaban cuando se leía la cadena de comando en lugar de cuando se ejecutaba. [ cita requerida ] Las macros de tiempo de lectura hicieron que los búferes de texto auxiliares de TECO, llamados registros Q, fueran más útiles. [ cita requerida ] 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. [20] Estas macros de edición evolucionaron a Emacs . [21]
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 ensamblaje PDP-11 para producir TECO-11. TECO-11 se utilizó en las primeras versiones de VAX / VMS en modo de compatibilidad con PDP-11. Posteriormente 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. [22] [23] [24]
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 opcionales de la línea de comandos dieron mayor adaptabilidad. [25]
Como herramienta de programador
Durante y poco después de los años de la era de las tarjetas perforadas , hubo 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 simples y líneas completas de asteriscos en la parte superior / inferior. Una vez que las tarjetas se transfirieron en línea, fue una tarea difícil realinear las estrellas marginales. TECO al rescate ... [26] [27]
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 parece más 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 tu nombre como una línea de comando e intentar adivinar lo que hace. Casi cualquier posible error de escritura mientras habla con TECO probablemente destruirá su programa, o peor aún, introducirá errores sutiles y misteriosos en una subrutina que una vez estuvo funcionando. [28]
Según Craig Finseth, autor de The Craft of Text Editing , [29] TECO ha sido descrito como un lenguaje de " solo escritura ", lo que implica que una vez que un programa está escrito en TECO, es extremadamente difícil comprender lo que hizo sin los documentación.
A pesar de su sintaxis, el lenguaje de comandos TECO era tremendamente poderoso y los clones todavía están disponibles para MS-DOS y para Unix .
Los comandos de 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, presionada una vez que delinea el final de un comando que requiere un argumento y presionada dos veces inicia la ejecución de los comandos ingresados:
* $$
Código de ejemplo
Dado un archivo llamado hello.c con el siguiente contenido:
int main ( int argc , char ** argv ) { printf ( "¡Hola mundo! \ n " ); return 0 ; }
uno podría usar la siguiente sesión de TECO (teniendo en cuenta que el mensaje es "*" y "$" es como se repite ESC) para cambiar "Hola" a "Adiós":
* EBhello.c $$ Abrir archivo para lectura / escritura con respaldo* P $$ Leer en la primera página* SHello $ 0TT $$ Busque "Hola" e imprima la línea (el puntero se coloca después de la cadena buscada) printf ("¡Hola mundo! \ n"); La línea* -5DIGoodbye $ 0TT $$ Elimina cinco caracteres antes del puntero (es decir, "Hola"), inserta "Adiós" e imprime la línea printf ("¡Adiós mundo! \ n"); La línea actualizada* EX $$ Copie el resto del archivo y salga
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. Se muestran una versión " goto " y " estructurada ".
Ejemplo 1
!¡COMIENZO! j 0aua! salte al principio, cargue el primer carácter en el registro A!! CONT! l 0aub! cargue el primer carácter de la siguiente línea en el registro B!qa-qb "g xa k -l ga 1uz '! si A> B, cambie de línea y establezca la bandera en el registro Z!qbua! cargue B en A!l z -. "g -l @ o / CONT / '! bucle hacia atrás si hay otra línea en el búfer!qz "g 0uz @ o / START / '! repetir si se hizo un cambio en la última pasada!
Ejemplo 2
0uz! bandera de repetición clara!cargue el primer carácter en el registro A! <0aub! cargue el primer carácter de la siguiente línea en B!qa-qb "g xa k -l ga -1uz '! si A> B, cambia de línea y activa la bandera!qbua! cargue B en A!l.-z;>! bucle hacia atrás si otra línea en el búferqz;>! Repita si se hizo un cambio en la última pasada
Notas
- ^ "DEC tiempo compartido". El DEC Professional .
- ^ "Un editor de texto potente y sofisticado, TECO (Editor y corrector de texto) ... Bell, C. Gordon; Mudge, J. Craig; McNamara, John E. (2014). Ingeniería informática: una visión DEC del diseño de sistemas de hardware . ISBN 1483221105.
- ^ El nombre en la portada del manual DEC-10-UTECA-AD de DEC es "Introducción a TECO (Editor y corrector de texto)"
- ^ a b Manual de computadoras pequeñas PDP 8 / e . 1970. págs. 2-30.
- ^ a b c d Murphy, Dan (octubre-diciembre de 2009). "Los inicios de TECO" (PDF) . IEEE Annals of the History of Computing . 31 (4): 110-115. doi : 10.1109 / mahc.2009.127 .
- ^ citando Comm. de la ACM (ver vol. 19, no. 12, 1976)
- ^ "TECO" . El archivo de jerga . v.4.4.7. ibiblio .
- ^ "Una historia de EMACS" .
- ^ Mario Biagioli; Peter Jaszi; Martha Woodmansee (2015). Hacer y deshacer la propiedad intelectual: producción creativa . ISBN 022617249X.
EMACS se construyó originalmente sobre TECO
- ^ Harley Hahn (2016). Guía de campo de Emacs de Harley Hahn . pag. 9. ISBN 1484217039.
- ^ "Guía de bolsillo TECO" .
texto $, inserta el texto especificado precedido por una pestaña. - ^ "Corrector y editor de texto estándar TECO" .
TECO estándar. Editor de texto y corrector para. VAX, PDP-11, PDP-10 y. PDP-8.
- ^ "Preguntas frecuentes sobre DEC PDP-8 de Doug Jones" .
¿Qué lenguajes de programación son compatibles con el PDP-8? ... TECO, el editor de texto, se incluyó en las distribuciones estándar de OS / 8
- ^ "Diccionario VSI OpenVMS DCL: AZ" (PDF) . vmssoftware.com . Abril de 2020 . Consultado el 13 de septiembre de 2020 .
- ^ "Resumen de comandos TECO" . De una colección de cintas de papel MIT PDP-1 en el Museo de Historia de la Computación. Archivado desde el original el 18 de enero de 2008 . Consultado el 12 de septiembre de 2007 .
- ^ Murphy, Dan (2009). "Los inicios de TECO" (PDF) . IEEE Annals of the History of Computing . 31 (4): 110-115.
- ^ Samson, Peter (23 de julio de 1965). "PDP-6 TECO" (PDF) . Memorándum MAC-M-250. pag. 9 . Consultado el 12 de septiembre de 2007 .
- ^ Edwards, Daniel J. (29 de octubre de 1964). "TECO 6" . Memorándum MAC-M-191. pag. 2. Archivado desde el original el 28 de septiembre de 2007 . Consultado el 12 de septiembre de 2007 .
- ^ "Para el usuario de computadora de tiempo compartido: punto de datos 3300" (PDF) . Computer Terminal Corporation . Consultado el 27 de octubre de 2009 .
- ^ "Teco Editor" . c2.com . 16 de agosto de 2010 . Consultado el 17 de agosto de 2013 .
- ^ "Introducción al editor EMACS" (PDF) . MIT. Enero de 1978 . Consultado el 15 de noviembre de 2016 .
- ^ "Léame de tecox" . github.com . 2019-06-10 . Consultado el 13 de septiembre de 2020 .
- ^ "Modo de compatibilidad VAX PDP11" . comp.os.vms.narkive.com . 2019-08-06 . Consultado el 13 de septiembre de 2020 .
- ^ "Retiro de Andy Goldstein" . comp.os.vms.narkive.com . 2009-06-12 . Consultado el 13 de septiembre de 2020 .
- ^ "Manual de referencia de TECO corporación de equipos digitales" (PDF) .
- ^ Martin Pring (julio de 1982), Why Teco
- ^ Escribió esto años después de que su colega Carl B. Marbach se convirtiera en editor de un periódico orientado a DEC y escribiera "¿Por qué Teco?". Ambos artículos se publicaron juntos.
- ^ Post, Ed (julio de 1983). "Los programadores reales no utilizan PASCAL" . Datamación . 29 (7): 263-265.
- ^ Finseth, Craig A. (2006). El arte de la edición de texto . Lulu.com . ISBN 978-1-4116-8297-9.
Referencias
- Guía de bolsillo TECO . Corporación de Equipos Digitales . 1978. Archivado desde el original el 7 de febrero de 2008 . Consultado el 24 de mayo de 2012 .
- Murphy, Dan (2009). "Los inicios de TECO" (PDF) . IEEE Annals of the History of Computing . 31 (4): 110-115.
- Archivo Histórico TECO . 1990.
enlaces externos
- Sitio personal de Dan Murphy
- Colección TECO de Pete Siemsen
- La página TECO de Tom Almy. Incluye un TECO basado en la documentación TECOC y DECUS de Pete Siemsen. Existen versiones de MS-DOS, Windows (consola), Linux, Mac OS X y OS / 2.
- Introducción a la sintaxis de TECO
- Información TECO
Este artículo se basa en parte en el archivo de jerga , que es de dominio público.
- Manual TECO (OS / 8)