occam (linguagem de programação) Índice Visão geral | Revisões da linguagem |...


Linguagens de programaçãoLinguagens de programação concorrentes


William de OckhamNavalha de Occamlinguagem de programaçãocomputação paralelaCSPsPascalponto flutuanteINMOS occam 2.1 Reference ManualKRoCπ





Disambig grey.svg Nota: Não confundir com OCaml, veja Objective Caml. Para outros significados, veja Occam.








Question book-4.svg

Esta página ou secção cita fontes confiáveis e independentes, mas que não cobrem todo o conteúdo, o que compromete a verificabilidade (desde janeiro de 2011). Por favor, insira mais referências no texto. Material sem fontes poderá ser removido.
Encontre fontes: Google (notícias, livros e acadêmico)































































































































































































































































































































































































































































































































































































































































































































































































































































































































































occam
Surgido em

1983
Criado por

INMOS
Dialetos:

occam-π (pi)
Influenciada por

CSP
Influenciou

Ease

occam (de William de Ockham, da Navalha de Occam) é uma linguagem de programação utilizada em computação paralela que constrói uma seqüência de processos seqüenciais de comunicação (CSPs) que compartilham muitas de suas características[1]. Desta forma, é uma implementação prática do CSP.


Occam é uma linguagem imperativa processual (como o Pascal). Ela foi desenvolvida por David May e outros da INMOS, aconselhada por Tony Hoare, como a língua nativa de programação para os seus microprocessadores, embora implementações para outras plataformas estão disponíveis. A versão mais conhecida é Occam 2; O manual da linguagem de programação Occam 2 foi feito em conjunto por Steven Ericsson-Zenith e outros em INMOS.




Índice






  • 1 Visão geral


  • 2 Revisões da linguagem


    • 2.1 occam 1


    • 2.2 occam 2


    • 2.3 Occam 2.1


    • 2.4 occam-π




  • 3 Referências


  • 4 Bibliografia





Visão geral |


Nos exemplos a seguir a indentação e a formatação são aspectos críticos para se analisar o código: expressões são terminadas por um fim de linha, listas de expressões precisam estar no mesmo nível de indentação (esse recurso, também conhecido como a regra de off-side, também é encontrado em outras linguagens).


Comunicação entre processos trabalham através dos chamados canais. Um processo emite saídas de dados para um canal através de um "!" enquanto outro fornece entradas de dados com um "?". Entrada e saída irão bloquear até que a outra extremidade esteja pronta para aceitar ou oferecer dados. Exemplos (c é uma variável):


 keyboard ? c

 screen ! c

SEQ introduz uma lista de expressões que são avaliadas sequencialmente. Isto não está implícito como na maioria das outras linguagens de programação. Exemplo:


 SEQ
x := x + 1
y := x * x

PAR inicia uma lista de expressões que podem ser avaliadas concorrentemente. Exemplo:


 PAR
p()
q()

ALT especifica uma lista de comandos guardas. Os guardas são uma combinação de condições booleanas e uma expressão de entrada (ambos opcionais). Cada guarda para o qual tanto a condição é verdadeira quanto o canal de entrada está pronto é bem sucedido. Uma das alternativas bem sucedidas é selecionada para a execução. Exemplo:


 ALT
count1 < 100 & c1 ? data
SEQ
count1 := count1 + 1
merged ! data
count2 < 100 & c2 ? data
SEQ
count2 := count2 + 1
merged ! data
status ? request
SEQ
out ! count1
out ! count2

Isto irá ler dados a partir de canais C1 ou C2 (dependendo do que está pronto) e passá-lo em um canal fundido. Se countN alcançar a 100, leituras do canal correspondente serão desabilitadas. Um pedido sobre a condição do canal é atendido enviando a contagem de saída para out.



Revisões da linguagem |



occam 1 |


occam 1[2] (lançada em 1983) foi uma versão preliminar da linguagem. Suportava apenas o tipo de dados VAR , que era um tipo integral correspondente ao comprimento da palavra nativa da arquitetura objeto, e matrizes de apenas uma dimensão.



occam 2 |


occam 2[3] é uma extensão produzida pela INMOS Ltd, em 1987, que acrescenta suporte a ponto flutuante, funções, arrays multi-dimensionais e mais tipos de dados, tais como inteiros de tamanhos variados (INT16, Int32) e bytes.


Com esta revisão, Occam tornou-se uma linguagem capaz de expressar programas úteis, enquanto que Occam 1 foi mais adequada para análise de algoritmos e exploração da nova linguagem (embora deve-se notar que o compilador Occam 1 foi escrito em Occam 1, para que haja uma prova de que se podia escrever programas úteis em Occam 1, apesar das suas limitações).



Occam 2.1 |


occam 2.1[1] foi o último da série de desenvolvimentos da linguagem Occam de contribuição da INMOS. Definida em 1994, foi influenciada por uma proposta anterior para uma linguagem 'Occam 3' (também referenciada como "occam91" durante os estágios iniciais de desenvolvimento) criada por Geoff Barrett na INMOS no início dos anos 90. Um Manual de Referência revisado descrevendo Occam 3 foi distribuído para a comunidade tecer comentários Geoff Barrett and Steven Ericsson-Zenith (31 de março de 1992). «occam 3 Reference Manual» (PDF). INMOS. Consultado em 24 de março de 2008 </ref>, mas a linguagem nunca foi plenamente implementada em um compilador.


occam 2.1 introduziu vários novos recursos na linguagem Occam 2, incluindo:



  • Tipos de Dados nomeados (DATA TYPE x IS y)

  • Registros Nomeados

  • Packed Records

  • Relaxação de algumas regras do tipo conversão

  • Novos operadores (e.g. BYTESIN)

  • Channel retyping e channel arrays

  • Capacidade para retornar arrys de tamanho fixo de uma função


Para uma lista completa das mudanças ver apêndice do P INMOS occam 2.1 Reference Manual.



occam-π |


occam-π[4] é o nome comum para a variante Occam implementada através de versões tardias de KRoC, um compilador Occan para Kent. A adição do símbolo "π" (pi) ao nome de Occan é uma alusãoao fato de que o KRoC occam inclui diversas idéias inspiradaspelo cálculo Pi. Ela contém um número significativo de extensões para o compilador Occam 2.1, por exemplo:



  • Protocolos aninhados

  • Criação de processos em Run-time

  • Canais móveis, dados e processos

  • Recursão

  • Herança de protocolos



Referências




  1. ab INMOS (12 de maio de 1995). occam 2.1 Reference Manual (PDF). [S.l.]: SGS-THOMSON Microelectronics Ltd  INMOS document 72 occ 45 03


  2. INMOS (1984). occam Programming Manual. [S.l.]: Prentice-Hall. ISBN 0-13-629296-8 


  3. Ericsson-Zenith (1988). occam 2 Reference Manual. Prentice-Hall. [S.l.: s.n.] ISBN 0-13-629312-3 


  4. Fred Barnes and Peter Welch (14 de janeiro de 2006). «occam-pi: blending the best of CSP and the pi-calculus». Consultado em 24 de novembro de 2006 



Bibliografia |



  • INMOS Limited (1988). Occam 2 Reference Manual. New York: Prentice Hall. 1330 páginas. ISBN 0-13-629312-3 






Ícone de esboço
Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.



Popular posts from this blog

Couldn't open a raw socket. Error: Permission denied (13) (nmap)Is it possible to run networking commands...

VNC viewer RFB protocol error: bad desktop size 0x0I Cannot Type the Key 'd' (lowercase) in VNC Viewer...

Why not use the yoke to control yaw, as well as pitch and roll? Announcing the arrival of...