Pergunta

Papagaio é o virtual máquina originalmente concebida para o Perl 6.

Que capacidades técnicas faz o Papagaio VM oferta de concorrentes de máquinas virtuais, tais como o A Máquina Virtual Java (JVM)/Hotspot VM e Common Language Runtime (CLR) a falta?

Foi útil?

Solução

A resposta foi escrito em 2009.Veja também este 2015 atualização raiph.

Para expandir @Reed e apontar alguns destaques do Papagaio opcodes estão em níveis muito mais elevados do que a maioria das máquinas virtuais.Por exemplo, enquanto a maioria das máquinas de armazenamento de números inteiros e floats, os registros são números inteiros, números, cadeias de caracteres e Papagaio Mágico Cookies (Epm).Basta ter cadeias construído em é um passo para cima da JVM.

O mais interessante é a PMC, assim como a JVM do tipo de objeto, mas muito mais fungíveis.Emp são um recipiente para todos os outros mais complicados tipos de você precisa de uma língua verdadeira, como matrizes, tabelas, árvores, iteradores, I/O, etc.A PMC e a grande variedade de construído em po para ele, o que significa menos trabalho para o escritor de língua.Papagaio não se coíbe de confusão, mas de bits necessários para a implementação de um idioma.

As minhas informações podem estar desatualizadas, mas eu acredito opcodes são conectáveis, você pode enviar um Papagaio VM que contém apenas os opcodes das suas necessidades.Eles também estavam indo para ser hereditária, se a sua língua quer que suas matrizes para trabalho um pouco diferente do estoque Papagaio matrizes, você pode fazer o que a subclasse-lo.

Finalmente, Papagaio pode ser escrito, não apenas em assembler (PASM), mas também um pouco maior nível de linguagem, Papagaio Representação Intermediária (PIR).PIR tem loops, sub-rotinas, localizada variáveis e alguns matemática básica e comparação ops, todos os princípios que as pessoas esperam em uma linguagem de programação, sem ficar muito longe do metal.

Tudo em tudo, Papagaio é muito amigável para os designers de linguagens (está escrito por e para eles) que deseja o design de um idioma e deixar tanto da execução quanto possível para alguém.

Outras dicas

Você pode ler sobre muito disso no Introdução de Parrot VM página.

O principal papagaio de vantagens tem sobre a JVM ou o CLR seria que ele foi projetado para suportar primeiro idiomas dinâmicos e potencialmente fornecer melhor suporte e desempenho para idiomas tipados dinamicamente. A JVM e o CLR são mais voltadas para apoiar idiomas estaticamente tipados, e muitas das decisões de design mostram isso.

Outra coisa que torna o Parrot diferente da maioria das VMs (certamente diferente da JVM) é que é uma máquina de registro e não uma máquina de pilha. Mas acho que as pessoas estarão discutindo por muito tempo, seja isso pode ser chamado de vantagem ou desvantagem.

Não conheço JVM e CLR o suficiente, mas minhas dicas:

  • Línguas dinâmicas (fechamento, escalares polimórficos, continuações, suporte de co-rotinas) (velocidade)
  • Despacho de método dinâmico,
  • funções de primeira classe,
  • continuações de primeira classe,
  • parâmetros (opcional, nomeado, ..),
  • registro baseado
  • a interoperabilidade da HLL fornecida em um nível de montagem
  • gama de plataformas

ATUALIZAÇÃO: Isso provavelmente é irrelevante, pois a JVM é um dos backands de Rakudo Perl 6 hoje em dia. Ver Rakudo Perl 6 na JVM (Perl 6 Advento Calendário 2013, dia 3).

Parrot é a máquina virtual projetada originalmente para Perl 6.

Há agora dois VMs originalmente projetados para Perl 6; COMITAR COM Moarvm começou em 2012.

Quais recursos técnicos a VM do Parrot oferece que máquinas virtuais concorrentes, como a Java Virtual Machine (JVM)/Hotspot VM e o tempo de execução da linguagem comum (CLR)?

Dentro Outra resposta nesta página, Reini Urban, o atual Dev Lead de Parrot (abril de 2015), fornece uma breve comparação do papagaio com a JVM e a CLR VM.

De acordo com Reini, um papagaio de vantagem importante tem o MOARVM é "threads sem bloqueio efetivamente".

A principal vantagem e diferença técnica sobre a JVM e o CLR são esses tipos (Aulas chamado PMC's) e OPS (métodos) pode ser carregado dinamicamente de implementações C eficientes fornecidas pelo usuário, e a estrutura do analisador para criar e estender idiomas é interna.

Esta pergunta está desatualizada. Rakudo Perl 6 não tem mais alvo o papagaio como um back -end; O MOARVM é o back -end preferido, com o back -end da JVM um trabalho em andamento (geralmente funciona, mas muitos recursos do Perl 6 não implementados ou atualmente quebrados). O trabalho de desenvolvimento (não está pronto para os usuários) está sendo feito para adicionar JavaScript como um terceiro back -end.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top