Potion (linguagem de programação)
potion é uma pequena e rápida linguagem de programação dinâmica e orientada à pilha com um compilador JIT, clausuras, continuações e exceções, uma máquina virtual baseada em Lua e um modelo de objeto baseado em entrada e saída embutida o em torno da troca de mensagens, um metaobjeto e mixins. É tecnicamente um Common_Lisp somente léxico com duas linguagens: uma para o código, uma para os dados e ela foi escrita sob 10 mil linhas de C.
potion | |
---|---|
Paradigma | Functional, stack-oriented, message passing |
Surgido em | 2007 |
Última versão | v0.1.1061 |
Estilo de tipagem | Dinâmica |
Licença | Licença MIT |
Página oficial | perl11 |
História
editarO potion foi criado por _why como seu último projeto em 2007 antes de seu desaparecimento da internet.[1]
Ele começou brincando com as partes internas da linguagem Lua e lendo materiais de Ian Piumarta e de Nicolas Cannasse.
Após o desaparecimento de _why, um desenvolvedor chamado "fogus" assumiu a manutenção até 2013. A palavra-chave class foi adicionada nesse período.
Em 2013, um grupo autodenominado perl11 "(5+6=11)", com Reini Urban como desenvolvedor chefe, assumiu o desenvolvimento do potion[2] para ser utilizado como Máquina Virtual para "p2", uma implementação planejada para o Perl5 e o Perl6.[3]
Ambas as linguagens, potion e p2, são agora desenvolvidas juntas pelos desenvolvedores do perl11. A versão v0.1 foi lançada em 16 de Outubro de 2013 na conta github do grupo.
Filosofia
editar"Se você mantê-lo pequeno, couber a Máquina Virtual, o analisador e a stdlib em 10 mil linhas, então não é suor".[4]
Exemplos
editarfib = (n):
if (n < 2): n. else: fib (n - 1) + fib (n - 2).
.
n = argv(1) number
if (n<1): n=28.
("fib(",n,")= ", fib(n)) join say
# parrot example/fib.pir 40 3m36.447s
# perl example/fib.pl 40 2m19.752s
# potion example/fib.pn 40 0m3.512s
Recursos
editar- Orientação a objetos pura baseada em protótipos
- Tratamento de exceções baseado em callcc/yield em assembler não portado
- expressões regulares similares às do Perl (planejado)
- Compactação imprecisa do Coletor de lixo suportando referências fracas.
- Carregamento de bibliotecas na maioria das plataformas
- Introspecção, reflexão e metaprogramação
- Concorrência baseada em atores
- Corotinas
- Entrada/Saída assíncronas rápidas
- Máquina virtual pequena
- Funções de ordem superior
Ligações externas
editar
- Este artigo foi inicialmente traduzido, total ou parcialmente, do artigo da Wikipédia em inglês cujo título é «Potion (programming language)», especificamente desta versão.
Referências
- ↑ Lowrey, Annie (15 de Março de 2012). «Where's _why? What happened when one of the world's most unusual, and beloved, computer programmers disappeared». Slate. Consultado em 15 de Março de 2012
- ↑ fogus (11 de Agosto de 2013). «_why's Potion — a new home». Consultado em 21 de Agosto de 2013
- ↑ Urban, Reini (4 de Junho de 2013). «Design Decisions on p2». Consultado em 15 de Setembro de 2013
- ↑ _why; Why the lucky stiff (22 de Dezembro de 2008). «README». Consultado em 15 de Setembro de 2013