[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Perl 6



Michael Rasmussen <sslug@sslug> writes:

> On Fri, 14 Oct 2005 17:30:54 +0200, Peter Makholm wrote:
>
>> 
>> Det er det i høj grad. Perl6 har et syntaktisk rigtigt objektsystem.
> Nu du nævner det. Har du prøvet Perl6? Hvis du har, hvad er så din
> umiddelbare holdning?

Jeg har ofte haft en 'perl -de42' liggende, primært som advanceret
regnemaskine men også til at lave små perlforsøg som var lidt længere
end one-liners.

Forholdvis for nyligt fik jeg så endelig taget mig sammen til at se på
Pugs. Pugs er er eksperimetiel implementation af *sproget* Perl 6 og
er altså uafhængig af parrot der er VM'en i Perl 6. Pugs er skrevet i
Haskell og har blandt andet et read-eval-print loop, det vil sige en
prompt hvor man skriver et udtryk, får det beregnet og får resultatet
skrevet ud. Det er det sidste der gjorde det til en interessant
erstatning for 'perl -de42'

I går aftes fik jeg så lyst til at lave en rot13-funktion. I Perl5
ville jeg have skrevet:

  sub rot13 { my $a = shift; $a =~ tr/a-z/n-za-m/; return $a }

I Perl6 burde det blive til

  sub rot13 ($string) { return $string.trans( "a-z" => "n-za-m" ) }

men det virkede ikke. Det viste sig at pugs ikke lige kunne klare at
der var mere end en bindestreg i en af strengene til
trans-metoden. Ind i #perl6 og brokke sig, og pludselig havde jeg fået
commit-bit og om jeg ikke lige kunne rette det og skrive nogle
test-cases.

5 timer efter havde jeg en rot13 der virkede og trans-metoden på
strenge virker bedre. Siden har jeg så brugt noget tid på at rette
flere fejl og diskuterer hvordan funktionen overhovede bør virke.

For ikke at gøre en lang historie endnu længer, sproget Perl6 er ikke
helt stabilt i sin defintion og implementationen er heller ikke.

> Kan det betale sig at sætte sig ind i alt det nye, eller kan man
> lige så godt fortsætte med Perl5.

Til produktion er Perl6 endnu uegnet. Det er ikke bare for ungt og
uprøvet, det er uegnet. Hvis man ikke er interesseret i at deltage i
udviklingen er det nok stadigvæk for tidligt. 

> Sagt på en anden måde: Kan jeg lave noget bedre i Perl6 end i Perl5?

Jeg har allerede fundet ting som er pænere i Perl 6 end i Perl
5. Noget helt simpelt er muligheden for funktioner med navngivne
argumenter, man kan også angive at et argument skal bruges på en måde
der svare til pass-by-reference eller om man har brug for en kopi man
må ændre.

En anden ting er multi methods. Da jeg så det beskrevet for meget lang
tid siden kunen jeg ikke se fordelen, men basalt set er det en
mulighed for at overloade funktioner. I Perl 5 skulle man selv teste
en masse på @_, i Perl 6 kan man gøre noget ala:

multi sub pseudo(Str $string) { return $string.chars }
multi sub pseudo(@array) { return @array.elems }
multi sub pseudo(Int $i) { return floor(log($i)/log(10)) }

pseudo("foobar"); # => 6
pseudo('a' .. 'z'); # => 26
pseudo(1024); # => 3 (man burde nok lægge en til???)

> Er det ekstra Perl6 kan, noget man har behov for i hverdagen, eller
> er det bare bloat? Er der nogen ting, jeg kan lave i Perl6, som det
> ikke er muligt at lave i Perl5?

Det kan godt være at der er ting man kunne drømme sødt om i hverdagen,
men det er ikke produktionmodent. Og da både Perl5 og Perl6 er
Turring-komplette og ikke stærkere er der heller ikke noget der ikke
er muligt at lave i Perl5 -- det skulle da lige være dovne lister.


Larry svare på mit første indlæg på perl.perl6.language:
http://www.nntp.perl.org/group/perl.perl6.language/23525

-- 
 Peter Makholm     |  Ladies and gentlemen, take my advice, pull down your
 sslug@sslug |                            pants and slide on the ice
 http://hacking.dk |                                    -- Sidney Freedman


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-11-01, 02:01 CET [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *