TRAC (programming language)


TRAC (programming language)

TRAC (for Text Reckoning And Compiling) is a programming language developed in the early 1960s by Calvin Mooers (1919-1994). 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.
* 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. SAM76 was a TRAC-like language which eliminated that limitation.
* Russ Nelson implemented an emacs extension language named MINT (MINT Is Not TRAC). This language is used by the FreeDOS editor FreeMACS.

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

* [http://world.std.com/~awalker/cnmlist.html Andrew Walker's TRAC Information page]

* [http://hopl.murdoch.edu.au/showlanguage2.prx?exp=276 TRAC entry] in the HOPL [http://hopl.murdoch.edu.au/ Encyclopedia of Computer Languages]

* [http://www.thocp.net/software/languages/trac.html TRAC information page] , at The History of Computing Project, with small code sample and photo of C. M. Mooers.

* [http://sourceforge.net/projects/trac2001 A TRAC implementation project] on sourceforge. "Sadly, this seems to be a dead project."


Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Haskell (programming language) — Haskell Paradigm(s) functional, lazy/non strict, modular Appeared in 1990 Designed by Simon Peyton Jones, Lennart Aug …   Wikipedia

  • Timber (programming language) — Timber is a functional programming language descendant from O Haskell, targeted at embedded real time systems.External links*The [http://hackage.haskell.org/trac/timber Timber] home page *The [http://www.cs.chalmers.se/ nordland/ohaskell/ O… …   Wikipedia

  • TRAC (disambiguation) — Trac is a software tool for project management.TRAC may also mean:* The TRAC programming language, a string oriented programming language * The Train Riders Association of California, a rail advocacy and citizen lobby organization * Tuition… …   Wikipedia

  • Trac — infobox software developer = Edgewall Software released = initial release|2006|10|01 frequently updated = yes programming language = Python operating system = Cross platform genre = Project management software license = Modified BSD license… …   Wikipedia

  • List of programming languages by category — Programming language lists Alphabetical Categorical Chronological Generational This is a list of programming languages grouped by category. Some languages are listed in multiple categories. Contents …   Wikipedia

  • List of programming languages — Programming language lists Alphabetical Categorical Chronological Generational The aim of this list of programming languages is to include all notable programming languages in existence, both those in current use and historical ones, in… …   Wikipedia

  • Fusebox (programming) — Fusebox is a web application framework for ColdFusion and PHP. Originally released in 1997, it is currently in its fifth major incarnation. The current version, Fusebox 5.5, was released to the world at the beginning of December 2007.Fusebox is… …   Wikipedia

  • Data-structured language — In computing a data structured language is a programming language in which the data structure is a main organizing principle, representation, model, for data and logic (code) alike, in which both are stored and operated upon, i.e., program data… …   Wikipedia

  • Cache Meta Language — is a computer programming language used to configure high speed caching functionality in web server software such as lighttpd, which couples the functionality with that of memcache, a memory based caching system. The lighttpd module that… …   Wikipedia

  • Calvin Mooers — Calvin Northrup Mooers (1919 ndash; December 1, 1994), was an American computer scientist known for his work in information retrieval and for the programming language TRAC.Mooers was a native of Minneapolis, Minnesota, attended the University of… …   Wikipedia


Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.