[Rio-pm] Perl 6

breno breno em rio.pm.org
Sexta Abril 27 23:37:11 PDT 2012


On Fri, Apr 27, 2012 at 10:55 PM, Aureliano Guedes
<guedes_1000 em hotmail.com> wrote:
> (...)
>
> Apesar do exposto, as duvidas são:
> terá um perldoc tão maravilhoso quanto o do perl5?

Depende do seu conceito de "maravilhoso". A documentação do Perl 6,
assim como a do Perl 5, é bastante vasta e complexa.

Veja a lista contendo cada característica da linguagem, exemplos de
código e o estado de sua implementação aqui:
http://perl6.org/compilers/features. Se quiser tutoriais, em vez de
apenas uma referência, um bom guia para começar pode ser
http://perlgeek.de/en/article/5-to-6, ou mesmo o snapshot mais atual
do livro, em https://github.com/perl6/book/downloads

> Qual a grande dificuldade de implementar mesmo passados 10 anos?

Resposta curta:

Não estamos com pressa. Se você está, contribuições são muito bem vindas ;-)

Resposta longa:

Muita gente se confunde achando quem em 2000 o Larry Wall disse: "esse
é o Perl 6, vamos começar a implementar". O que aconteceu foi mais na
linha de "ei, o que vcs acham de pensarmos em algo bacana juntos, do
zero?"

O projeto Perl 6 teve algumas características inéditas no software
livre. Até então, projetos de novas linguagens (ou novas versões
quebrando compatibilidade) só eram revelados quando já estavam nos
finalmentes do desenvolvimento, refletindo a visão de uma única pessoa
ou de um grupo pequeno e fechado de pessoas. Perl 6 quebrou todos
esses paradigmas.

A idéia proposta pelo Larry Wall era de que a própria comunidade
reescrevesse a linguagem, sem qualquer preocupação com
retro-compatibilidade. Qualquer um, literalmente qualquer um, podia
contribuir com idéias através de RFCs, e todos seriam considerados,
estudados e avaliados. Além disso, era permitido mudar todo e qualquer
aspecto da linguagem, sem exceção. Foram recebidos 361 RFCs e o Larry
revisou e classificou cada um deles, lançando uma série de documentos
- os Apocalipses - que descreviam como seria a nova linguagem.

Era claramente um projeto ambicioso, e a medida que a documentação foi
crescendo e incluindo exemplos práticos, alguns pedaços da
especificação começaram a tornar outros pedaços obsoletos, enquanto
outras features claramente precisavam ser polidas. O Larry podia ser o
cara que "batia o martelo", mas ele fez questão de que cada item fosse
debatido pela comunidade, de uma forma extremamente democrática -
talvez a mais democrática já vista em software livre até hoje. Foram
alguns anos discutindo (no bom sentido) e brincando com as
possibilidades, pensando no que seria melhor e no que poderia ser
problemático, até que a especificação da linguagem finalmente
assentasse. Tudo isso otimizado para diversão (-Ofun), sem qualquer
pressão corporativa ou prazo de entrega.

Note que "Perl 6" é uma especificação, não uma implementação. Quando o
grosso da (especificação da) linguagem parecia estável, começaram
algumas implementações. Talvez a mais significativa tenha sido o pugs,
feita em Haskell pela Audrey Tang. As pessoas finalmente podiam
programar em Perl 6 e experimentar suas próprias sugestões. Isso
novamente colocou em pauta alguns pontos da linguagem, que eram muito
interessantes no papel mas que na prática eram confusos ou pouco
práticos. Hoje, as principais implementações de Perl 6 são o Rakudo
(que roda em cima de Parrot) e Niecza (que roda em cima de CLR, a.k.a.
"ECMA-335", a.k.a. "Mono/.NET"). Há também implementações muito
interessantes como o "v6" (https://metacpan.org/module/v6), que
implementa Perl 6 em Perl 5, e o Perlito
(http://perlcabal.org/~fglock/perlito6.html), em JavaScript, ambas
mantidas pelo nosso queridíssimo compatriota Flavio Glock. Existem
várias outras, essa lista não é completa.

Nos últimos anos as implementações vem sendo feitas e refeitas, cada
vez mais aparando as arestas da linguagem. O projeto é voluntário e
paralelo ao desenvolvimento do Perl 5 (a linguagem que conhecemos e
amamos, e que continua a todo vapor), e o Perl 6 em si traz aspectos
tão inovadores e desafiadores que discussões quanto à melhor forma de
implementar essa ou aquela característica ainda acontecem.
Incidentalmente, um dos objetivos da comunidade é implementar Perl 6
em Perl 6, no melhor estilo "bootstrapping".

Ficou mais claro?

> Será uma nova linguagem ou realmente a próxima versão de Perl?

Veja meu relato acima, dê uma olhada na documentação e tire suas
próprias conclusões :)

Ah, e pare de usar tempo futuro. Perl 6 não "será". Perl 6 "é". E já
há algum tempo. Quer usar?

http://rakudo.org/how-to-get-rakudo/

Tem plugin pro Padre, pro vim, até pro Textpad.

> Se for uma nova linguagem, como procederá o futuro do Perl5 (e como se chamará... hahaha)?

"Perl" pode ser interpretado como um termo guarda-chuva. O projeto
"Perl 5" existe e continua a todo vapor, com um número crescente de
desenvolvedores, muitas novidades acontecendo e muito investimento por
empresas que usam e apoiam a linguagem. O projeto "Perl 6" também
segue muito bem, obrigado. Perl 5 lança pelo menos uma nova versão
estável por ano, e você pode pensar no 5.16 como "Perl 5, release 16".
Java faz isso, por exemplo, e "Java 7" nada mais é do que "Java 1.7".

Aqui na lista há pessoas muito mais envolvidas com Perl 6 do que eu,
então se falei bobagem por favor me corrijam =)


[]s

-b


Mais detalhes sobre a lista de discussão Rio-pm