Mesa (programming language)

Mesa (programming language)
Mesa
Appeared in 1970s and 80s
Developer Xerox PARC
Typing discipline strongly typed
Influenced by ALGOL
Influenced Java, Modula-2, Cedar

Mesa was an innovative programming language developed in the late 1970s at the Xerox Palo Alto Research Center in Palo Alto, California, United States.[1] The language was named after the mesas of the American Southwest, referring to its design intent to be a "high-level" programming language.

Mesa is an ALGOL-like language with strong support for modular programming. Every library module has at least two source files: a definitions file specifying the library's interface plus one or more program files specifying the implementation of the procedures in the interface.[2] To use a library, a program or higher-level library must "import" the definitions. The Mesa compiler type-checks all uses of imported entities; this combination of separate compilation with type-checking was unusual at the time.

Mesa introduced several other innovations in language design and implementation, notably in the handling of software exceptions, thread synchronization, incremental compilation, and more.

Mesa was developed on the Xerox Alto, one of the first personal computers with a graphical user interface, however most of the Alto's system software was written in BCPL. Mesa was the system programming language of the later Xerox Star workstations, and for the GlobalView desktop environment. Xerox PARC developed Cedar, which was based on Mesa, with a number of additions including garbage collection, better string support, called Ropes, and a native compiler for Sun SPARC workstations.

Mesa had a major influence on the design of other important languages, such as Modula-2 and Java, and was an important vehicle for the development and dissemination of the fundamentals of GUIs, networked environments, and the other advances Xerox contributed to the field of computer science.

Contents

History

Mesa was originally designed in the Computer Systems Laboratory (CSL), a branch of the Xerox Palo Alto Research Center, for the Alto, an experimental micro-coded workstation. Initially its spread was confined to PARC and a few universities to which Xerox had donated some Altos.

Mesa was later adopted as the system's programming language for Xerox's commercial workstations such as the Xerox 8010 (Xerox Star, Dandelion) and Xerox 6085 (Daybreak), in particular for the Pilot operating system.

A secondary development environment, called the Xerox Development Environment (XDE) allowed developers to debug both the operating system Pilot as well as ViewPoint GUI applications using a world swap mechanism. This allowed the entire "state" of the world to be swapped out, and allowed low level system crashes which paralyzed the whole system to be debugged. The Pilot/Mesa world in later releases moved away from the world swap view when the micro-coded machines were phased out in favor of SPARC workstations and Intel PC's running a Mesa PrincOps emulator for the basic hardware instruction set.

Mesa was taught via the Mesa Programming Course that took people through the wide range of technology Xerox had available at the time and ended with the programmer writing a "hack", a workable program designed to be useful. An actual example of such a hack is the BWSMagnifier, which was written in 1988 and allowed people to magnify sections of the workstation screen as defined by a resizable window and a changeable magnification factor. Trained Mesa programmers from Xerox were well versed in the fundamental of GUIs, networking, exceptions, and multi-threaded programming, almost a decade before they became standard tools of the trade.

Within Xerox, Mesa was eventually superseded by the Cedar programming language. Many Mesa programmers and developers left Xerox in 1985; some of them went to DEC Systems Research Center where they used their experience with Mesa in the design of Modula-2+, and later of Modula-3.

Main features

Semantics

Mesa was a strongly typed programming language with type-checking across module boundaries, but with enough flexibility in its type system that heap allocators could be written in Mesa.[3]

Because of its strict separation between interface and implementation, Mesa allows true incremental compilation and encourages architecture- and platform-independent programming. They also simplified source-level debugging, including remote debugging via the Ethernet.

Mesa had rich exception-handling facilities, with four types of exceptions. It has support for thread synchronization via monitors. Mesa was the first language to implement monitor BROADCAST, a concept introduced by the Pilot operating system.[4]

Syntax

Mesa has an "imperative" and "algebraic" syntax, in many respects more similar to ALGOL and Pascal than to C. For instance, compound commands are indicated by BEGIN/END keywords, rather than braces. In Mesa, all keywords are written in uppercase.[1]

Due to a peculiarity of the Alto's keyboard, Mesa's original character set did not include the underscore, so programmers were forced to use CamelCase for compound identifiers --- a practice which was incorporated in PARC's standard programming style. On the other hand, Mesa designers adopted the left-pointing arrow '←' character, which took the place of underscore in the Alto keyboard, for the assignment operator.

When the Mesa designers wanted to implement an exception facility, they hired a recent M.S. graduate from Colorado who had written his thesis on exception handling facilities in algorithmic languages. This led to the richest exception facility for its time, with primitives SIGNAL, ERROR, ABORT, RETRY, CATCH, and CONTINUE. Because the language did not have type-safe checks to verify proper signal handling, uncaught exceptions were a common cause of bugs in released software.

