Mesa programming language
Encyclopedia
Mesa was an innovative programming
language
developed in the late 1970s at the Xerox Palo Alto Research Center in Palo Alto, California
, United States
. The language was named after the mesa
s 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. 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 computer
s 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 GUI
s, networked environments, and the other advances Xerox
contributed to the field of computer science
.
, 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
.
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.
, 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.
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.
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...
language
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 late 1970s at the Xerox Palo Alto Research Center in Palo Alto, California
Palo Alto, California
Palo Alto is a California charter city located in the northwest corner of Santa Clara County, in the San Francisco Bay Area of California, United States. The city shares its borders with East Palo Alto, Mountain View, Los Altos, Los Altos Hills, Stanford, Portola Valley, and Menlo Park. It is...
, United States
United States
The United States of America is a federal constitutional republic comprising fifty states and a federal district...
. The language was named after the mesa
Mesa
A mesa or table mountain is an elevated area of land with a flat top and sides that are usually steep cliffs. It takes its name from its characteristic table-top shape....
s of the American Southwest, referring to its design intent to be a "high-level" programming language
High-level programming language
A high-level programming language is a programming language with strong abstraction from the details of the computer. In comparison to low-level programming languages, it may use natural language elements, be easier to use, or be from the specification of the program, making the process of...
.
Mesa is an ALGOL
ALGOL
ALGOL is a family of imperative computer programming languages originally developed in the mid 1950s which greatly influenced many other languages and became the de facto way algorithms were described in textbooks and academic works for almost the next 30 years...
-like language with strong support for modular programming
Modularity (programming)
Modular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...
. Every library module has at least two source
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...
files: a definitions file specifying the library's interface
Interface (computer science)
In the field of computer science, an interface is a tool and concept that refers to a point of interaction between components, and is applicable at the level of both hardware and software...
plus one or more program files specifying the implementation
Implementation
Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard, algorithm, or policy.-Computer Science:...
of the procedures in the interface. 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
Synchronization (computer science)
In computer science, synchronization refers to one of two distinct but related concepts: synchronization of processes, and synchronization of data. Process synchronization refers to the idea that multiple processes are to join up or handshake at a certain point, so as to reach an agreement or...
, incremental compilation
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...
, and more.
Mesa was developed on the Xerox Alto
Xerox Alto
The Xerox Alto was one of the first computers designed for individual use , making it arguably what is now called a personal computer. It was developed at Xerox PARC in 1973...
, one of the first personal computer
Personal computer
A personal computer is any general-purpose computer whose size, capabilities, and original sales price make it useful for individuals, and which is intended to be operated directly by an end-user with no intervening computer operator...
s with a graphical user interface
Graphical user interface
In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...
, however most of the Alto's system software was written in BCPL
BCPL
BCPL is a procedural, imperative, and structured computer programming language designed by Martin Richards of the University of Cambridge in 1966.- Design :...
. Mesa was the system programming language of the later Xerox Star
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 computers, including a bitmapped display, a window-based...
workstations, and for the GlobalView
GlobalView
GlobalView was an integrated “desktop environment” including word-processing, desktop-publishing, and simple calculation and database functionality, developed at Xerox Parc as a way to run the software originally developed for their Xerox Alto and Xerox Star specialized workstations on an IBM...
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
Modula-2
Modula-2 is a computer programming language designed and developed between 1977 and 1980 by Niklaus Wirth at ETH Zurich as a revision of Pascal to serve as the sole programming language for the operating system and application software for the personal workstation Lilith...
and Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
, and was an important vehicle for the development and dissemination of the fundamentals of GUI
Gui
Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...
s, networked environments, and the other advances Xerox
Xerox
Xerox Corporation is an American multinational document management corporation that produced and sells a range of color and black-and-white printers, multifunction systems, photo copiers, digital production printing presses, and related consulting services and supplies...
contributed to the field of computer science
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...
.
History
Mesa was originally designed in the Computer Systems Laboratory (CSL), a branch of the Xerox Palo Alto Research Center, for the AltoXerox Alto
The Xerox Alto was one of the first computers designed for individual use , making it arguably what is now called a personal computer. It was developed at Xerox PARC in 1973...
, 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)
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 computers, including a bitmapped display, a window-based...
and Xerox 6085 (Daybreak)
Xerox Daybreak
Xerox Daybreak is a workstation computer marketed by Xerox from 1985 to 1989. It ran the ViewPoint GUI and was used extensively throughout Xerox until being replaced by Suns and PCs...
, in particular for the Pilot operating system
Pilot (operating system)
Pilot was a single-user, multitasking operating system designed by Xerox PARC in early 1977. Pilot was written in the Mesa programming language, totalling about 24,000 lines of code....
.
A secondary development environment, called the Xerox Development Environment
Xerox Development Environment
The Xerox Development Environment was one of the first Integrated development environments . It was first implemented on the Xerox Alto in 1977.-External links:* *...
(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
DEC Systems Research Center
The Systems Research Center was a research laboratory created by Digital Equipment Corporation in 1984, in Palo Alto, California....
where they used their experience with Mesa in the design of Modula-2+
Modula-2+
Modula-2+ is a programming language descended from the Modula-2 language. It was developed at DEC Systems Research Center and Acorn Computers Ltd Research Centre in Palo Alto, California. Modula-2+ is Modula-2 with exceptions and threads. The group who developed the language was led by P...
, and later of Modula-3
Modula-3
In computer science, Modula-3 is a programming language conceived as a successor to an upgraded version of Modula-2 known as Modula-2+. While it has been influential in research circles it has not been adopted widely in industry...
.
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.Because of its strict separation between interface and implementation, Mesa allows true incremental compilation and encourages architecture
Computer architecture
In computer science and engineering, computer architecture is the practical art of selecting and interconnecting hardware components to create computers that meet functional, performance and cost goals and the formal modelling of those systems....
- and platform
Platform (computing)
A computing platform includes some sort of hardware architecture and a software framework , where the combination allows software, particularly application software, to run...
-independent programming. They also simplified source-level debugging
Debugger
A debugger or debugging tool is a computer program that is used to test and debug other programs . The code to be examined might alternatively be running on an instruction set simulator , a technique that allows great power in its ability to halt when specific conditions are encountered but which...
, including remote debugging via the Ethernet
Ethernet
Ethernet is a family of computer networking technologies for local area networks commercially introduced in 1980. Standardized in IEEE 802.3, Ethernet has largely replaced competing wired LAN technologies....
.
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.
Syntax
Mesa has an "imperative" and "algebraic" syntaxSyntax
In linguistics, syntax is the study of the principles and rules for constructing phrases and sentences in natural languages....
, in many respects more similar to ALGOL and Pascal
Pascal (programming language)
Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...
than to C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
. For instance, compound commands are indicated by BEGIN/END keywords, rather than braces. In Mesa, all keywords are written in uppercase.
Due to a peculiarity of the Alto's keyboard
Keyboard (computing)
In computing, a keyboard is a typewriter-style keyboard, which uses an arrangement of buttons or keys, to act as mechanical levers or electronic switches...
, Mesa's original character set did not include the underscore
Underscore
The underscore [ _ ] is a character that originally appeared on the typewriter and was primarily used to underline words...
, so programmers were forced to use CamelCase
CamelCase
CamelCase , also known as medial capitals, 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 either upper or lower case—as in "LaBelle", "BackColor",...
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. Cedar's main additions were garbage collectionGarbage collection (computer science)In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...
, dynamic typesType systemA type system associates a type with each computed value. By examining the flow of these values, a type system attempts to ensure or prove that no type errors can occur...
, a limited form of type parameterizationType polymorphismIn computer science, polymorphism is a programming language feature that allows values of different data types to be handled using a uniform interface. The concept of parametric polymorphism applies to both data types and functions...
, and special syntax to identify the "type-safe" parts of a multi-module software package. - The United States Department of DefenseUnited States Department of DefenseThe United States Department of Defense is the U.S...
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 languageAda (programming language)Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages...
from the candidates . - 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 AIXAIX operating systemAIX AIX AIX (Advanced Interactive eXecutive, pronounced "a i ex" is a series of proprietary Unix operating systems developed and sold by IBM for several of its computer platforms...
, 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 WirthNiklaus WirthNiklaus Emil Wirth is a Swiss computer scientist, best known for designing several programming languages, including Pascal, and for pioneering several classic topics in software engineering. In 1984 he won the Turing Award for developing a sequence of innovative computer languages.-Biography:Wirth...
became acquainted with Mesa, which had a major influence in the design of his Modula-2Modula-2Modula-2 is a computer programming language designed and developed between 1977 and 1980 by Niklaus Wirth at ETH Zurich as a revision of Pascal to serve as the sole programming language for the operating system and application software for the personal workstation Lilith...
language - JavaJava (programming language)Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
explicitly refers to Mesa as a predecessor.
External links
- World-Stop Debuggers, Don Gillies, Xerox SDD/ISD Employee, 1984-86.
- A Tour Through Cedar, Warren Teitelman. IEEE Software, Volume 1, Issue 2 (April 1984)