TRAC programming language
Encyclopedia
TRAC is a programming language
developed in the early 1960s by Calvin Mooers
. It was one of three "first languages" recommended by Ted Nelson
in Computer Lib
.
TRAC is a purely text-based language—a kind of macro language. Unlike traditional ad hoc macro languages of the time, such as those found in assemblers, TRAC is well planned, consistent, and in many senses complete. It has explicit input and output operators, unlike the typical implicit I/O at the outermost macro level, which makes it simultaneously simpler and more versatile than older macro languages.
It also differs from traditional macro languages in that TRAC numbers are strings of digits, with integer arithmetic (without specific limits on maximum values) being provided through built-in ("primitive") functions. Arguably, one aspect of its completeness is that the concept of error is limited to events like lack of file space and requesting expansion of a string longer than the interpreter's working storage; what would in many languages be described as illegal operations are dealt with in TRAC by defining a result (often a null string) for every possible combination of a function's argument strings.
The emphasis on strings as strings is so strong that TRAC provides mechanisms for handling the language's own syntactic characters either in their syntactic roles or like any other character, and self-modifying code has more the feel of a natural consequence of typical TRAC programming techniques than of being a special feature.
TRAC is, like APL
or LISP
, an expression oriented language (in contrast to more typical procedure-oriented languages), but unlike APL, it completely lacks operators. In most respects, it is a case of pure functional programming
.
TRAC has in common with LISP a syntax that generally involves the presence of many levels of nested parentheses.
Mooers trademarked the name TRAC in an effort to maintain his control over the definition of the language, an unusual and pioneering action at the time. At one point, he brought an intellectual property infringement suit against DEC
, alleging that a contract to deliver a mini-computer with a TRAC interpreter violated his rights. However, despite the trademark status, the name has been used several times for unrelated information technology
projects, including a current open source
project management system called Trac
.
There have been various languages inspired by TRAC. To avoid any trouble with Mooers, they renamed primitives and/or used different metacharacters. In SAM76's case, primitives were added according to Claude Kagan "because TRAC is baby talk". In MINT's case, primitives were added to give access to a sophisticated text editor machinery.
TRAC was used by FTP Software in its PC/TCP product as the modem dialler scripting language.
TRAC was also used as a front end on Digital Productions Cray renderer for "The Last Starfighter" et al.
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
developed in the early 1960s by Calvin Mooers
Calvin Mooers
Calvin Northrup Mooers , was an American computer scientist known for his work in information retrieval and for the programming language TRAC....
. It was one of three "first languages" recommended by Ted Nelson
Ted Nelson
Theodor Holm Nelson is an American sociologist, philosopher, and pioneer of information technology. He coined the terms "hypertext" and "hypermedia" in 1963 and published it in 1965...
in Computer Lib
Computer Lib
Computer Lib is a book by Ted Nelson, originally published in 1974 by Nelson himself, and packaged with Dream Machines, another book by Nelson...
.
TRAC is a purely text-based language—a kind of macro language. Unlike traditional ad hoc macro languages of the time, such as those found in assemblers, TRAC is well planned, consistent, and in many senses complete. It has explicit input and output operators, unlike the typical implicit I/O at the outermost macro level, which makes it simultaneously simpler and more versatile than older macro languages.
It also differs from traditional macro languages in that TRAC numbers are strings of digits, with integer arithmetic (without specific limits on maximum values) being provided through built-in ("primitive") functions. Arguably, one aspect of its completeness is that the concept of error is limited to events like lack of file space and requesting expansion of a string longer than the interpreter's working storage; what would in many languages be described as illegal operations are dealt with in TRAC by defining a result (often a null string) for every possible combination of a function's argument strings.
The emphasis on strings as strings is so strong that TRAC provides mechanisms for handling the language's own syntactic characters either in their syntactic roles or like any other character, and self-modifying code has more the feel of a natural consequence of typical TRAC programming techniques than of being a special feature.
TRAC is, like APL
APL programming language
APL is an interactive array-oriented language and integrated development environment, which is available from a number of commercial and noncommercial vendors and for most computer platforms. It is based on a mathematical notation developed by Kenneth E...
or LISP
Lisp
A lisp is a speech impediment, historically also known as sigmatism. Stereotypically, people with a lisp are unable to pronounce sibilants , and replace them with interdentals , though there are actually several kinds of lisp...
, an expression oriented language (in contrast to more typical procedure-oriented languages), but unlike APL, it completely lacks operators. In most respects, it is a case of pure functional programming
Functional programming
In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state...
.
TRAC has in common with LISP a syntax that generally involves the presence of many levels of nested parentheses.
Mooers trademarked the name TRAC in an effort to maintain his control over the definition of the language, an unusual and pioneering action at the time. At one point, he brought an intellectual property infringement suit against DEC
Digital Equipment Corporation
Digital Equipment Corporation was a major American company in the computer industry and a leading vendor of computer systems, software and peripherals from the 1960s to the 1990s...
, alleging that a contract to deliver a mini-computer with a TRAC interpreter violated his rights. However, despite the trademark status, the name has been used several times for unrelated information technology
Information technology
Information technology is the acquisition, processing, storage and dissemination of vocal, pictorial, textual and numerical information by a microelectronics-based combination of computing and telecommunications...
projects, including a current open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
project management system called Trac
Trac
Trac is an open source, web-based project management and bug-tracking tool. The program is inspired by CVSTrac, and was originally named svntrac due to its ability to interface with Subversion. It is developed and maintained by Edgewall Software....
.
There have been various languages inspired by TRAC. To avoid any trouble with Mooers, they renamed primitives and/or used different metacharacters. In SAM76's case, primitives were added according to Claude Kagan "because TRAC is baby talk". In MINT's case, primitives were added to give access to a sophisticated text editor machinery.
- one perceived shortcoming of TRAC was lack of full extensibility: some TRAC primitive functions are sensitive to the distinction between a null (zero-character) argument and a nonexistent (non-delimited) one, but beyond its last non-null argument, a user-defined function cannot make the distinction. SAM76SAM76SAM76 is a macro programming language used from the late 1970s to the present 2007 initially ran on CP/M.The SAM76 language is a list and string processor designed for interactive and user-directed applications, including artificial intelligence programming, and permits high portability from...
was a TRAC-like language which eliminated that limitation. - Russ NelsonRuss NelsonRussell "Russ" Nelson is an American computer programmer. He was a founding board member of the Open Source Initiative and briefly served as its president in 2005.-Career:...
implemented an emacsEmacsEmacs is a class of text editors, usually characterized by their extensibility. GNU Emacs has over 1,000 commands. It also allows the user to combine these commands into macros to automate work.Development began in the mid-1970s and continues actively...
extension language named MINT (MINT Is Not TRAC). This language is used by the FreeDOSFreeDOSFreeDOS is an operating system for IBM PC compatible computers. FreeDOS is made up of many different, separate programs that act as "packages" to the overall FreeDOS Project...
editor FreeMACSFreemacsFreemacs is a small, programmable computer text editor for MS-DOS with some degree of compatibility with GNU Emacs. Written by Russ Nelson and later maintained by Jim Hall, Freemacs is currently distributed under the GPL in the FreeDOS project....
.
TRAC was used by FTP Software in its PC/TCP product as the modem dialler scripting language.
TRAC was also used as a front end on Digital Productions Cray renderer for "The Last Starfighter" et al.
External links
- The TRAC Foundation (Archived)
- TRAC entry in the HOPLHOPLHistory of Programming Languages is an infrequent ACM SIGPLAN conference. Past conferences were held in 1978, 1993, and 2007.- HOPL I :...
Encyclopedia of Computer Languages
- TRAC information page, at The History of Computing Project, with small code sample and photo of C. M. Mooers.
- A TRAC implementation project on sourceforgeSourceForgeSourceForge Enterprise Edition is a collaborative revision control and software development management system. It provides a front-end to a range of software development lifecycle services and integrates with a number of free software / open source software applications .While originally itself...
. Sadly, this seems to be a dead project.
- Oral history interview with Calvin N. Mooers and Charlotte D. Mooers at the Charles Babbage InstituteCharles Babbage InstituteThe Charles Babbage Institute is a research center at the University of Minnesota specializing in the history of information technology, particularly the history since 1935 of digital computing, programming/software, and computer networking....
. Interview discusses information retrieval and programming language research from World War II through the early 1990s.