Raku
Raku | |
---|---|
![]() |
|
Paradigma | proseduraalinen, funktionaalinen, olio-ohjelmointi |
Tyypitys | heikko, dynaaminen |
Muistinhallinta | automaattinen |
Suunnitellut | Larry Wall ja Rakun yhteisö |
Kehittäjä | Larry Wall ja Rakun yhteisö |
Vakaa versio | 6.d 'Diwali'[1] |
Merkittävimmät toteutukset | Rakudo |
Vaikutteet | Perl |
Käyttöjärjestelmä | alustariippumaton |
Verkkosivu |
raku |
Raku (aiemmin Perl 6) on ohjelmointikieli, joka lähtöisin Perl-kielestä. Kieltä kehitettiin aluksi nimellä Perl 6 ja vuonna 2019 nimeksi vaihdettiin Raku.[2]
Kehitys
[muokkaa | muokkaa wikitekstiä]Kehitystyö alkoi nimellä Perl 6 vuonna 2000, jolloin keskusteltiin tarvittavista muutoksista.[3] Syynä nimen vaihdokseen on, että kielet ovat erilaiset vaikkakin niillä on yhteys, ja Perlillä yleensä tarkoitetaan aiempia Perlin versioita.[4]
Rakun suunnittelussa on lähdetty Perl 5:stä, mutta kyse on koko kielen ja sen tulkin uudelleenkirjoittamisesta. Ajan mittaan Raku on kehittynyt erilliseksi kieleksi Perl 5:stä. Rakussa on monia muutoksia verrattuna Perl 5:een. Se ei ole taaksepäin yhteensopiva, mutta siellä tulee olemaan yhteensopivuustila. Perlin luoja Larry Wall on kutsunut Rakua yhteisön uudelleenkirjoittamaksi Perliksi, koska hänen suunnitelmansa perustuu 361:een yhteisön jäsenten tekemään ehdotukseen. Wall kirjoitti alkuperäisen 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ä.)
Rakua varten on kehitetty alustariippumatonta tavukoodia ajava virtuaalikone nimeltä MoarVM,, mutta joka on suunniteltu myös muiden kielten tarpeisiin. MoarVM perustuu aiemmpaan virtuaalikoneeseen nimeltään Parrot.[5] Rakusta on olemassa toteutus Rakudo, joka tuottaa MoarVM-virtuaalikoneen tavukoodia, mutta sillä on myös tuki tuottaa tavukoodia Javan virtuaalikoneelle.[6][5] Aiemmin oli olemassa myös Haskell-kielellä kirjoitettu Pugs sekä Perl 5:llä toteutettu v6.pm
-moduuli.[5]
Suurimmat muutokset
[muokkaa | muokkaa wikitekstiä]Perl 5:n ja Rakun (aiemmin Perl 6) 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 Rakussa 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ä Raku pitää vanhan siunausmallin, mutta ottaa käyttöön paljon selvemmän olio-ohjelmointimallin.[7] 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;
Raku käyttää siis monista muista kielistä, esimerkiksi C++:sta, Javasta, Pythonista ja Rubysta, tuttua pistenotaatiota olion sisältämien muuttujien tai metodien kutsumisessa.[7]
Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ Announce: Raku Perl 6 'Diwali' 6.d Language Specification Release blogs.perl.org. 5.11.2018. Zoffix Znet. Viitattu 19.8.2022. (englanniksi)
- ↑ Perl 6 renamed to Raku lwn.net. 15.10.2019. Viitattu 4.12.2024. (englanniksi)
- ↑ Joe Kline: Report from the Perl Conference perl.com. 21.8.2000. Viitattu 4.12.2024. (englanniksi)
- ↑ Thomas Claburn: We, Wall, we, Wall, Raku: Perl creator blesses new name for version 6 of text-wrangling lingo theregister.com. 11.10.2019. Viitattu 4.12.2024. (englanniksi)
- ↑ a b c Rakun kehittäjät: Compilers - raku.org raku.org. 26.11.2024. Viitattu 26.11.2024. (englanniksi)
- ↑ http://rakudo.org/2014/09/26/announce-rakudo-star-release-2014-09/ (Arkistoitu – Internet Archive)
- ↑ a b Rakun kehittäjät: Classes and objects - Rakun dokumentaatio docs.raku.org. 26.11.2024. Viitattu 26.11.2024. (englanniksi)
Aiheesta muualla
[muokkaa | muokkaa wikitekstiä]- Rakudo Raku-kääntäjän kotisivut (englanniksi)
- Raku-kielen UKK (englanniksi)
- Rakun pakettilähde (englanniksi)
- Eräs Raku-opas (englanniksi)
- Lista Rakua käsittelevistä kirjoista (englanniksi)