Perl 6

Wikipedia
Loikkaa: valikkoon, hakuun

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:tta yhteisön uudelleenkirjoittamaksi Perliksi, koska hänen suunnitelmansa perustuu 361:een yhteisön jäsenten tekemään ehdotukseen. Ehdotukset on julkaistu 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:tta varten on kehitetty alustariippumatonta tavukoodia ajava virtuaalikone nimeltä Parrot,, mutta joka on suunniteltu myös muiden kielten tarpeisiin. Perl 6:stä on olemassa toteutus Rakudo Perl, joka tuottaa Parrot ja MoarVM -virtuaalikoneiden tavukoodia,[1] sekä Haskell-kielellä kirjoittu 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[muokkaa | muokkaa wikitekstiä]

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[muokkaa | muokkaa wikitekstiä]

# 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[muokkaa | muokkaa wikitekstiä]

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.

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]