Perl 6
Perl 6 on Perl-ohjelmointikielen kehitysversio. Kehitystyö alkoi vuonna 2000. Perl 6:n suunnittelussa on lähdetty Perl 5:stä, mutta kyse on koko kielen ja sen tulkin uudelleenkirjoittamisesta.
Perl 6:ssa on monia muutoksia verrattuna Perl 5:een. Se ei ole taaksepäin yhteensopiva, mutta siellä tulee olemaan yhteensopivuustila. Larry Wall, Perlin luoja, on kutsunut Perl 6:ta yhteisön uudelleenkirjoittamaksi Perliksi, koska hänen suunnitelmansa perustuu 361:een yhteisön jäsenten tekemään ehdotukseen. Ehdotukset on julkaistu[1] vuonna 2000. Wall on kirjoittanut suunnitelmansa pitkiin esseisiin, joita hän kutsuu nimellä Apocalypse. Esseiden numerointi vastaa lukuja kirjassa Programming Perl (”The Camel Book”). tärkeimpiin Apocalypse-esseisiin liittyy myös Damian Conwayn Exegesis-artikkeli, joka antaa ominaisuuksista käytännön esimerkkejä. (Nimet selittyvät sillä, että apokalypsi tarkoittaa ilmestystä tulevista asioista ja eksegeesi on selitys tekstistä.)
Perl 6:ta varten on kehitetty alustariippumatonta tavukoodia ajava virtuaalikone nimeltä Parrot,, mutta joka on suunniteltu myös muiden kielten tarpeisiin.
Perl 6:sta on olemassa toteutus Rakudo Perl, joka tuottaa Parrot- ja MoarVM-virtuaalikoneiden tavukoodia,[2]
sekä Haskell-kielellä kirjoitettu Pugs.
Perl 6 on myös toteutettu Perl 5:n v6.pm
-moduulina. Mikään toteutus ei ole toistaiseksi täydellinen tai täysin toimiva.
Suurimmat muutokset
Perl 5:n ja Perl 6:n välillä on satoja, ellei tuhansia muutoksia, yleisenä ajatuksena on ollut: ”keep Perl 6 Perl” (”pidetään Perl 6 Perlinä”). Useat muutokset normalisoivat kieltä; tekevät oppimisen helpoksi ja tehdäkseen ”helppoja asioita helposti ja vaikeita mahdolliseksi”.
Muuttujat
# Perl 5 my @array = (0, 1, 2, 3); my $element = $array[1]; # $element equals 1
Mutta Perl 6:ssa se näyttää hieman erilaiselta
my @array = (0, 1, 2, 3); my $element = @array[1]; # $element equals 1
Tämä helpottaa lukemista, koska yleensä $array...
on yleensä @array
.
Olio-ohjelmointi
Perl 5 tukee olio-ohjelmointia siunauksen (blessing) avulla. Minkä tahansa viittauksen voi siunata luokan olioksi:
# Perl 5 my $olio = bless $viittaus, 'Luokka';
Siunatulla oliolla voi sen jälkeen olla metodeita, joita käytetään nuolisyntaksilla (->):
# Perl 5 $olio->metodi();
Tämä saa Perlin löytämään metodi-nimisen aliohjelman ja kutsumaan sitä niin, että $olio
on ensimmäinen parametri ja muut parametrit tulevat sen jälkeen.
”Helpot asiat helposti ja vaikeat mahdolliseksi” -hengessä Perl 6 pitää vanhan siunausmallin, mutta ottaa käyttöön paljon selvemmän olio-ohjelmointimallin. Esimerkiksi jos halutaan tehdä luokka, joka sisältää sisällään pisteet x ja y:
class Piste is rw { has $.x; has $.y; }
Ja sitä käytetään näin:
my Piste $point .= new; $point.x = 1.2; $point.y = -3.7;
Perl 6 käyttää siis monista muista kielistä, esimerkiksi C++:sta, Javasta, Pythonista ja Rubysta, tuttua pistenotaatiota olion sisältämien muuttujien tai metodien kutsumisessa.
Lähteet
- http://rakudo.org/2014/09/26/announce-rakudo-star-release-2014-09/ (Arkistoitu – Internet Archive)
Aiheesta muualla
- Perl 6:n kehityssivu
- (englanniksi) Perl-6-FAQ[vanhentunut linkki]
- (englanniksi) Perl6::Perl5::Differences (Arkistoitu – Internet Archive)