Descendants

  • Mesa was the precursor to the programming language Cedar.[5][6] Cedar's main additions were garbage collection, dynamic types, a limited form of type parameterization, and special syntax to identify the "type-safe" parts of a multi-module software package.
  • The United States Department of Defense approached Xerox to use Mesa for its "IronMan" programming language, but Xerox declined due to conflicting goals. Xerox PARC employees argued that Mesa was a proprietary advantage that made Xerox software engineers more productive than engineers at other companies. The Department of Defense instead eventually chose and developed the Ada programming language from the candidates[citation needed].
  • The original Star Desktop evolved into the ViewPoint Desktop and later became GlobalView which was ported to various Unix platforms, such as SunOS Unix and AIX, A Mesa to C compiler was written and the resulting code compiled for the target platform. This was a workable solution but made it nearly impossible to develop on the Unix machines since the power of the Mesa compiler and associated tool chain was lost using this approach. There was some commercial success on Sun SPARC workstations in the publishing world, but this approach resulted in isolating the product to narrow market opportunities.
  • In 1976, during a sabbatical at Xerox PARC, Niklaus Wirth became acquainted with Mesa, which had a major influence in the design of his Modula-2 language [7]
  • Java explicitly refers to Mesa as a predecessor.[8]

See also

References

  1. ^ a b James G. Mitchell; William Maybury, Richard Sweet. Mesa Language Manual. XEROX PARC Technical Report. http://research.microsoft.com/lampson/23a-MesaManual/23a-MesaManualAbstract.html. 
  2. ^ Mesa Language Manual, chapter 7. (The Manual uses the term module to mean a source file.)
  3. ^ Charles Geschke; James H. Morris, Edwin H Satterthwaite (August 1977). "Early Experience with Mesa". Communications of the ACM 20 (8): 540–552. doi:10.1145/359763.359771. http://portal.acm.org/citation.cfm?id=359771. 
  4. ^ Butler W. Lampson; David D. Redell (February 1980). "Experience with Processes and Monitors in Mesa". Communications of the ACM 23 (2): 105–117. doi:10.1145/358818.358824. http://portal.acm.org/citation.cfm?id=358824. 
  5. ^ Butler Lampson. A Description of the Cedar Language. Xerox PARC Technical Report. http://research.microsoft.com/lampson/32a-CedarLang/32a-CedarLangAbstract.htm. 
  6. ^ D. Swinehart et al. (July 1985). "The Structure of Cedar". SIGPLAN Notices 20 (7): 230–244. doi:10.1145/800225.806844. http://portal.acm.org/citation.cfm?id=806844. 
  7. ^ Niklaus Wirth (2007). "Modula-2 and Oberon". Proc. 3rd Conf. History of Programming Languages: 3–1–3–10. doi:10.1145/1238844.1238847. http://portal.acm.org/citation.cfm?id=1238847. .
  8. ^ J. Gosling; Bill Joy, Guy Steele, G. Brachda. Java Language Specification (2nd ed.). http://java.sun.com/docs/books/jls/second_edition/html/intro.doc.html#237601. 

External links


Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Look at other dictionaries:

  • Euclid (programming language) — Euclid is an imperative programming language for writing verifiable programs. It was designed by Butler Lampson and associates at the Xerox PARC lab in the mid 1970s. The implementation was led by Ric Holt at the University of Toronto and James… …   Wikipedia

  • Java (programming language) — infobox programming language name = Java paradigm = Object oriented, structured, imperative year = 1995 designer = Sun Microsystems latest release version = Java Standard Edition 6 (1.6.0) latest release date = latest test version = latest test… …   Wikipedia

  • Mesa (значения) — Mesa: Mesa  реализация графического API OpenGL. Mesa (язык программирования) (англ.)  алголоподобный модульный язык программирования, разработанный в 1970 х годах в Xerox Palo Alto Research Center. MESA (англ. Manufacturing… …   Википедия

  • Mesa (disambiguation) — Contents 1 Places 2 Software 3 People 4 Other uses …   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

  • Ch (computer programming) — In computing, Ch (  /ˌsiːˈ …   Wikipedia

  • Chatino language — For the indigenous people, see Chatino. Chatino Cha cña Spoken in Mexico Region Oaxaca Native speakers 38,000  (1990–2000) …   Wikipedia

  • CamelCase — (or camel case), also known as medial capitals,[1] is the practice of writing compound words or phrases in which the elements are joined without spaces, with each element s initial letter capitalized within the compound and the first letter… …   Wikipedia

  • Modula-2 — Paradigm(s) imperative, structured, modular, data and method hiding Appeared in 1978 Designed by Niklaus Wirth Typing discipline strong, static Major implementations …   Wikipedia

  • Xerox Star — The Star workstation, officially known as the Xerox 8010 Information System, was introduced by Xerox Corporation in 1981. It was the first commercial system to incorporate various technologies that today have become commonplace in personal… …   Wikipedia

Share the article and excerpts

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