TRAC (para T ext R eckoning Un nd C ompiling) Idioma es un lenguaje de programación desarrollado entre 1959 a 1964 por Calvin Mooers y la primera implementado en el PDP-1 en 1964 por L. Peter Deutsch . [2] Fue uno de los tres "primeros idiomas" recomendados por Ted Nelson en Computer Lib . TRAC T64 se usó al menos hasta 1984, cuando Mooers lo actualizó a TRAC T84. [2]
Paradigma | procesador de macros de uso general |
---|---|
Diseñada por | Calvin Mooers |
Apareció por primera vez | 1964 |
Influenciado por | |
Macro SAP [1] | |
Influenciado | |
SAM76 , ML / I [1] |
Descripción del idioma
TRAC es un lenguaje puramente basado en texto, una especie de macrolenguaje . A diferencia de los lenguajes macro tradicionales ad hoc de la época, como los que se encuentran en los ensambladores, TRAC está bien planificado, es coherente y, en muchos sentidos, completo. Tiene operadores de entrada y salida explícitos, a diferencia de las E / S implícitas típicas en el nivel macro más externo, lo que lo hace simultáneamente más simple y más versátil que los lenguajes de macro más antiguos.
También se diferencia de los lenguajes de macros tradicionales en que los números TRAC son cadenas de dígitos, y la aritmética de números enteros (sin límites específicos en los valores máximos) se proporciona mediante funciones integradas ("primitivas"). Podría decirse que un aspecto de su integridad es que el concepto de error se limita a eventos como la falta de espacio de archivo y la solicitud de expansión de una cadena más larga que el almacenamiento de trabajo del intérprete; lo que en muchos lenguajes se describiría como operaciones ilegales se trata en TRAC definiendo un resultado (a menudo una cadena nula) para cada combinación posible de cadenas de argumentos de una función.
TRAC es un lenguaje de procesamiento de texto, [3] también llamado lenguaje de procesamiento de cadenas. [4]
El énfasis en las cadenas como cadenas es tan fuerte que TRAC proporciona mecanismos para manejar los propios caracteres sintácticos del lenguaje, ya sea en sus roles sintácticos o como cualquier otro carácter, y el código auto-modificable tiene más la sensación de una consecuencia natural de las técnicas de programación típicas de TRAC que de ser una característica especial.
TRAC es, como APL o LISP , un lenguaje orientado a expresiones (en contraste con los lenguajes orientados a procedimientos más típicos ), pero a diferencia de APL, carece por completo de operadores. En la mayoría de los aspectos, es un caso de programación funcional pura .
TRAC es homoicónico . [5] [6] [7]
TRAC tiene en común con LISP una sintaxis que generalmente implica la presencia de muchos niveles de paréntesis anidados.
La principal inspiración para TRAC provino de tres artículos de Douglas McIlroy . [5] [8] [9] [10]
Propiedad intelectual
Mooers registró el nombre TRAC en un esfuerzo por mantener su control sobre la definición del idioma, una acción inusual y pionera en ese momento. En un momento dado, presentó una demanda por infracción de propiedad intelectual contra DEC , alegando que un contrato para entregar una mini computadora con un intérprete de TRAC violaba sus derechos. "El primer número del Dr. Dobb's Journal , una de las primeras publicaciones en el campo de las computadoras personales, tiene un editorial mordaz contra Mooers y su rapacidad al tratar de cobrar a la gente por su lenguaje informático". [11] Sin embargo, la marca comercial ( # 72301892 ) expiró en 1992. Desde entonces, el nombre se ha utilizado varias veces para proyectos de tecnología de la información no relacionados , incluido un sistema de gestión de proyectos de código abierto actual llamado Trac .
Influencia y uso
TRAC se implementó más tarde en el PDP-8 , PDP-10 y PDP-11 .
Ha habido varios lenguajes inspirados en TRAC. Para evitar problemas con Mooers, cambiaron el nombre de las primitivas y / o utilizaron metacaracteres diferentes. En el caso de SAM76, se agregaron primitivas, según Claude Kagan, "porque TRAC es charla de bebés". En el caso de MINT, se agregaron primitivas para dar acceso a una maquinaria sofisticada de edición de texto.
- Una deficiencia percibida de TRAC fue la falta de extensibilidad total: algunas funciones primitivas de TRAC son sensibles a la distinción entre un argumento nulo (carácter cero) y uno inexistente (no delimitado), pero más allá de su último argumento no nulo, un usuario La función definida no puede hacer la distinción. SAM76 era un lenguaje similar a TRAC que eliminó esa limitación.
- Russ Nelson implementó un lenguaje de extensión emacs llamado MINT ( M INT I s N ot T RAC). Este idioma es utilizado por el editor FreeDOS FreeMACS .
TRAC fue utilizado por FTP Software en su producto PC / TCP como el lenguaje de programación del marcador del módem.
TRAC también se utilizó como interfaz en el renderizador Cray de Digital Productions para películas, incluido The Last Starfighter .
Programa de ejemplo
Script TRAC T84 para calcular números de Fibonacci: [12]
: (s, fibo, (: (ei, <1>, 1, 0, (: (ei, <1>, 2, 1, (: (aa,: (ri, fibo, :( como, <1>, 1)), :( ri, fibo, :( como, <1>, 2))))))))) `: (mw, fibo) '
Ver también
- TTM (lenguaje de programación) , un lenguaje de programación inspirado en TRAC
Referencias
- ^ a b "TRAC - Un lenguaje de manipulación de cadenas hombre-máquina" . HOPL: Enciclopedia histórica en línea de lenguajes de programación . Archivado desde el original el 13 de agosto de 2009.
- ^ a b https://web.archive.org/web/20010408052535/http://tracfoundation.org/t64tech.htm
- ^ David Walden. "Macro Memories, 1964-2013" . 2014.
- ^ Carol Loeb Mir. "Una comparación de manejo de cadenas en cuatro lenguajes de programación" . 1972.
- ^ a b Mooers, CN ; Deutsch, LP (1965). "TRAC, un lenguaje de manejo de texto". Proceeding ACM '65 Proceedings of the 1965 20th national conference . págs. 229–246. doi : 10.1145 / 800197.806048 .
- ^ Kay, Alan (1969). El motor reactivo (PhD). Universidad de Utah.
- ^ Klaas van Schelven. "No digas 'homoicónico'" .
- ^ McIlroy, MD , Extensiones de instrucciones de macros de lenguajes del compilador. MCCA 3, Nº 4 (1960), 214-220.
- ^ Eastwood, DE y McIlroy, MD, Modificación del compilador de macros de SAP. Centro de Computación Bell Telephone Laboratories, 1959.
- ^ McIlroy, MD, Uso de instrucciones macro SAP para manipular expresiones simbólicas. Centro de Computación Bell Telephone Laboratories (1960)
- ^ Mooers, Calvin. "Entrevista de historia oral con Calvin N. Mooers y Charlotte D. Mooers" . Instituto Charles Babbage .
- ^ Página de información de TRAC , en The History of Computing Project , con una pequeña muestra de código y una foto de CM Mooers.
enlaces externos
- La Fundación TRAC (Archivado)
- TRAC, un lenguaje de descripción de procedimientos para la máquina de escribir reactiva en las Comunicaciones del ACM, Volumen 9 Número 3, marzo de 1966.
- Página de información de TRAC de Andrew Walker
- Entrada del TRAC en la Enciclopedia de lenguajes informáticos de HOPL
- Un proyecto de implementación de TRAC en sourceforge .
- Entrevista de historia oral con Calvin N. Mooers y Charlotte D. Mooers en el Instituto Charles Babbage . La entrevista analiza la recuperación de información y la investigación del lenguaje de programación desde la Segunda Guerra Mundial hasta principios de la década de 1990.