Введение
Для использования библиотеки программа или библиотека более высокого уровня должны "импортировать" определения. Компилятор Mesa выполняет проверку типов для всех использований импортированных сущностей; такое сочетание раздельной компиляции с проверкой типов было необычным для того времени. Mesa представила ряд других инноваций в проектировании и реализации языка, в частности, в обработке программных исключений, синхронизации потоков и инкрементной компиляции. Mesa был разработан на Xerox Alto, одном из первых персональных компьютеров с графическим пользовательским интерфейсом, однако большая часть системного программного обеспечения Alto была написана на BCPL. Mesa являлся языком системного программирования для последующих рабочих станций Xerox Star и среды рабочего стола GlobalView. Позже Xerox PARC разработал Cedar, который являлся расширением Mesa. Mesa и Cedar оказали значительное влияние на разработку других важных языков, таких как Modula 2 и Java, и стали важным инструментом для разработки и распространения основ графических интерфейсов, сетевых сред и других достижений, которые Xerox внесла в область компьютерных наук.
История
Mesa был первоначально разработан в Лаборатории компьютерных систем (CSL), подразделении Исследовательского центра Xerox Palo Alto, для Alto – экспериментальной микрокодированной рабочей станции. Первоначально его распространение ограничивалось PARC и несколькими университетами, которым Xerox передал некоторые Altos. Позднее Mesa был принят в качестве языка системного программирования для коммерческих рабочих станций Xerox, таких как Xerox 8010 (Xerox Star, Dandelion) и Xerox 6085 (Daybreak), в частности для операционной системы Pilot. Вторичная среда разработки, известная как Xerox Development Environment (XDE), позволяла разработчикам отлаживать как операционную систему Pilot, так и графические приложения ViewPoint, используя механизм "обмена мирами". Это позволяло заменить всё "состояние" системы и отлаживать системные сбои низкого уровня, которые приводили к полной остановке работы. Этот метод плохо масштабировался для больших приложений (в несколько мегабайт), поэтому в более поздних версиях Pilot/Mesa отказались от механизма обмена мирами, когда микрокодированные машины были заменены рабочими станциями SPARC и ПК Intel, работающими под эмулятором Mesa PrincOps для базового набора аппаратных инструкций. Mesa компилировался в машинный код стековой архитектуры, предположительно, с наивысшей плотностью кода, когда-либо достигнутой (около 4 байт на оператор языка высокого уровня). Это было заявлено в статье 1981 года, где разработчики из Отдела разработки систем Xerox (тогда – подразделение разработки PARC) оптимизировали набор инструкций и опубликовали данные о достигнутой плотности кода. Mesa преподавали в рамках курса Mesa Programming Course, который знакомил студентов с широким спектром технологий, доступных в Xerox в то время, и завершался написанием программистом "хака" – работоспособной программы, предназначенной для решения конкретной задачи. Примером такого хака является BWSMagnifier, написанный в 1988 году и позволявший увеличивать фрагменты экрана рабочей станции с помощью изменяемого окна и коэффициента масштабирования. Программисты Mesa, обученные в Xerox, хорошо разбирались в основах графических интерфейсов, сетевого взаимодействия, обработки исключений и многопоточного программирования – почти за десятилетие до того, как эти инструменты стали общепринятыми. В конечном итоге, в Xerox Mesa был вытеснен языком программирования Cedar. Многие программисты и разработчики Mesa покинули Xerox в 1985 году; некоторые из них перешли в Исследовательский центр DEC Systems, где использовали свой опыт работы с Mesa при разработке Modula 2+, а затем Modula 3.
Семантика
Mesa был строго типизированным языком программирования с проверкой типов, охватывающей границы модулей, но с достаточной гибкостью в системе типов, позволяющей писать аллокаторы кучи на Mesa. Благодаря строгому разделению интерфейса и реализации, Mesa обеспечивала истинную инкрементную компиляцию и способствовала разработке архитектурно и платформенно независимого программного обеспечения. Также была упрощена отладка на уровне исходного кода, включая удаленную отладку по сети Ethernet. Mesa обладала развитыми средствами обработки исключений, включающими четыре типа исключений. Поддерживалась синхронизация потоков посредством мониторов. Mesa стала первым языком, реализовавшим BROADCAST мониторов – концепцию, впервые представленную операционной системой Pilot.
Синтаксис
Mesa имеет "императивный" и "алгебраический" синтаксис, основанный на ALGOL и Pascal, а не на BCPL или C; например, составные команды обозначаются ключевыми словами `and` и `or`, а не фигурными скобками. В Mesa все ключевые слова пишутся в верхнем регистре. Основными дополнениями в Cedar стали сборка мусора, динамические типы, улучшенная поддержка строк за счет использования rope-структур данных, ограниченная параметризация типов и специальный синтаксис для определения типобезопасных частей многомодульных программных пакетов, обеспечивающий детерминированное выполнение и предотвращение утечек памяти.
Потомки
Министерство обороны США обратилось к Xerox с просьбой использовать Mesa для своего языка программирования "IronMan" (см. требования к языку Steelman), но Xerox отказалось из-за несовпадения целей. Сотрудники Xerox PARC утверждали, что Mesa являлась уникальным преимуществом, повышающим производительность инженеров-программистов Xerox по сравнению с инженерами других компаний. В итоге Министерство обороны выбрало и разработало язык программирования Ada из числа претендентов. Изначальная среда Star Desktop эволюционировала в ViewPoint Desktop, а затем в GlobalView, которая была портирована на различные платформы Unix, такие как SunOS Unix и AIX. Был создан компилятор Mesa в C, и полученный код компилировался для целевой платформы. Это было рабочим решением, но оно практически исключало возможность разработки непосредственно на машинах Unix, поскольку при таком подходе терялась мощность компилятора Mesa и сопутствующего инструментария. В издательском деле были достигнуты некоторые коммерческие успехи на рабочих станциях Sun SPARC, однако этот подход привел к изоляции продукта и ограничению его рыночных возможностей. В 1976 году, находясь в отпуске в Xerox PARC, Никлаус Вирт познакомился с Mesa, что оказало значительное влияние на разработку его языка Modula 2. Java явно указывает на Mesa как на один из предшественников.