Mesa (linguagem de programação)

Mesa[1]
Surgido em1976[2]
Última versãoMesa 6.0 (Version 41) (julho de 1981)
Criado porComputer Systems Laboratory (CSL)
Estilo de tipagem
  • estática
  • forte
Influenciada porALGOL
InfluenciouJava, Modula-2, Cedar, PostScript[3]

Mesa[1] é 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.[4] 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.[carece de fontes?]

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 design 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 Department (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.[5]

Mesa foi ensinada através do Mesa Programming 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.

Aspectos principais

Semântica

Mesa era uma linguagem de programação fortemente tipada com checagem de tipo de lado a outro das fronteiras entre módulos, mas com flexibilidade o suficiente em seu sistema de tipagem que alocadores de heap podiam ser escritos em Mesa.[6]

Devido sua separação estrita entre interface e implementação, Mesa permite compilação incremental de verdade e encoraja programação independência de arquitetura e plataforma. Eles também simplificaram a debugação a nível de código fonte, incluindo debugação remote através da Ethernet.

Mesa tinha recursos ricos para Tratamento de exceçãoes com quatro tipos de exceções. Ele tinha suporta a sincronização de threads através de monitores. Mesa foi a primeira linguagem a implementar monitorador BROADCAST, um conceito introduzido pelo sistema operacional Pilot.[7]

Sintaxe

Mesa tem uma sintaxe "imperativa" e "algébrica", baseada em ALGOL e Pascal ao invés de BCPL ou a C; por exemplo, blocos são indicados pelas palavras chave BEGIN e END ao invés de colchetes. Em Mesa, todas as palavras chave são escritas em maiúsculo.[1]

Devido uso do PARC de uma variante de 1963 do ASCII ao invés da variante mais comum de 1967, o conjunto de caracteres to Alto incluiu um seta apontando pra esquerda ao invés de um underscore. O resultado disso é que programadores do Alto (incluindo aqueles que usam Mesa, Smalltalk, etc) convencionalmente usam CamelCase para identificadores compostos, uma prática que foi incorpora no padrão de estilo de programação do PARC. Por outro lado, a disponibilidade da seta apontando pra esquerda permiti que ela fosse usada como operador de atribuição, como originalmente era no ALGOL.

Quando os projetistas de Mesa quiseram implementar recursos para exceções, eles contrataram um graduado recente M. Sc. do Colorado que havia escrito sua tese em recursos para tratamento de exceções em linguagens algorítmicas. Isso levou a recursos ricos para exceções pela primeira vez, com as primitivas SIGNAL, ERROR, ABORT, RETRY, CATCH, and CONTINUE. Como a linguagem não tinha checagem de type-safe para verificar a cobertura completa do tratamento de sinais, exceções não capturadas eram uma causa constante de bugs em softwares lançados.

Cedar

Mesa for a precursora da linguagem de programação Cedar.[8][9] As maiores adições de Cedar foram garbage collection, tipos dinâmicos, melhor suporte a strings através de cordas, e uma forma limitada de parametrização de tipos, uma sintaxe especial para identificação de partes type-safe de pacotes de software com múltiplos módulos, para assegurar execução determinística e prevenir vazamentos de memória.

Descendentes

  • O Departamento de Defesa dos Estados Unidos procurou a Xerox para usa Mesa para o sea linguagem de programação "IronMan" (veja Steelman language requirements), mas a Xerox rejeitou a proposta devido a conflitos de objetivos. Funcionários do Xerox PARC argumentaram que Mesa era uma vantagem proprietária que fazia os engenheiros de software da Xerox mais produtivos que os engenheiros das outras empresas. O Departamento de Defesa então eventualmente escolheu e desenvolveu a linguagem de programação ADA a partir de candidatas.
  • O Star Desktop original evoluiu no Desktop ViewPoint que mais tarde se tornou o GlobalView que foi portado para várias plataformas Unix como SunOS Unix e AIX. Um compilador Mesa pra C foi escrito e o código resultante compilado para plataforma alvo. Isso foi uma solução viável mas fez com que fosse quase impossível de desenvolver em máquinas Unix devido já que o poder do compilador Mesa e conjunto de ferramentas foi perdido usando esse método. Houve algum sucesso comercial em estações de trabalho Sun SPARC no mundo da publicação, mas esse approach resultou em um isolamento do produto a poucas oportunidades no mercado.
  • Em 1976, durante um sabático no Xerox PARC, Niklaus Wirth se familiarizou com Mesa, o que teve uma grande influência no design de sua linguagem Modula-2.[10]
  • Java explicitamente refere a Mesa como predecessora.[11]

Referências

  1. 1 2 3 Mitchell, James G.; Maybury, William; Sweet, Richard (1979): 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.
  2. Mesa, Software Preservation Group
  3. Perry, T.S. (maio de 1988). «'PostScript' prints anything: a case history». IEEE Spectrum. 25 (5): 42–46. doi:10.1109/6.4550
  4. Mesa Language Manual, chapter 7. (The Manual uses the term module to mean a source file.)
  5. Sweet, Richard; Sandman, James (março de 1982), «Empirical analysis of the mesa instruction set», Proceedings of the first international symposium on Architectural support for programming languages and operating systems - ASPLOS-I, ISBN 0897910664, pp. 158–166, doi:10.1145/800050.801839Acessível livremente
  6. Geschke, Charles; Morris, James H.; Satterthwaite, Edwin H. (agosto de 1977). «Early Experience with Mesa». Communications of the ACM. 20 (8): 540–552. doi:10.1145/359763.359771Acessível livremente
  7. Lampson, Butler W.; Redell, David D. (fevereiro de 1980). «Experience with Processes and Monitors in Mesa». Communications of the ACM. 23 (2): 105–117. CiteSeerX 10.1.1.142.5765Acessível livremente. doi:10.1145/358818.358824
  8. Lampson, Butler W. A Description of the Cedar Language. [S.l.]: Xerox PARC Technical Report
  9. Swinehart, Daniel C.; Zellweger, Polle T.; Hagmann, Robert B. (julho de 1985). «The Structure of Cedar». SIGPLAN Notices. 20 (7): 230–244. CiteSeerX 10.1.1.110.9565Acessível livremente. doi:10.1145/800225.806844
  10. Wirth, Niklaus (2007). «Modula-2 and Oberon». Proceedings of the third ACM SIGPLAN conference on History of programming languages. San Diego: [s.n.] pp. 3–1–3–10. CiteSeerX 10.1.1.91.1447Acessível livremente. ISBN 978-1-59593-766-7. doi:10.1145/1238844.1238847.
  11. Gosling, James; Joy, Bill; Steele, Guy; Bracha, Gilad. Java Language Specification 2nd ed. [S.l.: s.n.]

Ligações externas