Mesa
is a
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
developed in the mid 1970s at the
Xerox Palo Alto Research Center in
Palo Alto, California
Palo Alto ( ; Spanish language, Spanish for ) is a charter city in northwestern Santa Clara County, California, United States, in the San Francisco Bay Area, named after a Sequoia sempervirens, coastal redwood tree known as El Palo Alto.
Th ...
,
United States
The United States of America (USA), also known as the United States (U.S.) or America, is a country primarily located in North America. It is a federal republic of 50 U.S. state, states and a federal capital district, Washington, D.C. The 48 ...
. The language name was a pun based upon the programming language catchphrases of the time, because Mesa is 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
Implementation is the realization of an application, execution of a plan, idea, scientific modelling, model, design, specification, Standardization, standard, algorithm, policy, or the Management, administration or management of a process or Goal ...
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, and
incremental compilation.
Mesa was developed on the
Xerox Alto, one of the first
personal computer
A personal computer, commonly referred to as PC or computer, is a computer designed for individual use. It is typically used for tasks such as Word processor, word processing, web browser, internet browsing, email, multimedia playback, and PC ...
s with a
graphical user interface
A graphical user interface, or GUI, is a form of user interface that allows user (computing), users to human–computer interaction, interact with electronic devices through Graphics, graphical icon (computing), icons and visual indicators such ...
, 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 later developed
Cedar, which was a superset of Mesa.
Mesa and Cedar had a major influence on the design of other important languages, such as
Modula-2 and
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
, and was an important vehicle for the development and dissemination of the fundamentals of
GUIs, networked environments, and the other advances
Xerox
Xerox Holdings Corporation (, ) is an American corporation that sells print and electronic document, digital document products and services in more than 160 countries. Xerox was the pioneer of the photocopier market, beginning with the introduc ...
contributed to the field of
computer science
Computer science is the study of computation, information, and automation. Computer science spans Theoretical computer science, theoretical disciplines (such as algorithms, theory of computation, and information theory) to Applied science, ...
.
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 systems 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. This technique did not scale very well to large application images (several megabytes), and so 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 PCs running a Mesa PrincOps emulator for the basic hardware instruction set.
Mesa was compiled into a stack-machine language, purportedly with the highest code density ever achieved (roughly 4 bytes per high-level language statement). This was touted in a 1981 paper where implementors from the Xerox Systems Development Department (then, the development arm of PARC), tuned up the instruction set and published a paper on the resultant code density.
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
Modula-3 is a programming language conceived as a successor to an upgraded version of Modula-2 known as Modula-2+. It has been influential in research circles (influencing the designs of languages such as Java, C#, Python and Nim), but it ha ...
.
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.
Due to its strict separation between interface and implementation, Mesa allows true incremental compilation and encourages
architecture
Architecture is the art and technique of designing and building, as distinguished from the skills associated with construction. It is both the process and the product of sketching, conceiving, planning, designing, and construction, constructi ...
- and
platform-independent programming. They also simplified source-level
debugging, including remote debugging via the
Ethernet
Ethernet ( ) is a family of wired computer networking technologies commonly used in local area networks (LAN), metropolitan area networks (MAN) and wide area networks (WAN). It was commercially introduced in 1980 and first standardized in 198 ...
.
Mesa had rich
exception handling facilities, with four types of exceptions. It had 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"
syntax, based on
ALGOL and
Pascal rather than on BCPL or
C; for instance,
compound commands are indicated by the and keywords rather than
braces. In Mesa, all keywords are written in uppercase.
Due to PARC's using the 1963 variant of
ASCII
ASCII ( ), an acronym for American Standard Code for Information Interchange, is a character encoding standard for representing a particular set of 95 (English language focused) printable character, printable and 33 control character, control c ...
rather than the more common 1967 variant, the Alto's character set included a left-pointing arrow (←) rather than an underscore. The result of this is that Alto programmers (including those using Mesa, Smalltalk etc.) conventionally used
camelCase for compound identifiers, a practice which was incorporated in PARC's standard programming style. On the other hand, the availability of the left-pointing arrow allowed them to use it for the assignment operator, as it originally had been in ALGOL.
When the Mesa designers wanted to implement an exception facility, they hired a recent M.Sc. 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 , , , , , and . As the language did not have type-safe checks to verify full coverage for signal handling, uncaught exceptions were a common cause of bugs in released software.
Cedar
Mesa was the precursor to the programming language Cedar.
Cedar's main additions were
garbage collection,
dynamic types, better string support through
ropes, a limited form of
type parameterization, and special syntax for identifying the
type-safe parts of multi-module software packages, to ensure deterministic execution and prevent
memory leaks.
Descendants
*The
United States Department of Defense approached Xerox to use Mesa for its "IronMan" programming language (see
Steelman language requirements), 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.
*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
Niklaus Emil Wirth ( IPA: ) (15 February 1934 – 1 January 2024) was a Swiss computer scientist. He designed several programming languages, including Pascal, and pioneered several classic topics in software engineering. In 1984, he won the Tu ...
became acquainted with Mesa, which had a major influence in the design of his
Modula-2 language.
*
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
explicitly refers to Mesa as a predecessor.
See also
*
History of the graphical user interface
References
External links
Mesa Programming Language Manual, Version 5 (1979)at bitsavers.org
Other Mesa documentsat bitsavers.org
, Don Gillies, Xerox SDD/ISD Employee, 1984–86.
*
{{DEFAULTSORT:Mesa (Programming Language)
Xerox
Procedural programming languages
Concurrent programming languages
Programming languages created in 1976
Statically typed programming languages
Systems programming languages