# Mesa (linguagem de programação)

Mesa é uma linguagem de programação desenvolvida no meio da década de 1970 no Xerox Palo Alto Research Center em Palo Alto, California, United States. O nome da linguagem foi baseado num trocadilho com as catchphrases de linguagens de programação da época, porque Mesa (um tipo de acidente geográfico onde um planalto é isolado) é uma linguagem de "alto nível".
Mesa é uma linguagem tipo ALGOL com suporte forte a modularidade. Cada modulo de biblioteca tem pelo menos dois arquivos de código fonte: um arquivo de definições especificando a interface da biblioteca além um ou mais arquivos de programa especificando a implementação das procedures na interface. Para usar a biblioteca, um programa ou biblioteca de mais alto nível precisa "importar" as definições. O compilador Mesa type-checks todos os usos das entidades importadas, essa combinação separa a compilação com type-checking era incomum na época.$^[$
Mesa introduz várias outras inovações em design de linguagens e implementação, notavelmente no tratamento de exceções, sincronização de threads e compilação incremental.
Mesa foi desenvolvida no Xerox Alto, um dos primeiros computadores pessoais com uma interface gráfica do usuário, porem, a maior parte do software de sistemas do Ato foram escritos em BCPL. Mesa foi a linguagem de programação de sistema da workstation Xerox Star mais tarde, e a para o ambiente de desktop GlobalWiew. O Xerox PARC mais tarde desenvolveu a linguagem Cedar, que foi um superset da Mesa.
Mesa e Cedar tiveram uma grande influencia no desing de outras linguagens importantes, como Modula-2 e Java, e foram um importante veículo para o desenvolvimento e disseminação dos fundamentos de GUIs, ambientes em redes, e outros avanços a Xerox contribuiu para o campo da ciência da computação.

## História

Mesa foi originalmente projetada no Computer Systems Laboratory (CLS), um ramo do Xerox Palo Alto Research Center, para o Alto, uma estação de trabalho experimental que usava microcode. Inicialmente, ela estava restrita ao PARC e a algumas poucas universidades para as quais a Xerox doou alguns Altos.
Mesa mais tarde foi adotada como linguagem de programação de sistemas para as estações de trabalho da Xerox como o Xerox 8010 (Xerox Star, Dandelion) e o Xerox 6085 (Daybreak), e particular para o sistema operacional Pilot.
Um ambiente de desenvolvimento secundário, chamado Xerox Development Environment (XDE) permitia a desenvolvedores debugar ambos o sistema operacional Pilot assim como aplicações GUI ViewPoint usando um mecanismo de "world swap". Isso permitia que do o "estado" do mundo a ser substituído, e permitir que crashes de sistema de baixo nível que paralisariam o sistema fossem debugados. Essa técnica não escalou muito bem para imagens de aplicações maiores (vários megabytes), e então o Pilot/Mesa world mais tarde foi movido do doe "world swap view" quando as maquinas microcodadas foram substituídas gradualmente em favor das estações de trabalho SPARC e PCs Intel rodando um emulador Mesa PrincOps para o conjunto de instruções básico.
Mesa era compilada em uma linguagem de pilha de maquina, supostamente com a maior densidade de código já atingida (crudemente, 4 bytes por declaração da linguagem de alto nível). Isso foi alardeado em num paper de 1981 onde os implementadores do Xerox System Development Departament (então, o braço de desenvolvimento do PARC), ajustaram o conjunto de instruções e publicaram um paper sobre a densidade de código resultante.
Mesa foi ensinada através do Mesa Programning Course que levou pessoas de um grande conjunto de tecnologias Xerox tinha disponível no momento e terminava com programadores escrevendo um "hack", um programa funcional projetada para ser útil. Um exemplo de tais hack é o BWSMagnifier, que foi escrito em 1988 e permitia a pessoas ampliarem seções da tela da estação de trabalho ao definir uma janela redimensionável e um fator de amplificação. Programadores da Xerox trinados em Mesa eram bem versados nos fundamentos de GUIs, redes, exceções e programação multi thread, quase uma década antes delas se tornarem ferramentas padrão do ofício.
Dentro da Xerox, Mesa foi eventualmente suplantada pela linguagem de programação Cedar. Muitos programadores Mesa e desenvolvedores deixaram a Xerox em 1985, alguns deles foram para o DEC System Research Center onde usaram a experiência com Mesa no design de Modula-2+, e mais tarde Modula-3.