stringtranslate.com

TECO (editor de texto)

TECO ( / ˈ t k / [1] ), abreviatura de Text Editor & Corrector , [2] [3] [4] es a la vez un editor de texto orientado a caracteres 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 Tecnológico de Massachusetts (MIT). [5]

Según Murphy, el acrónimo inicial era Tape Editor and Corrector porque " la cinta de papel perforada era el único medio para almacenar el código fuente del programa en nuestro PDP-1. No había disco duro, disquete, cinta magnética (cinta magnética) ni red". ". [5] 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] Fue modificado posteriormente por muchas otras personas [7] y es un antepasado directo de Emacs , que se implementó originalmente en las macros TECO. [8] [9] [10]

Descripción

TECO no es sólo 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 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 insertar valores en una pila de valores (dando el efecto de anidados). paréntesis). Pero no hay nada que impida operaciones como saltar a la mitad de un comentario, ya que no hay sintaxis ni análisis.

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

Un ensayo satírico sobre programación de computadoras, Los verdaderos programadores 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 descubrir qué sucedería. El mismo ensayo al describir TECO acuñó el acrónimo YAFIYGI , que significa "Lo pediste, lo tienes" (en contraste con WYSIWYG ).

Impacto

El editor 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 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 usaba como un editor interactivo en línea. Las versiones posteriores de TECO eran capaces de controlar el 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), [12] [13] el sistema de tiempo compartido incompatible (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 de 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 podía usarse como el entorno operativo completo del usuario; En realidad, 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 estando incluido en OpenVMS por VSI y se invoca con el EDIT/TECOcomando. [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 desarrollado originalmente en el MIT [15] 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. [16] En estas máquinas, el proceso de desarrollo normal implicaba 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 habitualmente perforaban su código fuente en 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 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 golpe 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 hackers del PDP-1 fue Expensive Desk Calculator , en una línea similar.

El propósito declarado original de TECO era hacer un uso más eficiente del PDP-1. Como se prevé en el manual, en lugar de realizar una edición "costosa" sentándose frente a una consola , uno simplemente examinaría el texto defectuoso y prepararía una "cinta de corrección" que describiera las operaciones de edición que se realizarían en el texto. Se introducirí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). Entonces se 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 fueron motivadas por el hecho de que las impresiones de Flexowriter fuera de línea no estaban numeradas por líneas. Por lo tanto, las ubicaciones de edición debían especificarse por contexto en lugar de por número de línea. Se incluyeron diversas construcciones condicionales y de bucle (que hicieron que TECO Turing fuera completo ) para proporcionar suficiente poder descriptivo para la cinta correctora. La sintaxis concisa minimizó la cantidad 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. Los peligros 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 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 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 escribieran en la máquina de escribir de la consola.

En 1964, se había implementado 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 encontraban Richard Greenblatt y Stewart Nelson . [18]

En el MIT, el desarrollo de TECO continuó en el otoño de 1971. [ cita necesaria ] 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 CRT Datapoint -3300 recién instaladas. [19] La implementación del buffer TECO, sin embargo, fue terriblemente ineficiente para procesar funciones de inserción o eliminación de un solo carácter: la edición consumió el 100% del PDP-10. Con el apoyo de Richard Greenblatt , en el verano de 1972 Carl reimplementó el almacenamiento intermedio TECO y reformó las macros como código nativo PDP-10. [ cita necesaria ] Como ingresar al modo de 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 ( + ), que operaban cuando se leía la cadena de comando en lugar de cuando se ejecutaba. [ cita necesaria ] Las macros en tiempo de lectura hicieron que los buffers de texto auxiliares de TECO, llamados registros Q, fueran más útiles. [ cita necesaria ] Carl amplió el espacio de nombres del registro Q. Con macros en tiempo de lectura, un gran espacio de nombres de registro Q y operaciones de búfer eficientes, se preparó el escenario para vincular cada clave a una macro. [20] Estas macros de edición evolucionaron hasta convertirse en Emacs . [21]cntl]

La implementación de VMS tiene una larga historia: comenzó como TECO-8, implementada en el ensamblaje 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 conjunto PDP-11 al conjunto 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 de línea de comando opcionales brindaron 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 comenzaron basándose en tarjetas perforadas . Los comentarios eran a menudo una serie de líneas que incluían asteriscos marginales únicos y líneas completas de asteriscos superior e inferior. Una vez que las tarjetas se transfirieron en línea, fue una tarea ardua 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 qué hace. 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 alguna vez funcionó. [28]

Según Craig Finseth, autor de The Craft of Text Editing , [29] TECO ha sido descrito como un lenguaje de "sólo escritura", lo que implica que una vez que un programa se escribe en TECO, es extremadamente difícil comprender lo que hizo sin la información adecuada. documentación.

A pesar de su sintaxis, el lenguaje de comandos 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 mensaje es un solo asterisco:

*

La tecla 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 el siguiente contenido:

 int main ( int argc , char ** argv ) { printf ( "¡Hola mundo! \n " ); devolver 0 ; }         

se podría usar la siguiente sesión TECO (teniendo en cuenta que el mensaje es "*" y "$" es como se repite ESC) para cambiar "Hola" por "Adiós":

*EBhello.c$$ Abrir archivo para lectura/escritura con copia de seguridad*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$$ Copia el resto del archivo y sal.

