Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Mesa (programming language)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Use dmy dates|date=June 2016}} {{Infobox programming language | name = Mesa<ref name="manual">[[James G. Mitchell|Mitchell, James G.]]; Maybury, William; Sweet, Richard (1979): [http://www.bitsavers.org/pdf/xerox/parc/techReports/CSL-79-3_Mesa_Language_Manual_Version_5.0.pdf Mesa Language Manual - version 5.0]" XEROX PARC, Computer Systems Laboratory (CSL), Technical Report CSL-79-3. Online copy at www.bitsavers.org, accessed on 2019-05-15.</ref> | designer = Computer Systems Laboratory (CSL)<!-- or: | designers = --> | developer = [[Xerox PARC]] <!-- or: | developers = --> | released = {{start date and age|df=yes|1976}}<ref name="releasesspmesa">[http://www.softwarepreservation.org/projects/lang/mesa Mesa], Software Preservation Group</ref> | latest release version = Mesa 6.0 (Version 41) | latest release date = {{start date and age|df=yes|1981|07}} | typing = Strong, static | influenced by = [[ALGOL]] | influenced = [[Java (programming language)|Java]], [[Modula-2]], [[Cedar (programming language)|Cedar]], [[PostScript]]<ref>{{cite journal |last1=Perry |first1=T.S. |title='PostScript' prints anything: a case history |journal=IEEE Spectrum |date=May 1988 |volume=25 |issue=5 |pages=42β46 |doi=10.1109/6.4550|s2cid=33376390 }}</ref> }} '''Mesa'''<ref name="manual" /> is a [[programming language]] developed in the mid 1970s at the [[PARC (company)|Xerox Palo Alto Research Center]] in [[Palo Alto, California]], [[United States]]. The language name was a pun based upon the programming language catchphrases of the time, because Mesa is a [[high-level programming language|"high level" programming language]]. Mesa is an [[ALGOL]]-like language with strong support for [[modularity (programming)|modular programming]]. Every library module has at least two [[source code|source]] files: a ''definitions'' file specifying the library's [[interface (computer science)|interface]] plus one or more ''program'' files specifying the [[implementation]] of the procedures in the interface.<ref>''Mesa Language Manual'', chapter 7. (The ''Manual'' uses the term ''module'' to mean a source file.)</ref> To use a library, a program or higher-level library must "import" the definitions. The Mesa compiler [[Type system#Type checking|type-checks]] all uses of imported entities; this combination of separate compilation with type-checking was unusual at the time.{{citation needed|date=October 2016}} Mesa introduced several other innovations in language design and implementation, notably in the handling of [[exception (programming)|software exception]]s, [[Thread (computing)|thread]] [[synchronization (computer science)|synchronization]], and [[incremental compilation]]. 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 later developed [[#Cedar|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 (programming language)|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]]. ==History== Mesa was originally designed<!--Dates??? Names???--> in the Computer Systems Laboratory (CSL), a branch of the Xerox Palo Alto Research Center, for the [[Xerox Alto|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 Star|Xerox 8010 (Xerox Star, Dandelion)]] and [[Xerox Daybreak|Xerox 6085 (Daybreak)]], in particular for the [[Pilot (operating system)|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.<ref>{{citation |date=March 1982 |first1=Richard |last1=Sweet |first2=James |last2=Sandman |title=Proceedings of the first international symposium on Architectural support for programming languages and operating systems - ASPLOS-I |chapter=Empirical analysis of the mesa instruction set |pages=158β166 |doi=10.1145/800050.801839 |isbn=0897910664 |s2cid=1353842 |doi-access=free }}</ref> 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 (technology slang)|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|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.<ref name="geschke">{{cite journal |doi=10.1145/359763.359771 |first1=Charles |last1=Geschke |author-link=Charles Geschke |first2=James H. |last2=Morris |author-link2=James H. Morris |first3=Edwin H. |last3=Satterthwaite |date=August 1977 |title=Early Experience with Mesa |journal=Communications of the ACM |volume=20 |issue=8 |pages=540β552 |s2cid=15737342 |doi-access=free }}</ref> Due to its strict separation between interface and implementation, Mesa allows true incremental compilation and encourages [[computer architecture|architecture]]- and [[platform (computing)|platform]]-independent programming. They also simplified source-level [[debugger|debugging]], including remote debugging via the [[Ethernet]]. 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.<ref name="monit">{{cite journal |doi=10.1145/358818.358824 |url=http://research.microsoft.com/lampson/23-ProcessesInMesa/Abstract.html |title=Experience with Processes and Monitors in Mesa |first1=Butler W. |last1=Lampson |author-link=Butler W. Lampson |first2=David D. |last2=Redell |journal=Communications of the ACM |volume=23 |issue=2 |pages=105β117 |date=February 1980 |citeseerx=10.1.1.142.5765 |s2cid=1594544 }}</ref> ===Syntax=== Mesa has an "imperative" and "algebraic" [[syntax]], based on [[ALGOL (programming language)|ALGOL]] and [[Pascal (programming language)|Pascal]] rather than on BCPL or [[C (programming language)|C]]; for instance, [[block (programming)|compound command]]s are indicated by the {{Mono|BEGIN}} and {{Mono|END}} keywords rather than [[brace (punctuation)|brace]]s. In Mesa, all keywords are written in uppercase.<ref name="manual" /> Due to PARC's using the 1963 variant of [[ASCII]] 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{{who|date=October 2021}} from Colorado<!-- John B. Goodenough ? --> who had written his thesis on exception handling facilities in algorithmic languages. This led to the richest exception facility for its time, with primitives {{Mono|SIGNAL}}, {{Mono|ERROR}}, {{Mono|ABORT}}, {{Mono|RETRY}}, {{Mono|CATCH}}, and {{Mono|CONTINUE}}. 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.<ref name="cedar1">{{cite book |url = http://research.microsoft.com/lampson/32a-CedarLang/32a-CedarLangAbstract.htm |title=A Description of the Cedar Language |first=Butler W. |last=Lampson |publisher=Xerox PARC Technical Report | issue = CSL-83-15}}</ref><ref name="cedar2">{{cite journal |doi=10.1145/800225.806844 |title=The Structure of Cedar |first1=Daniel C. |last1=Swinehart |first2=Polle T. |last2=Zellweger |first3=Robert B. |last3=Hagmann |journal=[[SIGPLAN Notices]] |volume=20 |issue=7 |pages=230β244 |date=July 1985 |citeseerx=10.1.1.110.9565 |s2cid=2788992 }}</ref> Cedar's main additions were [[garbage collection (computer science)|garbage collection]], [[type system|dynamic types]], better string support through [[Rope (data structure)|ropes]], a limited form of [[type polymorphism|type parameterization]], and special syntax for identifying the [[type-safe]] parts of multi-module software packages, to ensure deterministic execution and prevent [[memory leak]]s. ==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)|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 [[Solaris (operating system)|SunOS Unix]] and [[AIX operating system|AIX]]. A Mesa to [[C Programming Language|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.<ref>{{cite book |doi=10.1145/1238844.1238847 |chapter-url=http://portal.acm.org/citation.cfm?id=1238847 |first=Niklaus |last=Wirth | title=Proceedings of the third ACM SIGPLAN conference on History of programming languages | chapter=Modula-2 and Oberon |pages=3-1β3-10 |location=San Diego |year=2007 |citeseerx=10.1.1.91.1447 |isbn = 978-1-59593-766-7|s2cid = 1918928}}.</ref> * [[Java (programming language)|Java]] explicitly refers to Mesa as a predecessor.<ref>{{cite book |url=http://java.sun.com/docs/books/jls/second_edition/html/intro.doc.html#237601 |title=Java Language Specification |first1=James |last1=Gosling |author-link=James Gosling |first2=Bill |last2=Joy |author-link2=Bill Joy |first3=Guy |last3=Steele |author-link3=Guy Steele |first4=Gilad |last4=Bracha |author-link4=Gilad Bracha |edition=2nd}}</ref> ==See also== *[[History of the graphical user interface]] ==References== {{reflist|30em}} ==External links== *[http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/parc/techReports/CSL-79-3_Mesa_Language_Manual_Version_5.0.pdf Mesa Programming Language Manual, Version 5 (1979)] at bitsavers.org *[http://bitsavers.org/pdf/xerox/mesa/ Other Mesa documents] at bitsavers.org *[http://www.ece.ubc.ca/~gillies/note1.html World-Stop Debuggers] {{Webarchive|url=https://web.archive.org/web/20160826170040/http://www.ece.ubc.ca/~gillies/note1.html |date=26 August 2016 }}, Don Gillies, Xerox SDD/ISD Employee, 1984β86. * {{cite journal |citeseerx=10.1.1.105.3163 |title=A Tour Through Cedar |first=Warren |last=Teitelman |author-link=Warren Teitelman |journal=IEEE Software |volume=1 |issue=2 |date=April 1984 |doi=10.1109/ms.1984.234050 |pages=44β73 }} {{Xerox}} {{DEFAULTSORT:Mesa (Programming Language)}} [[Category:Xerox]] [[Category:Procedural programming languages]] [[Category:Concurrent programming languages]] [[Category:Programming languages created in 1976]] [[Category:Statically typed programming languages]] [[Category:Systems programming languages]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Mono
(
edit
)
Template:Reflist
(
edit
)
Template:Use dmy dates
(
edit
)
Template:Webarchive
(
edit
)
Template:Who
(
edit
)
Template:Xerox
(
edit
)