Knowledge

Mesa (programming language)

Source πŸ“

316:(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. 327:", 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. 1108: 319:
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
543:
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
446:
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
520:), 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 442:
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.
437:
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
389:
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.
323:
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 "
471:. 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. 1062: 988: 294:, an experimental micro-coded workstation. Initially, its spread was confined to PARC and a few universities to which Xerox had donated some Altos. 1403: 1398: 939: 363:
with type-checking across module boundaries, but with enough flexibility in its type system that heap allocators could be written in Mesa.
17: 206:
of the procedures in the interface. To use a library, a program or higher-level library must "import" the definitions. The Mesa compiler
601:" XEROX PARC, Computer Systems Laboratory (CSL), Technical Report CSL-79-3. Online copy at www.bitsavers.org, accessed on 2019-05-15. 1393: 1388: 680:
Proceedings of the first international symposium on Architectural support for programming languages and operating systems - ASPLOS-I
598: 544:
Sun SPARC workstations in the publishing world, but this approach resulted in isolating the product to narrow market opportunities.
571: 290:
Mesa was originally designed in the Computer Systems Laboratory (CSL), a branch of the Xerox Palo Alto Research Center, for the
1408: 915: 480: 366:
Due to its strict separation between interface and implementation, Mesa allows true incremental compilation and encourages
513: 360: 1003: 221: 210:
all uses of imported entities; this combination of separate compilation with type-checking was unusual at the time.
1092: 1069: 172: 821: 970: 697: 517: 171:. The language name was a pun based upon the programming language catchphrases of the time, because Mesa is a 1348: 407: 313: 213:
Mesa introduced several other innovations in language design and implementation, notably in the handling of
1179: 1153: 403: 297:
Mesa was later adopted as the systems programming language for Xerox's commercial workstations such as the
195: 140: 772: 558: 335: 267: 132: 79: 532: 521: 837:
Swinehart, Daniel C.; Zellweger, Polle T.; Hagmann, Robert B. (July 1985). "The Structure of Cedar".
1031: 853: 789: 334:
programming language. Many Mesa programmers and developers left Xerox in 1985; some of them went to
1358: 898: 411: 306: 240: 183: 1169: 324: 225: 214: 1353: 1026: 893: 848: 784: 678:
Sweet, Richard; Sandman, James (March 1982), "Empirical analysis of the mesa instruction set",
540: 1327: 488: 367: 164: 270:, and was an important vehicle for the development and dissemination of the fundamentals of 536: 371: 156: 8: 1174: 610: 427: 415: 262:
Mesa and Cedar had a major influence on the design of other important languages, such as
1119: 933: 921: 866: 802: 750: 703: 640: 499:
parts of multi-module software packages, to ensure deterministic execution and prevent
386: 218: 207: 45: 479:
Mesa was the precursor to the programming language Cedar. Cedar's main additions were
911: 768: 693: 594: 492: 236: 754: 644: 1239: 1036: 1014: 925: 903: 890:
Proceedings of the third ACM SIGPLAN conference on History of programming languages
870: 858: 806: 794: 740: 707: 683: 632: 279: 1293: 1097: 1007: 839: 724: 720: 35: 885: 1383: 1322: 1216: 1055: 302: 203: 160: 551:
became acquainted with Mesa, which had a major influence in the design of his
527:
The original Star Desktop evolved into the ViewPoint Desktop and later became
1377: 1234: 954: 548: 168: 1000: 907: 1272: 1040: 966: 862: 798: 745: 728: 688: 1116: 516:
approached Xerox to use Mesa for its "IronMan" programming language (see
500: 484: 320:
the instruction set and published a paper on the resultant code density.
187: 105: 623:
Perry, T.S. (May 1988). "'PostScript' prints anything: a case history".
1332: 1267: 1262: 1211: 1206: 1148: 994: 962: 528: 339: 298: 291: 252: 248: 232: 144: 50: 1257: 496: 439: 1298: 1277: 958: 636: 552: 379: 375: 343: 263: 136: 399: 1107: 1078: 434: 374:-independent programming. They also simplified source-level 275: 243:, however, most of the Alto's system software was written in 179: 120: 338:
where they used their experience with Mesa in the design of
244: 719: 836: 271: 1047: 247:. Mesa was the system programming language of the later 531:
which was ported to various Unix platforms, such as
330:
Within Xerox, Mesa was eventually superseded by the
989:Mesa Programming Language Manual, Version 5 (1979) 953: 430:. In Mesa, all keywords are written in uppercase. 274:, networked environments, and the other advances 255:desktop environment. Xerox PARC later developed 1375: 773:"Experience with Processes and Monitors in Mesa" 312:A secondary development environment, called the 1010:, Don Gillies, Xerox SDD/ISD Employee, 1984–86. 1063: 767: 604: 677: 547:In 1976, during a sabbatical at Xerox PARC, 597:; Maybury, William; Sweet, Richard (1979): 561:explicitly refers to Mesa as a predecessor. 1070: 1056: 938:: CS1 maint: location missing publisher ( 1030: 1013: 897: 852: 788: 744: 727:; Satterthwaite, Edwin H. (August 1977). 687: 495:, and special syntax for identifying the 398:Mesa has an "imperative" and "algebraic" 85:Mesa 6.0 (Version 41) / July 1981 590: 588: 586: 433:Due to PARC's using the 1963 variant of 186:. Every library module has at least two 572:History of the graphical user interface 182:-like language with strong support for 14: 1404:Statically typed programming languages 1376: 1130:John Visentin (vice chairman​ and CEO) 1017:(April 1984). "A Tour Through Cedar". 713: 1399:Programming languages created in 1976 1051: 883: 830: 813: 622: 583: 378:, including remote debugging via the 771:; Redell, David D. (February 1980). 761: 823:A Description of the Cedar Language 819: 514:United States Department of Defense 361:strongly typed programming language 24: 599:Mesa Language Manual - version 5.0 299:Xerox 8010 (Xerox Star, Dandelion) 159:developed in the mid 1970s at the 25: 1420: 982: 173:"high level" programming language 40:Computer Systems Laboratory (CSL) 1394:Concurrent programming languages 1389:Procedural programming languages 1106: 892:. San Diego. pp. 3-1–3-10. 487:, better string support through 349: 259:, which was a superset of Mesa. 947: 877: 161:Xerox Palo Alto Research Center 826:. Xerox PARC Technical Report. 671: 651: 616: 518:Steelman language requirements 506: 194:file specifying the library's 13: 1: 1409:Systems programming languages 1163:Defunct, divested or acquired 613:, Software Preservation Group 577: 314:Xerox Development Environment 729:"Early Experience with Mesa" 354: 278:contributed to the field of 18:Cedar (programming language) 7: 972:Java Language Specification 565: 336:DEC Systems Research Center 87:; 43 years ago 62:; 48 years ago 10: 1425: 331: 285: 256: 251:workstations, and for the 231:Mesa was developed on the 1341: 1318: 1311: 1286: 1248: 1225: 1199: 1192: 1162: 1144: 1137: 1115: 1104: 1085: 1077: 777:Communications of the ACM 733:Communications of the ACM 393: 131: 126: 119: 114: 104: 100: 78: 74: 56: 44: 34: 522:Ada programming language 474: 305:, in particular for the 241:graphical user interface 1170:Scientific Data Systems 908:10.1145/1238844.1238847 884:Wirth, Niklaus (2007). 668:to mean a source file.) 410:rather than on BCPL or 226:incremental compilation 1127:Keith Cozza (chairman) 1041:10.1109/ms.1984.234050 1006:26 August 2016 at the 307:Pilot operating system 1328:Xerox Network Systems 886:"Modula-2 and Oberon" 863:10.1145/800225.806844 799:10.1145/358818.358824 746:10.1145/359763.359771 689:10.1145/800050.801839 493:type parameterization 426:keywords rather than 418:are indicated by the 303:Xerox 6085 (Daybreak) 202:files specifying the 165:Palo Alto, California 1001:World-Stop Debuggers 995:Other Mesa documents 682:, pp. 158–166, 658:Mesa Language Manual 524:from the candidates. 491:, a limited form of 157:programming language 1175:Diablo Data Systems 820:Lampson, Butler W. 235:, one of the first 215:software exceptions 184:modular programming 57:First appeared 31: 769:Lampson, Butler W. 660:, chapter 7. (The 595:Mitchell, James G. 481:garbage collection 387:exception handling 237:personal computers 29: 1371: 1370: 1367: 1366: 1342:Operating systems 1312:Software products 1307: 1306: 1193:Hardware products 1188: 1187: 1015:Teitelman, Warren 917:978-1-59593-766-7 416:compound commands 198:plus one or more 150: 149: 106:Typing discipline 16:(Redirected from 1416: 1316: 1315: 1240:Xerox 500 series 1197: 1196: 1142: 1141: 1110: 1093:Joseph C. Wilson 1072: 1065: 1058: 1049: 1048: 1044: 1034: 997:at bitsavers.org 991:at bitsavers.org 977: 976: 951: 945: 943: 937: 929: 901: 881: 875: 874: 856: 834: 828: 827: 817: 811: 810: 792: 765: 759: 758: 748: 725:Morris, James H. 721:Geschke, Charles 717: 711: 710: 691: 675: 669: 655: 649: 648: 620: 614: 608: 602: 592: 470: 466: 462: 458: 454: 450: 425: 421: 414:; for instance, 280:computer science 95: 93: 88: 70: 68: 63: 36:Designed by 32: 28: 21: 1424: 1423: 1419: 1418: 1417: 1415: 1414: 1413: 1374: 1373: 1372: 1363: 1337: 1303: 1282: 1250: 1244: 1227: 1221: 1184: 1158: 1133: 1111: 1102: 1098:Chester Carlson 1081: 1076: 1032:10.1.1.105.3163 1008:Wayback Machine 985: 980: 975:(2nd ed.). 952: 948: 931: 930: 918: 882: 878: 854:10.1.1.110.9565 840:SIGPLAN Notices 835: 831: 818: 814: 790:10.1.1.142.5765 766: 762: 718: 714: 700: 676: 672: 656: 652: 621: 617: 609: 605: 593: 584: 580: 568: 509: 477: 468: 464: 460: 456: 452: 448: 423: 419: 396: 357: 352: 342:, and later of 288: 222:synchronization 96: 91: 89: 86: 66: 64: 61: 23: 22: 15: 12: 11: 5: 1422: 1412: 1411: 1406: 1401: 1396: 1391: 1386: 1369: 1368: 1365: 1364: 1362: 1361: 1356: 1351: 1345: 1343: 1339: 1338: 1336: 1335: 1330: 1325: 1323:Bravo (editor) 1319: 1313: 1309: 1308: 1305: 1304: 1302: 1301: 1296: 1290: 1288: 1284: 1283: 1281: 1280: 1275: 1270: 1265: 1260: 1254: 1252: 1246: 1245: 1243: 1242: 1237: 1231: 1229: 1223: 1222: 1220: 1219: 1214: 1209: 1203: 1201: 1194: 1190: 1189: 1186: 1185: 1183: 1182: 1177: 1172: 1166: 1164: 1160: 1159: 1157: 1156: 1151: 1145: 1139: 1135: 1134: 1132: 1131: 1128: 1124: 1122: 1113: 1112: 1105: 1103: 1101: 1100: 1095: 1089: 1087: 1083: 1082: 1075: 1074: 1067: 1060: 1052: 1046: 1045: 1011: 998: 992: 984: 983:External links 981: 979: 978: 955:Gosling, James 946: 916: 899:10.1.1.91.1447 876: 847:(7): 230–244. 829: 812: 783:(2): 105–117. 760: 739:(8): 540–552. 712: 698: 670: 664:uses the term 650: 637:10.1109/6.4550 615: 603: 581: 579: 576: 575: 574: 567: 564: 563: 562: 556: 545: 525: 508: 505: 476: 473: 395: 392: 385:Mesa had rich 356: 353: 351: 348: 287: 284: 204:implementation 148: 147: 129: 128: 124: 123: 117: 116: 112: 111: 110:Strong, static 108: 102: 101: 98: 97: 84: 82: 80:Stable release 76: 75: 72: 71: 58: 54: 53: 48: 42: 41: 38: 9: 6: 4: 3: 2: 1421: 1410: 1407: 1405: 1402: 1400: 1397: 1395: 1392: 1390: 1387: 1385: 1382: 1381: 1379: 1360: 1357: 1355: 1352: 1350: 1347: 1346: 1344: 1340: 1334: 1331: 1329: 1326: 1324: 1321: 1320: 1317: 1314: 1310: 1300: 1297: 1295: 1292: 1291: 1289: 1285: 1279: 1276: 1274: 1271: 1269: 1266: 1264: 1261: 1259: 1256: 1255: 1253: 1247: 1241: 1238: 1236: 1235:Xerox Sigma 9 1233: 1232: 1230: 1226:Minicomputers 1224: 1218: 1215: 1213: 1210: 1208: 1205: 1204: 1202: 1198: 1195: 1191: 1181: 1178: 1176: 1173: 1171: 1168: 1167: 1165: 1161: 1155: 1152: 1150: 1147: 1146: 1143: 1140: 1136: 1129: 1126: 1125: 1123: 1121: 1118: 1114: 1109: 1099: 1096: 1094: 1091: 1090: 1088: 1084: 1080: 1073: 1068: 1066: 1061: 1059: 1054: 1053: 1050: 1042: 1038: 1033: 1028: 1024: 1020: 1019:IEEE Software 1016: 1012: 1009: 1005: 1002: 999: 996: 993: 990: 987: 986: 974: 973: 968: 967:Bracha, Gilad 964: 960: 956: 950: 941: 935: 927: 923: 919: 913: 909: 905: 900: 895: 891: 887: 880: 872: 868: 864: 860: 855: 850: 846: 842: 841: 833: 825: 824: 816: 808: 804: 800: 796: 791: 786: 782: 778: 774: 770: 764: 756: 752: 747: 742: 738: 734: 730: 726: 722: 716: 709: 705: 701: 695: 690: 685: 681: 674: 667: 663: 659: 654: 646: 642: 638: 634: 630: 626: 625:IEEE Spectrum 619: 612: 607: 600: 596: 591: 589: 587: 582: 573: 570: 569: 560: 557: 554: 550: 549:Niklaus Wirth 546: 542: 538: 534: 530: 526: 523: 519: 515: 511: 510: 504: 502: 498: 494: 490: 486: 485:dynamic types 482: 472: 444: 441: 436: 431: 429: 417: 413: 409: 405: 401: 391: 388: 383: 381: 377: 373: 369: 364: 362: 350:Main features 347: 345: 341: 337: 333: 328: 326: 321: 317: 315: 310: 308: 304: 300: 295: 293: 283: 281: 277: 273: 269: 265: 260: 258: 254: 250: 246: 242: 238: 234: 229: 227: 223: 220: 216: 211: 209: 205: 201: 197: 193: 189: 185: 181: 176: 174: 170: 169:United States 166: 162: 158: 154: 146: 142: 138: 134: 130: 125: 122: 118: 115:Influenced by 113: 109: 107: 103: 99: 83: 81: 77: 73: 59: 55: 52: 49: 47: 43: 39: 37: 33: 27: 19: 1251:and printers 1200:Workstations 1025:(2): 44–73. 1022: 1018: 971: 949: 889: 879: 844: 838: 832: 822: 815: 780: 776: 763: 736: 732: 715: 679: 673: 665: 661: 657: 653: 631:(5): 42–46. 628: 624: 618: 606: 539:. A Mesa to 501:memory leaks 478: 445: 432: 397: 384: 368:architecture 365: 358: 329: 322: 318: 311: 296: 289: 261: 230: 212: 199: 191: 177: 152: 151: 26: 1228:and servers 963:Steele, Guy 507:Descendants 402:, based on 359:Mesa was a 208:type-checks 192:definitions 178:Mesa is an 1378:Categories 1333:Interpress 1287:Prototypes 1268:Xerox 9700 1263:Xerox 2700 1180:Fuji Xerox 1149:Xerox PARC 699:0897910664 578:References 533:SunOS Unix 529:GlobalView 253:GlobalView 249:Xerox Star 233:Xerox Alto 145:PostScript 127:Influenced 51:Xerox PARC 1294:NoteTaker 1258:Xerox 914 1138:Divisions 1120:Directors 1117:Corporate 1027:CiteSeerX 959:Joy, Bill 934:cite book 894:CiteSeerX 849:CiteSeerX 785:CiteSeerX 555:language. 497:type-safe 440:camelCase 376:debugging 355:Semantics 340:Modula-2+ 196:interface 190:files: a 46:Developer 1354:Xerox OS 1349:UTS/CP-V 1299:Dynabook 1278:DocuTech 1249:Scanners 1217:Daybreak 1086:Founders 1004:Archived 755:15737342 645:33376390 566:See also 553:Modula-2 469:CONTINUE 380:Ethernet 372:platform 344:Modula-3 264:Modula-2 137:Modula-2 926:1918928 871:2788992 807:1594544 708:1353842 286:History 239:with a 200:program 92:1981-07 90: ( 65: ( 1273:Phaser 1029:  924:  914:  896:  869:  851:  805:  787:  753:  706:  696:  666:module 662:Manual 643:  467:, and 449:SIGNAL 428:braces 408:Pascal 400:syntax 394:Syntax 370:- and 224:, and 219:thread 188:source 1384:Xerox 1359:Pilot 1079:Xerox 922:S2CID 867:S2CID 803:S2CID 751:S2CID 704:S2CID 641:S2CID 489:ropes 475:Cedar 465:CATCH 461:RETRY 457:ABORT 453:ERROR 435:ASCII 420:BEGIN 404:ALGOL 332:Cedar 276:Xerox 257:Cedar 180:ALGOL 155:is a 141:Cedar 121:ALGOL 1212:Star 1207:Alto 940:link 912:ISBN 694:ISBN 611:Mesa 559:Java 535:and 512:The 422:and 406:and 325:hack 301:and 292:Alto 272:GUIs 268:Java 266:and 245:BCPL 153:Mesa 133:Java 67:1976 60:1976 30:Mesa 1154:ACS 1037:doi 904:doi 859:doi 795:doi 741:doi 684:doi 633:doi 537:AIX 424:END 163:in 1380:: 1035:. 1021:. 969:. 965:; 961:; 957:; 936:}} 932:{{ 920:. 910:. 902:. 888:. 865:. 857:. 845:20 843:. 801:. 793:. 781:23 779:. 775:. 749:. 737:20 735:. 731:. 723:; 702:, 692:, 639:. 629:25 627:. 585:^ 503:. 483:, 463:, 459:, 455:, 451:, 382:. 346:. 309:. 282:. 228:. 217:, 175:. 167:, 143:, 139:, 135:, 1071:e 1064:t 1057:v 1043:. 1039:: 1023:1 944:. 942:) 928:. 906:: 873:. 861:: 809:. 797:: 757:. 743:: 686:: 647:. 635:: 541:C 412:C 94:) 69:) 20:)

Index

Cedar (programming language)
Designed by
Developer
Xerox PARC
Stable release
Typing discipline
ALGOL
Java
Modula-2
Cedar
PostScript
programming language
Xerox Palo Alto Research Center
Palo Alto, California
United States
"high level" programming language
ALGOL
modular programming
source
interface
implementation
type-checks
software exceptions
thread
synchronization
incremental compilation
Xerox Alto
personal computers
graphical user interface
BCPL

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