Estos dos programas de ejemplo son una especie 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. [12] Se muestran una versión " goto " y " estructurada ". El segundo programa tenía originalmente un error que impedía que el programa finalizara, y en su lugar se utiliza la versión corregida.

Ejemplo 1

!¡COMENZAR! j0aua! ¡salte al principio, cargue el primer carácter en el registro A!!CONTINUAR! ¡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! cargar B en A!l z-."g -l @o/CONT/ '! ¡Regrese si hay otra línea en el búfer!qz"g 0uz @o/START/ ' ! ¡repita si se realizó un cambio en la última pasada!

Ejemplo 2

<0uz! ¡borrar bandera de repetición!j 0aua l ! ¡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 establece la bandera.qbua! cargar B en A!l .-z;> ! ¡Regrese si hay otra línea en el búfer!qz;> ! ¡Repita si se realizó un cambio en la última pasada!

Notas

  1. ^ "DEC tiempo compartido". El profesional DEC . Tee'koh
  2. ^ "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 de DEC del diseño de sistemas de hardware ISBN . 978-1483221106.
  3. ^ El nombre en la portada del manual DEC-10-UTECA-AD de DEC es "Introducción a TECO (editor y corrector de texto)"
  4. ^ ab Manual de computadora pequeña PDP 8 / e . 1970, págs. 2–30.
  5. ^ abcd Murphy, Dan (octubre-diciembre de 2009). "Los inicios de TECO" (PDF) . Anales IEEE de la historia de la informática . 31 (4): 110-115. doi :10.1109/mahc.2009.127. S2CID  18805607.
  6. ^ citando Comm. de la ACM (ver vol. 19, núm. 12, 1976)
  7. ^ "TECO". El archivo de jerga . v.4.4.7. ibiblio .
  8. ^ "Una historia de EMACS".
  9. ^ Mario Biagioli; Peter Jaszi; Martha Woodmansee (2015). Hacer y deshacer la propiedad intelectual: producción creativa. ISBN 022617249X. EMACS se construyó originalmente sobre TECO
  10. ^ Harley-Hahn (2016). Guía de campo de Emacs de Harley Hahn. Presione. pag. 9.ISBN 978-1484217030.
  11. ^ "Guía de bolsillo TECO". <tab>text$, Inserta el texto especificado precedido por una pestaña.
  12. ^ ab "Corrector y editor de texto estándar TECO". TECO estándar. Editor y corrector de texto para el. VAX, PDP-11, PDP-10 y. PDP-8.
  13. ^ "Preguntas frecuentes sobre DEC PDP-8 de Doug Jones". ¿Qué lenguajes de programación eran compatibles con el PDP-8? ... TECO, el editor de texto, se incluyó en las distribuciones estándar de OS/8
  14. ^ "Diccionario VSI OpenVMS DCL: AZ" (PDF) . vmssoftware.com . Abril 2020 . Consultado el 13 de septiembre de 2020 .
  15. ^ "Resumen de comandos TECO". De una colección de cintas de papel MIT PDP-1 del Museo de Historia de la Computación. Archivado desde el original el 18 de enero de 2008 . Consultado el 12 de septiembre de 2007 .
  16. ^ Murphy, Dan (2009). "Los inicios de TECO" (PDF) . Anales IEEE de la historia de la informática . 31 (4): 110-115. doi :10.1109/MAHC.2009.127. S2CID  18805607.
  17. ^ Samson, Peter (23 de julio de 1965). "PDP-6 TECO". Memorándum MAC-M-250. pag. 9. hdl : 1721.1/5917 . Consultado el 12 de septiembre de 2007 .
  18. ^ 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 .
  19. ^ "Para el usuario de computadoras de tiempo compartido: Datapoint 3300" (PDF) . Corporación de terminales informáticas . Consultado el 27 de octubre de 2009 .
  20. ^ "Editor Teco". c2.com . 16 de agosto de 2010 . Consultado el 17 de agosto de 2013 .
  21. ^ "Introducción al editor EMACS" (PDF) . MIT. Enero de 1978. Archivado desde el original (PDF) el 27 de octubre de 2020 . Consultado el 15 de noviembre de 2016 .
  22. ^ "Léame de tecox". github.com . 2019-06-10 . Consultado el 13 de septiembre de 2020 .
  23. ^ "Modo de compatibilidad VAX PDP11". comp.os.vms.narkive.com . 2019-08-06 . Consultado el 13 de septiembre de 2020 .
  24. ^ "Jubilación de Andy Goldstein". comp.os.vms.narkive.com . 2009-06-12 . Consultado el 13 de septiembre de 2020 .
  25. ^ "Corporación de equipos digitales del manual de referencia de TECO" (PDF) .
  26. ^ Martin Pring (julio de 1982), Por qué Teco
  27. ^ Escribió esto años después de que su colega Carl B. Marbach se convirtiera en editor de una revista orientada al DEC y escribiera "¿Por qué Teco?". Ambos artículos se publicaron juntos.
  28. ^ Publicación, Ed (julio de 1983). "Los programadores reales no utilizan PASCAL". Datamación . 29 (7): 263–265.
  29. ^ Finseth, Craig A. (2006). El oficio de la edición de textos. Lulu.com . ISBN 978-1-4116-8297-9.

Referencias

enlaces externos

Este artículo se basa en parte en Jergon File , que es de dominio público.