Perl 6

Tätä artikkelia tai sen osaa on pyydetty päivitettäväksi, koska sen sisältö on osin vanhentunut.
Voit auttaa Wikipediaa parantamalla artikkelia. Lisää tietoa saattaa olla keskustelusivulla.
Tarkennus: Perl 6, nykyiseltä nimeltään Raku, on stabiloitunut pitkän kehitysvaiheen jälkeen. Tämä artikkeli kertoo lähinnä sen alkuperäisistä kehityssuunnista.

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

  1. [1] (Arkistoitu – Internet Archive)
  2. http://rakudo.org/2014/09/26/announce-rakudo-star-release-2014-09/ (Arkistoitu – Internet Archive)

Aiheesta muualla

  • Perl 6:n kehityssivu (Arkistoitu – Internet Archive)
  • (englanniksi) Perl-6-FAQ[vanhentunut linkki]
  • (englanniksi) Perl6::Perl5::Differences (Arkistoitu – Internet Archive)